+++ /dev/null
-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
-* 8-byte work is split into two 4-byte u32. Low 4 bytes are random u32 from
-* UBO. High 4 bytes are the random value XOR'd with index of each thread.
-*/
-@compute @workgroup_size(256)
-fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
- if (atomicLoad(&work.found) != 0u) { return; }
-
- let threshold: u32 = ubo.threshold;
-
- /**
- * Initialize (nonce||blockhash) concatenation
- */
- var m0: u32 = ubo.random ^ global_id.x;
- var m1: u32 = ubo.random ^ global_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;
-}
-`