nano-pow 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,6 +4,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
4
4
  -->
5
5
 
6
6
  # nano-pow
7
+ _Proof-of-work generation and validation with WebGPU/WebGL for Nano cryptocurrency._
8
+
7
9
  NanoPow uses WebGPU to generate proof-of-work nonces meeting the requirements
8
10
  of the Nano cryptocurrency. WebGPU is cutting edge technology, so for browsers
9
11
  which do not yet support it, a WebGL 2.0 implementation is also included.
@@ -27,11 +29,16 @@ import { NanoPowGpu, NanoPowGl } from 'nano-pow'
27
29
  // `hash` is a 64-char hex string
28
30
  // `threshold` is optional and defaults to "0xFFFFFFF8"
29
31
  const workGpu = await NanoPowGpu.search(hash, threshold)
32
+ // or if WebGPU is unsupported
30
33
  const workGl = await NanoPowGl.search(hash, threshold)
31
34
  ```
32
35
 
33
36
  You may also embed it in the global namespace by targeting `dist/global.min.js`
34
37
 
38
+ ## Validation
39
+ NanoPow can also validate previously-generated work values against a block hash.
40
+ Currently this is only implemented in the WebGPU tool and not WebGL.
41
+
35
42
  ## Notes
36
43
  The `work` field in a Nano transaction block contains an 8-byte nonce that
37
44
  satisfies the following equation:
@@ -59,12 +66,6 @@ due to the very narrow use case to which it is applied. The compute shader is
59
66
  consequently immense, but the goal is to squeeze every last bit of speed and
60
67
  performance out of it.
61
68
 
62
- ## Validating work
63
- Although the nonces generated by this package have been tested extensively, a
64
- validation function is not currently implemented. There are other tools
65
- available to perform this trivial task, but if there is demand for it, then it
66
- can be delivered in a future update.
67
-
68
69
  ## Tests
69
70
  `test.html` in the source repository contains some basic tests to compare the
70
71
  speed of this tool. Feel free to check out how your system fares.
@@ -12,7 +12,7 @@ __export(main_exports, {
12
12
  });
13
13
 
14
14
  // src/shaders/compute.wgsl
15
- var compute_default = "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;const BLAKE2B_IV32_1:u32=0x6A09E667u;@compute @workgroup_size(256)fn main(@builtin(global_invocation_id)id:vec3<u32>){if(atomicLoad(&work.found)!=0u){return;}let threshold:u32=ubo.threshold;var m0:u32=ubo.random ^ id.x;var m1:u32=ubo.random ^ id.y;var m2:u32=ubo.blockhash[0u].x;var m3:u32=ubo.blockhash[0u].y;var m4:u32=ubo.blockhash[0u].z;var m5:u32=ubo.blockhash[0u].w;var m6:u32=ubo.blockhash[1u].x;var m7:u32=ubo.blockhash[1u].y;var m8:u32=ubo.blockhash[1u].z;var m9:u32=ubo.blockhash[1u].w;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;var o0:u32;var o1:u32;var xor0:u32;var xor1:u32;o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m8;o1=v1+m9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m4;o1=v7+m5;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);if((BLAKE2B_IV32_1 ^ v1 ^ v17)>threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce.x=m0;work.nonce.y=m1;}return;}";
15
+ var compute_default = "struct UBO{blockhash:array<vec4<u32>,2>,random:vec2<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;const BLAKE2B_IV32_1:u32=0x6A09E667u;@compute @workgroup_size(256)fn main(@builtin(global_invocation_id)id:vec3<u32>){if(atomicLoad(&work.found)!=0u){return;}let threshold:u32=ubo.threshold;var m0:u32=ubo.random.x ^ id.x;var m1:u32=ubo.random.y ^ 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;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;var o0:u32;var o1:u32;var xor0:u32;var xor1:u32;o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m8;o1=v1+m9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m4;o1=v7+m5;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);if((BLAKE2B_IV32_1 ^ v1 ^ v17)>threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce.x=m0;work.nonce.y=m1;}return;}";
16
16
 
17
17
  // src/shaders/gl-fragment.ts
18
18
  var NanoPowGlFragmentShader = `#version 300 es
