]> zoso.dev Git - nano-pow.git/commitdiff
Rename compute shader and remove old version.
authorChris Duncan <chris@zoso.dev>
Fri, 10 Jan 2025 23:13:24 +0000 (15:13 -0800)
committerChris Duncan <chris@zoso.dev>
Fri, 10 Jan 2025 23:13:24 +0000 (15:13 -0800)
package.json
src/shaders/compute.wgsl [moved from src/shaders/gpu-compute.wgsl with 100% similarity]
src/shaders/gpu-compute.ts [deleted file]
src/shaders/index.ts

index dc81fa6a396b4a7ca053581b81458d6138f0bbb5..8565097b6aa3aa81269064cfe1add28817cd7945 100644 (file)
@@ -43,7 +43,6 @@
                "build": "rm -rf dist && tsc && node esbuild.mjs"
        },
        "imports": {
-               "#dist/*": "./dist/*",
                "#classes": "./src/classes/index.js",
                "#shaders": "./src/shaders/index.js"
        },
diff --git a/src/shaders/gpu-compute.ts b/src/shaders/gpu-compute.ts
deleted file mode 100644 (file)
index cee367c..0000000
+++ /dev/null
@@ -1,7668 +0,0 @@
-export const NanoPowGpuComputeShader = `
-struct UBO {
-       blockhash: array<vec4<u32>, 2>,
-       random: u32,
-       threshold: u32
-};
-@group(0) @binding(0) var<uniform> ubo: UBO;
-
-struct WORK {
-       nonce: vec2<u32>,
-       found: atomic<u32>
-};
-@group(0) @binding(1) var<storage, read_write> work: WORK;
-
-/**
-* Defined separately from uint v[32] below as the original value is required
-* to calculate the second uint32 of the digest for threshold comparison
-*/
-const BLAKE2B_IV32_1: u32 = 0x6A09E667u;
-
-/**
-* Main compute function
-* A random u32 provided by the UBO is copied to form a pair. Each component of
-* this 8-byte value is then XOR'd with a different dimensional index from
-* the thread identifier.
-*/
-@compute @workgroup_size(256)
-fn main(@builtin(global_invocation_id) id: vec3<u32>) {
-       if (atomicLoad(&work.found) != 0u) { return; }
-
-       let threshold: u32 = ubo.threshold;
-
-       /**
-       * Initialize (nonce||blockhash) concatenation
-       */
-       var m0: u32 = ubo.random ^ id.x;
-       var m1: u32 = ubo.random ^ id.y;
-       var m2: u32 = ubo.blockhash[0u].x;
-       var m3: u32 = ubo.blockhash[0u].y;
-       var m4: u32 = ubo.blockhash[0u].z;
-       var m5: u32 = ubo.blockhash[0u].w;
-       var m6: u32 = ubo.blockhash[1u].x;
-       var m7: u32 = ubo.blockhash[1u].y;
-       var m8: u32 = ubo.blockhash[1u].z;
-       var m9: u32 = ubo.blockhash[1u].w;
-
-       /**
-       * Compression buffer intialized to 2 instances of initialization vector
-       * The following values have been modified from the BLAKE2B_IV:
-       * OUTLEN is constant 8 bytes
-       * v[0u] ^= 0x01010000u ^ uint(OUTLEN);
-       * INLEN is constant 40 bytes: work value (8) + block hash (32)
-       * v[24u] ^= uint(INLEN);
-       * It is always the "last" compression at this INLEN
-       * v[28u] = ~v[28u];
-       * v[29u] = ~v[29u];
-       */
-       var v0: u32 = 0xF2BDC900u;
-       var v1: u32 = 0x6A09E667u;
-       var v2: u32 = 0x84CAA73Bu;
-       var v3: u32 = 0xBB67AE85u;
-       var v4: u32 = 0xFE94F82Bu;
-       var v5: u32 = 0x3C6EF372u;
-       var v6: u32 = 0x5F1D36F1u;
-       var v7: u32 = 0xA54FF53Au;
-       var v8: u32 = 0xADE682D1u;
-       var v9: u32 = 0x510E527Fu;
-       var v10: u32 = 0x2B3E6C1Fu;
-       var v11: u32 = 0x9B05688Cu;
-       var v12: u32 = 0xFB41BD6Bu;
-       var v13: u32 = 0x1F83D9ABu;
-       var v14: u32 = 0x137E2179u;
-       var v15: u32 = 0x5BE0CD19u;
-       var v16: u32 = 0xF3BCC908u;
-       var v17: u32 = 0x6A09E667u;
-       var v18: u32 = 0x84CAA73Bu;
-       var v19: u32 = 0xBB67AE85u;
-       var v20: u32 = 0xFE94F82Bu;
-       var v21: u32 = 0x3C6EF372u;
-       var v22: u32 = 0x5F1D36F1u;
-       var v23: u32 = 0xA54FF53Au;
-       var v24: u32 = 0xADE682F9u;
-       var v25: u32 = 0x510E527Fu;
-       var v26: u32 = 0x2B3E6C1Fu;
-       var v27: u32 = 0x9B05688Cu;
-       var v28: u32 = 0x04BE4294u;
-       var v29: u32 = 0xE07C2654u;
-       var v30: u32 = 0x137E2179u;
-       var v31: u32 = 0x5BE0CD19u;
-
-
-
-
-
-       /**
-       * Twelve rounds of G mixing as part of BLAKE2b compression step.
-       * Each sigma r index correlates with the reference implementation, but each
-       * sigma i index, and each v index, is doubled due to using two u32 array
-       * elements to represent one uint64_t.
-       */
-       var o0: u32;
-       var o1: u32;
-       var xor0: u32;
-       var xor1: u32;
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(0)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=0, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m0;
-       o1 = v1 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m2;
-       o1 = v1 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m4;
-       o1 = v3 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m6;
-       o1 = v3 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=2(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m8;
-       o1 = v5 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=6(x2), a=v[4-6], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=0, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(1)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=1, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m8;
-       o1 = v3 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=4(x2), a=v[0-1], b=v[11-12], c=v[21-22], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m2;
-       o1 = v1 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m0;
-       o1 = v3 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m4;
-       o1 = v3 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=1, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v6 + m6;
-       o1 = v7 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(2)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=2, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m0;
-       o1 = v3 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m4;
-       o1 = v5 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m6;
-       o1 = v3 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m2;
-       o1 = v5 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=2, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v6 + m8;
-       o1 = v7 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(3)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=3, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m6;
-       o1 = v3 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m2;
-       o1 = v3 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m4;
-       o1 = v1 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m8;
-       o1 = v5 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m0;
-       o1 = v5 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=3, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(4)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=4, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m0;
-       o1 = v1 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m4;
-       o1 = v5 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m8;
-       o1 = v5 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m2;
-       o1 = v1 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=4, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m6;
-       o1 = v7 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(5)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=5, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m4;
-       o1 = v1 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m0;
-       o1 = v5 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v6 + m6;
-       o1 = v7 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m8;
-       o1 = v1 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=5, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m2;
-       o1 = v7 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(6)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=6, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m2;
-       o1 = v3 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m8;
-       o1 = v7 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m0;
-       o1 = v1 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m6;
-       o1 = v3 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m4;
-       o1 = v5 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=6, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(7)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=7, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m2;
-       o1 = v5 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m6;
-       o1 = v7 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m0;
-       o1 = v1 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m8;
-       o1 = v3 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=7, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m4;
-       o1 = v7 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(8)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=8, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m6;
-       o1 = v5 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m0;
-       o1 = v7 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m4;
-       o1 = v1 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m2;
-       o1 = v5 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v4 + m8;
-       o1 = v5 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=8, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(9)                                                                                                                                        *
-       ****************************************************************************/
-
-       /**
-       * r=9, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m4;
-       o1 = v1 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m8;
-       o1 = v3 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-  // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v6 + m2;
-       o1 = v7 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m6;
-       o1 = v5 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=9, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v6 + m0;
-       o1 = v7 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(10)                                                                                                                                       *
-       ****************************************************************************/
-
-       /**
-       * r=10, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m0;
-       o1 = v1 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v0 + m2;
-       o1 = v1 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m4;
-       o1 = v3 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m6;
-       o1 = v3 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v4 + m8;
-       o1 = v5 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=10, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                               ROUND(11)                                                                                                                                       *
-       ****************************************************************************/
-
-       /**
-       * r=11, i=0(x2), a=v[0-1], b=v[8-9], c=v[16-17], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v8;
-       o1 = v1 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v0;
-       xor1 = v25 ^ v1;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v24;
-       o1 = v17 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v16;
-       xor1 = v9 ^ v17;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=1(x2), a=v[2-3], b=v[10-11], c=v[18-19], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m8;
-       o1 = v3 + m9;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v10;
-       o1 = v3 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v2 + 0u;
-       // o1 = v3 + 0u;
-       // if (v2 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v2 = o0;
-       // v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v2;
-       xor1 = v27 ^ v3;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=2(x2), a=v[4-5], b=v[12-13], c=v[20-21], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v12;
-       o1 = v5 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v4;
-       xor1 = v29 ^ v5;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v28;
-       o1 = v21 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v20;
-       xor1 = v13 ^ v21;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=3(x2), a=v[6-7], b=v[14-15], c=v[22-23], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v14;
-       o1 = v7 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v6;
-       xor1 = v31 ^ v7;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v30;
-       o1 = v23 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v22;
-       xor1 = v15 ^ v23;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=4(x2), a=v[0-1], b=v[10-11], c=v[20-21], d=v[30-31]
-       */
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v0 + m2;
-       o1 = v1 + m3;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = xor1;
-       v31 = xor0;
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v0 + v10;
-       o1 = v1 + v11;
-       o1 = o1 + select(0u, 1u, o0 < v0);
-       v0 = o0;
-       v1 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v0 + 0u;
-       // o1 = v1 + 0u;
-       // if (v0 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v0 = o0;
-       // v1 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v30 ^ v0;
-       xor1 = v31 ^ v1;
-       v30 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v31 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v20 + v30;
-       o1 = v21 + v31;
-       o1 = o1 + select(0u, 1u, o0 < v20);
-       v20 = o0;
-       v21 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v10 ^ v20;
-       xor1 = v11 ^ v21;
-       v10 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v11 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=5(x2), a=v[2-3], b=v[12-13], c=v[22-23], d=v[24-25]
-       */
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+0]]
-       o0 = v2 + m0;
-       o1 = v3 + m1;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = xor1;
-       v25 = xor0;
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v2 + v12;
-       o1 = v3 + v13;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v2 + m4;
-       o1 = v3 + m5;
-       o1 = o1 + select(0u, 1u, o0 < v2);
-       v2 = o0;
-       v3 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v24 ^ v2;
-       xor1 = v25 ^ v3;
-       v24 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v25 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v22 + v24;
-       o1 = v23 + v25;
-       o1 = o1 + select(0u, 1u, o0 < v22);
-       v22 = o0;
-       v23 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v13 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=6(x2), a=v[4-5], b=v[14-15], c=v[16-17], d=v[26-27]
-       */
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = xor1;
-       v27 = xor0;
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v15 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v4 + v14;
-       o1 = v5 + v15;
-       o1 = o1 + select(0u, 1u, o0 < v4);
-       v4 = o0;
-       v5 = o1;
-
-       // // a = a + m[sigma[r][2*i+1]]
-       // // skip since adding 0u does nothing
-       // o0 = v4 + 0u;
-       // o1 = v5 + 0u;
-       // if (v4 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v4 = o0;
-       // v5 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v26 ^ v4;
-       xor1 = v27 ^ v5;
-       v26 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v27 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v16 + v26;
-       o1 = v17 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v16);
-       v16 = o0;
-       v17 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v14 ^ v16;
-       xor1 = v15 ^ v17;
-       v14 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v15 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /**
-       * r=11, i=7(x2), a=v[6-7], b=v[8-9], c=v[18-19], d=v[28-29]
-       */
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // // a = a + m[sigma[r][2*i+0]]
-       // // skip since adding 0u does nothing
-       // o0 = v6 + 0u;
-       // o1 = v7 + 0u;
-       // if (v6 > 0xFFFFFFFFu - 0u) {
-       //      o1 = o1 + 1u;
-       // }
-       // v6 = o0;
-       // v7 = o1;
-
-       // d = rotr64(d ^ a, 32)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = xor1;
-       v29 = xor0;
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 24)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v9 = (xor1 >> 24u) ^ (xor0 << 8u);
-
-       // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // a = a + m[sigma[r][2*i+1]]
-       o0 = v6 + m6;
-       o1 = v7 + m7;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
-
-       // d = rotr64(d ^ a, 16)
-       xor0 = v28 ^ v6;
-       xor1 = v29 ^ v7;
-       v28 = (xor0 >> 16u) ^ (xor1 << 16u);
-       v29 = (xor1 >> 16u) ^ (xor0 << 16u);
-
-       // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
-
-       // b = rotr64(b ^ c, 63)
-       xor0 = v8 ^ v18;
-       xor1 = v9 ^ v19;
-       v8 = (xor1 >> 31u) ^ (xor0 << 1u);
-       v9 = (xor0 >> 31u) ^ (xor1 << 1u);
-
-
-
-
-
-       /****************************************************************************
-       *                                                                                                                       NONCE CHECK                                                                                                                                     *
-       ****************************************************************************/
-
-       /**
-       * Set nonce if it passes the threshold and no other thread has set it
-       */
-       if ((BLAKE2B_IV32_1 ^ v1 ^ v17) > threshold && atomicLoad(&work.found) == 0u) {
-               atomicStore(&work.found, 1u);
-               work.nonce.x = m0;
-               work.nonce.y = m1;
-       }
-       return;
-}
-`
index 208a28070b7d10c75c591041bc1d11f9c241ed4d..5be438ec95b751ada2a84bb3a5b1f7e504f3e2d2 100644 (file)
@@ -1,9 +1,9 @@
 // SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
 // SPDX-License-Identifier: GPL-3.0-or-later
 
-import { default as NanoPowGpuComputeShader } from "./gpu-compute.wgsl"
-import { NanoPowGlFragmentShader } from "./gl-fragment"
-import { NanoPowGlVertexShader } from "./gl-vertex"
+import { default as NanoPowGpuComputeShader } from "./compute.wgsl"
+import { NanoPowGlFragmentShader } from "./gl-fragment.js"
+import { NanoPowGlVertexShader } from "./gl-vertex.js"
 
 export {
        NanoPowGpuComputeShader,