nano-pow 5.0.5 → 5.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/dist/bin/cli.js CHANGED
@@ -133,6 +133,10 @@ Object.defineProperty(webgpu, "isSupported", {
133
133
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
134
134
  //! SPDX-License-Identifier: GPL-3.0-or-later
135
135
 
136
+ // src/utils/cache.ts
137
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
138
+ //! SPDX-License-Identifier: GPL-3.0-or-later
139
+
136
140
  // src/utils/logger.ts
137
141
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
138
142
  //! SPDX-License-Identifier: GPL-3.0-or-later
@@ -180,6 +184,19 @@ var Logger = class {
180
184
  // src/utils/index.ts
181
185
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
182
186
  //! SPDX-License-Identifier: GPL-3.0-or-later
187
+ function isHexN(value, byteLength) {
188
+ if (typeof value !== "string") return false;
189
+ const v = value.replace(/^0[Xx]/, "");
190
+ const length = byteLength === null ? "+" : `{${2 * byteLength}}`;
191
+ const r = new RegExp(`^[A-Fa-f\\d]${length}$`);
192
+ return r.test(v);
193
+ }
194
+ function isHex8(value) {
195
+ return isHexN(value, 8);
196
+ }
197
+ function isHex32(value) {
198
+ return isHexN(value, 32);
199
+ }
183
200
  function stats(times) {
184
201
  if (times == null || times.length === 0) return null;
185
202
  const count = times.length;
@@ -249,7 +266,7 @@ if (!process.stdin.isTTY) {
249
266
  let i = 0;
250
267
  for await (const line of stdin) {
251
268
  i++;
252
- if (/^[A-Fa-f\d]{64}$/.test(line)) {
269
+ if (isHex32(line)) {
253
270
  hashes.push(line);
254
271
  } else {
255
272
  stdinErrors.push(`Skipping invalid stdin input line ${i}`);
@@ -287,7 +304,7 @@ Full documentation: <https://www.npmjs.com/package/nano-pow>
287
304
  var inArgs = [];
288
305
  var isParsingHash = true;
289
306
  while (isParsingHash) {
290
- if (!/^[A-Fa-f\d]{16}$/.test(args[args.length - 1])) break;
307
+ if (!isHex8(args[args.length - 1])) break;
291
308
  try {
292
309
  inArgs.unshift(args.pop());
293
310
  } catch {
@@ -313,11 +330,7 @@ for (let i = 0; i < args.length; i++) {
313
330
  if (b == null) throw new Error("Missing argument for benchmark");
314
331
  const count = +b;
315
332
  if (count < 1) throw new Error("Invalid benchmark count");
316
- const random = new Uint8Array(32);
317
- while (hashes.length < count) {
318
- getRandomValues(random);
319
- hashes.push(Buffer.from(random).toString("hex"));
320
- }
333
+ generateHashes(count);
321
334
  isBenchmark = true;
322
335
  break;
323
336
  }
@@ -330,7 +343,7 @@ for (let i = 0; i < args.length; i++) {
330
343
  case "-d": {
331
344
  const d = args[i + 1];
332
345
  if (d == null) throw new Error("Missing argument for difficulty");
333
- if (!/^[A-Fa-f\d]{16}$/.test(d)) throw new Error("Invalid argument for difficulty");
346
+ if (!isHex8(d)) throw new Error("Invalid argument for difficulty");
334
347
  body.difficulty = d;
335
348
  break;
336
349
  }
@@ -354,7 +367,7 @@ for (let i = 0; i < args.length; i++) {
354
367
  case "-v": {
355
368
  const v = args[i + 1];
356
369
  if (v == null) throw new Error("Missing argument for work validation");
357
- if (!/^[A-Fa-f\d]{16}$/.test(v)) throw new Error("Invalid argument for work validation");
370
+ if (!isHex8(v)) throw new Error("Invalid argument for work validation");
358
371
  if (hashes.length !== 1) throw new Error("Validate accepts exactly one hash");
359
372
  body.action = "work_validate";
360
373
  body.work = v;
@@ -456,6 +469,13 @@ async function execute() {
456
469
  }
457
470
  if (isBatch) console.log(results);
458
471
  }
472
+ function generateHashes(count) {
473
+ const random = new Uint8Array(32);
474
+ while (hashes.length < count) {
475
+ getRandomValues(random);
476
+ hashes.push(Buffer.from(random).toString("hex"));
477
+ }
478
+ }
459
479
  async function request(body2) {
460
480
  return new Promise((resolve, reject) => {
461
481
  const listener = async (msg) => {
@@ -478,6 +498,9 @@ async function score() {
478
498
  const result = await benchmark();
479
499
  logger.log(result);
480
500
  if (result != null) rates.push(result.truncatedRate);
501
+ const count = hashes.length;
502
+ hashes.splice(0, hashes.length);
503
+ generateHashes(count);
481
504
  } catch (err) {
482
505
  logger.log(err);
483
506
  }
@@ -136,6 +136,10 @@ Object.defineProperty(webgpu, "isSupported", {
136
136
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
137
137
  //! SPDX-License-Identifier: GPL-3.0-or-later
138
138
 
139
+ // src/utils/cache.ts
140
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
141
+ //! SPDX-License-Identifier: GPL-3.0-or-later
142
+
139
143
  // src/utils/logger.ts
140
144
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
141
145
  //! SPDX-License-Identifier: GPL-3.0-or-later
@@ -183,6 +187,19 @@ var Logger = class {
183
187
  // src/utils/index.ts
184
188
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
185
189
  //! SPDX-License-Identifier: GPL-3.0-or-later
190
+ function isHexN(value, byteLength) {
191
+ if (typeof value !== "string") return false;
192
+ const v = value.replace(/^0[Xx]/, "");
193
+ const length = byteLength === null ? "+" : `{${2 * byteLength}}`;
194
+ const r = new RegExp(`^[A-Fa-f\\d]${length}$`);
195
+ return r.test(v);
196
+ }
197
+ function isHex8(value) {
198
+ return isHexN(value, 8);
199
+ }
200
+ function isHex32(value) {
201
+ return isHexN(value, 32);
202
+ }
186
203
 
187
204
  // src/bin/server.ts
188
205
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
@@ -307,16 +324,16 @@ async function work(data) {
307
324
  throw new Error(resBody);
308
325
  }
309
326
  resBody = `${action} failed`;
310
- if (typeof hash2 !== "string" || !/[A-Fa-f\d]{64}/.test(hash2)) {
327
+ if (!isHex32(hash2)) {
311
328
  LOG: logger.log("Hash must be hex char(64)");
312
329
  throw new Error(resBody);
313
330
  }
314
- if (difficulty !== void 0 && (typeof difficulty !== "string" || !/^[A-Fa-f\d]{16}$/.test(difficulty))) {
331
+ if (difficulty !== void 0 && !isHex8(difficulty)) {
315
332
  LOG: logger.log("Difficulty must be hex char(16).");
316
333
  throw new Error(resBody);
317
334
  }
318
335
  if (action === "work_validate") {
319
- if (typeof work2 !== "string" || !/^[A-Fa-f\d]{16}$/.test(work2)) {
336
+ if (!isHex8(work2)) {
320
337
  LOG: logger.log("Work must be hex char(16).");
321
338
  throw new Error(resBody);
322
339
  }
@@ -349,23 +366,21 @@ async function work(data) {
349
366
  }
350
367
  }
351
368
  function get(res) {
352
- res.writeHead(200, { "Content-Type": "text/plain" }).end(
353
- `Usage: Send POST request to server URL to generate or validate Nano proof-of-work
369
+ res.writeHead(200, { "Content-Type": "text/plain" }).end(`Usage: Send POST request to server URL to generate or validate Nano proof-of-work
354
370
 
355
- Generate work for a BLOCKHASH with an optional DIFFICULTY:
356
- curl -d '{ action: "work_generate", hash: BLOCKHASH, difficulty?: DIFFICULTY }'
371
+ Generate work for a HASH with an optional DIFFICULTY:
372
+ curl -d '{ action: "work_generate", hash: HASH, difficulty?: DIFFICULTY }'
357
373
 
358
- Validate WORK previously calculated for a BLOCKHASH with an optional DIFFICULTY:
359
- curl -d '{ action: "work_validate", work: WORK, hash: BLOCKHASH, difficulty?: DIFFICULTY }'
374
+ Validate WORK previously calculated for a HASH with an optional DIFFICULTY:
375
+ curl -d '{ action: "work_validate", work: WORK, hash: HASH, difficulty?: DIFFICULTY }'
360
376
 
361
- BLOCKHASH is a big-endian 64-character hexadecimal string.
377
+ HASH is a big-endian 64-character hexadecimal string.
362
378
  WORK is little-endian 16-character hexadecimal string.
363
379
  DIFFICULTY is an optional 16-character hexadecimal string (default: FFFFFFF800000000)
364
380
 
365
381
  Report bugs: <bug-nano-pow@zoso.dev>
366
382
  Full documentation: <https://www.npmjs.com/package/nano-pow>
367
- `
368
- );
383
+ `);
369
384
  }
370
385
  async function post(res, reqData) {
371
386
  const resHeaders = { "Content-Type": "application/json" };
package/dist/main.min.js CHANGED
@@ -224,6 +224,41 @@ function bigintToHex(int, length = 0) {
224
224
  return int.toString(16).padStart(length, "0");
225
225
  }
226
226
 
227
+ // src/utils/cache.ts
228
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
229
+ //! SPDX-License-Identifier: GPL-3.0-or-later
230
+ var Cache = class {
231
+ static #storage = {};
232
+ static #getItem(key) {
233
+ if (globalThis?.localStorage) return globalThis.localStorage.getItem(key);
234
+ return this.#storage[key];
235
+ }
236
+ static #setItem(key, item) {
237
+ if (globalThis?.localStorage) return globalThis.localStorage.setItem(key, item);
238
+ this.#storage[key] = item;
239
+ }
240
+ static search(hash, difficulty) {
241
+ const bigintHash = bigintFrom(hash, "hex");
242
+ const item = this.#getItem("NanoPowCache");
243
+ if (item) {
244
+ const cache = JSON.parse(item);
245
+ for (const c of cache) {
246
+ if (bigintFrom(c.hash, "hex") === bigintHash && bigintFrom(c.difficulty, "hex") >= difficulty) {
247
+ return c;
248
+ }
249
+ }
250
+ }
251
+ return null;
252
+ }
253
+ static store(result2) {
254
+ const item = this.#getItem("NanoPowCache");
255
+ const cache = JSON.parse(item ?? "[]");
256
+ if (cache.push(result2) > 1e3) cache.shift();
257
+ this.#setItem("NanoPowCache", JSON.stringify(cache));
258
+ return result2;
259
+ }
260
+ };
261
+
227
262
  // src/utils/logger.ts
228
263
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
229
264
  //! SPDX-License-Identifier: GPL-3.0-or-later
@@ -479,8 +514,8 @@ async function generate(hash, difficulty, debug) {
479
514
  });
480
515
  }
481
516
 
482
- // src/lib/generate/wasm/asm/build/compute.wasm
483
- var compute_default = __toBinary("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");
517
+ // src/lib/generate/wasm/asm/compute.wasm
518
+ var compute_default = __toBinary("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");
484
519
 
485
520
  // src/lib/generate/wasm/worker.ts
486
521
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
@@ -705,18 +740,13 @@ precision mediump float;
705
740
  #endif
706
741
  precision highp int;out uvec4 nonce;uniform highp usampler2D src;void main(){nonce=uvec4(0u);vec2 inputSize=vec2(textureSize(src,0));vec2 texel=vec2(1.0)/inputSize;vec2 blockCoord=(floor(gl_FragCoord.xy)*2.0+vec2(0.5))/inputSize;uvec4 pixel=texture(src,blockCoord);nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(texel.x,0.0));nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(0.0,texel.y));nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(texel.x,texel.y));nonce=pixel.x==0u?nonce:pixel;}`;
707
742
 
708
- // src/lib/generate/webgl/shaders/build/draw.frag
743
+ // src/lib/generate/webgl/shaders/draw.frag
709
744
  var draw_default = `#version 300 es
710
745
  #pragma vscode_glsllint_stage: frag
711
746
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
712
747
  //! SPDX-FileContributor: Ben Green <ben@latenightsketches.com>
713
748
  //! SPDX-License-Identifier: GPL-3.0-or-later AND MIT
714
- #ifdef GL_FRAGMENT_PRECISION_HIGH
715
- precision highp float;
716
- #else
717
- precision mediump float;
718
- #endif
719
- layout(std140)uniform INPUT{uint hash[8];uvec2 difficulty;uvec2 seed;};out uvec4 work;void main(){work=uvec4(0u);uvec2 m0=seed ^ uvec2(gl_FragCoord);uvec2 m1=uvec2(hash[0u],hash[1u]);uvec2 m2=uvec2(hash[2u],hash[3u]);uvec2 m3=uvec2(hash[4u],hash[5u]);uvec2 m4=uvec2(hash[6u],hash[7u]);uvec2 v0=uvec2(0xF3BCC908u,0x6A09E667u);uvec2 v8=uvec2(0xF3BCC908u,0x6A09E667u);uvec2 v1=uvec2(0x84CAA73Bu,0xBB67AE85u);uvec2 v9=uvec2(0x84CAA73Bu,0xBB67AE85u);uvec2 v2=uvec2(0xFE94F82Bu,0x3C6EF372u);uvec2 v10=uvec2(0xFE94F82Bu,0x3C6EF372u);uvec2 v3=uvec2(0x5F1D36F1u,0xA54FF53Au);uvec2 v11=uvec2(0x5F1D36F1u,0xA54FF53Au);uvec2 v4=uvec2(0xADE682D1u,0x510E527Fu);uvec2 v12=uvec2(0xADE682D1u,0x510E527Fu);uvec2 v5=uvec2(0x2B3E6C1Fu,0x9B05688Cu);uvec2 v13=uvec2(0x2B3E6C1Fu,0x9B05688Cu);uvec2 v6=uvec2(0xFB41BD6Bu,0x1F83D9ABu);uvec2 v14=uvec2(0xFB41BD6Bu,0x1F83D9ABu);uvec2 v7=uvec2(0x137E2179u,0x5BE0CD19u);uvec2 v15=uvec2(0x137E2179u,0x5BE0CD19u);v0 ^=uvec2(0x01010008u,0u);v12 ^=uvec2(40u,0u);v14=~v14;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m4;v0.y+=uint(v0.x<m4.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m2;v3.y+=uint(v3.x<m2.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));uvec2 result=uvec2(0xF3BCC908u,0x6A09E667u)^ uvec2(0x01010008u,0u)^ v0 ^ v8;if(result.y>difficulty.y||(result.y==difficulty.y&&result.x>=difficulty.x)){work=uvec4(m0,result);}if(work.x==0u){discard;}}`;
749
+ layout(std140)uniform INPUT{uint hash[8];uvec2 difficulty;uvec2 seed;};out uvec4 work;void main(){work=uvec4(0u);uvec2 m0=seed ^ uvec2(gl_FragCoord);uvec2 m1=uvec2(hash[0u],hash[1u]);uvec2 m2=uvec2(hash[2u],hash[3u]);uvec2 m3=uvec2(hash[4u],hash[5u]);uvec2 m4=uvec2(hash[6u],hash[7u]);uvec2 v0=uvec2(0xf3bcc908u,0x6a09e667u);uvec2 v8=uvec2(0xf3bcc908u,0x6a09e667u);uvec2 v1=uvec2(0x84caa73bu,0xbb67ae85u);uvec2 v9=uvec2(0x84caa73bu,0xbb67ae85u);uvec2 v2=uvec2(0xfe94f82bu,0x3c6ef372u);uvec2 v10=uvec2(0xfe94f82bu,0x3c6ef372u);uvec2 v3=uvec2(0x5f1d36f1u,0xa54ff53au);uvec2 v11=uvec2(0x5f1d36f1u,0xa54ff53au);uvec2 v4=uvec2(0xade682d1u,0x510e527fu);uvec2 v12=uvec2(0xade682d1u,0x510e527fu);uvec2 v5=uvec2(0x2b3e6c1fu,0x9b05688cu);uvec2 v13=uvec2(0x2b3e6c1fu,0x9b05688cu);uvec2 v6=uvec2(0xfb41bd6bu,0x1f83d9abu);uvec2 v14=uvec2(0xfb41bd6bu,0x1f83d9abu);uvec2 v7=uvec2(0x137e2179u,0x5be0cd19u);uvec2 v15=uvec2(0x137e2179u,0x5be0cd19u);v0 ^=uvec2(0x01010008u,0x0u);v12 ^=uvec2(0x28u,0x0u);v14 ^=uvec2(~0x0u);v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m4;v0.y+=uint(v0.x<m4.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m2;v3.y+=uint(v3.x<m2.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));uvec2 result=uvec2(0xf3bcc908u,0x6a09e667u)^ uvec2(0x01010008u,0x0u)^ v0 ^ v8;if(result.y>difficulty.y||(result.y==difficulty.y&&result.x>=difficulty.x)){work=uvec4(m0,result);}if(work.x==0u){discard;}}`;
720
750
 
721
751
  // src/lib/generate/webgl/shaders/quad.vert
722
752
  var quad_default = `#version 300 es
@@ -1079,10 +1109,8 @@ async function generate3(hash, difficulty, effort, debug) {
1079
1109
  };
1080
1110
  }
1081
1111
 
1082
- // src/lib/generate/webgpu/shaders/build/compute.wgsl
1083
- var compute_default2 = `//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
1084
- //! SPDX-License-Identifier: GPL-3.0-or-later
1085
- struct INPUT{hash:array<vec4<u32>,2>,difficulty:vec2<u32>,seed:vec2<u32>};@group(0)@binding(0)var<uniform> input:INPUT;struct OUTPUT{found:atomic<u32>,work:vec2<u32>,difficulty:vec2<u32>};@group(0)@binding(1)var<storage,read_write>output:OUTPUT;const mZ=vec2(0u);var<workgroup> found:bool;var<workgroup> m1:vec2<u32>;var<workgroup> m2:vec2<u32>;var<workgroup> m3:vec2<u32>;var<workgroup> m4:vec2<u32>;var<workgroup> d:vec2<u32>;var<workgroup> seed:vec2<u32>;@compute @workgroup_size(64)fn main(@builtin(global_invocation_id)global_id:vec3<u32>,@builtin(local_invocation_id)local_id:vec3<u32>){if(local_id.x==0u){found=atomicLoad(&output.found)!=0u;seed=input.seed;m1=input.hash[0u].xy;m2=input.hash[0u].zw;m3=input.hash[1u].xy;m4=input.hash[1u].zw;d=input.difficulty;}workgroupBarrier();if(found){return;}let m0:vec2<u32>=seed ^ global_id.xy;var v0:vec2<u32>=vec2<u32>(0xF3BCC908u,0x6A09E667u);var v8:vec2<u32>=vec2<u32>(0xF3BCC908u,0x6A09E667u);var v1:vec2<u32>=vec2<u32>(0x84CAA73Bu,0xBB67AE85u);var v9:vec2<u32>=vec2<u32>(0x84CAA73Bu,0xBB67AE85u);var v2:vec2<u32>=vec2<u32>(0xFE94F82Bu,0x3C6EF372u);var v10:vec2<u32>=vec2<u32>(0xFE94F82Bu,0x3C6EF372u);var v3:vec2<u32>=vec2<u32>(0x5F1D36F1u,0xA54FF53Au);var v11:vec2<u32>=vec2<u32>(0x5F1D36F1u,0xA54FF53Au);var v4:vec2<u32>=vec2<u32>(0xADE682D1u,0x510E527Fu);var v12:vec2<u32>=vec2<u32>(0xADE682D1u,0x510E527Fu);var v5:vec2<u32>=vec2<u32>(0x2B3E6C1Fu,0x9B05688Cu);var v13:vec2<u32>=vec2<u32>(0x2B3E6C1Fu,0x9B05688Cu);var v6:vec2<u32>=vec2<u32>(0xFB41BD6Bu,0x1F83D9ABu);var v14:vec2<u32>=vec2<u32>(0xFB41BD6Bu,0x1F83D9ABu);var v7:vec2<u32>=vec2<u32>(0x137E2179u,0x5BE0CD19u);var v15:vec2<u32>=vec2<u32>(0x137E2179u,0x5BE0CD19u);v0 ^=vec2(0x01010008u,0u);v12 ^=vec2(40u,0u);v14=~v14;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m4;v0.y+=u32(v0.x<m4.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m2;v3.y+=u32(v3.x<m2.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));let result=vec2<u32>(0xF3BCC908u,0x6A09E667u)^ vec2<u32>(0x01010008u,0u)^ v0 ^ v8;if(result.y>input.difficulty.y||(result.y==input.difficulty.y&&result.x>=input.difficulty.x)){loop{let swap=atomicCompareExchangeWeak(&output.found,0u,1u);if(swap.exchanged){output.work=m0;output.difficulty=result;break;}if(swap.old_value!=0u){break;}}return;}}`;
1112
+ // src/lib/generate/webgpu/shaders/compute.wgsl
1113
+ var compute_default2 = `struct INPUT{hash:array<vec4<u32>,2>,difficulty:vec2<u32>,seed:vec2<u32>};@group(0)@binding(0)var<uniform> input:INPUT;struct OUTPUT{found:atomic<u32>,work:vec2<u32>,difficulty:vec2<u32>};@group(0)@binding(1)var<storage,read_write>output:OUTPUT;var<workgroup> found:bool;var<workgroup> m1:vec2<u32>;var<workgroup> m2:vec2<u32>;var<workgroup> m3:vec2<u32>;var<workgroup> m4:vec2<u32>;var<workgroup> d:vec2<u32>;var<workgroup> seed:vec2<u32>;@compute @workgroup_size(64)fn main(@builtin(global_invocation_id)global_id:vec3<u32>,@builtin(local_invocation_id)local_id:vec3<u32>){if(local_id.x==0u){found=atomicLoad(&output.found)!=0u;seed=input.seed;m1=input.hash[0u].xy;m2=input.hash[0u].zw;m3=input.hash[1u].xy;m4=input.hash[1u].zw;d=input.difficulty;}workgroupBarrier();if(found){return;}let m0:vec2<u32>=seed ^ global_id.xy;var v0=vec2<u32>(0xf3bcc908u,0x6a09e667u);var v8=vec2<u32>(0xf3bcc908u,0x6a09e667u);var v1=vec2<u32>(0x84caa73bu,0xbb67ae85u);var v9=vec2<u32>(0x84caa73bu,0xbb67ae85u);var v2=vec2<u32>(0xfe94f82bu,0x3c6ef372u);var v10=vec2<u32>(0xfe94f82bu,0x3c6ef372u);var v3=vec2<u32>(0x5f1d36f1u,0xa54ff53au);var v11=vec2<u32>(0x5f1d36f1u,0xa54ff53au);var v4=vec2<u32>(0xade682d1u,0x510e527fu);var v12=vec2<u32>(0xade682d1u,0x510e527fu);var v5=vec2<u32>(0x2b3e6c1fu,0x9b05688cu);var v13=vec2<u32>(0x2b3e6c1fu,0x9b05688cu);var v6=vec2<u32>(0xfb41bd6bu,0x1f83d9abu);var v14=vec2<u32>(0xfb41bd6bu,0x1f83d9abu);var v7=vec2<u32>(0x137e2179u,0x5be0cd19u);var v15=vec2<u32>(0x137e2179u,0x5be0cd19u);v0 ^=vec2<u32>(0x01010008u,0x0u);v12 ^=vec2<u32>(0x28u,0x0u);v14 ^=vec2<u32>(~0x0u);v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m4;v0.y+=u32(v0.x<m4.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m2;v3.y+=u32(v3.x<m2.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));let result=vec2<u32>(0xf3bcc908u,0x6a09e667u)^ vec2<u32>(0x01010008u,0x0u)^ v0 ^ v8;if(result.y>input.difficulty.y||(result.y==input.difficulty.y&&result.x>=input.difficulty.x)){loop{let swap=atomicCompareExchangeWeak(&output.found,0u,1u);if(swap.exchanged){output.work=m0;output.difficulty=result;break;}if(swap.old_value!=0u){break;}}return;}}`;
1086
1114
 
1087
1115
  // src/lib/generate/webgpu/index.ts
1088
1116
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
@@ -1470,23 +1498,28 @@ var NanoPowConfig = (options) => {
1470
1498
  // src/lib/index.ts
1471
1499
  //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
1472
1500
  //! SPDX-License-Identifier: GPL-3.0-or-later
1501
+ var logger6 = new Logger();
1473
1502
  var q2 = new Queue();
1474
1503
  async function work_generate(hash, options) {
1475
1504
  return q2.add(async () => {
1476
1505
  try {
1477
1506
  const { api, debug, difficulty, effort } = await NanoPowConfig(options);
1507
+ const cached = Cache.search(hash, difficulty);
1508
+ if (cached) {
1509
+ return cached;
1510
+ }
1478
1511
  switch (api) {
1479
1512
  case "webgpu": {
1480
- return generate4(bigintFrom(hash, "hex"), difficulty, effort, debug);
1513
+ return Cache.store(await generate4(bigintFrom(hash, "hex"), difficulty, effort, debug));
1481
1514
  }
1482
1515
  case "webgl": {
1483
- return generate3(bigintFrom(hash, "hex"), difficulty, effort, debug);
1516
+ return Cache.store(await generate3(bigintFrom(hash, "hex"), difficulty, effort, debug));
1484
1517
  }
1485
1518
  case "wasm": {
1486
- return generate2(bigintFrom(hash, "hex"), difficulty, effort, debug);
1519
+ return Cache.store(await generate2(bigintFrom(hash, "hex"), difficulty, effort, debug));
1487
1520
  }
1488
1521
  default: {
1489
- return generate(bigintFrom(hash, "hex"), difficulty, debug);
1522
+ return Cache.store(await generate(bigintFrom(hash, "hex"), difficulty, debug));
1490
1523
  }
1491
1524
  }
1492
1525
  } catch (e) {
@@ -1496,8 +1529,10 @@ async function work_generate(hash, options) {
1496
1529
  }
1497
1530
  async function work_validate(work, hash, options) {
1498
1531
  try {
1532
+ const bigintHash = bigintFrom(hash, "hex");
1533
+ const bigintWork = bigintFrom(work, "hex");
1499
1534
  const { debug, difficulty } = await NanoPowConfig(options);
1500
- const result2 = await validate(bigintFrom(work, "hex"), bigintFrom(hash, "hex"), difficulty, debug);
1535
+ const result2 = await validate(bigintWork, bigintHash, difficulty, debug);
1501
1536
  return result2;
1502
1537
  } catch (e) {
1503
1538
  return { error: typeof e === "string" ? e : e?.message ?? "" };
package/docs/blake2.md ADDED
@@ -0,0 +1,26 @@
1
+ Twelve rounds of G mixing as part of BLAKE2b compression step, each divided into eight subprocesses. Each subprocess applies transformations to `m` and `v` variables based on a defined set of index inputs. The algorithm for each subprocess is defined as ollows:
2
+
3
+ * r is the current round
4
+ * i is the current subprocess within that round
5
+ * a, b, c, d are elements of `v` at specific indexes
6
+ * sigma is a defined set of array indexes for `m`
7
+ * rotr64 is a right-hand bit rotation function
8
+
9
+ ```
10
+ a = a + b
11
+ a = a + m[sigma[r][2*i+0]]
12
+ d = rotr64(d ^ a, 32)
13
+ c = c + d
14
+ b = rotr64(b ^ c, 24)
15
+ a = a + b
16
+ a = a + m[sigma[r][2*i+1]]
17
+ d = rotr64(d ^ a, 16)
18
+ c = c + d
19
+ b = rotr64(b ^ c, 63)
20
+ ```
21
+
22
+ Each sum step has an extra carry addition. Note that the m[sigma] sum is skipped if m[sigma] is zero since it effectively does nothing. Also note that rotations must be applied differently from the reference implementation due to the lack of both a native rotate function and 64-bit support in WGSL.
23
+
24
+ Subprocesses 1-4 are entirely independent of each other, as are subprocesses 5-8, and so an opportunity to compute in parallel presents itself. However, testing showed this to be ineffective at improving performance.
25
+
26
+ These subprocesses could also be parallelized by pairing variables of two different hash processes and packing them into vectors (i.e. a uvec2 for high and low bits of a u64 into a uvec4). Think of it as a two lane highway where traffic in one lane has entirely different cars than the other, but they both are travelling toward the same destination. Once again, however, testing showed this to have a neglible effect.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nano-pow",
3
- "version": "5.0.5",
3
+ "version": "5.1.0",
4
4
  "description": "Proof-of-work generation and validation with WebGPU/WebGL/WASM for Nano cryptocurrency.",
5
5
  "keywords": [
6
6
  "nemo",
@@ -47,17 +47,14 @@
47
47
  "url": "git+https://zoso.dev/nano-pow.git"
48
48
  },
49
49
  "scripts": {
50
- "asgenerate": "cd src/lib/generate/wasm/asm && rm -rf build && tsc && node build/generate.js > build/index.ts && cp tsconfig.json* build",
51
50
  "benchmark": "npm run build && ./dist/bin/nano-pow.sh --benchmark 10 --debug",
52
- "build": "rm -rf {dist,types} && tsc && npm run generate && asc src/lib/generate/wasm/asm/build/index.ts && node esbuild.mjs && cp -p src/bin/nano-pow.sh dist/bin",
51
+ "build": "rm -rf {dist,types} && tsc && npm run generate && node esbuild.mjs && cp -p src/bin/nano-pow.sh dist/bin",
53
52
  "build:dev": "NODE_ENV=development npm run build",
54
- "generate": "npm run asgenerate && npm run glgenerate && npm run gpugenerate",
55
- "glgenerate": "cd src/lib/generate/webgl/shaders && rm -rf build && tsc && node build/generate.js > build/draw.frag && cp tsconfig.json* build",
56
- "gpugenerate": "cd src/lib/generate/webgpu/shaders && rm -rf build && tsc && node build/generate.js > build/compute.wgsl && cp tsconfig.json* build",
53
+ "generate": "node ./scripts/blake2b-gen.js && asc src/lib/generate/wasm/asm/index.ts",
57
54
  "prepare": "npm run build",
58
- "score": "npm run build && ./dist/bin/nano-pow.sh --effort 4 --benchmark 100 --score 100",
55
+ "score": "npm run build && ./dist/bin/nano-pow.sh --effort 4 --benchmark 10 --score 10",
59
56
  "start": "node --max-http-header-size=1024 --max-old-space-size=256 ./dist/bin/server.js",
60
- "test": "npm run build && ./test/script.sh"
57
+ "test": "npm run build:dev && ./test/script.sh"
61
58
  },
62
59
  "devDependencies": {
63
60
  "@types/node": "^24.0.3",