@@ -445,18 +445,12 @@ var NanoPowGpu = class _NanoPowGpu {
445
445
  static async init() {
446
446
  if (this.#busy) return;
447
447
  this.#busy = true;
448
- if (navigator.gpu == null) {
449
- throw new Error("WebGPU is not supported in this browser.");
450
- }
448
+ if (navigator.gpu == null) throw new Error("WebGPU is not supported in this browser.");
451
449
  try {
452
450
  const adapter = await navigator.gpu.requestAdapter();
453
- if (adapter == null) {
454
- throw new Error("WebGPU adapter refused by browser.");
455
- }
451
+ if (adapter == null) throw new Error("WebGPU adapter refused by browser.");
456
452
  const device = await adapter.requestDevice();
457
- if (!(device instanceof GPUDevice)) {
458
- throw new Error("WebGPU device failed to load.");
459
- }
453
+ if (!(device instanceof GPUDevice)) throw new Error("WebGPU device failed to load.");
460
454
  device.lost.then(this.reset);
461
455
  this.#device = device;
462
456
  this.setup();
@@ -541,57 +535,98 @@ var NanoPowGpu = class _NanoPowGpu {
541
535
  if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
542
536
  let nonce = 0n;
543
537
  do {
544
- const uboView = new DataView(new ArrayBuffer(48));
545
- for (let i = 0; i < 64; i += 8) {
546
- const uint32 = hash.slice(i, i + 8);
547
- uboView.setUint32(i / 2, parseInt(uint32, 16));
548
- }
549
538
  const random = Math.floor(Math.random() * 4294967295);
550
- uboView.setUint32(32, random, true);
551
- uboView.setUint32(36, threshold, true);
552
- this.#device.queue.writeBuffer(this.#uboBuffer, 0, uboView);
553
- this.#device.queue.writeBuffer(this.#gpuBuffer, 0, new Uint32Array([0, 0, 0]));
554
- const bindGroup = this.#device.createBindGroup({
555
- layout: this.#bindGroupLayout,
556
- entries: [
557
- {
558
- binding: 0,
559
- resource: {
560
- buffer: this.#uboBuffer
561
- }
562
- },
563
- {
564
- binding: 1,
565
- resource: {
566
- buffer: this.#gpuBuffer
567
- }
568
- }
569
- ]
570
- });
571
- const commandEncoder = this.#device.createCommandEncoder();
572
- const passEncoder = commandEncoder.beginComputePass();
573
- passEncoder.setPipeline(this.#pipeline);
574
- passEncoder.setBindGroup(0, bindGroup);
575
- passEncoder.dispatchWorkgroups(255, 255);
576
- passEncoder.end();
577
- commandEncoder.copyBufferToBuffer(this.#gpuBuffer, 0, this.#cpuBuffer, 0, 12);
578
- this.#device.queue.submit([commandEncoder.finish()]);
579
- let data = null;
580
- try {
581
- await this.#cpuBuffer.mapAsync(GPUMapMode.READ);
582
- await this.#device.queue.onSubmittedWorkDone();
583
- data = new DataView(this.#cpuBuffer.getMappedRange().slice(0));
584
- this.#cpuBuffer.unmap();
585
- } catch (err) {
586
- console.warn(`Error getting data from GPU. ${err}`);
587
- return this.search(hash, threshold);
588
- }
589
- if (data == null) throw new Error(`Failed to get data from buffer.`);
539
+ const seed = BigInt(random) << 32n | BigInt(random);
540
+ const data = await this.#dispatch(seed, hash, threshold, 255);
590
541
  nonce = data.getBigUint64(0, true);
591
542
  this.#busy = !data.getUint32(8);
592
543
  } while (this.#busy);
593
544
  return nonce.toString(16).padStart(16, "0");
594
545
  }
546
+ /**
547
+ * Validates that a nonce satisfies Nano proof-of-work requirements.
548
+ *
549
+ * @param {string} work - Hexadecimal proof-of-work value to validate
550
+ * @param {string} hash - Hexadecimal hash of previous block, or public key for new accounts
551
+ * @param {number} [threshold=0xfffffff8] - Difficulty of proof-of-work calculation
552
+ */
553
+ static async validate(work, hash, threshold = 4294967288) {
554
+ if (this.#busy) {
555
+ return new Promise((resolve) => {
556
+ setTimeout(async () => {
557
+ const result = this.validate(work, hash, threshold);
558
+ resolve(result);
559
+ }, 100);
560
+ });
561
+ }
562
+ this.#busy = true;
563
+ if (!/^[A-Fa-f0-9]{16}$/.test(work)) throw new TypeError(`Invalid work ${work}`);
564
+ if (!/^[A-Fa-f0-9]{64}$/.test(hash)) throw new TypeError(`Invalid hash ${hash}`);
565
+ if (typeof threshold !== "number") throw new TypeError(`Invalid threshold ${threshold}`);
566
+ let loads = 0;
567
+ while (this.#device == null && loads < 20) {
568
+ await new Promise((resolve) => {
569
+ setTimeout(resolve, 500);
570
+ });
571
+ }
572
+ if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
573
+ const seed = BigInt(`0x${work}`);
574
+ const data = await this.#dispatch(seed, hash, threshold, 1);
575
+ const nonce = data.getBigUint64(0, true).toString(16).padStart(16, "0");
576
+ const found = !!data.getUint32(8);
577
+ this.#busy = false;
578
+ if (found && work !== nonce) throw new Error(`Nonce found but does not match work`);
579
+ return found;
580
+ }
581
+ static async #dispatch(seed, hash, threshold, passes) {
582
+ if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
583
+ const uboView = new DataView(new ArrayBuffer(48));
584
+ for (let i = 0; i < 64; i += 8) {
585
+ const uint32 = hash.slice(i, i + 8);
586
+ uboView.setUint32(i / 2, parseInt(uint32, 16));
587
+ }
588
+ uboView.setBigUint64(32, seed, true);
589
+ uboView.setUint32(40, threshold, true);
590
+ this.#device.queue.writeBuffer(this.#uboBuffer, 0, uboView);
591
+ this.#device.queue.writeBuffer(this.#gpuBuffer, 0, new Uint32Array([0, 0, 0]));
592
+ const bindGroup = this.#device.createBindGroup({
593
+ layout: this.#bindGroupLayout,
594
+ entries: [
595
+ {
596
+ binding: 0,
597
+ resource: {
598
+ buffer: this.#uboBuffer
599
+ }
600
+ },
601
+ {
602
+ binding: 1,
603
+ resource: {
604
+ buffer: this.#gpuBuffer
605
+ }
606
+ }
607
+ ]
608
+ });
609
+ const commandEncoder = this.#device.createCommandEncoder();
610
+ const passEncoder = commandEncoder.beginComputePass();
611
+ passEncoder.setPipeline(this.#pipeline);
612
+ passEncoder.setBindGroup(0, bindGroup);
613
+ passEncoder.dispatchWorkgroups(passes, passes);
614
+ passEncoder.end();
615
+ commandEncoder.copyBufferToBuffer(this.#gpuBuffer, 0, this.#cpuBuffer, 0, 12);
616
+ this.#device.queue.submit([commandEncoder.finish()]);
617
+ let data = null;
618
+ try {
619
+ await this.#cpuBuffer.mapAsync(GPUMapMode.READ);
620
+ await this.#device.queue.onSubmittedWorkDone();
621
+ data = new DataView(this.#cpuBuffer.getMappedRange().slice(0));
622
+ this.#cpuBuffer.unmap();
623
+ } catch (err) {
624
+ console.warn(`Error getting data from GPU. ${err}`);
625
+ return this.#dispatch(seed, hash, threshold, passes);
626
+ }
627
+ if (data == null) throw new Error(`Failed to get data from buffer.`);
628
+ return data;
629
+ }
595
630
  };
596
631
 
597
632
  // build/global.js
package/dist/main.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/shaders/compute.wgsl
2
- var compute_default = "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;const BLAKE2B_IV32_1:u32=0x6A09E667u;@compute @workgroup_size(256)fn main(@builtin(global_invocation_id)id:vec3<u32>){if(atomicLoad(&work.found)!=0u){return;}let threshold:u32=ubo.threshold;var m0:u32=ubo.random ^ id.x;var m1:u32=ubo.random ^ id.y;var m2:u32=ubo.blockhash[0u].x;var m3:u32=ubo.blockhash[0u].y;var m4:u32=ubo.blockhash[0u].z;var m5:u32=ubo.blockhash[0u].w;var m6:u32=ubo.blockhash[1u].x;var m7:u32=ubo.blockhash[1u].y;var m8:u32=ubo.blockhash[1u].z;var m9:u32=ubo.blockhash[1u].w;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;var o0:u32;var o1:u32;var xor0:u32;var xor1:u32;o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m8;o1=v1+m9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m4;o1=v7+m5;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);if((BLAKE2B_IV32_1 ^ v1 ^ v17)>threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce.x=m0;work.nonce.y=m1;}return;}";
2
+ var compute_default = "struct UBO{blockhash:array<vec4<u32>,2>,random:vec2<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;const BLAKE2B_IV32_1:u32=0x6A09E667u;@compute @workgroup_size(256)fn main(@builtin(global_invocation_id)id:vec3<u32>){if(atomicLoad(&work.found)!=0u){return;}let threshold:u32=ubo.threshold;var m0:u32=ubo.random.x ^ id.x;var m1:u32=ubo.random.y ^ 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;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;var o0:u32;var o1:u32;var xor0:u32;var xor1:u32;o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m0;o1=v5+m1;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m8;o1=v1+m9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m2;o1=v3+m3;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m8;o1=v7+m9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m4;o1=v5+m5;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m4;o1=v7+m5;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m2;o1=v5+m3;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m4;o1=v1+m5;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m2;o1=v7+m3;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m6;o1=v5+m7;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m0;o1=v7+m1;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m0;o1=v1+m1;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m6;o1=v3+m7;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;o0=v4+m8;o1=v5+m9;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=xor1;v25=xor0;o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v0+v8;o1=v1+v9;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v24 ^ v0;xor1=v25 ^ v1;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v16+v24;o1=v17+v25;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v8 ^ v16;xor1=v9 ^ v17;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m8;o1=v3+m9;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=xor1;v27=xor0;o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v2+v10;o1=v3+v11;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v26 ^ v2;xor1=v27 ^ v3;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v18+v26;o1=v19+v27;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v10 ^ v18;xor1=v11 ^ v19;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=xor1;v29=xor0;o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v4+v12;o1=v5+v13;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v28 ^ v4;xor1=v29 ^ v5;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v20+v28;o1=v21+v29;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v12 ^ v20;xor1=v13 ^ v21;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=xor1;v31=xor0;o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v6+v14;o1=v7+v15;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v30 ^ v6;xor1=v31 ^ v7;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v22+v30;o1=v23+v31;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v14 ^ v22;xor1=v15 ^ v23;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;o0=v0+m2;o1=v1+m3;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=xor1;v31=xor0;o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor0>>24u)^(xor1<<8u);v11=(xor1>>24u)^(xor0<<8u);o0=v0+v10;o1=v1+v11;o1=o1+select(0u,1u,o0<v0);v0=o0;v1=o1;xor0=v30 ^ v0;xor1=v31 ^ v1;v30=(xor0>>16u)^(xor1<<16u);v31=(xor1>>16u)^(xor0<<16u);o0=v20+v30;o1=v21+v31;o1=o1+select(0u,1u,o0<v20);v20=o0;v21=o1;xor0=v10 ^ v20;xor1=v11 ^ v21;v10=(xor1>>31u)^(xor0<<1u);v11=(xor0>>31u)^(xor1<<1u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m0;o1=v3+m1;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=xor1;v25=xor0;o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor0>>24u)^(xor1<<8u);v13=(xor1>>24u)^(xor0<<8u);o0=v2+v12;o1=v3+v13;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;o0=v2+m4;o1=v3+m5;o1=o1+select(0u,1u,o0<v2);v2=o0;v3=o1;xor0=v24 ^ v2;xor1=v25 ^ v3;v24=(xor0>>16u)^(xor1<<16u);v25=(xor1>>16u)^(xor0<<16u);o0=v22+v24;o1=v23+v25;o1=o1+select(0u,1u,o0<v22);v22=o0;v23=o1;xor0=v12 ^ v22;xor1=v13 ^ v23;v12=(xor1>>31u)^(xor0<<1u);v13=(xor0>>31u)^(xor1<<1u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=xor1;v27=xor0;o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor0>>24u)^(xor1<<8u);v15=(xor1>>24u)^(xor0<<8u);o0=v4+v14;o1=v5+v15;o1=o1+select(0u,1u,o0<v4);v4=o0;v5=o1;xor0=v26 ^ v4;xor1=v27 ^ v5;v26=(xor0>>16u)^(xor1<<16u);v27=(xor1>>16u)^(xor0<<16u);o0=v16+v26;o1=v17+v27;o1=o1+select(0u,1u,o0<v16);v16=o0;v17=o1;xor0=v14 ^ v16;xor1=v15 ^ v17;v14=(xor1>>31u)^(xor0<<1u);v15=(xor0>>31u)^(xor1<<1u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=xor1;v29=xor0;o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor0>>24u)^(xor1<<8u);v9=(xor1>>24u)^(xor0<<8u);o0=v6+v8;o1=v7+v9;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;o0=v6+m6;o1=v7+m7;o1=o1+select(0u,1u,o0<v6);v6=o0;v7=o1;xor0=v28 ^ v6;xor1=v29 ^ v7;v28=(xor0>>16u)^(xor1<<16u);v29=(xor1>>16u)^(xor0<<16u);o0=v18+v28;o1=v19+v29;o1=o1+select(0u,1u,o0<v18);v18=o0;v19=o1;xor0=v8 ^ v18;xor1=v9 ^ v19;v8=(xor1>>31u)^(xor0<<1u);v9=(xor0>>31u)^(xor1<<1u);if((BLAKE2B_IV32_1 ^ v1 ^ v17)>threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce.x=m0;work.nonce.y=m1;}return;}";
3
3
 
4
4
  // src/shaders/gl-fragment.ts
5
5
  var NanoPowGlFragmentShader = `#version 300 es
@@ -432,18 +432,12 @@ var NanoPowGpu = class _NanoPowGpu {
432
432
  static async init() {
433
433
  if (this.#busy) return;
434
434
  this.#busy = true;
435
- if (navigator.gpu == null) {
436
- throw new Error("WebGPU is not supported in this browser.");
437
- }
435
+ if (navigator.gpu == null) throw new Error("WebGPU is not supported in this browser.");
438
436
  try {
439
437
  const adapter = await navigator.gpu.requestAdapter();
440
- if (adapter == null) {
441
- throw new Error("WebGPU adapter refused by browser.");
442
- }
438
+ if (adapter == null) throw new Error("WebGPU adapter refused by browser.");
443
439
  const device = await adapter.requestDevice();
444
- if (!(device instanceof GPUDevice)) {
445
- throw new Error("WebGPU device failed to load.");
446
- }
440
+ if (!(device instanceof GPUDevice)) throw new Error("WebGPU device failed to load.");
447
441
  device.lost.then(this.reset);
448
442
  this.#device = device;
449
443
  this.setup();
@@ -528,57 +522,98 @@ var NanoPowGpu = class _NanoPowGpu {
528
522
  if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
529
523
  let nonce = 0n;
530
524
  do {
531
- const uboView = new DataView(new ArrayBuffer(48));
532
- for (let i = 0; i < 64; i += 8) {
533
- const uint32 = hash.slice(i, i + 8);
534
- uboView.setUint32(i / 2, parseInt(uint32, 16));
535
- }
536
525
  const random = Math.floor(Math.random() * 4294967295);
537
- uboView.setUint32(32, random, true);
538
- uboView.setUint32(36, threshold, true);
539
- this.#device.queue.writeBuffer(this.#uboBuffer, 0, uboView);
540
- this.#device.queue.writeBuffer(this.#gpuBuffer, 0, new Uint32Array([0, 0, 0]));
541
- const bindGroup = this.#device.createBindGroup({
542
- layout: this.#bindGroupLayout,
543
- entries: [
544
- {
545
- binding: 0,
546
- resource: {
547
- buffer: this.#uboBuffer
548
- }
549
- },
550
- {
551
- binding: 1,
552
- resource: {
553
- buffer: this.#gpuBuffer
554
- }
555
- }
556
- ]
557
- });
558
- const commandEncoder = this.#device.createCommandEncoder();
559
- const passEncoder = commandEncoder.beginComputePass();
560
- passEncoder.setPipeline(this.#pipeline);
561
- passEncoder.setBindGroup(0, bindGroup);
562
- passEncoder.dispatchWorkgroups(255, 255);
563
- passEncoder.end();
564
- commandEncoder.copyBufferToBuffer(this.#gpuBuffer, 0, this.#cpuBuffer, 0, 12);
565
- this.#device.queue.submit([commandEncoder.finish()]);
566
- let data = null;
567
- try {
568
- await this.#cpuBuffer.mapAsync(GPUMapMode.READ);
569
- await this.#device.queue.onSubmittedWorkDone();
570
- data = new DataView(this.#cpuBuffer.getMappedRange().slice(0));
571
- this.#cpuBuffer.unmap();
572
- } catch (err) {
573
- console.warn(`Error getting data from GPU. ${err}`);
574
- return this.search(hash, threshold);
575
- }
576
- if (data == null) throw new Error(`Failed to get data from buffer.`);
526
+ const seed = BigInt(random) << 32n | BigInt(random);
527
+ const data = await this.#dispatch(seed, hash, threshold, 255);
577
528
  nonce = data.getBigUint64(0, true);
578
529
  this.#busy = !data.getUint32(8);
579
530
  } while (this.#busy);
580
531
  return nonce.toString(16).padStart(16, "0");
581
532
  }
533
+ /**
534
+ * Validates that a nonce satisfies Nano proof-of-work requirements.
535
+ *
536
+ * @param {string} work - Hexadecimal proof-of-work value to validate
537
+ * @param {string} hash - Hexadecimal hash of previous block, or public key for new accounts
538
+ * @param {number} [threshold=0xfffffff8] - Difficulty of proof-of-work calculation
539
+ */
540
+ static async validate(work, hash, threshold = 4294967288) {
541
+ if (this.#busy) {
542
+ return new Promise((resolve) => {
543
+ setTimeout(async () => {
544
+ const result = this.validate(work, hash, threshold);
545
+ resolve(result);
546
+ }, 100);
547
+ });
548
+ }
549
+ this.#busy = true;
550
+ if (!/^[A-Fa-f0-9]{16}$/.test(work)) throw new TypeError(`Invalid work ${work}`);
551
+ if (!/^[A-Fa-f0-9]{64}$/.test(hash)) throw new TypeError(`Invalid hash ${hash}`);
552
+ if (typeof threshold !== "number") throw new TypeError(`Invalid threshold ${threshold}`);
553
+ let loads = 0;
554
+ while (this.#device == null && loads < 20) {
555
+ await new Promise((resolve) => {
556
+ setTimeout(resolve, 500);
557
+ });
558
+ }
559
+ if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
560
+ const seed = BigInt(`0x${work}`);
561
+ const data = await this.#dispatch(seed, hash, threshold, 1);
562
+ const nonce = data.getBigUint64(0, true).toString(16).padStart(16, "0");
563
+ const found = !!data.getUint32(8);
564
+ this.#busy = false;
565
+ if (found && work !== nonce) throw new Error(`Nonce found but does not match work`);
566
+ return found;
567
+ }
568
+ static async #dispatch(seed, hash, threshold, passes) {
569
+ if (this.#device == null) throw new Error(`WebGPU device failed to load.`);
570
+ const uboView = new DataView(new ArrayBuffer(48));
571
+ for (let i = 0; i < 64; i += 8) {
572
+ const uint32 = hash.slice(i, i + 8);
573
+ uboView.setUint32(i / 2, parseInt(uint32, 16));
574
+ }
575
+ uboView.setBigUint64(32, seed, true);
576
+ uboView.setUint32(40, threshold, true);
577
+ this.#device.queue.writeBuffer(this.#uboBuffer, 0, uboView);
578
+ this.#device.queue.writeBuffer(this.#gpuBuffer, 0, new Uint32Array([0, 0, 0]));
579
+ const bindGroup = this.#device.createBindGroup({
580
+ layout: this.#bindGroupLayout,
581
+ entries: [
582
+ {
583
+ binding: 0,
584
+ resource: {
585
+ buffer: this.#uboBuffer
586
+ }
587
+ },
588
+ {
589
+ binding: 1,
590
+ resource: {
591
+ buffer: this.#gpuBuffer
592
+ }
593
+ }
594
+ ]
595
+ });
596
+ const commandEncoder = this.#device.createCommandEncoder();
597
+ const passEncoder = commandEncoder.beginComputePass();
598
+ passEncoder.setPipeline(this.#pipeline);
599
+ passEncoder.setBindGroup(0, bindGroup);
600
+ passEncoder.dispatchWorkgroups(passes, passes);
601
+ passEncoder.end();
602
+ commandEncoder.copyBufferToBuffer(this.#gpuBuffer, 0, this.#cpuBuffer, 0, 12);
603
+ this.#device.queue.submit([commandEncoder.finish()]);
604
+ let data = null;
605
+ try {
606
+ await this.#cpuBuffer.mapAsync(GPUMapMode.READ);
607
+ await this.#device.queue.onSubmittedWorkDone();
608
+ data = new DataView(this.#cpuBuffer.getMappedRange().slice(0));
609
+ this.#cpuBuffer.unmap();
610
+ } catch (err) {
611
+ console.warn(`Error getting data from GPU. ${err}`);
612
+ return this.#dispatch(seed, hash, threshold, passes);
613
+ }
614
+ if (data == null) throw new Error(`Failed to get data from buffer.`);
615
+ return data;
616
+ }
582
617
  };
583
618
  export {
584
619
  NanoPowGl,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nano-pow",
3
- "version": "1.0.0",
4
- "description": "Proof-of-work generation with WebGPU/WebGL for Nano cryptocurrency.",
3
+ "version": "1.1.0",
4
+ "description": "Proof-of-work generation and validation with WebGPU/WebGL for Nano cryptocurrency.",
5
5
  "keywords": [
6
6
  "nemo",
7
7
  "nano",