From d5e5495bfe07175c2d85473768de79d0a1b2d173 Mon Sep 17 00:00:00 2001 From: Tuyen Nguyen Date: Fri, 1 Mar 2024 10:40:00 +0700 Subject: [PATCH] feat: initial implementation of simd --- packages/as-sha256/assembly/index.ts | 105 +- packages/as-sha256/assembly/simd.ts | 238 + packages/as-sha256/assembly/utils/const.ts | 36 + packages/as-sha256/assembly/utils/v128.ts | 341 + packages/as-sha256/build/optimized.wasm | Bin 4159 -> 15706 bytes packages/as-sha256/build/optimized.wat | 4464 ++++++++++- packages/as-sha256/build/untouched.wasm | Bin 6592 -> 23946 bytes packages/as-sha256/build/untouched.wat | 8271 +++++++++++++++++++- packages/as-sha256/package.json | 4 +- packages/as-sha256/src/index.ts | 147 +- packages/as-sha256/src/wasm.ts | 3 + packages/as-sha256/src/wasmCode.ts | 2 +- packages/as-sha256/test/perf/index.test.ts | 2 +- packages/as-sha256/test/perf/simd.test.ts | 31 + packages/as-sha256/test/unit/simd.test.ts | 47 + 15 files changed, 13586 insertions(+), 105 deletions(-) create mode 100644 packages/as-sha256/assembly/simd.ts create mode 100644 packages/as-sha256/assembly/utils/const.ts create mode 100644 packages/as-sha256/assembly/utils/v128.ts create mode 100644 packages/as-sha256/test/perf/simd.test.ts create mode 100644 packages/as-sha256/test/unit/simd.test.ts diff --git a/packages/as-sha256/assembly/index.ts b/packages/as-sha256/assembly/index.ts index bb9142e7..76652227 100644 --- a/packages/as-sha256/assembly/index.ts +++ b/packages/as-sha256/assembly/index.ts @@ -1,45 +1,14 @@ +import {digest64V128} from "./simd"; +import {K, W64} from "./utils/const"; +// As of Mar 2024, simd support v128, and each block is 32 bits, so we can hash 4 inputs at once +export const PARALLEL_FACTOR = 4; +export const INPUT_LENGTH = 512; //https://github.com/dchest/fast-sha256-js/blob/master/src/sha256.ts const DIGEST_LENGTH = 32; -export const INPUT_LENGTH = 512; -// constants used in the SHA256 compression function -const K: u32[] = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, - 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, - 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, - 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, - 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, - 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, - 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, - 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, - 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, - 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -]; const kPtr = K.dataStart; -//precomputed W + K for message block representing length 64 bytes for fixed input of 64 bytes for digest64 -const W64: u32[] = [ - 0xc28a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf374, - 0x649b69c1, 0xf0fe4786, 0x0fe1edc6, 0x240cf254, - 0x4fe9346f, 0x6cc984be, 0x61b9411e, 0x16f988fa, - 0xf2c65152, 0xa88e5a6d, 0xb019fc65, 0xb9d99ec7, - 0x9a1231c3, 0xe70eeaa0, 0xfdb1232b, 0xc7353eb0, - 0x3069bad5, 0xcb976d5f, 0x5a0f118f, 0xdc1eeefd, - 0x0a35b689, 0xde0b7a04, 0x58f4ca9d, 0xe15d5b16, - 0x007f3e86, 0x37088980, 0xa507ea32, 0x6fab9537, - 0x17406110, 0x0d8cd6f1, 0xcdaa3b6d, 0xc0bbbe37, - 0x83613bda, 0xdb48a363, 0x0b02e931, 0x6fd15ca7, - 0x521afaca, 0x31338431, 0x6ed41a95, 0x6d437890, - 0xc39c91f2, 0x9eccabbd, 0xb5c9a0e6, 0x532fb63c, - 0xd2c741c6, 0x07237ea3, 0xa4954b68, 0x4c191d76, -]; const w64Ptr = W64.dataStart; // intermediate hash values stored in H0-H7 @@ -53,8 +22,8 @@ var a: u32, b: u32, c: u32, d: u32, e: u32, f: u32, g: u32, h: u32, i: u32, t1: const M = new ArrayBuffer(64); const mPtr = changetype(M); -// 64 32bit extended message blocks -const W = new ArrayBuffer(256); +// 64 32bit extended message blocks = 64 * 4 = 256 +const W = new ArrayBuffer(256 * PARALLEL_FACTOR); const wPtr = changetype(W); // input buffer @@ -316,7 +285,7 @@ export function final(outPtr: usize): void { export function digest(length: i32): void { init(); update(inputPtr, length); - final(outputPtr) + final(outputPtr); } export function digest64(inPtr: usize, outPtr: usize): void { @@ -332,3 +301,61 @@ export function digest64(inPtr: usize, outPtr: usize): void { store32(outPtr, 6, bswap(H6)); store32(outPtr, 7, bswap(H7)); } + +/** + * Hash 4 inputs of exactly 64 bytes each + * Input pointer is 256 bytes as below: + * byte u32 + * input 0 0 1 2 ... 63 <===> 0 1 ... 15 + * input 1 64 65 ... 127 <===> 16 17 ... 31 + * input 2 128 ... 191 <===> 32 33 ... 47 + * input 3 192 ... 255 <===> 48 49 ... 63 + * + * we need to transfer it to expanded message blocks, with 16 first items like: + * + * w_v128_0 0 16 32 48 + * w_v128_1 1 17 33 49 + * ... + * w_v128_15 15 31 47 63 + * + * remaining 48 items are computed inside hashBlocksV128 loop. + * @param outPtr + */ +export function hash4Inputs(outPtr: usize): void { + for (i = 0; i < 16; i++) { + store32(wPtr, PARALLEL_FACTOR * i, load32be(inputPtr, i)); + store32(wPtr, PARALLEL_FACTOR * i + 1, load32be(inputPtr, i + 16)); + store32(wPtr, PARALLEL_FACTOR * i + 2, load32be(inputPtr, i + 32)); + store32(wPtr, PARALLEL_FACTOR * i + 3, load32be(inputPtr, i + 48)); + } + + digest64V128(wPtr, outPtr); +} + +/* + * Hash 8 hash objects which are 4 inputs of 64 bytes each similar to hash4Inputs + * + * Input pointer is 64 u32 (256 bytes) as below: + * input 0 input 1 input 2 input 3 + * h0 h0 h0 h0 + * h1 h1 h1 h1 + * ... + * h7 h7 h7 h7 + * h0 h0 h0 h0 + * h1 h1 h1 h1 + * ... + * h7 h7 h7 h7 + * + * that's already the setup for wInputPtr, we only need to load be value of them to make + * it the first 16 items of expanded message blocks + * + * remaining 48 items are computed inside hashBlocksV128 loop. + * + */ +export function hash8HashObjects(outPtr: usize): void { + for (i = 0; i < 16 * PARALLEL_FACTOR; i++) { + store32(wPtr, i, load32be(inputPtr, i)); + } + + digest64V128(wPtr, outPtr); +} diff --git a/packages/as-sha256/assembly/simd.ts b/packages/as-sha256/assembly/simd.ts new file mode 100644 index 00000000..4d261183 --- /dev/null +++ b/packages/as-sha256/assembly/simd.ts @@ -0,0 +1,238 @@ +import {K, W64} from "./utils/const"; +import {getV128, setV128} from "./utils/v128"; + +let H0V128: v128, H1V128: v128, H2V128: v128, H3V128: v128, H4V128: v128, H5V128: v128, H6V128: v128, H7V128: v128; +let aV128: v128, bV128: v128, cV128: v128, dV128: v128, eV128: v128, fV128: v128, gV128: v128, hV128: v128, iV128: v128, t1V128: v128, t2V128: v128; +let i: i32 +let tmpW: v128; + +const kV128ArrayBuffer = new ArrayBuffer(4 * 64 * 4); +const kV128Ptr = changetype(kV128ArrayBuffer); +for (let i = 0; i < 64; i++) { + setV128(kV128Ptr, i, i32x4.splat(K[i])); +} + +const w64V12ArrayBuffer = new ArrayBuffer(4 * 64 * 4); +const w64V128Ptr = changetype(w64V12ArrayBuffer); +for (let i = 0; i < 64; i++) { + setV128(w64V128Ptr, i, i32x4.splat(W64[i])); +} + +const DEFAULT_H0V128 = i32x4.splat(0x6a09e667); +const DEFAULT_H1V128 = i32x4.splat(0xbb67ae85); +const DEFAULT_H2V128 = i32x4.splat(0x3c6ef372); +const DEFAULT_H3V128 = i32x4.splat(0xa54ff53a); +const DEFAULT_H4V128 = i32x4.splat(0x510e527f); +const DEFAULT_H5V128 = i32x4.splat(0x9b05688c); +const DEFAULT_H6V128 = i32x4.splat(0x1f83d9ab); +const DEFAULT_H7V128 = i32x4.splat(0x5be0cd19); + +function initV128(): void { + H0V128 = DEFAULT_H0V128; + H1V128 = DEFAULT_H1V128; + H2V128 = DEFAULT_H2V128; + H3V128 = DEFAULT_H3V128; + H4V128 = DEFAULT_H4V128; + H5V128 = DEFAULT_H5V128; + H6V128 = DEFAULT_H6V128; + H7V128 = DEFAULT_H7V128; +} + +/** + * wInputPtr: pointer to extended blocks + * block 0 (4 bytes) block 1 (4 bytes) block 2 (4 bytes) block 3 (4 bytes) + * wV128_0 |--------------------|--------------------|--------------------|--------------------| + * wV128_1 |--------------------|--------------------|--------------------|--------------------| + * ... ... + * wV128_15 |--------------------|--------------------|--------------------|--------------------| ===> end of input data, below is extended area + * wV128_16 based on item 0 to 14 + * wV128_17 based on item 1 to 15 + * ... + * wV128_63 based on item 47 to 62 + * + * outPtr is 32 bytes each x 4 (PARALLEL_FACTOR) = 128 bytes + */ +export function digest64V128(wInputPtr: usize, outPtr: usize): void { + initV128(); + hashBlocksV128(wInputPtr); + hashPreCompWV128(); + + // extract lane manually otherwise get "Expression must be a compile-time constant."" + store32(outPtr, 0, bswap(i32x4.extract_lane(H0V128, 0))); + store32(outPtr, 1, bswap(i32x4.extract_lane(H1V128, 0))); + store32(outPtr, 2, bswap(i32x4.extract_lane(H2V128, 0))); + store32(outPtr, 3, bswap(i32x4.extract_lane(H3V128, 0))); + store32(outPtr, 4, bswap(i32x4.extract_lane(H4V128, 0))); + store32(outPtr, 5, bswap(i32x4.extract_lane(H5V128, 0))); + store32(outPtr, 6, bswap(i32x4.extract_lane(H6V128, 0))); + store32(outPtr, 7, bswap(i32x4.extract_lane(H7V128, 0))); + + store32(outPtr, 8, bswap(i32x4.extract_lane(H0V128, 1))); + store32(outPtr, 9, bswap(i32x4.extract_lane(H1V128, 1))); + store32(outPtr, 10, bswap(i32x4.extract_lane(H2V128, 1))); + store32(outPtr, 11, bswap(i32x4.extract_lane(H3V128, 1))); + store32(outPtr, 12, bswap(i32x4.extract_lane(H4V128, 1))); + store32(outPtr, 13, bswap(i32x4.extract_lane(H5V128, 1))); + store32(outPtr, 14, bswap(i32x4.extract_lane(H6V128, 1))); + store32(outPtr, 15, bswap(i32x4.extract_lane(H7V128, 1))); + + store32(outPtr, 16, bswap(i32x4.extract_lane(H0V128, 2))); + store32(outPtr, 17, bswap(i32x4.extract_lane(H1V128, 2))); + store32(outPtr, 18, bswap(i32x4.extract_lane(H2V128, 2))); + store32(outPtr, 19, bswap(i32x4.extract_lane(H3V128, 2))); + store32(outPtr, 20, bswap(i32x4.extract_lane(H4V128, 2))); + store32(outPtr, 21, bswap(i32x4.extract_lane(H5V128, 2))); + store32(outPtr, 22, bswap(i32x4.extract_lane(H6V128, 2))); + store32(outPtr, 23, bswap(i32x4.extract_lane(H7V128, 2))); + + store32(outPtr, 24, bswap(i32x4.extract_lane(H0V128, 3))); + store32(outPtr, 25, bswap(i32x4.extract_lane(H1V128, 3))); + store32(outPtr, 26, bswap(i32x4.extract_lane(H2V128, 3))); + store32(outPtr, 27, bswap(i32x4.extract_lane(H3V128, 3))); + store32(outPtr, 28, bswap(i32x4.extract_lane(H4V128, 3))); + store32(outPtr, 29, bswap(i32x4.extract_lane(H5V128, 3))); + store32(outPtr, 30, bswap(i32x4.extract_lane(H6V128, 3))); + store32(outPtr, 31, bswap(i32x4.extract_lane(H7V128, 3))); +} + +/** + * Expand message blocks (16 32bit blocks), into extended message blocks (64 32bit blocks) + * There are 4 inputs, each input is 64 bytes which is 16 v128 objects of wInputPtr + * The first 16 v128 objects are computed before this function + * The remaining 48 v128 objects are computed from the first 16 v128 objects in this function + * Apply SHA256 compression function on extended message blocks + * Update intermediate hash values + * @param WV128 64 v128 objects respective to 4 expanded message blocks memory + * @param mV12Arr 16 v128 objects respective to 4 message blocks memory + * + * + */ +@inline +function hashBlocksV128(wInputPtr: usize): void { + // this is a copy of data + aV128 = H0V128; + bV128 = H1V128; + cV128 = H2V128; + dV128 = H3V128; + eV128 = H4V128; + fV128 = H5V128; + gV128 = H6V128; + hV128 = H7V128; + + // Apply SHA256 compression function on expanded message blocks + for (i = 0; i < 64; i++) { + tmpW = i < 16 ? getV128(wInputPtr, i) : i32x4.add(i32x4.add(i32x4.add(SIG1V128(getV128(wInputPtr, i - 2)), getV128(wInputPtr, i - 7)), + SIG0V128(getV128(wInputPtr, i - 15))), getV128(wInputPtr, i - 16)); + if (i >= 16) { + setV128(wInputPtr, i, tmpW); + } + t1V128 = i32x4.add(i32x4.add(i32x4.add(i32x4.add(hV128, EP1V128(eV128)), CHV128(eV128, fV128, gV128)), getV128(kV128Ptr, i)), tmpW); + t2V128 = i32x4.add(EP0V128(aV128), MAJV128(aV128, bV128, cV128)); + hV128 = gV128; + gV128 = fV128; + fV128 = eV128; + eV128 = i32x4.add(dV128, t1V128); + dV128 = cV128; + cV128 = bV128; + bV128 = aV128; + aV128 = i32x4.add(t1V128, t2V128); + } + + H0V128 = i32x4.add(H0V128, aV128); + H1V128 = i32x4.add(H1V128, bV128); + H2V128 = i32x4.add(H2V128, cV128); + H3V128 = i32x4.add(H3V128, dV128); + H4V128 = i32x4.add(H4V128, eV128); + H5V128 = i32x4.add(H5V128, fV128); + H6V128 = i32x4.add(H6V128, gV128); + H7V128 = i32x4.add(H7V128, hV128); +} + +function hashPreCompWV128(): void { + aV128 = H0V128; + bV128 = H1V128; + cV128 = H2V128; + dV128 = H3V128; + eV128 = H4V128; + fV128 = H5V128; + gV128 = H6V128; + hV128 = H7V128; + + // Apply SHA256 compression function on expanded message blocks + for (i = 0; i < 64; i++) { + t1V128 = i32x4.add(i32x4.add(i32x4.add(hV128, EP1V128(eV128)), CHV128(eV128, fV128, gV128)), getV128(w64V128Ptr, i)); + t2V128 = i32x4.add(EP0V128(aV128), MAJV128(aV128, bV128, cV128)); + hV128 = gV128; + gV128 = fV128; + fV128 = eV128; + eV128 = i32x4.add(dV128, t1V128); + dV128 = cV128; + cV128 = bV128; + bV128 = aV128; + aV128 = i32x4.add(t1V128, t2V128); + } + + H0V128 = i32x4.add(H0V128, aV128); + H1V128 = i32x4.add(H1V128, bV128); + H2V128 = i32x4.add(H2V128, cV128); + H3V128 = i32x4.add(H3V128, dV128); + H4V128 = i32x4.add(H4V128, eV128); + H5V128 = i32x4.add(H5V128, fV128); + H6V128 = i32x4.add(H6V128, gV128); + H7V128 = i32x4.add(H7V128, hV128); +} + +@inline +function CHV128(x: v128, y: v128, z: v128): v128 { + return v128.xor(v128.and(x, y), v128.and(v128.not(x), z)); +} + +@inline +function MAJV128(x: v128, y: v128, z: v128): v128 { + return v128.xor(v128.xor(v128.and(x, y), v128.and(x, z)), v128.and(y, z)); +} + +@inline +function EP0V128(x: v128): v128 { + return v128.xor(v128.xor(rotrV128(x, 2), rotrV128(x, 13)), rotrV128(x, 22)); +} + +@inline +function EP1V128(x: v128): v128 { + return v128.xor(v128.xor(rotrV128(x, 6), rotrV128(x, 11)), rotrV128(x, 25)); +} + +@inline +function SIG0V128(x: v128): v128 { + return v128.xor(v128.xor(rotrV128(x, 7), rotrV128(x, 18)), i32x4.shr_u(x, 3)); +} + +@inline +function SIG1V128(x: v128): v128 { + return v128.xor(v128.xor(rotrV128(x, 17), rotrV128(x, 19)), i32x4.shr_u(x, 10)); +} + +/** + * rotr is not natively supported by v128 so we have to implement it manually + * @param value + * @param bits + * @returns + */ +@inline +function rotrV128(value: v128, bits: i32): v128 { + const maskBits = 32 - bits; + + // Shift right (logical) each lane by 'bits' + const rightShifted = i32x4.shr_u(value, bits); + + // Shift left each lane by (32 - bits) to handle the wrap-around part of rotation + const leftShifted = i32x4.shl(value, maskBits); + + // Combine the shifted parts with bitwise OR to achieve rotation + return v128.or(rightShifted, leftShifted); +} + +@inline +function store32(ptr: usize, offset: usize, u: u32): void { + store(ptr + (offset << alignof()), u); +} \ No newline at end of file diff --git a/packages/as-sha256/assembly/utils/const.ts b/packages/as-sha256/assembly/utils/const.ts new file mode 100644 index 00000000..504f9789 --- /dev/null +++ b/packages/as-sha256/assembly/utils/const.ts @@ -0,0 +1,36 @@ +// constants used in the SHA256 compression function +export const K: u32[] = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, + 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, + 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, + 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, + 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, + 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, + 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, + 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, + 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +]; + +//precomputed W + K for message block representing length 64 bytes for fixed input of 64 bytes for digest64 +export const W64: u32[] = [ + 0xc28a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf374, + 0x649b69c1, 0xf0fe4786, 0x0fe1edc6, 0x240cf254, + 0x4fe9346f, 0x6cc984be, 0x61b9411e, 0x16f988fa, + 0xf2c65152, 0xa88e5a6d, 0xb019fc65, 0xb9d99ec7, + 0x9a1231c3, 0xe70eeaa0, 0xfdb1232b, 0xc7353eb0, + 0x3069bad5, 0xcb976d5f, 0x5a0f118f, 0xdc1eeefd, + 0x0a35b689, 0xde0b7a04, 0x58f4ca9d, 0xe15d5b16, + 0x007f3e86, 0x37088980, 0xa507ea32, 0x6fab9537, + 0x17406110, 0x0d8cd6f1, 0xcdaa3b6d, 0xc0bbbe37, + 0x83613bda, 0xdb48a363, 0x0b02e931, 0x6fd15ca7, + 0x521afaca, 0x31338431, 0x6ed41a95, 0x6d437890, + 0xc39c91f2, 0x9eccabbd, 0xb5c9a0e6, 0x532fb63c, + 0xd2c741c6, 0x07237ea3, 0xa4954b68, 0x4c191d76, +]; \ No newline at end of file diff --git a/packages/as-sha256/assembly/utils/v128.ts b/packages/as-sha256/assembly/utils/v128.ts new file mode 100644 index 00000000..63eea97b --- /dev/null +++ b/packages/as-sha256/assembly/utils/v128.ts @@ -0,0 +1,341 @@ +/** + * Cannot store v128 to memory with non-constant index, otherwise get error: + * "ERROR AS220: Expression must be a compile-time constant." + */ +@inline +export function setV128(ptr: usize, i: i32, v: v128): void { + switch(i) { + case 0: + v128.store(ptr, v, 0); + break; + case 1: + v128.store(ptr, v, 16); + break; + case 2: + v128.store(ptr, v, 32); + break; + case 3: + v128.store(ptr, v, 48); + break; + case 4: + v128.store(ptr, v, 64); + break; + case 5: + v128.store(ptr, v, 80); + break; + case 6: + v128.store(ptr, v, 96); + break; + case 7: + v128.store(ptr, v, 112); + break; + case 8: + v128.store(ptr, v, 128); + break; + case 9: + v128.store(ptr, v, 144); + break; + case 10: + v128.store(ptr, v, 160); + break; + case 11: + v128.store(ptr, v, 176); + break; + case 12: + v128.store(ptr, v, 192); + break; + case 13: + v128.store(ptr, v, 208); + break; + case 14: + v128.store(ptr, v, 224); + break; + case 15: + v128.store(ptr, v, 240); + break; + case 16: + v128.store(ptr, v, 256); + break; + case 17: + v128.store(ptr, v, 272); + break; + case 18: + v128.store(ptr, v, 288); + break; + case 19: + v128.store(ptr, v, 304); + break; + case 20: + v128.store(ptr, v, 320); + break; + case 21: + v128.store(ptr, v, 336); + break; + case 22: + v128.store(ptr, v, 352); + break; + case 23: + v128.store(ptr, v, 368); + break; + case 24: + v128.store(ptr, v, 384); + break; + case 25: + v128.store(ptr, v, 400); + break; + case 26: + v128.store(ptr, v, 416); + break; + case 27: + v128.store(ptr, v, 432); + break; + case 28: + v128.store(ptr, v, 448); + break; + case 29: + v128.store(ptr, v, 464); + break; + case 30: + v128.store(ptr, v, 480); + break; + case 31: + v128.store(ptr, v, 496); + break; + case 32: + v128.store(ptr, v, 512); + break; + case 33: + v128.store(ptr, v, 528); + break; + case 34: + v128.store(ptr, v, 544); + break; + case 35: + v128.store(ptr, v, 560); + break; + case 36: + v128.store(ptr, v, 576); + break; + case 37: + v128.store(ptr, v, 592); + break; + case 38: + v128.store(ptr, v, 608); + break; + case 39: + v128.store(ptr, v, 624); + break; + case 40: + v128.store(ptr, v, 640); + break; + case 41: + v128.store(ptr, v, 656); + break; + case 42: + v128.store(ptr, v, 672); + break; + case 43: + v128.store(ptr, v, 688); + break; + case 44: + v128.store(ptr, v, 704); + break; + case 45: + v128.store(ptr, v, 720); + break; + case 46: + v128.store(ptr, v, 736); + break; + case 47: + v128.store(ptr, v, 752); + break; + case 48: + v128.store(ptr, v, 768); + break; + case 49: + v128.store(ptr, v, 784); + break; + case 50: + v128.store(ptr, v, 800); + break; + case 51: + v128.store(ptr, v, 816); + break; + case 52: + v128.store(ptr, v, 832); + break; + case 53: + v128.store(ptr, v, 848); + break; + case 54: + v128.store(ptr, v, 864); + break; + case 55: + v128.store(ptr, v, 880); + break; + case 56: + v128.store(ptr, v, 896); + break; + case 57: + v128.store(ptr, v, 912); + break; + case 58: + v128.store(ptr, v, 928); + break; + case 59: + v128.store(ptr, v, 944); + break; + case 60: + v128.store(ptr, v, 960); + break; + case 61: + v128.store(ptr, v, 976); + break; + case 62: + v128.store(ptr, v, 992); + break; + case 63: + v128.store(ptr, v, 1008); + break; + } +} + +/** + * Cannot load v128 from memory with non-constant index, otherwise get error: + * "ERROR AS220: Expression must be a compile-time constant." + */ +@inline +export function getV128(ptr: usize, i: i32): v128 { + switch (i) { + case 0: + return v128.load(ptr, 0); + case 1: + return v128.load(ptr, 16); + case 2: + return v128.load(ptr, 32); + case 3: + return v128.load(ptr, 48); + case 4: + return v128.load(ptr, 64); + case 5: + return v128.load(ptr, 80); + case 6: + return v128.load(ptr, 96); + case 7: + return v128.load(ptr, 112); + case 8: + return v128.load(ptr, 128); + case 9: + return v128.load(ptr, 144); + case 10: + return v128.load(ptr, 160); + case 11: + return v128.load(ptr, 176); + case 12: + return v128.load(ptr, 192); + case 13: + return v128.load(ptr, 208); + case 14: + return v128.load(ptr, 224); + case 15: + return v128.load(ptr, 240); + case 16: + return v128.load(ptr, 256); + case 17: + return v128.load(ptr, 272); + case 18: + return v128.load(ptr, 288); + case 19: + return v128.load(ptr, 304); + case 20: + return v128.load(ptr, 320); + case 21: + return v128.load(ptr, 336); + case 22: + return v128.load(ptr, 352); + case 23: + return v128.load(ptr, 368); + case 24: + return v128.load(ptr, 384); + case 25: + return v128.load(ptr, 400); + case 26: + return v128.load(ptr, 416); + case 27: + return v128.load(ptr, 432); + case 28: + return v128.load(ptr, 448); + case 29: + return v128.load(ptr, 464); + case 30: + return v128.load(ptr, 480); + case 31: + return v128.load(ptr, 496); + case 32: + return v128.load(ptr, 512); + case 33: + return v128.load(ptr, 528); + case 34: + return v128.load(ptr, 544); + case 35: + return v128.load(ptr, 560); + case 36: + return v128.load(ptr, 576); + case 37: + return v128.load(ptr, 592); + case 38: + return v128.load(ptr, 608); + case 39: + return v128.load(ptr, 624); + case 40: + return v128.load(ptr, 640); + case 41: + return v128.load(ptr, 656); + case 42: + return v128.load(ptr, 672); + case 43: + return v128.load(ptr, 688); + case 44: + return v128.load(ptr, 704); + case 45: + return v128.load(ptr, 720); + case 46: + return v128.load(ptr, 736); + case 47: + return v128.load(ptr, 752); + case 48: + return v128.load(ptr, 768); + case 49: + return v128.load(ptr, 784); + case 50: + return v128.load(ptr, 800); + case 51: + return v128.load(ptr, 816); + case 52: + return v128.load(ptr, 832); + case 53: + return v128.load(ptr, 848); + case 54: + return v128.load(ptr, 864); + case 55: + return v128.load(ptr, 880); + case 56: + return v128.load(ptr, 896); + case 57: + return v128.load(ptr, 912) + case 58: + return v128.load(ptr, 928); + case 59: + return v128.load(ptr, 944); + case 60: + return v128.load(ptr, 960); + case 61: + return v128.load(ptr, 976); + case 62: + return v128.load(ptr, 992); + case 63: + return v128.load(ptr, 1008); + default: + return i32x4.splat(0); + } +} \ No newline at end of file diff --git a/packages/as-sha256/build/optimized.wasm b/packages/as-sha256/build/optimized.wasm index 97f5d0da4645cbe70e759a005b0116ae4483ddd2..f19b773ea9c1f0368cfb8e4e2c633216c9446a0d 100644 GIT binary patch literal 15706 zcmeI33y>VedB?kZW*^$=y`8(0PP)@;c6;P63C0lzq$D6v7OCLEhLCfS!ax$|5Kg5aT9p6S zv(2rDi1ToQqB@;s_cy)M-}HRb|K9n&?qyrL+Bjp3Pf2VRJw0qQ$HwT5_fP>|-5&g7 zo1LDX{Y<2}vwip8*p{o>I}0r4G}NOmV{ylI9ajj(9L_ltjB^olIOFlx-4*+INt&Z7 zUc8aQ3U2`aR~*vA^(PoMpZt~=rd_Xx=^|dq&bj%LxP{Bidc9GvS#!~vE5D#Ww`tu* zXS`g!cKw$&UAg9>wHI$%B;)k>C>m3 z0Dlp!8=rG_wB%f!Xvqo`yV`BptNku7>yU|LHb!r5&UKpuH;DO;7sP z8WV9c;aC$ME)|XLgfa4maWxL5&vEX^pSbJ_e+nFLJPUsc_|qYO#sYZM`ZFhj7(8YC z1TUEjW4@r~`?wou8ZMQ5%FJ1dS2wp8vo9GDgs3~?e4@998-t=zZ+=1J4 zZC>x`zDaSrWQsn z#JwOFqFy4$t<#K0tkdWU=uQ;!=z|(H3mrM?+&I@xln=Wz7I~-#g*^Y!L3CJ-m8n?Shb$^xa&*&E&J<-RYi5jxPpFnxp_#F3>IYAwlu45fZ%}+oj zURJDRIft4Rxg8Gl3%HVt;Rk3guZzX&JG8$SJpuh<)%a$n*(#V3Wk7>)VN_`)d-${d z&3@E9lhk_!?pOo)0=<DgXXaEEQF`CYc`)6(vZcfx6_d{gS zF=WVedE6qxZ<721;r+mPg+(2jyfTp1LutKG&ni3RA7~6IyKAUQmzbVJpQzFB3Va|m zTjTa;4cs?s6bzV-$3CZ}K6Rqd47mh}Qa0mUoKMGBPkR;rMGx%yu4hl%3bKyRqSHpSK ztLdG(nFBAIRvK4a#r#@Tb` z&YOS1f`y9~FKJr3Z25}MT)48CMi)`?Tqajq^yP&X1Nj+?^W+MP&2qWL^>UfT&2p*5 zJ+jGSk;^5Pd%0X}xsS_5mixI}XnBCk1(r{6d4c6YF6Ubw;&PtlqL6bf_X;`3a-Wd1 zE%yuAXn8=$S(Z--In(l>kTWa~2|3+z(UH?E_d0T_&i)%`&>EEa=$AlSRQcYc*`eT*VG(%lqOoZMi=#rR9OR zq+!DJxf5}jvOE}RG6 zJe;f#{LOu@?h6Bb^35mSaKfzq@jFi*{zjP7ryqFyU@TPn)|c*j<+?D`M}BnMDIQMI z-}&y1e;W&@Y8EcTw%mII36LH&Ih>|~aJtHdGgK~|sZ=;ig<+$b63$jr!#Ox|uG6gM zMo&--APPBwXF@!_IQjf+Mh`85-u1YGDdnaVPoAA-S46wXLMP%1s?YP`Tr+n0Wy=GM z9?l}udGqeKM9cjc)}HFl`kDDCO$fZ=>NPff#tf(}fZ1M9lG z)N~v-BZu&Z)2Da~L`PRwKAf*+hjUaTJUk1Yo~h>L;q)1B{&d`gX}B5l)cic|%doT5 zWHl`xPF8`Mo(}_+RWtHoR^`;pe3(;8&B}+kajG#NhH8qMoe!s|scKF>oa#M7QIcAY zXZUcrT1L;`Of73c*udA|v2cM}2CoI;REnV(_Yqyg9Dw*84~%puB0sfAE%2+T-^6SU zUakSN%QBvaFCGfz23Q+CY%U^`dA|x#1iq*!ifKkdfbKbtSxHgX@R`w*DolA^J?^ZA2UwAg2^WMVSm5R3y%C79q#; zL_@enga8e}8WF-Xgla?x&Jd^(Av8mnMufl&K^jp}P>4o^pbP;TQJ)FVh!Bt=I3pS` zp&1c^F$88rgC;B^LLi2qjHu{PNJfMp3;`Jtp2!f65g`CWFh(?BLNOu)UkJpA22B`7 zgun|y7!krQgkVGnx)6X7A>=~%MTCG0!50z2tqBn!*h1h%WeBwpb`c@aLeNEoFbg3U z5rQlPTto=55N;76z(TM^gzyTX77>Cg1X@H0tq^7rA+SP_MTDm;gjhrfst{li^_lRB z2muv>E204tS`i_b!gmAFpb4vp5J(}YB0?C2kctRF6oo$^gir{lh!8*_m?A>>giwm; zgbAdG5IP}@A{wF~>MXN6&{pWHBz<{DN}Oc1nvV8shqYQ4m88lgR7)WrL{e3$94Dy; z_~I-}Hmp`vVMe7fJV*=^p7QBjQl&6tgi7%$2C z7Y8q|+``0J+Lt^_`$nCmeW|mw5BIpTZN#BGOZ(DiXw>F58qNuZ=}U5hJrr`D{~;+%{#j4I{fv zIc>wpZ&Oy=Ff!bf*EWnCHx?O1j4U_hwoN(m+*o83F*4nh-!|pQbyJ4ha52hp8}5y= z+=lz2Jh$QgDAR3tAj)+cJ`rWR4G%{7Zo@-nkx|)xl=C*_y;0WNFf!nj_cq)gWxfp~ z3r@Lj!_Y5fzYQZ3PWf-cLuQdt#K?wI4&0O@AC5&v5hEi`d2myXoH!O4MU1RC<-$!l z^5R%z6frX6ln;;Wn?*(uBRftx@yLFZ6*r6wIpxI-BS%h|al^=xW06tB$dglc+>|3z zjzvZhW08?(Ca^>_fhFt&mWU>>g#Ks(OGFb`^c74~TxPBc6IjAbV2Lv)u*PNG^CoNR zVoJeGU=f%JECMruMPMed2+RZ)ftkP}FcVk=W&(=Ab5zM2y%z?i6C|ep9oTi?1>ChvbPM zatNLX5{KN0AaIDC2=a#1i6CwWoe0u~%!wduh@1$rhQx^=Y6zSNl7_sAAZScr5kbzF zz#@W}F@Z${DPsbQ2tvjL77=8O2`nOr7!z1TMKgg#1Oa0LiwN??1Qrp*3n3Fhx|qNs zf^Z>XBFGjJCW2@oU?NBs6IetLEW}F$xk9=`5G#aB1gS!{L=Y-OO9YuhvP45hutbn3 zCa{QljaZ2wPfTDDL7WgO5u^#35{DG_7|i4qNc@&uNur5PWZ#lrgb=+U=4izT#~ z#iD#qBv0gk%q$k=d!iDmg;^{IvsjpCqS-9WVqww7xiO37kHOp;D~)Hg-~sD46fZND zLn~3{B-kl47TGJe%sx0)=F#AIna6<>Wu5?reNOfRFzg!+!LV<5IvDm1H-cf`@H{Z= z8(s*8eZx&)*f+cabNtOMbP7>%35Gw9!*B}2tH3yg;Wc2K!Y~#M&?yXW0^<~hzXHZ7 z3||3;eTVFC2ICS8Zv(@=;hkXEH{1$_eZzaeux}Xax5&O>EMy}4hOhU2D)38*GnRry z3&G4X8i6$zwCWy9d9Wlb=cpw)x4baSywk!k5kzQKg=t}aP+%5~*>z!y&@o{Gbp=dg z`97AJxpsw_tqnu?i3)z7W2%xZ{J6yK4qGyffh7)0fw3g4CFDTuS~Xhvk7ZG_v2u+p z;q-QQ*b;sQVcJBN=KT*WRV?J9^(l4U4y0-4wT%rR| zlWGc=dfpp}I;L+;dSU`+`tGE6P;iESc)5G-?|=68&oAlt>Awy<`rxaNzJ2-AUtaod z^}Anv;D(iVy!?9;j@*4X@e05E#+suC=7-OGQ+}!N^`o61{_yqUq4;a}6yCk(si$_` z^LIC2eDt4=eebEv3*VPvd*j=)58qU{(PyX?xS2sMg=MOG@`u+{A$Lrs^zTvh)`_>1$M|VGaQ&Jqi^@Gz#d;h+5{R97U z|NBQzc6S_O`r(wv8=3yIlsCqOPw+zx7651?2Q@SOS}JnfTd6Z0_w;|;aqk(&ZM*s6 z4~LHZ<1aItPQq~u-(Gk0rsrBG>BqNxaPa-QjT?@gZ2Q``AKHGZzW?}rKY#q0`8D6| zd#CDGv(yhu{TD7e{_>A^&AYPg5C8JE>de?!|K9Vz`AXg8U;pLJ z7xu8?Ey*Ppypwov$z4a<{VmO7-~HLG>9*yEUtDtZiGg1%-*V&D`&Yd>|83zNy5gnw z=RauJIRB;v^Y3c->)pNGpKCjL`@PTn`H>gyd$aGkM^`*H_lw8$@xQu%ze?=9^sWc? zPOM*p9|K9_xP$3o$L)zRMqAl&52qv7ragsU>aq#gR2>XIoLHfU~vZJOQX3e{^25w*xlxYf;^|s=O&wchVVW?L>{a*tW7ZoX4Im z6P+#dAJu5Z@mJd#r=l7MeQy?>Bg96Y*oO0Wqc!cgqJnw98n1MfC zqEV+@#sUxmJgUMuXPz&BL2w-~ZSzmkEnc~hTg(?vpMB>1x#!P3e)frTrv&rYHnz5h zVkX$!9y-wW);89LOa|LqE6c-GR`Oq1+gN^yRf3hZ7gq;Erosa-_YkWEz1804#Y>!p zP%lEQaHm<{T@>$o&`f{JwP#1lFa_r0mSJ<8iG>Kvd}v1L17QTC^r>)mf{52z zUG~Le>Z%INNa?1;W;zO+Fqys=-k%(c_HsC5UaopF>q8l`@%4fXUyt&f*ztM`<|f0=ddwp@<1OGcc1XR5?-v+-j<}_1jR_qh z9H8|MU<;>J(T&p2GT<UJtpk_W{&p?8X^wp>Z8is|)wtC<~PqoXSm;WRd6R$-uyvYGEF5%^zfc4 z&+&OWGd5!A@S_I}Mht}uor63FJOaK0A%VbwB7vL(ia_W-W|^%`KR~qZT+KubZ-2wF1(isIhl~$mvC~SGh@X6Zxb#$JyysSs)$_C|0dHJ zGMypQ88V$A(-|_IA=4Q$ou6gqR)G}KVBRUYm8aEwE!$(X%EZ)W)`sq`Vu{c6T1WBK`zQtr?C0 diff --git a/packages/as-sha256/build/optimized.wat b/packages/as-sha256/build/optimized.wat index 24cd1564..3dd01d33 100644 --- a/packages/as-sha256/build/optimized.wat +++ b/packages/as-sha256/build/optimized.wat @@ -1,12 +1,40 @@ (module (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func)) + (type $1 (func (param i32))) + (type $2 (func)) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $assembly/simd/H0V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H1V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H2V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H3V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H4V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H5V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H6V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/H7V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/aV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/bV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/cV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/dV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/eV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/fV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/gV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/hV128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/t1V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/t2V128 (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $assembly/simd/i (mut i32) (i32.const 0)) + (global $assembly/simd/tmpW (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $assembly/simd/kV128ArrayBuffer (mut i32) (i32.const 0)) + (global $assembly/simd/kV128Ptr (mut i32) (i32.const 0)) + (global $assembly/simd/w64V12ArrayBuffer (mut i32) (i32.const 0)) + (global $assembly/simd/w64V128Ptr (mut i32) (i32.const 0)) + (global $assembly/index/PARALLEL_FACTOR i32 (i32.const 4)) (global $assembly/index/INPUT_LENGTH i32 (i32.const 512)) (global $assembly/index/kPtr (mut i32) (i32.const 0)) (global $assembly/index/w64Ptr (mut i32) (i32.const 0)) @@ -29,9 +57,6 @@ (global $assembly/index/i (mut i32) (i32.const 0)) (global $assembly/index/t1 (mut i32) (i32.const 0)) (global $assembly/index/t2 (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) - (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) (global $assembly/index/M (mut i32) (i32.const 0)) (global $assembly/index/mPtr (mut i32) (i32.const 0)) (global $assembly/index/W (mut i32) (i32.const 0)) @@ -61,6 +86,11 @@ (data $7.1 (i32.const 1896) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s") (data $8 (i32.const 1948) "<") (data $8.1 (i32.const 1960) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 2044) "<") + (data $10.1 (i32.const 2056) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 2108) ",") + (data $11.1 (i32.const 2120) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (export "PARALLEL_FACTOR" (global $assembly/index/PARALLEL_FACTOR)) (export "INPUT_LENGTH" (global $assembly/index/INPUT_LENGTH)) (export "input" (global $assembly/index/input)) (export "output" (global $assembly/index/output)) @@ -69,6 +99,8 @@ (export "final" (func $assembly/index/final)) (export "digest" (func $assembly/index/digest)) (export "digest64" (func $assembly/index/digest64)) + (export "hash4Inputs" (func $assembly/index/hash4Inputs)) + (export "hash8HashObjects" (func $assembly/index/hash8HashObjects)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) @@ -746,10 +778,10 @@ if unreachable end - i32.const 2048 + i32.const 2160 i32.const 0 call $~lib/rt/tlsf/Root#set:flMap - i32.const 3616 + i32.const 3728 i32.const 0 i32.store loop $for-loop|0 @@ -760,7 +792,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 2048 + i32.const 2160 i32.add i32.const 0 i32.store offset=4 @@ -778,7 +810,7 @@ i32.add i32.const 2 i32.shl - i32.const 2048 + i32.const 2160 i32.add i32.const 0 i32.store offset=96 @@ -796,14 +828,14 @@ br $for-loop|0 end end - i32.const 2048 - i32.const 3620 + i32.const 2160 + i32.const 3732 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 2048 + i32.const 2160 global.set $~lib/rt/tlsf/ROOT end global.get $~lib/rt/tlsf/ROOT @@ -856,6 +888,864 @@ memory.fill local.get $1 ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 2064 + i32.const 2128 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $start:assembly/simd + (local $0 i32) + (local $1 v128) + (local $2 i32) + i32.const 2016 + i32.const 2016 + call $~lib/rt/tlsf/Block#set:prev + i32.const 2016 + i32.const 2016 + call $~lib/rt/tlsf/Block#set:next + i32.const 2016 + global.set $~lib/rt/tcms/fromSpace + i32.const 1024 + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $assembly/simd/kV128ArrayBuffer + global.get $assembly/simd/kV128ArrayBuffer + global.set $assembly/simd/kV128Ptr + loop $for-loop|0 + local.get $0 + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/kV128Ptr + local.set $2 + i32.const 1344 + local.get $0 + call $~lib/array/Array#__get + i32x4.splat + local.set $1 + block $break|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $0 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case8|1 $case9|1 $case10|1 $case11|1 $case12|1 $case13|1 $case14|1 $case15|1 $case16|1 $case17|1 $case18|1 $case19|1 $case20|1 $case21|1 $case22|1 $case23|1 $case24|1 $case25|1 $case26|1 $case27|1 $case28|1 $case29|1 $case30|1 $case31|1 $case32|1 $case33|1 $case34|1 $case35|1 $case36|1 $case37|1 $case38|1 $case39|1 $case40|1 $case41|1 $case42|1 $case43|1 $case44|1 $case45|1 $case46|1 $case47|1 $case48|1 $case49|1 $case50|1 $case51|1 $case52|1 $case53|1 $case54|1 $case55|1 $case56|1 $case57|1 $case58|1 $case59|1 $case60|1 $case61|1 $case62|1 $case63|1 $break|1 + end + local.get $2 + local.get $1 + v128.store + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=16 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=32 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=48 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=64 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=80 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=96 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=112 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=128 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=144 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=160 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=176 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=192 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=208 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=224 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=240 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=256 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=272 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=288 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=304 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=320 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=336 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=352 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=368 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=384 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=400 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=416 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=432 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=448 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=464 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=480 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=496 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=512 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=528 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=544 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=560 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=576 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=592 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=608 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=624 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=640 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=656 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=672 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=688 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=704 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=720 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=736 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=752 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=768 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=784 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=800 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=816 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=832 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=848 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=864 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=880 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=896 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=912 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=928 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=944 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=960 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=976 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=992 + br $break|1 + end + local.get $2 + local.get $1 + v128.store offset=1008 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 1024 + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $assembly/simd/w64V12ArrayBuffer + global.get $assembly/simd/w64V12ArrayBuffer + global.set $assembly/simd/w64V128Ptr + i32.const 0 + local.set $0 + loop $for-loop|2 + local.get $0 + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/w64V128Ptr + local.set $2 + i32.const 1680 + local.get $0 + call $~lib/array/Array#__get + i32x4.splat + local.set $1 + block $break|3 + block $case63|3 + block $case62|3 + block $case61|3 + block $case60|3 + block $case59|3 + block $case58|3 + block $case57|3 + block $case56|3 + block $case55|3 + block $case54|3 + block $case53|3 + block $case52|3 + block $case51|3 + block $case50|3 + block $case49|3 + block $case48|3 + block $case47|3 + block $case46|3 + block $case45|3 + block $case44|3 + block $case43|3 + block $case42|3 + block $case41|3 + block $case40|3 + block $case39|3 + block $case38|3 + block $case37|3 + block $case36|3 + block $case35|3 + block $case34|3 + block $case33|3 + block $case32|3 + block $case31|3 + block $case30|3 + block $case29|3 + block $case28|3 + block $case27|3 + block $case26|3 + block $case25|3 + block $case24|3 + block $case23|3 + block $case22|3 + block $case21|3 + block $case20|3 + block $case19|3 + block $case18|3 + block $case17|3 + block $case16|3 + block $case15|3 + block $case14|3 + block $case13|3 + block $case12|3 + block $case11|3 + block $case10|3 + block $case9|3 + block $case8|3 + block $case7|3 + block $case6|3 + block $case5|3 + block $case4|3 + block $case3|3 + block $case2|3 + block $case1|3 + block $case0|3 + local.get $0 + br_table $case0|3 $case1|3 $case2|3 $case3|3 $case4|3 $case5|3 $case6|3 $case7|3 $case8|3 $case9|3 $case10|3 $case11|3 $case12|3 $case13|3 $case14|3 $case15|3 $case16|3 $case17|3 $case18|3 $case19|3 $case20|3 $case21|3 $case22|3 $case23|3 $case24|3 $case25|3 $case26|3 $case27|3 $case28|3 $case29|3 $case30|3 $case31|3 $case32|3 $case33|3 $case34|3 $case35|3 $case36|3 $case37|3 $case38|3 $case39|3 $case40|3 $case41|3 $case42|3 $case43|3 $case44|3 $case45|3 $case46|3 $case47|3 $case48|3 $case49|3 $case50|3 $case51|3 $case52|3 $case53|3 $case54|3 $case55|3 $case56|3 $case57|3 $case58|3 $case59|3 $case60|3 $case61|3 $case62|3 $case63|3 $break|3 + end + local.get $2 + local.get $1 + v128.store + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=16 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=32 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=48 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=64 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=80 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=96 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=112 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=128 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=144 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=160 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=176 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=192 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=208 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=224 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=240 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=256 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=272 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=288 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=304 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=320 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=336 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=352 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=368 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=384 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=400 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=416 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=432 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=448 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=464 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=480 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=496 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=512 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=528 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=544 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=560 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=576 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=592 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=608 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=624 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=640 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=656 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=672 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=688 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=704 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=720 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=736 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=752 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=768 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=784 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=800 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=816 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=832 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=848 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=864 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=880 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=896 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=912 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=928 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=944 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=960 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=976 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=992 + br $break|3 + end + local.get $2 + local.get $1 + v128.store offset=1008 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 + end + end + ) (func $assembly/index/init i32.const 1779033703 global.set $assembly/index/H0 @@ -1607,27 +2497,3531 @@ call $~lib/polyfills/bswap i32.store offset=28 ) - (func $~start - i32.const 1348 - i32.load - global.set $assembly/index/kPtr - i32.const 1684 - i32.load - global.set $assembly/index/w64Ptr - i32.const 2016 - i32.const 2016 - call $~lib/rt/tlsf/Block#set:prev - i32.const 2016 - i32.const 2016 - call $~lib/rt/tlsf/Block#set:next - i32.const 2016 - global.set $~lib/rt/tcms/fromSpace - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - global.set $assembly/index/M - global.get $assembly/index/M - global.set $assembly/index/mPtr - i32.const 256 + (func $assembly/simd/hashPreCompWV128 + (local $0 i32) + (local $1 v128) + (local $2 v128) + global.get $assembly/simd/H0V128 + global.set $assembly/simd/aV128 + global.get $assembly/simd/H1V128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/H2V128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/H3V128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/H4V128 + global.set $assembly/simd/eV128 + global.get $assembly/simd/H5V128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/H6V128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/H7V128 + global.set $assembly/simd/hV128 + i32.const 0 + global.set $assembly/simd/i + loop $for-loop|0 + global.get $assembly/simd/i + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/hV128 + global.get $assembly/simd/eV128 + local.tee $1 + i32.const 6 + i32x4.shr_u + local.get $1 + i32.const 26 + i32x4.shl + v128.or + local.get $1 + i32.const 11 + i32x4.shr_u + local.get $1 + i32.const 21 + i32x4.shl + v128.or + v128.xor + local.get $1 + i32.const 25 + i32x4.shr_u + local.get $1 + i32.const 7 + i32x4.shl + v128.or + v128.xor + i32x4.add + global.get $assembly/simd/eV128 + local.tee $1 + global.get $assembly/simd/fV128 + v128.and + local.get $1 + v128.not + global.get $assembly/simd/gV128 + v128.and + v128.xor + i32x4.add + block $assembly/utils/v128/getV128|inlined.6 (result v128) + global.get $assembly/simd/w64V128Ptr + local.set $0 + block $case64|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + global.get $assembly/simd/i + br_table $case0|1 $case1|1 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case8|1 $case9|1 $case10|1 $case11|1 $case12|1 $case13|1 $case14|1 $case15|1 $case16|1 $case17|1 $case18|1 $case19|1 $case20|1 $case21|1 $case22|1 $case23|1 $case24|1 $case25|1 $case26|1 $case27|1 $case28|1 $case29|1 $case30|1 $case31|1 $case32|1 $case33|1 $case34|1 $case35|1 $case36|1 $case37|1 $case38|1 $case39|1 $case40|1 $case41|1 $case42|1 $case43|1 $case44|1 $case45|1 $case46|1 $case47|1 $case48|1 $case49|1 $case50|1 $case51|1 $case52|1 $case53|1 $case54|1 $case55|1 $case56|1 $case57|1 $case58|1 $case59|1 $case60|1 $case61|1 $case62|1 $case63|1 $case64|1 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.6 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + i32x4.add + global.set $assembly/simd/t1V128 + global.get $assembly/simd/aV128 + local.tee $1 + i32.const 2 + i32x4.shr_u + local.get $1 + i32.const 30 + i32x4.shl + v128.or + local.get $1 + i32.const 13 + i32x4.shr_u + local.get $1 + i32.const 19 + i32x4.shl + v128.or + v128.xor + local.get $1 + i32.const 22 + i32x4.shr_u + local.get $1 + i32.const 10 + i32x4.shl + v128.or + v128.xor + global.get $assembly/simd/aV128 + local.tee $1 + global.get $assembly/simd/bV128 + local.tee $2 + v128.and + local.get $1 + global.get $assembly/simd/cV128 + local.tee $1 + v128.and + v128.xor + local.get $2 + local.get $1 + v128.and + v128.xor + i32x4.add + global.set $assembly/simd/t2V128 + global.get $assembly/simd/gV128 + global.set $assembly/simd/hV128 + global.get $assembly/simd/fV128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/eV128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/dV128 + global.get $assembly/simd/t1V128 + i32x4.add + global.set $assembly/simd/eV128 + global.get $assembly/simd/cV128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/bV128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/aV128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/t1V128 + global.get $assembly/simd/t2V128 + i32x4.add + global.set $assembly/simd/aV128 + global.get $assembly/simd/i + i32.const 1 + i32.add + global.set $assembly/simd/i + br $for-loop|0 + end + end + global.get $assembly/simd/H0V128 + global.get $assembly/simd/aV128 + i32x4.add + global.set $assembly/simd/H0V128 + global.get $assembly/simd/H1V128 + global.get $assembly/simd/bV128 + i32x4.add + global.set $assembly/simd/H1V128 + global.get $assembly/simd/H2V128 + global.get $assembly/simd/cV128 + i32x4.add + global.set $assembly/simd/H2V128 + global.get $assembly/simd/H3V128 + global.get $assembly/simd/dV128 + i32x4.add + global.set $assembly/simd/H3V128 + global.get $assembly/simd/H4V128 + global.get $assembly/simd/eV128 + i32x4.add + global.set $assembly/simd/H4V128 + global.get $assembly/simd/H5V128 + global.get $assembly/simd/fV128 + i32x4.add + global.set $assembly/simd/H5V128 + global.get $assembly/simd/H6V128 + global.get $assembly/simd/gV128 + i32x4.add + global.set $assembly/simd/H6V128 + global.get $assembly/simd/H7V128 + global.get $assembly/simd/hV128 + i32x4.add + global.set $assembly/simd/H7V128 + ) + (func $assembly/simd/digest64V128 (param $0 i32) (param $1 i32) + (local $2 v128) + (local $3 i32) + (local $4 v128) + v128.const i32x4 0x6a09e667 0x6a09e667 0x6a09e667 0x6a09e667 + global.set $assembly/simd/H0V128 + v128.const i32x4 0xbb67ae85 0xbb67ae85 0xbb67ae85 0xbb67ae85 + global.set $assembly/simd/H1V128 + v128.const i32x4 0x3c6ef372 0x3c6ef372 0x3c6ef372 0x3c6ef372 + global.set $assembly/simd/H2V128 + v128.const i32x4 0xa54ff53a 0xa54ff53a 0xa54ff53a 0xa54ff53a + global.set $assembly/simd/H3V128 + v128.const i32x4 0x510e527f 0x510e527f 0x510e527f 0x510e527f + global.set $assembly/simd/H4V128 + v128.const i32x4 0x9b05688c 0x9b05688c 0x9b05688c 0x9b05688c + global.set $assembly/simd/H5V128 + v128.const i32x4 0x1f83d9ab 0x1f83d9ab 0x1f83d9ab 0x1f83d9ab + global.set $assembly/simd/H6V128 + v128.const i32x4 0x5be0cd19 0x5be0cd19 0x5be0cd19 0x5be0cd19 + global.set $assembly/simd/H7V128 + v128.const i32x4 0x6a09e667 0x6a09e667 0x6a09e667 0x6a09e667 + global.set $assembly/simd/aV128 + v128.const i32x4 0xbb67ae85 0xbb67ae85 0xbb67ae85 0xbb67ae85 + global.set $assembly/simd/bV128 + v128.const i32x4 0x3c6ef372 0x3c6ef372 0x3c6ef372 0x3c6ef372 + global.set $assembly/simd/cV128 + v128.const i32x4 0xa54ff53a 0xa54ff53a 0xa54ff53a 0xa54ff53a + global.set $assembly/simd/dV128 + v128.const i32x4 0x510e527f 0x510e527f 0x510e527f 0x510e527f + global.set $assembly/simd/eV128 + v128.const i32x4 0x9b05688c 0x9b05688c 0x9b05688c 0x9b05688c + global.set $assembly/simd/fV128 + v128.const i32x4 0x1f83d9ab 0x1f83d9ab 0x1f83d9ab 0x1f83d9ab + global.set $assembly/simd/gV128 + v128.const i32x4 0x5be0cd19 0x5be0cd19 0x5be0cd19 0x5be0cd19 + global.set $assembly/simd/hV128 + i32.const 0 + global.set $assembly/simd/i + loop $for-loop|0 + global.get $assembly/simd/i + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/i + i32.const 16 + i32.lt_s + if (result v128) + block $assembly/utils/v128/getV128|inlined.0 (result v128) + block $case64|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + global.get $assembly/simd/i + br_table $case0|1 $case1|1 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case8|1 $case9|1 $case10|1 $case11|1 $case12|1 $case13|1 $case14|1 $case15|1 $case16|1 $case17|1 $case18|1 $case19|1 $case20|1 $case21|1 $case22|1 $case23|1 $case24|1 $case25|1 $case26|1 $case27|1 $case28|1 $case29|1 $case30|1 $case31|1 $case32|1 $case33|1 $case34|1 $case35|1 $case36|1 $case37|1 $case38|1 $case39|1 $case40|1 $case41|1 $case42|1 $case43|1 $case44|1 $case45|1 $case46|1 $case47|1 $case48|1 $case49|1 $case50|1 $case51|1 $case52|1 $case53|1 $case54|1 $case55|1 $case56|1 $case57|1 $case58|1 $case59|1 $case60|1 $case61|1 $case62|1 $case63|1 $case64|1 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.0 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + else + block $assembly/utils/v128/getV128|inlined.1 (result v128) + block $case64|2 + block $case63|2 + block $case62|2 + block $case61|2 + block $case60|2 + block $case59|2 + block $case58|2 + block $case57|2 + block $case56|2 + block $case55|2 + block $case54|2 + block $case53|2 + block $case52|2 + block $case51|2 + block $case50|2 + block $case49|2 + block $case48|2 + block $case47|2 + block $case46|2 + block $case45|2 + block $case44|2 + block $case43|2 + block $case42|2 + block $case41|2 + block $case40|2 + block $case39|2 + block $case38|2 + block $case37|2 + block $case36|2 + block $case35|2 + block $case34|2 + block $case33|2 + block $case32|2 + block $case31|2 + block $case30|2 + block $case29|2 + block $case28|2 + block $case27|2 + block $case26|2 + block $case25|2 + block $case24|2 + block $case23|2 + block $case22|2 + block $case21|2 + block $case20|2 + block $case19|2 + block $case18|2 + block $case17|2 + block $case16|2 + block $case15|2 + block $case14|2 + block $case13|2 + block $case12|2 + block $case11|2 + block $case10|2 + block $case9|2 + block $case8|2 + block $case7|2 + block $case6|2 + block $case5|2 + block $case4|2 + block $case3|2 + block $case2|2 + block $case1|2 + block $case0|2 + global.get $assembly/simd/i + i32.const 2 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $case3|2 $case4|2 $case5|2 $case6|2 $case7|2 $case8|2 $case9|2 $case10|2 $case11|2 $case12|2 $case13|2 $case14|2 $case15|2 $case16|2 $case17|2 $case18|2 $case19|2 $case20|2 $case21|2 $case22|2 $case23|2 $case24|2 $case25|2 $case26|2 $case27|2 $case28|2 $case29|2 $case30|2 $case31|2 $case32|2 $case33|2 $case34|2 $case35|2 $case36|2 $case37|2 $case38|2 $case39|2 $case40|2 $case41|2 $case42|2 $case43|2 $case44|2 $case45|2 $case46|2 $case47|2 $case48|2 $case49|2 $case50|2 $case51|2 $case52|2 $case53|2 $case54|2 $case55|2 $case56|2 $case57|2 $case58|2 $case59|2 $case60|2 $case61|2 $case62|2 $case63|2 $case64|2 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.1 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + local.tee $2 + i32.const 17 + i32x4.shr_u + local.get $2 + i32.const 15 + i32x4.shl + v128.or + local.get $2 + i32.const 19 + i32x4.shr_u + local.get $2 + i32.const 13 + i32x4.shl + v128.or + v128.xor + local.get $2 + i32.const 10 + i32x4.shr_u + v128.xor + block $assembly/utils/v128/getV128|inlined.2 (result v128) + block $case64|3 + block $case63|3 + block $case62|3 + block $case61|3 + block $case60|3 + block $case59|3 + block $case58|3 + block $case57|3 + block $case56|3 + block $case55|3 + block $case54|3 + block $case53|3 + block $case52|3 + block $case51|3 + block $case50|3 + block $case49|3 + block $case48|3 + block $case47|3 + block $case46|3 + block $case45|3 + block $case44|3 + block $case43|3 + block $case42|3 + block $case41|3 + block $case40|3 + block $case39|3 + block $case38|3 + block $case37|3 + block $case36|3 + block $case35|3 + block $case34|3 + block $case33|3 + block $case32|3 + block $case31|3 + block $case30|3 + block $case29|3 + block $case28|3 + block $case27|3 + block $case26|3 + block $case25|3 + block $case24|3 + block $case23|3 + block $case22|3 + block $case21|3 + block $case20|3 + block $case19|3 + block $case18|3 + block $case17|3 + block $case16|3 + block $case15|3 + block $case14|3 + block $case13|3 + block $case12|3 + block $case11|3 + block $case10|3 + block $case9|3 + block $case8|3 + block $case7|3 + block $case6|3 + block $case5|3 + block $case4|3 + block $case3|3 + block $case2|3 + block $case1|3 + block $case0|3 + global.get $assembly/simd/i + i32.const 7 + i32.sub + br_table $case0|3 $case1|3 $case2|3 $case3|3 $case4|3 $case5|3 $case6|3 $case7|3 $case8|3 $case9|3 $case10|3 $case11|3 $case12|3 $case13|3 $case14|3 $case15|3 $case16|3 $case17|3 $case18|3 $case19|3 $case20|3 $case21|3 $case22|3 $case23|3 $case24|3 $case25|3 $case26|3 $case27|3 $case28|3 $case29|3 $case30|3 $case31|3 $case32|3 $case33|3 $case34|3 $case35|3 $case36|3 $case37|3 $case38|3 $case39|3 $case40|3 $case41|3 $case42|3 $case43|3 $case44|3 $case45|3 $case46|3 $case47|3 $case48|3 $case49|3 $case50|3 $case51|3 $case52|3 $case53|3 $case54|3 $case55|3 $case56|3 $case57|3 $case58|3 $case59|3 $case60|3 $case61|3 $case62|3 $case63|3 $case64|3 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.2 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + i32x4.add + block $assembly/utils/v128/getV128|inlined.3 (result v128) + block $case64|4 + block $case63|4 + block $case62|4 + block $case61|4 + block $case60|4 + block $case59|4 + block $case58|4 + block $case57|4 + block $case56|4 + block $case55|4 + block $case54|4 + block $case53|4 + block $case52|4 + block $case51|4 + block $case50|4 + block $case49|4 + block $case48|4 + block $case47|4 + block $case46|4 + block $case45|4 + block $case44|4 + block $case43|4 + block $case42|4 + block $case41|4 + block $case40|4 + block $case39|4 + block $case38|4 + block $case37|4 + block $case36|4 + block $case35|4 + block $case34|4 + block $case33|4 + block $case32|4 + block $case31|4 + block $case30|4 + block $case29|4 + block $case28|4 + block $case27|4 + block $case26|4 + block $case25|4 + block $case24|4 + block $case23|4 + block $case22|4 + block $case21|4 + block $case20|4 + block $case19|4 + block $case18|4 + block $case17|4 + block $case16|4 + block $case15|4 + block $case14|4 + block $case13|4 + block $case12|4 + block $case11|4 + block $case10|4 + block $case9|4 + block $case8|4 + block $case7|4 + block $case6|4 + block $case5|4 + block $case4|4 + block $case3|4 + block $case2|4 + block $case1|4 + block $case0|4 + global.get $assembly/simd/i + i32.const 15 + i32.sub + br_table $case0|4 $case1|4 $case2|4 $case3|4 $case4|4 $case5|4 $case6|4 $case7|4 $case8|4 $case9|4 $case10|4 $case11|4 $case12|4 $case13|4 $case14|4 $case15|4 $case16|4 $case17|4 $case18|4 $case19|4 $case20|4 $case21|4 $case22|4 $case23|4 $case24|4 $case25|4 $case26|4 $case27|4 $case28|4 $case29|4 $case30|4 $case31|4 $case32|4 $case33|4 $case34|4 $case35|4 $case36|4 $case37|4 $case38|4 $case39|4 $case40|4 $case41|4 $case42|4 $case43|4 $case44|4 $case45|4 $case46|4 $case47|4 $case48|4 $case49|4 $case50|4 $case51|4 $case52|4 $case53|4 $case54|4 $case55|4 $case56|4 $case57|4 $case58|4 $case59|4 $case60|4 $case61|4 $case62|4 $case63|4 $case64|4 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.3 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + local.tee $2 + i32.const 7 + i32x4.shr_u + local.get $2 + i32.const 25 + i32x4.shl + v128.or + local.get $2 + i32.const 18 + i32x4.shr_u + local.get $2 + i32.const 14 + i32x4.shl + v128.or + v128.xor + local.get $2 + i32.const 3 + i32x4.shr_u + v128.xor + i32x4.add + block $assembly/utils/v128/getV128|inlined.4 (result v128) + block $case64|5 + block $case63|5 + block $case62|5 + block $case61|5 + block $case60|5 + block $case59|5 + block $case58|5 + block $case57|5 + block $case56|5 + block $case55|5 + block $case54|5 + block $case53|5 + block $case52|5 + block $case51|5 + block $case50|5 + block $case49|5 + block $case48|5 + block $case47|5 + block $case46|5 + block $case45|5 + block $case44|5 + block $case43|5 + block $case42|5 + block $case41|5 + block $case40|5 + block $case39|5 + block $case38|5 + block $case37|5 + block $case36|5 + block $case35|5 + block $case34|5 + block $case33|5 + block $case32|5 + block $case31|5 + block $case30|5 + block $case29|5 + block $case28|5 + block $case27|5 + block $case26|5 + block $case25|5 + block $case24|5 + block $case23|5 + block $case22|5 + block $case21|5 + block $case20|5 + block $case19|5 + block $case18|5 + block $case17|5 + block $case16|5 + block $case15|5 + block $case14|5 + block $case13|5 + block $case12|5 + block $case11|5 + block $case10|5 + block $case9|5 + block $case8|5 + block $case7|5 + block $case6|5 + block $case5|5 + block $case4|5 + block $case3|5 + block $case2|5 + block $case1|5 + block $case0|5 + global.get $assembly/simd/i + i32.const 16 + i32.sub + br_table $case0|5 $case1|5 $case2|5 $case3|5 $case4|5 $case5|5 $case6|5 $case7|5 $case8|5 $case9|5 $case10|5 $case11|5 $case12|5 $case13|5 $case14|5 $case15|5 $case16|5 $case17|5 $case18|5 $case19|5 $case20|5 $case21|5 $case22|5 $case23|5 $case24|5 $case25|5 $case26|5 $case27|5 $case28|5 $case29|5 $case30|5 $case31|5 $case32|5 $case33|5 $case34|5 $case35|5 $case36|5 $case37|5 $case38|5 $case39|5 $case40|5 $case41|5 $case42|5 $case43|5 $case44|5 $case45|5 $case46|5 $case47|5 $case48|5 $case49|5 $case50|5 $case51|5 $case52|5 $case53|5 $case54|5 $case55|5 $case56|5 $case57|5 $case58|5 $case59|5 $case60|5 $case61|5 $case62|5 $case63|5 $case64|5 + end + local.get $0 + v128.load + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $0 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.4 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + i32x4.add + end + global.set $assembly/simd/tmpW + global.get $assembly/simd/i + i32.const 16 + i32.ge_s + if + global.get $assembly/simd/tmpW + local.set $2 + block $break|6 + block $case63|6 + block $case62|6 + block $case61|6 + block $case60|6 + block $case59|6 + block $case58|6 + block $case57|6 + block $case56|6 + block $case55|6 + block $case54|6 + block $case53|6 + block $case52|6 + block $case51|6 + block $case50|6 + block $case49|6 + block $case48|6 + block $case47|6 + block $case46|6 + block $case45|6 + block $case44|6 + block $case43|6 + block $case42|6 + block $case41|6 + block $case40|6 + block $case39|6 + block $case38|6 + block $case37|6 + block $case36|6 + block $case35|6 + block $case34|6 + block $case33|6 + block $case32|6 + block $case31|6 + block $case30|6 + block $case29|6 + block $case28|6 + block $case27|6 + block $case26|6 + block $case25|6 + block $case24|6 + block $case23|6 + block $case22|6 + block $case21|6 + block $case20|6 + block $case19|6 + block $case18|6 + block $case17|6 + block $case16|6 + block $case15|6 + block $case14|6 + block $case13|6 + block $case12|6 + block $case11|6 + block $case10|6 + block $case9|6 + block $case8|6 + block $case7|6 + block $case6|6 + block $case5|6 + block $case4|6 + block $case3|6 + block $case2|6 + block $case1|6 + block $case0|6 + global.get $assembly/simd/i + br_table $case0|6 $case1|6 $case2|6 $case3|6 $case4|6 $case5|6 $case6|6 $case7|6 $case8|6 $case9|6 $case10|6 $case11|6 $case12|6 $case13|6 $case14|6 $case15|6 $case16|6 $case17|6 $case18|6 $case19|6 $case20|6 $case21|6 $case22|6 $case23|6 $case24|6 $case25|6 $case26|6 $case27|6 $case28|6 $case29|6 $case30|6 $case31|6 $case32|6 $case33|6 $case34|6 $case35|6 $case36|6 $case37|6 $case38|6 $case39|6 $case40|6 $case41|6 $case42|6 $case43|6 $case44|6 $case45|6 $case46|6 $case47|6 $case48|6 $case49|6 $case50|6 $case51|6 $case52|6 $case53|6 $case54|6 $case55|6 $case56|6 $case57|6 $case58|6 $case59|6 $case60|6 $case61|6 $case62|6 $case63|6 $break|6 + end + local.get $0 + local.get $2 + v128.store + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=16 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=32 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=48 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=64 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=80 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=96 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=112 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=128 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=144 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=160 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=176 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=192 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=208 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=224 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=240 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=256 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=272 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=288 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=304 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=320 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=336 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=352 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=368 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=384 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=400 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=416 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=432 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=448 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=464 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=480 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=496 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=512 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=528 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=544 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=560 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=576 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=592 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=608 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=624 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=640 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=656 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=672 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=688 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=704 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=720 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=736 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=752 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=768 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=784 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=800 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=816 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=832 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=848 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=864 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=880 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=896 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=912 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=928 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=944 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=960 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=976 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=992 + br $break|6 + end + local.get $0 + local.get $2 + v128.store offset=1008 + end + end + global.get $assembly/simd/hV128 + global.get $assembly/simd/eV128 + local.tee $2 + i32.const 6 + i32x4.shr_u + local.get $2 + i32.const 26 + i32x4.shl + v128.or + local.get $2 + i32.const 11 + i32x4.shr_u + local.get $2 + i32.const 21 + i32x4.shl + v128.or + v128.xor + local.get $2 + i32.const 25 + i32x4.shr_u + local.get $2 + i32.const 7 + i32x4.shl + v128.or + v128.xor + i32x4.add + global.get $assembly/simd/eV128 + local.tee $2 + global.get $assembly/simd/fV128 + v128.and + local.get $2 + v128.not + global.get $assembly/simd/gV128 + v128.and + v128.xor + i32x4.add + block $assembly/utils/v128/getV128|inlined.5 (result v128) + global.get $assembly/simd/kV128Ptr + local.set $3 + block $case64|7 + block $case63|7 + block $case62|7 + block $case61|7 + block $case60|7 + block $case59|7 + block $case58|7 + block $case57|7 + block $case56|7 + block $case55|7 + block $case54|7 + block $case53|7 + block $case52|7 + block $case51|7 + block $case50|7 + block $case49|7 + block $case48|7 + block $case47|7 + block $case46|7 + block $case45|7 + block $case44|7 + block $case43|7 + block $case42|7 + block $case41|7 + block $case40|7 + block $case39|7 + block $case38|7 + block $case37|7 + block $case36|7 + block $case35|7 + block $case34|7 + block $case33|7 + block $case32|7 + block $case31|7 + block $case30|7 + block $case29|7 + block $case28|7 + block $case27|7 + block $case26|7 + block $case25|7 + block $case24|7 + block $case23|7 + block $case22|7 + block $case21|7 + block $case20|7 + block $case19|7 + block $case18|7 + block $case17|7 + block $case16|7 + block $case15|7 + block $case14|7 + block $case13|7 + block $case12|7 + block $case11|7 + block $case10|7 + block $case9|7 + block $case8|7 + block $case7|7 + block $case6|7 + block $case5|7 + block $case4|7 + block $case3|7 + block $case2|7 + block $case1|7 + block $case0|7 + global.get $assembly/simd/i + br_table $case0|7 $case1|7 $case2|7 $case3|7 $case4|7 $case5|7 $case6|7 $case7|7 $case8|7 $case9|7 $case10|7 $case11|7 $case12|7 $case13|7 $case14|7 $case15|7 $case16|7 $case17|7 $case18|7 $case19|7 $case20|7 $case21|7 $case22|7 $case23|7 $case24|7 $case25|7 $case26|7 $case27|7 $case28|7 $case29|7 $case30|7 $case31|7 $case32|7 $case33|7 $case34|7 $case35|7 $case36|7 $case37|7 $case38|7 $case39|7 $case40|7 $case41|7 $case42|7 $case43|7 $case44|7 $case45|7 $case46|7 $case47|7 $case48|7 $case49|7 $case50|7 $case51|7 $case52|7 $case53|7 $case54|7 $case55|7 $case56|7 $case57|7 $case58|7 $case59|7 $case60|7 $case61|7 $case62|7 $case63|7 $case64|7 + end + local.get $3 + v128.load + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $3 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.5 + end + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + end + i32x4.add + global.get $assembly/simd/tmpW + i32x4.add + global.set $assembly/simd/t1V128 + global.get $assembly/simd/aV128 + local.tee $2 + i32.const 2 + i32x4.shr_u + local.get $2 + i32.const 30 + i32x4.shl + v128.or + local.get $2 + i32.const 13 + i32x4.shr_u + local.get $2 + i32.const 19 + i32x4.shl + v128.or + v128.xor + local.get $2 + i32.const 22 + i32x4.shr_u + local.get $2 + i32.const 10 + i32x4.shl + v128.or + v128.xor + global.get $assembly/simd/aV128 + local.tee $2 + global.get $assembly/simd/bV128 + local.tee $4 + v128.and + local.get $2 + global.get $assembly/simd/cV128 + local.tee $2 + v128.and + v128.xor + local.get $4 + local.get $2 + v128.and + v128.xor + i32x4.add + global.set $assembly/simd/t2V128 + global.get $assembly/simd/gV128 + global.set $assembly/simd/hV128 + global.get $assembly/simd/fV128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/eV128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/dV128 + global.get $assembly/simd/t1V128 + i32x4.add + global.set $assembly/simd/eV128 + global.get $assembly/simd/cV128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/bV128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/aV128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/t1V128 + global.get $assembly/simd/t2V128 + i32x4.add + global.set $assembly/simd/aV128 + global.get $assembly/simd/i + i32.const 1 + i32.add + global.set $assembly/simd/i + br $for-loop|0 + end + end + global.get $assembly/simd/H0V128 + global.get $assembly/simd/aV128 + i32x4.add + global.set $assembly/simd/H0V128 + global.get $assembly/simd/H1V128 + global.get $assembly/simd/bV128 + i32x4.add + global.set $assembly/simd/H1V128 + global.get $assembly/simd/H2V128 + global.get $assembly/simd/cV128 + i32x4.add + global.set $assembly/simd/H2V128 + global.get $assembly/simd/H3V128 + global.get $assembly/simd/dV128 + i32x4.add + global.set $assembly/simd/H3V128 + global.get $assembly/simd/H4V128 + global.get $assembly/simd/eV128 + i32x4.add + global.set $assembly/simd/H4V128 + global.get $assembly/simd/H5V128 + global.get $assembly/simd/fV128 + i32x4.add + global.set $assembly/simd/H5V128 + global.get $assembly/simd/H6V128 + global.get $assembly/simd/gV128 + i32x4.add + global.set $assembly/simd/H6V128 + global.get $assembly/simd/H7V128 + global.get $assembly/simd/hV128 + i32x4.add + global.set $assembly/simd/H7V128 + call $assembly/simd/hashPreCompWV128 + local.get $1 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store + local.get $1 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=4 + local.get $1 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=8 + local.get $1 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=12 + local.get $1 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=16 + local.get $1 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=20 + local.get $1 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=24 + local.get $1 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + i32.store offset=28 + local.get $1 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=32 + local.get $1 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=36 + local.get $1 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=40 + local.get $1 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=44 + local.get $1 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=48 + local.get $1 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=52 + local.get $1 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=56 + local.get $1 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + i32.store offset=60 + local.get $1 + i32.const -64 + i32.sub + global.get $assembly/simd/H0V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store + local.get $1 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=68 + local.get $1 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=72 + local.get $1 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=76 + local.get $1 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=80 + local.get $1 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=84 + local.get $1 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=88 + local.get $1 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + i32.store offset=92 + local.get $1 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=96 + local.get $1 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=100 + local.get $1 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=104 + local.get $1 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=108 + local.get $1 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=112 + local.get $1 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=116 + local.get $1 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=120 + local.get $1 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + i32.store offset=124 + ) + (func $assembly/index/hash4Inputs (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + global.set $assembly/index/i + loop $for-loop|0 + global.get $assembly/index/i + i32.const 16 + i32.lt_u + if + global.get $assembly/index/i + i32.const 2 + i32.shl + local.tee $1 + i32.const 1 + i32.add + local.set $2 + global.get $assembly/index/wPtr + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.const 3 + i32.add + local.tee $3 + global.get $assembly/index/inputPtr + local.tee $4 + i32.add + i32.load8_u + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 24 + i32.shl + local.get $2 + local.get $4 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + local.get $1 + i32.const 2 + i32.add + local.tee $1 + local.get $4 + i32.add + i32.load8_u + i32.const 8 + i32.shl + i32.or + i32.or + i32.store + global.get $assembly/index/wPtr + local.get $2 + i32.const 2 + i32.shl + i32.add + global.get $assembly/index/inputPtr + local.tee $2 + global.get $assembly/index/i + i32.const 16 + i32.add + i32.const 2 + i32.shl + local.tee $4 + i32.const 3 + i32.add + i32.add + i32.load8_u + local.get $2 + local.get $4 + i32.add + i32.load8_u + i32.const 24 + i32.shl + local.get $4 + i32.const 1 + i32.add + local.get $2 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 2 + i32.add + local.get $2 + i32.add + i32.load8_u + i32.const 8 + i32.shl + i32.or + i32.or + i32.store + global.get $assembly/index/wPtr + local.get $1 + i32.const 2 + i32.shl + i32.add + global.get $assembly/index/inputPtr + local.tee $1 + global.get $assembly/index/i + i32.const 32 + i32.add + i32.const 2 + i32.shl + local.tee $2 + i32.const 3 + i32.add + i32.add + i32.load8_u + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 24 + i32.shl + local.get $2 + i32.const 1 + i32.add + local.get $1 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + local.get $2 + i32.const 2 + i32.add + local.get $1 + i32.add + i32.load8_u + i32.const 8 + i32.shl + i32.or + i32.or + i32.store + global.get $assembly/index/wPtr + local.get $3 + i32.const 2 + i32.shl + i32.add + global.get $assembly/index/inputPtr + local.tee $1 + global.get $assembly/index/i + i32.const 48 + i32.add + i32.const 2 + i32.shl + local.tee $2 + i32.const 3 + i32.add + i32.add + i32.load8_u + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 24 + i32.shl + local.get $2 + i32.const 1 + i32.add + local.get $1 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + local.get $2 + i32.const 2 + i32.add + local.get $1 + i32.add + i32.load8_u + i32.const 8 + i32.shl + i32.or + i32.or + i32.store + global.get $assembly/index/i + i32.const 1 + i32.add + global.set $assembly/index/i + br $for-loop|0 + end + end + global.get $assembly/index/wPtr + local.get $0 + call $assembly/simd/digest64V128 + ) + (func $assembly/index/hash8HashObjects (param $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + global.set $assembly/index/i + loop $for-loop|0 + global.get $assembly/index/i + i32.const 64 + i32.lt_u + if + global.get $assembly/index/i + i32.const 2 + i32.shl + local.tee $1 + global.get $assembly/index/wPtr + i32.add + global.get $assembly/index/inputPtr + local.tee $2 + local.get $1 + i32.const 3 + i32.add + i32.add + i32.load8_u + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 24 + i32.shl + local.get $1 + i32.const 1 + i32.add + local.get $2 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + local.get $1 + i32.const 2 + i32.add + local.get $2 + i32.add + i32.load8_u + i32.const 8 + i32.shl + i32.or + i32.or + i32.store + global.get $assembly/index/i + i32.const 1 + i32.add + global.set $assembly/index/i + br $for-loop|0 + end + end + global.get $assembly/index/wPtr + local.get $0 + call $assembly/simd/digest64V128 + ) + (func $~start + call $start:assembly/simd + i32.const 1348 + i32.load + global.set $assembly/index/kPtr + i32.const 1684 + i32.load + global.set $assembly/index/w64Ptr + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $assembly/index/M + global.get $assembly/index/M + global.set $assembly/index/mPtr + i32.const 1024 call $~lib/arraybuffer/ArrayBuffer#constructor global.set $assembly/index/W global.get $assembly/index/W diff --git a/packages/as-sha256/build/untouched.wasm b/packages/as-sha256/build/untouched.wasm index a409f9f33ac88b4d09010941db22f071f9c82ede..410b5b8c9caa8f90823b69d9d995662113175cd8 100644 GIT binary patch literal 23946 zcmeI4dz2hkednvHySi$otEYNeGm?7Ll5TZ%>tVg$@=KbsQOmOBCx!s#VfpPI$+D!e z5jbH4e(-WYm=GQ|jsQD0HV^?JyM(L}aE=`a?24QvhXg09?Cv2kyPFk{oIMZ=@ArGZ z)vZ=+&e`lAF?-I+?yk@6x>a3$>(=LY@2y+o>^iW=bsWcC9$xFs%sAJ&Gw#f_j>81N z#V3UseqO}85^r;7yoy`6@wPktUDxg1KkbwX8`e8^CobLt&vo5`;}`ge19p73P{2o? z=P_L@79CKr=oNkUcC2Skw{*O8`HYht^U8QX?3eFyPet5*@ZbOcaIiGM|9S;7<7U6& z+izkID5>f&n%sOvsq3j`*fFcD!TcHL*2nwnIGQ!xtqT-__81F|LJY#4ZiG$ z=ltX4j}E@NoA&cG>o;FDk6? zZ@umIJEjX4mG<5-O}Myt>utAAJBvzp+uwrjVutaQVzH{W<*+F2e7 zHm-M8mT%d0;Fk3}xQ7GI+A332PkL1Be}JA@QME~m^ z>V2JCEhR%Z>>wF7L&ZrmWQMDL*$e~mLA6*mt~XZ1iwQW7rGMnp4G3HAS1N>Xz~EMA4l$!{6=pf9W^f zyzF24)cje#8VBVj1(tZ%6sq}o>hh?Hrihd3qYT}B_G^n(6c|n=a{4---KJM9*gcd? ziJzBVY7ad99(G|f1}4C1Lv`aXCX$b^ZDFCO9-^bU|; zj8lUH@%C2>y^oV&?rM0jem$4}PFpzK!*JIWJN;7nQLmI(ne63&&3hFQr;Qac^38Cw zl2^nLQ!yi`h;g>i#Hfg66PxltMU0SAMJ(HjSXM=h{&_|Gr_<%{px%^GZ=$4Ts%DgR zr#4W@P+g$4Y7s>+tLmFsI2ZT?HPqIcF>E@HO=lYy)n&|#bMx7%dZ;w0dcFEmp59+| z?KTtGW**LllgtIx&0JGIT^mueqUrrf!%UcYw(2!l^~w)>?$C_!9@8c4e%5%e=@;TJ z`xg}oIE(Q=>n{og=dGYb!fL`xyST(V67k&QvP??G#}&_NixXMwp0>ihg}efwB1{<{ z*BQ#7%KiDMFeTqDqgHY=Cwn9s*zSQs=Ck6IO~JTRiLGo|)WyE7TH-QlA1d(fDO5cd z*FWl3=I%$`_4ctE4cT($yN~ZfWeL0X0zhQNYFl>0xXe*6OnD=I2Mc$oib@xkf9AT? znar6;FY6aT;%s$r#P$#~NUX~@TQb!<6VG_Yy%>tZVrmjW{33d)I0;!g_Ih;e$tom8 zloRY`eEWqgw8A6~7`$xTZ3PM6MeMApzxhSHeVNawUX!fB^>Y4*N9NrJmcIvHQj~Gu}kdZ-+CxnoQ~dA zi2~zQS->f(#wZ?$e>XClBCbXc1%>n54+}Jdu13#Zjh?PX)UGqb!oSaJu&t!NK@~GT zYXwD5MI)Te9599HeMx}Q3r&E!Z#8T`_fS|^h3aH4i6r#R&@G8)cQ%Zj+4^#NXV?eo zE_b0Q`2#Pju|RD82>B}}xCN&uG8JCTBZDpo%f8JPBU_c(M&X|-vyGma&4h9Jovs_O zP8t^8<-CSaU~U<;(v~60raFznvO7cw$gj-p(_PeB_eC`pCEG+rY}%r^cpfjVN!DBJ z7uD7RE>8M`E=15q}Fm)oJ``?kro;`k~Z#r>*vng*+rX2(?4l3#w$7E65N_sH z7bdv6()xDR8XV{IWt@)QuZ#MP(lvHJ_@)HaB|98u$HVL=PIi{vjZpB&-r~OU^&FQSvsg$q?I+Xy6uu}=K z80u7puo&)ChOsDjDu|w0)Tu;RR63Ok79*X?2o`at5@S*ARH|5vb}FM-)H;wnS;gLP6f3qt9L4OEG9Y?_66p3D)X>tbSe!j=65Rd zu~^WlEWl!6r?Li5u}C|W6pL1;(!!$MskE_J)Tu1OVsWRk7>gyH z$`UM=b}CD;IIB}R3yWo)$}%jLcPh)VSkbAhz+z>mvJ#6`oysaKR(C3^u~^fotifV! zr?M7{b)CvOEY^1_>#^9-scgVvW2dqai%p%%CM-60Dx0x5yHhzEi*q`abFetKQ#lul z^E#FDusFX{IUkEHoyrz0wstC8qe*l%On9nXbfT?2tVUaUXrl9bxH>wohm+B{J-i}1 zr-#=@XZP^-Xmbw_xzVN`A9kaSJwD<_8+v@yjn?=0m>aF@@o_g=+v5{%w5G==-Dq`> z4|&n59v}9il|4S+x|fI;+Pgyl82UPkPak9v>=1i+g;y5H0HQ zkwVn&@zFxm>hZBcl=k>|A!_#cL?J>bR#~4cprM}gp<=YK$A^p2f*v0!M)P}ov=}vd ze5@GF>+$hoG|}S|#i-unlf`Imj}Q6LoE{(cquD(^;z#2>KI%tfJwE0~vwD2ok7_+W z;YXuAKIuo*9v>=2XxQp^9WF&9Jw8&3a4GBaqooL~Rq?S>gchFocqtn0@rhD2)Z>$- zDD3f}APRbXIEYF;J`zOeG3WaaB6gW=Jw6sh=$qyH4C214J@<<7Fq)fWni%kES7=AGO$<%7R$h58CWa>i)CQ33@ny`#WJv1 z1{TY}Vi{O01B+!~u?#GhfyFYgSOyl$z+xF#ECY*WV6hA=mVw1Guvi8b%fMn8SS$mJ zWni%kES7=AGO$<%7R$h58CWa>i)CQ33@ny`#WJv11{TY}Vi{O01B+!~u?#GhfyGCy zfyFYg__#H&SOym71}@UTMH;xg&8fChG?rVdQWx*5q2yx@n!~S1U(woz#33(T&gO9^ z?X8p2Y4m;;`HLyCFP5q?C-w)*zr$4Xg`SQE`)`slpX>gx158!?H&I9<=ZZHcQ1XIZvMheIB zo)1=a^WBYOZ9Ih`!+dl(AB~-3=48P^yw$L~Ia$H(4%^@W=3)yBzYPo(vgo>JjuM{v zi+ZQU{-P9vzv=nOd^0~Q9mHE1-!MO`ALIe!8?b6Yx+PhdZcU6?U>5E(3pn0l_Vw1U zN)i-D(IDbW!KdMcq3Gb?|J|#S794yQr3@Phh$x zJ-gdlldetA>9*FU>(X<(t##@8^t^6seYzn%zuVf7ZcMjyTN~3&>DF#*Q@S~w?6x+S z|J=n$16n#>dZ|HexHR2~4(u@}-8p4kV7e{c*|nWeeDeITgB4oaZS6#l*k~57kC}iaj z+A&-+9_uMGZN*4_Z^vHOe$d-J*5Mn<VcKGhu_hJX58rh*=-hFUi7QPwy z!rPw@fCu--|Kj}bDY}bh(o6Am*;cg-x8Zm1OuX!ni{o{1^rmnQh9gi|{LN+M-F%tt z$FoEeXaFP7w#;CIB5aTZ-XvR_xXr{7E#qSc(t+$)K3%Z+{1M25gy9)n)%Zn=xVAjvR2QW?FeI}iy`;LV z`~}Y){yz^HgKokFK{vV9P3{?P^5CWd+=LNOQ`m>=0d6Yx+=LSKp`d{QW2?qoLF^nr zL1@N9L1>MiR!|594M9P+&g?_Q8HR!oSN`=CbjWk(&Y%==-B%Zp}K9Whp-pf^%(g8o|Ehrn-RC9=QHZadsxTSg^{Y$d9&%G)TZwQZ6}Q5;c6NU)q8kDkD^cCd zF>~$OI@gw)PTFdDX}eWO7qyD%;+CH-X_eBYtsp(C6{gEtL*=_iyotNwnbd0yr-fEI zEw-Z6Z&lJ#Ya|U?aT>O&=}>DF-W^A4WE@v5RXXb3m5wBicNc02s#h|R88b1J%!8vQ zPJI@I448N7Nm>h4>(mv9J~nSLD<=))ZA{@(Dw+oK@+Q!H=CxJL<~?<#&5aISvH-ak zOeG7^bXmaMY{M*MZrtKR--dfWbtT_E=h|Z$PUEDUR(VIrluun|hEH8;qEnX*-^cbQO@i3pR4==!UN+hR>}5CA%WkTd-Bd5Tsa|$dz3irX*-iDbo9bmZ)yrSZ@GJI>iuFT1H;c2m9Vrh3^;^|G7lWjEE!ZmO5vR4==! zUUpNx?529zP4%*y>SZ_8%WkTd-Bd5Tsa|$dz3irX*-iDbo9bmZ)yr4%7#$o$S1*Y+>@}Hqn?CGj(HNU;D{&TT8?)TZs%wx;gHM0P7-?5 z80#b*u_K)%^rkV+NjhdnIZ5bAV~mq@!j5o~(2K_SCJB9LjBb+9gT~k<3H@h`Y?9D> z#<(U4eP@hnlF)O;m?jDRW{hZ(&}+tcCh1UtqnRZ1m@$?~I$}pMN$4$O9Fug+j$)F~ zQ^pu3>4Y7@B%zm#@k6XGuZvMg5_-BAgCwD!ixEf?dbzms>zo=zbIQuEH4FN~O>l^_lAtq| zq?s}4RMJAQNh!`4(4si2ytCRj8Fmd#EU zBlqGd^fAWFV&)zPEMacj@j9(!dq8v2GJ;d2&;%dPF?HIQt*p~lZjGhY)@T|d){G$L zRMJ_{IRa3GKvYIR8b)B6m5%YlVZ+Ix>Xv-Ga&DvvEm?_U@V$Fu51#k)}QxNU{dQv9_D zEky)YOugVOG&E{BfQvar3@w=B#9L^Xn8E>EU!lcUXz>+Ve1#TYp~Y8d@fBKpg%)3- z#aC$Y6+Ve1#TYp~Y8d z@fBKpg%)3-#aC$Y6+Ve1#TYp~Y8d@fBKpg%)3- z#aC#-?OonN^A%crg%)3-#aC$Y6~e1RGiiHnb2FT1W~lB!w1|LJLWug{06zQfMJ5w2%~9ND3_^g%*-R3rV4c zq|icAXdx-IkQ7=-3N0js7Lq~>NuhNuhTPU}M za$6|3g>qXcw}oqXcw}oqXcw}oqXcw}oqXcw}oqXcw}oqXcw}oo$UQ8^OAbVBJQrZX;N?5#%;%lG{jf8%b^>$!#RLjU=~`Zk>oa# z+(weyNOBuVZX?NUB)N?ww~^#FlH5j;+emU7Np2&_Z6vvkB)5^|Hj>;%lG{jf8%b^> z$!#RLjdZ5llKU}cVD5L5-*&T6jC2|^G=-6!-^QG5wrk(#5{KEceZOmvdcWIiHe;K^ zZZ->ppT?A@FxYU|#b^Vz`G8A|xXlBuLFxf*gBI`oZZ?c8b|k{K6)R9GZf0Pp^yUB0 zjG%*n@l`e#V<|P3Qe!Cli6BX-q~mrZf+VGqPTG+Ol9Wo4Qb|%ONlGP2sU#_tB&Cw1RFafR zl2S=hDoIKuNvR|$l_aH-q*RiWN|I7ZQYuMGB}u6yDU~FplFn2r`qO!Xu?oB4X6)$8 z?>2AJjM{t3)^4~>#0DdV*x6vL$!;~-ttPwGWVf2^R+HUovKwwkb3SQJcB{#5HQB8u zyVYd3n(T&K*_=;WlihGnoAXI)vRh4dtI2LP*{vqK)nvDt>{gTAYO-5RcB{#5HQB8u zyVYd3n(S7S-Du$lig~vTTOPW$!;~-ttPwGWVf2^R+HUo zvRh4dtI2LP*{vqK)nvDt>{gTAYO-5RcB{#5wZ7e|sBhM81Zy{fwHv|OjbQCYuy!L@ zyAiD22(laLupMV5$!?^hcAS+YyOECDaaNM-MmlN7SxK@RNp>U2ZY0@_B)gGhHB~WH*xRMv~n~vKvWuBgt+g*^MN-kz_ZL>_(E^NU|GAb|cAd zB-xE5yOCr!lI%v3-AJ+U2ZY0@_B)gGhHB~WH*xR zMmp1O$p_hB{Gglsj*EM4vod35aWcy9;0ZQ1{yyXq$JqG$UDqJ>yZr_uw)wD|)sk^+ zGtMb0A9l?+xA}-moXu@M>Kddz+HWv^(9H_H2BY;V#uw+ns+h1c_t(Ozb1|x0SDUde ztKxY(TD2~#)@9YYtXh{<>#}NHR;|mbby>A8tJY=Jx~y84RqL{9T~@8js&!elF00mM z)w--&msRVsYF$>X%c^x*wJxjHW!1W@T9;MpvT9vct;?!)S+y>!)@9YYtXh{<>#}NH zR;|mbby>A8tJY=Jx~y84RqL{9T~@8js&!elF00mM)w--&msRVsYF$>X%c^x*wJxjH zW!1W@T9;MpeXGtvJ-1dRSgR7ORSDLr1Z!1-wJO0{m0+z(kX1>tDoIu)$*Lq-l_aZ@ zWL1)^N|IGcvMNbdCCREJS(PNKl4MnqtV)tqNwO+QRwc=*Bw3XttCD0@lB`OSRY|fc zNmeDvsw7#JB&(8SRg$bql2u8vDoIu)$*Lq-l_aZ@WL1)^N|IGcvMNbdCCREJS(PNK zl4MnqtV)tqNwO+QRwc=*Bw3XttCD0@(wSC;+sduk6dNWU!EqC~hcYjnoqWuF`7LMW zB@N8@u`S1j9EbTobX-G@Yshg8Ij$kcHRQO49M_QJ8gg7ij%&zq4LPnM$2H`*h8)+B z;~H{YLyl|6aSb`HA;&f3xP~0pkmDM1Ttkj)$Z-uht|7-YJ?!=PK{Y=WKXmKIhfEH=pw)Z_np^1@F-3 zY^THLZ0E!04E^Deq&xuw;$D58fCTYSQl5YZamPMSK!tcLDNn$LxNn~)AVl1{&l7MW z?%wAKXc0H?^90O@d-!<*a>Q-?JOMxAPJW(%B5^Z6Pr#D6pPwfnO5D=V6L2N&>gNgQ z5|1e52^bUi_VWa!iHDT(1iXnm{CNWE#A8Z%0`|mx{yYJJ;#Pm2fJ1S&KTklTxZ$5C zU{c)k&l8X-Zu{p6_!M{k^8}QNoBw$NR>l4QJOQy{3P7HKTQLhDPe8Aj2#_aWSj+{; z6Ob&X1LO&K7Bd3!1XPPj0eJ$p#k_z#0pVh5K%RheF*_hnK)aYAkSAbX%n`^FkT0eQ z)&3e1SXx5o5|go`8!nYamZR$Cx;fCtzgE9mo@qGNupY33wSZ z2=WBfj7bD}0(Qo8OnCx=#)C|G0*=NEvV5l3gKYOc=q3+wve*2~nE6x50`riIiCbvH ze%vK4U>o*f*C6$9zuk*%eh*U*lZDu3;Z$PG@41-1g>8frNxufha;kpg;&AAxa>A zkPspeJV=NSh#VvY2ZRk0A_HOu31I;NgM^rXXhA|iK&T)g8X!)P5DE|^NQeW75F`Wv zga;BL0Ad3P`bS_O!TpE|B#0j&fduO#9+04X1OpO$k4Qj*>=6b?Fg;=b37SU$Ai?pl zKM8_|`bn@myibDKA$=0O4&##`b?BZ1qr>$i=p3Ra!R4?#2_lE$Nw7HlPJ+TAcM|*! zvy&iiXq^Oe!|5bw8$u_+*|0eY!iLI8ur)kRf~p~L5A4tPwWdW zCW?L0#Z0k3bj=rB^F>M<%RjWrMlvUP{^g!9R$c8)8aG*vx#TNS@61TL-R!!c(a`2Ghjpp^{4K~9Y`x)MpjV9N!9GGF3d6T);X4uuw za2>`7uV*3RHlFNeIWWT>Gi7$$414++Zo?J4m*v0=x0~C{UYp_eeujP7oMb=Cff){%eP+MS zaG;-II-8r^!Ez`d!<}Z@++j1^+0XE1H0} zR&$rl@SFV%zm?5P-o|oZh8go)=502^Oh3aRH)|wscUcn5@($M=a?RV}K|DM04*T~3 z?InD-o6S$|aakVBcCTyhcFjG?cJJwI_qo}E1^+IvxUif zT$T;9z1KDGcFlW~?Y%Zz`Debn84t#_1|RNBx8uQ)Eg+W0-vq2e@t+2wVvDqh8%jmYd}~ z>J>QZWr#j2c+{)RO0#NkxAv%)C9AO-N4>_ZHfsh~>!_C{YZ&=G2_4!e6HXF?*d(@kG)HpuO(a!7~Z9aXqhL3}e4Ago&aBZIlwiQ47f1=jE z_%{`uY8!t*a45o`iYp)S8m`m-XAy57S@oU^KJbc7`~Jf}9sAOwKlsvf*L?leXa9Kg z$FF_l9a|sx-WwZFe&mVZ`|dS&*Pgm}P3s%K6}@Wu4NvX=<>&wA&|{@%ADsU2gJ1jF ztq=a!`?f#zKcD{i*Wzz~B5Lhj{@jWu?wP*$*-syR{a?N7=XYLp<(7}^d3w#`f4aDE z^qHC0e)Xs26Hjmdz+>OL^7?O;ZeF@{?B3yjvv_kdZ{_oQmR~xnviX%)9~i#zE5qG8 zSAO&BZ@+i>{s%ts_h0?wB{xkxe*1eb`TD1>-2F`b?;rSXtMt*oxOc3 zGxz`Eg{Kbxx7}Af^1nXy^QV4taNpDY0wH9d@ye^04}4SvSMf6W%Rz}vg3tJuJ?s7I z!u|UHb>aTh7VZuAZU5!Tr~k*_##jFYg}eT_%b&XEo4XfeU*7eLcl~_!RaZX!lRd9{ z-{UtvUqAZH!+-hZZ>*_(?8uKs{%%?N`BO)?YK?T>;-H+|^Iz13ZlbAJ36_gD6u`^0xP zJ@u7ie|7GzyRZM$ML$^coL7GA_21q5tzS%BwdS66Yd$pbA8$K+@WMSm`M^Wp_;*i! z`{5rR`R13-`=eE_d^&sP&p-9HG`QuG4?S|{{QAx_i|P5|OBe3#C{(^)x^O?^pShKX zj19bYIJY@>I=h_R&aKW3I6=Fe8}Z4_&a`t2PUN$GdGfr0ujf{a@Oqogf1R@mTkgky zyPUT;*Ex4MH{rh_2lS)xId@h5Wx`hu$reNU{=Hj(FZjzLI^7=5riPfKKQT_zq&m;4yfRh z4PABa`9J47=iaZr&TqfJ%`WX-3@^8E2fAGF}l-33wEE zPRWW`5D4MvFbuf}Bfbqu6u>5aho8uq(-Ox)=+E0i=G-w)elsdA1y_m>i%D@1EP`>j zA}gOvYZoql{1Xp<=Ap9}&pmt|fwr!1-`EdU;-_xxdtxozy1uo~D88}%#HIbqY&p8J zb^X%k*joI=)@Lv8?X&e{N}N8$HsWiSuRXQU*m#oIC)nBY`R+wgMB9tj^ z%} zO1z#2F7Ujp#-s^#r~(t|$nhQ6GCWo_*TRJvcvHP4p+b>sZeksKeysk32MHSi7o}oF zS6p~?O)wuK(FsBzm!8J4bM}F7;+VTtac^^{6k`%m6GTl6N95E;5XT}*9U>F4tHR== zl|Riy&}peyw~%cM4Ty>dlg-puD))C$=63QklzA$B1ZJsYDk{%dbMH6F%2L_X-OFjW zDIIUhyPT`su^w#}Z>ATxD2CPV#I>Fd?4bBbb;29PdpK1wkK(hdBwwZ9pN;$o;;e zdUk{Xy3LfaOSEJO4+jDdmaJWNj5z2OTCuC3z0w-3*>(9b=KlPvAN)GDvHSAdFTC{y zTXBDT=k-4ZHgT{0<&Br}&)d|!_x)GD64|Qz+Hb!7yQi&mKYZmI_qeUO=br!4oygW5 zvt#@>G&{kBI!;}{T1+%Eb?TT#3Ag|S z44v3Fel&!MitYZ_H#?4Jwo~I$I(2A#o87nW!KN>As57IeQ>+i($2-NNgCWkFgOfO4 z8Z3{Fxws#{bU|&A(`@nXpqI{?5w*-B%@t}m9|gw1+2*j@?HH>`TO^fDS2wfsFlrQ! z4HwdeS)ry`B~?5#?B-pXvu$dj&{-5bL-QGGSLi_#y=b5(^VH4Io_}RSF*Pz9Q-zwD ztx!TLvk9d%li8H2G@IEfNor+QQjO*^TcbL)Gh3Ix(=s7f4`y^|jBzUseSmSXGooY}V=Xde zi|>y5gJ}dj!^xSQ`>G(l_M4+8&uxHqXU=<=i4b6nSw7%E7%P(L;DdO{AuI1(QmOmE z#i=e*HzA6P%H)b?7suz1k~>sAbEs+(xJ|uVyef5?>FRN}KCpKt;jA`wc6af_hX`cm zlBQ+DXt!Tyw0hApSG2^WfDwOV{y_k#-VFXB#cKd<|Fs#Z-;clClF z6WxP1Sz7g7Xa-b;bg27!P)dhK(vgcWa1v6jM|!c8>LaOfv00)Tq@;~rDy4KJwXR~8 zsSfFiw#6xCzO@JGg;p@eka\98m\c61\a8\c8\'\03\b0\c7\7fY\bf\f3\0b\e0\c6G\91\a7\d5Qc\ca\06g))\14\85\n\b7\'8!\1b.\fcm,M\13\r8STs\ne\bb\njv.\c9\c2\81\85,r\92\a1\e8\bf\a2Kf\1a\a8p\8bK\c2\a3Ql\c7\19\e8\92\d1$\06\99\d6\855\0e\f4p\a0j\10\16\c1\a4\19\08l7\1eLwH\'\b5\bc\b04\b3\0c\1c9J\aa\d8NO\ca\9c[\f3o.h\ee\82\8ftoc\a5x\14x\c8\84\08\02\c7\8c\fa\ff\be\90\eblP\a4\f7\a3\f9\be\f2xq\c6\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\01\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -64,8 +98,11 @@ (data $7 (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $8 (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $9 (i32.const 992) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1020) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) + (export "PARALLEL_FACTOR" (global $assembly/index/PARALLEL_FACTOR)) (export "INPUT_LENGTH" (global $assembly/index/INPUT_LENGTH)) (export "input" (global $assembly/index/input)) (export "output" (global $assembly/index/output)) @@ -74,12 +111,10 @@ (export "final" (func $assembly/index/final)) (export "digest" (func $assembly/index/digest)) (export "digest64" (func $assembly/index/digest64)) + (export "hash4Inputs" (func $assembly/index/hash4Inputs)) + (export "hash8HashObjects" (func $assembly/index/hash8HashObjects)) (export "memory" (memory $0)) (start $~start) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -1701,20 +1736,1420 @@ local.get $2 return ) - (func $start:assembly/index + (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 1040 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#get:dataStart + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + return + ) + (func $start:assembly/simd (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $assembly/index/K + (local $3 v128) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 v128) + (local $9 i32) + i32.const 992 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/fromSpace + i32.const 0 + i32.const 4 + i32.const 64 + i32.mul + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $assembly/simd/kV128ArrayBuffer + global.get $assembly/simd/kV128ArrayBuffer + global.set $assembly/simd/kV128Ptr + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/kV128Ptr + local.set $1 + local.get $0 + local.set $2 + global.get $assembly/utils/const/K + local.get $0 + call $~lib/array/Array#__get + i32x4.splat + local.set $3 + block $break|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + local.set $4 + local.get $4 + i32.const 0 + i32.eq + br_if $case0|1 + local.get $4 + i32.const 1 + i32.eq + br_if $case1|1 + local.get $4 + i32.const 2 + i32.eq + br_if $case2|1 + local.get $4 + i32.const 3 + i32.eq + br_if $case3|1 + local.get $4 + i32.const 4 + i32.eq + br_if $case4|1 + local.get $4 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $4 + i32.const 6 + i32.eq + br_if $case6|1 + local.get $4 + i32.const 7 + i32.eq + br_if $case7|1 + local.get $4 + i32.const 8 + i32.eq + br_if $case8|1 + local.get $4 + i32.const 9 + i32.eq + br_if $case9|1 + local.get $4 + i32.const 10 + i32.eq + br_if $case10|1 + local.get $4 + i32.const 11 + i32.eq + br_if $case11|1 + local.get $4 + i32.const 12 + i32.eq + br_if $case12|1 + local.get $4 + i32.const 13 + i32.eq + br_if $case13|1 + local.get $4 + i32.const 14 + i32.eq + br_if $case14|1 + local.get $4 + i32.const 15 + i32.eq + br_if $case15|1 + local.get $4 + i32.const 16 + i32.eq + br_if $case16|1 + local.get $4 + i32.const 17 + i32.eq + br_if $case17|1 + local.get $4 + i32.const 18 + i32.eq + br_if $case18|1 + local.get $4 + i32.const 19 + i32.eq + br_if $case19|1 + local.get $4 + i32.const 20 + i32.eq + br_if $case20|1 + local.get $4 + i32.const 21 + i32.eq + br_if $case21|1 + local.get $4 + i32.const 22 + i32.eq + br_if $case22|1 + local.get $4 + i32.const 23 + i32.eq + br_if $case23|1 + local.get $4 + i32.const 24 + i32.eq + br_if $case24|1 + local.get $4 + i32.const 25 + i32.eq + br_if $case25|1 + local.get $4 + i32.const 26 + i32.eq + br_if $case26|1 + local.get $4 + i32.const 27 + i32.eq + br_if $case27|1 + local.get $4 + i32.const 28 + i32.eq + br_if $case28|1 + local.get $4 + i32.const 29 + i32.eq + br_if $case29|1 + local.get $4 + i32.const 30 + i32.eq + br_if $case30|1 + local.get $4 + i32.const 31 + i32.eq + br_if $case31|1 + local.get $4 + i32.const 32 + i32.eq + br_if $case32|1 + local.get $4 + i32.const 33 + i32.eq + br_if $case33|1 + local.get $4 + i32.const 34 + i32.eq + br_if $case34|1 + local.get $4 + i32.const 35 + i32.eq + br_if $case35|1 + local.get $4 + i32.const 36 + i32.eq + br_if $case36|1 + local.get $4 + i32.const 37 + i32.eq + br_if $case37|1 + local.get $4 + i32.const 38 + i32.eq + br_if $case38|1 + local.get $4 + i32.const 39 + i32.eq + br_if $case39|1 + local.get $4 + i32.const 40 + i32.eq + br_if $case40|1 + local.get $4 + i32.const 41 + i32.eq + br_if $case41|1 + local.get $4 + i32.const 42 + i32.eq + br_if $case42|1 + local.get $4 + i32.const 43 + i32.eq + br_if $case43|1 + local.get $4 + i32.const 44 + i32.eq + br_if $case44|1 + local.get $4 + i32.const 45 + i32.eq + br_if $case45|1 + local.get $4 + i32.const 46 + i32.eq + br_if $case46|1 + local.get $4 + i32.const 47 + i32.eq + br_if $case47|1 + local.get $4 + i32.const 48 + i32.eq + br_if $case48|1 + local.get $4 + i32.const 49 + i32.eq + br_if $case49|1 + local.get $4 + i32.const 50 + i32.eq + br_if $case50|1 + local.get $4 + i32.const 51 + i32.eq + br_if $case51|1 + local.get $4 + i32.const 52 + i32.eq + br_if $case52|1 + local.get $4 + i32.const 53 + i32.eq + br_if $case53|1 + local.get $4 + i32.const 54 + i32.eq + br_if $case54|1 + local.get $4 + i32.const 55 + i32.eq + br_if $case55|1 + local.get $4 + i32.const 56 + i32.eq + br_if $case56|1 + local.get $4 + i32.const 57 + i32.eq + br_if $case57|1 + local.get $4 + i32.const 58 + i32.eq + br_if $case58|1 + local.get $4 + i32.const 59 + i32.eq + br_if $case59|1 + local.get $4 + i32.const 60 + i32.eq + br_if $case60|1 + local.get $4 + i32.const 61 + i32.eq + br_if $case61|1 + local.get $4 + i32.const 62 + i32.eq + br_if $case62|1 + local.get $4 + i32.const 63 + i32.eq + br_if $case63|1 + br $break|1 + end + local.get $1 + local.get $3 + v128.store + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=16 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=32 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=48 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=64 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=80 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=96 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=112 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=128 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=144 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=160 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=176 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=192 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=208 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=224 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=240 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=256 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=272 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=288 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=304 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=320 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=336 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=352 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=368 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=384 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=400 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=416 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=432 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=448 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=464 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=480 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=496 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=512 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=528 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=544 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=560 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=576 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=592 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=608 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=624 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=640 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=656 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=672 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=688 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=704 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=720 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=736 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=752 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=768 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=784 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=800 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=816 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=832 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=848 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=864 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=880 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=896 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=912 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=928 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=944 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=960 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=976 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=992 + br $break|1 + end + local.get $1 + local.get $3 + v128.store offset=1008 + br $break|1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + i32.const 4 + i32.const 64 + i32.mul + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $assembly/simd/w64V12ArrayBuffer + global.get $assembly/simd/w64V12ArrayBuffer + global.set $assembly/simd/w64V128Ptr + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/w64V128Ptr + local.set $6 + local.get $5 + local.set $7 + global.get $assembly/utils/const/W64 + local.get $5 + call $~lib/array/Array#__get + i32x4.splat + local.set $8 + block $break|3 + block $case63|3 + block $case62|3 + block $case61|3 + block $case60|3 + block $case59|3 + block $case58|3 + block $case57|3 + block $case56|3 + block $case55|3 + block $case54|3 + block $case53|3 + block $case52|3 + block $case51|3 + block $case50|3 + block $case49|3 + block $case48|3 + block $case47|3 + block $case46|3 + block $case45|3 + block $case44|3 + block $case43|3 + block $case42|3 + block $case41|3 + block $case40|3 + block $case39|3 + block $case38|3 + block $case37|3 + block $case36|3 + block $case35|3 + block $case34|3 + block $case33|3 + block $case32|3 + block $case31|3 + block $case30|3 + block $case29|3 + block $case28|3 + block $case27|3 + block $case26|3 + block $case25|3 + block $case24|3 + block $case23|3 + block $case22|3 + block $case21|3 + block $case20|3 + block $case19|3 + block $case18|3 + block $case17|3 + block $case16|3 + block $case15|3 + block $case14|3 + block $case13|3 + block $case12|3 + block $case11|3 + block $case10|3 + block $case9|3 + block $case8|3 + block $case7|3 + block $case6|3 + block $case5|3 + block $case4|3 + block $case3|3 + block $case2|3 + block $case1|3 + block $case0|3 + local.get $7 + local.set $9 + local.get $9 + i32.const 0 + i32.eq + br_if $case0|3 + local.get $9 + i32.const 1 + i32.eq + br_if $case1|3 + local.get $9 + i32.const 2 + i32.eq + br_if $case2|3 + local.get $9 + i32.const 3 + i32.eq + br_if $case3|3 + local.get $9 + i32.const 4 + i32.eq + br_if $case4|3 + local.get $9 + i32.const 5 + i32.eq + br_if $case5|3 + local.get $9 + i32.const 6 + i32.eq + br_if $case6|3 + local.get $9 + i32.const 7 + i32.eq + br_if $case7|3 + local.get $9 + i32.const 8 + i32.eq + br_if $case8|3 + local.get $9 + i32.const 9 + i32.eq + br_if $case9|3 + local.get $9 + i32.const 10 + i32.eq + br_if $case10|3 + local.get $9 + i32.const 11 + i32.eq + br_if $case11|3 + local.get $9 + i32.const 12 + i32.eq + br_if $case12|3 + local.get $9 + i32.const 13 + i32.eq + br_if $case13|3 + local.get $9 + i32.const 14 + i32.eq + br_if $case14|3 + local.get $9 + i32.const 15 + i32.eq + br_if $case15|3 + local.get $9 + i32.const 16 + i32.eq + br_if $case16|3 + local.get $9 + i32.const 17 + i32.eq + br_if $case17|3 + local.get $9 + i32.const 18 + i32.eq + br_if $case18|3 + local.get $9 + i32.const 19 + i32.eq + br_if $case19|3 + local.get $9 + i32.const 20 + i32.eq + br_if $case20|3 + local.get $9 + i32.const 21 + i32.eq + br_if $case21|3 + local.get $9 + i32.const 22 + i32.eq + br_if $case22|3 + local.get $9 + i32.const 23 + i32.eq + br_if $case23|3 + local.get $9 + i32.const 24 + i32.eq + br_if $case24|3 + local.get $9 + i32.const 25 + i32.eq + br_if $case25|3 + local.get $9 + i32.const 26 + i32.eq + br_if $case26|3 + local.get $9 + i32.const 27 + i32.eq + br_if $case27|3 + local.get $9 + i32.const 28 + i32.eq + br_if $case28|3 + local.get $9 + i32.const 29 + i32.eq + br_if $case29|3 + local.get $9 + i32.const 30 + i32.eq + br_if $case30|3 + local.get $9 + i32.const 31 + i32.eq + br_if $case31|3 + local.get $9 + i32.const 32 + i32.eq + br_if $case32|3 + local.get $9 + i32.const 33 + i32.eq + br_if $case33|3 + local.get $9 + i32.const 34 + i32.eq + br_if $case34|3 + local.get $9 + i32.const 35 + i32.eq + br_if $case35|3 + local.get $9 + i32.const 36 + i32.eq + br_if $case36|3 + local.get $9 + i32.const 37 + i32.eq + br_if $case37|3 + local.get $9 + i32.const 38 + i32.eq + br_if $case38|3 + local.get $9 + i32.const 39 + i32.eq + br_if $case39|3 + local.get $9 + i32.const 40 + i32.eq + br_if $case40|3 + local.get $9 + i32.const 41 + i32.eq + br_if $case41|3 + local.get $9 + i32.const 42 + i32.eq + br_if $case42|3 + local.get $9 + i32.const 43 + i32.eq + br_if $case43|3 + local.get $9 + i32.const 44 + i32.eq + br_if $case44|3 + local.get $9 + i32.const 45 + i32.eq + br_if $case45|3 + local.get $9 + i32.const 46 + i32.eq + br_if $case46|3 + local.get $9 + i32.const 47 + i32.eq + br_if $case47|3 + local.get $9 + i32.const 48 + i32.eq + br_if $case48|3 + local.get $9 + i32.const 49 + i32.eq + br_if $case49|3 + local.get $9 + i32.const 50 + i32.eq + br_if $case50|3 + local.get $9 + i32.const 51 + i32.eq + br_if $case51|3 + local.get $9 + i32.const 52 + i32.eq + br_if $case52|3 + local.get $9 + i32.const 53 + i32.eq + br_if $case53|3 + local.get $9 + i32.const 54 + i32.eq + br_if $case54|3 + local.get $9 + i32.const 55 + i32.eq + br_if $case55|3 + local.get $9 + i32.const 56 + i32.eq + br_if $case56|3 + local.get $9 + i32.const 57 + i32.eq + br_if $case57|3 + local.get $9 + i32.const 58 + i32.eq + br_if $case58|3 + local.get $9 + i32.const 59 + i32.eq + br_if $case59|3 + local.get $9 + i32.const 60 + i32.eq + br_if $case60|3 + local.get $9 + i32.const 61 + i32.eq + br_if $case61|3 + local.get $9 + i32.const 62 + i32.eq + br_if $case62|3 + local.get $9 + i32.const 63 + i32.eq + br_if $case63|3 + br $break|3 + end + local.get $6 + local.get $8 + v128.store + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=16 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=32 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=48 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=64 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=80 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=96 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=112 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=128 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=144 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=160 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=176 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=192 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=208 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=224 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=240 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=256 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=272 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=288 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=304 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=320 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=336 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=352 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=368 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=384 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=400 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=416 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=432 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=448 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=464 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=480 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=496 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=512 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=528 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=544 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=560 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=576 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=592 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=608 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=624 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=640 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=656 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=672 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=688 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=704 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=720 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=736 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=752 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=768 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=784 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=800 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=816 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=832 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=848 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=864 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=880 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=896 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=912 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=928 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=944 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=960 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=976 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=992 + br $break|3 + end + local.get $6 + local.get $8 + v128.store offset=1008 + br $break|3 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|2 + end + end + ) + (func $start:assembly/index + call $start:assembly/simd + global.get $assembly/utils/const/K call $~lib/array/Array#get:dataStart global.set $assembly/index/kPtr - global.get $assembly/index/W64 + global.get $assembly/utils/const/W64 call $~lib/array/Array#get:dataStart global.set $assembly/index/w64Ptr - i32.const 992 - call $~lib/rt/tcms/initLazy - global.set $~lib/rt/tcms/fromSpace i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1723,6 +3158,8 @@ global.set $assembly/index/mPtr i32.const 0 i32.const 256 + global.get $assembly/index/PARALLEL_FACTOR + i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor global.set $assembly/index/W global.get $assembly/index/W @@ -3016,6 +4453,6788 @@ local.get $25 i32.store ) + (func $assembly/simd/initV128 + global.get $assembly/simd/DEFAULT_H0V128 + global.set $assembly/simd/H0V128 + global.get $assembly/simd/DEFAULT_H1V128 + global.set $assembly/simd/H1V128 + global.get $assembly/simd/DEFAULT_H2V128 + global.set $assembly/simd/H2V128 + global.get $assembly/simd/DEFAULT_H3V128 + global.set $assembly/simd/H3V128 + global.get $assembly/simd/DEFAULT_H4V128 + global.set $assembly/simd/H4V128 + global.get $assembly/simd/DEFAULT_H5V128 + global.set $assembly/simd/H5V128 + global.get $assembly/simd/DEFAULT_H6V128 + global.set $assembly/simd/H6V128 + global.get $assembly/simd/DEFAULT_H7V128 + global.set $assembly/simd/H7V128 + ) + (func $assembly/simd/hashPreCompWV128 + (local $0 v128) + (local $1 v128) + (local $2 i32) + (local $3 i32) + (local $4 v128) + (local $5 v128) + (local $6 v128) + (local $7 i32) + (local $8 i32) + (local $9 v128) + (local $10 v128) + (local $11 v128) + (local $12 i32) + (local $13 i32) + (local $14 v128) + (local $15 v128) + (local $16 v128) + (local $17 v128) + (local $18 v128) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 v128) + (local $23 v128) + (local $24 i32) + (local $25 i32) + (local $26 v128) + (local $27 v128) + (local $28 v128) + (local $29 i32) + (local $30 i32) + (local $31 v128) + (local $32 v128) + (local $33 v128) + (local $34 i32) + (local $35 i32) + (local $36 v128) + (local $37 v128) + (local $38 v128) + (local $39 v128) + (local $40 v128) + global.get $assembly/simd/H0V128 + global.set $assembly/simd/aV128 + global.get $assembly/simd/H1V128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/H2V128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/H3V128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/H4V128 + global.set $assembly/simd/eV128 + global.get $assembly/simd/H5V128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/H6V128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/H7V128 + global.set $assembly/simd/hV128 + i32.const 0 + global.set $assembly/simd/i + loop $for-loop|0 + global.get $assembly/simd/i + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/hV128 + block $assembly/simd/EP1V128|inlined.1 (result v128) + global.get $assembly/simd/eV128 + local.set $0 + block $assembly/simd/rotrV128|inlined.10 (result v128) + local.get $0 + local.set $1 + i32.const 6 + local.set $2 + i32.const 32 + local.get $2 + i32.sub + local.set $3 + local.get $1 + local.get $2 + i32x4.shr_u + local.set $4 + local.get $1 + local.get $3 + i32x4.shl + local.set $5 + local.get $4 + local.get $5 + v128.or + br $assembly/simd/rotrV128|inlined.10 + end + block $assembly/simd/rotrV128|inlined.11 (result v128) + local.get $0 + local.set $6 + i32.const 11 + local.set $7 + i32.const 32 + local.get $7 + i32.sub + local.set $8 + local.get $6 + local.get $7 + i32x4.shr_u + local.set $9 + local.get $6 + local.get $8 + i32x4.shl + local.set $10 + local.get $9 + local.get $10 + v128.or + br $assembly/simd/rotrV128|inlined.11 + end + v128.xor + block $assembly/simd/rotrV128|inlined.12 (result v128) + local.get $0 + local.set $11 + i32.const 25 + local.set $12 + i32.const 32 + local.get $12 + i32.sub + local.set $13 + local.get $11 + local.get $12 + i32x4.shr_u + local.set $14 + local.get $11 + local.get $13 + i32x4.shl + local.set $15 + local.get $14 + local.get $15 + v128.or + br $assembly/simd/rotrV128|inlined.12 + end + v128.xor + br $assembly/simd/EP1V128|inlined.1 + end + i32x4.add + block $assembly/simd/CHV128|inlined.1 (result v128) + global.get $assembly/simd/eV128 + local.set $16 + global.get $assembly/simd/fV128 + local.set $17 + global.get $assembly/simd/gV128 + local.set $18 + local.get $16 + local.get $17 + v128.and + local.get $16 + v128.not + local.get $18 + v128.and + v128.xor + br $assembly/simd/CHV128|inlined.1 + end + i32x4.add + block $assembly/utils/v128/getV128|inlined.6 (result v128) + global.get $assembly/simd/w64V128Ptr + local.set $19 + global.get $assembly/simd/i + local.set $20 + block $case64|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $20 + local.set $21 + local.get $21 + i32.const 0 + i32.eq + br_if $case0|1 + local.get $21 + i32.const 1 + i32.eq + br_if $case1|1 + local.get $21 + i32.const 2 + i32.eq + br_if $case2|1 + local.get $21 + i32.const 3 + i32.eq + br_if $case3|1 + local.get $21 + i32.const 4 + i32.eq + br_if $case4|1 + local.get $21 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $21 + i32.const 6 + i32.eq + br_if $case6|1 + local.get $21 + i32.const 7 + i32.eq + br_if $case7|1 + local.get $21 + i32.const 8 + i32.eq + br_if $case8|1 + local.get $21 + i32.const 9 + i32.eq + br_if $case9|1 + local.get $21 + i32.const 10 + i32.eq + br_if $case10|1 + local.get $21 + i32.const 11 + i32.eq + br_if $case11|1 + local.get $21 + i32.const 12 + i32.eq + br_if $case12|1 + local.get $21 + i32.const 13 + i32.eq + br_if $case13|1 + local.get $21 + i32.const 14 + i32.eq + br_if $case14|1 + local.get $21 + i32.const 15 + i32.eq + br_if $case15|1 + local.get $21 + i32.const 16 + i32.eq + br_if $case16|1 + local.get $21 + i32.const 17 + i32.eq + br_if $case17|1 + local.get $21 + i32.const 18 + i32.eq + br_if $case18|1 + local.get $21 + i32.const 19 + i32.eq + br_if $case19|1 + local.get $21 + i32.const 20 + i32.eq + br_if $case20|1 + local.get $21 + i32.const 21 + i32.eq + br_if $case21|1 + local.get $21 + i32.const 22 + i32.eq + br_if $case22|1 + local.get $21 + i32.const 23 + i32.eq + br_if $case23|1 + local.get $21 + i32.const 24 + i32.eq + br_if $case24|1 + local.get $21 + i32.const 25 + i32.eq + br_if $case25|1 + local.get $21 + i32.const 26 + i32.eq + br_if $case26|1 + local.get $21 + i32.const 27 + i32.eq + br_if $case27|1 + local.get $21 + i32.const 28 + i32.eq + br_if $case28|1 + local.get $21 + i32.const 29 + i32.eq + br_if $case29|1 + local.get $21 + i32.const 30 + i32.eq + br_if $case30|1 + local.get $21 + i32.const 31 + i32.eq + br_if $case31|1 + local.get $21 + i32.const 32 + i32.eq + br_if $case32|1 + local.get $21 + i32.const 33 + i32.eq + br_if $case33|1 + local.get $21 + i32.const 34 + i32.eq + br_if $case34|1 + local.get $21 + i32.const 35 + i32.eq + br_if $case35|1 + local.get $21 + i32.const 36 + i32.eq + br_if $case36|1 + local.get $21 + i32.const 37 + i32.eq + br_if $case37|1 + local.get $21 + i32.const 38 + i32.eq + br_if $case38|1 + local.get $21 + i32.const 39 + i32.eq + br_if $case39|1 + local.get $21 + i32.const 40 + i32.eq + br_if $case40|1 + local.get $21 + i32.const 41 + i32.eq + br_if $case41|1 + local.get $21 + i32.const 42 + i32.eq + br_if $case42|1 + local.get $21 + i32.const 43 + i32.eq + br_if $case43|1 + local.get $21 + i32.const 44 + i32.eq + br_if $case44|1 + local.get $21 + i32.const 45 + i32.eq + br_if $case45|1 + local.get $21 + i32.const 46 + i32.eq + br_if $case46|1 + local.get $21 + i32.const 47 + i32.eq + br_if $case47|1 + local.get $21 + i32.const 48 + i32.eq + br_if $case48|1 + local.get $21 + i32.const 49 + i32.eq + br_if $case49|1 + local.get $21 + i32.const 50 + i32.eq + br_if $case50|1 + local.get $21 + i32.const 51 + i32.eq + br_if $case51|1 + local.get $21 + i32.const 52 + i32.eq + br_if $case52|1 + local.get $21 + i32.const 53 + i32.eq + br_if $case53|1 + local.get $21 + i32.const 54 + i32.eq + br_if $case54|1 + local.get $21 + i32.const 55 + i32.eq + br_if $case55|1 + local.get $21 + i32.const 56 + i32.eq + br_if $case56|1 + local.get $21 + i32.const 57 + i32.eq + br_if $case57|1 + local.get $21 + i32.const 58 + i32.eq + br_if $case58|1 + local.get $21 + i32.const 59 + i32.eq + br_if $case59|1 + local.get $21 + i32.const 60 + i32.eq + br_if $case60|1 + local.get $21 + i32.const 61 + i32.eq + br_if $case61|1 + local.get $21 + i32.const 62 + i32.eq + br_if $case62|1 + local.get $21 + i32.const 63 + i32.eq + br_if $case63|1 + br $case64|1 + end + local.get $19 + v128.load + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.6 + end + local.get $19 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.6 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.6 + end + i32x4.add + global.set $assembly/simd/t1V128 + block $assembly/simd/EP0V128|inlined.1 (result v128) + global.get $assembly/simd/aV128 + local.set $22 + block $assembly/simd/rotrV128|inlined.13 (result v128) + local.get $22 + local.set $23 + i32.const 2 + local.set $24 + i32.const 32 + local.get $24 + i32.sub + local.set $25 + local.get $23 + local.get $24 + i32x4.shr_u + local.set $26 + local.get $23 + local.get $25 + i32x4.shl + local.set $27 + local.get $26 + local.get $27 + v128.or + br $assembly/simd/rotrV128|inlined.13 + end + block $assembly/simd/rotrV128|inlined.14 (result v128) + local.get $22 + local.set $28 + i32.const 13 + local.set $29 + i32.const 32 + local.get $29 + i32.sub + local.set $30 + local.get $28 + local.get $29 + i32x4.shr_u + local.set $31 + local.get $28 + local.get $30 + i32x4.shl + local.set $32 + local.get $31 + local.get $32 + v128.or + br $assembly/simd/rotrV128|inlined.14 + end + v128.xor + block $assembly/simd/rotrV128|inlined.15 (result v128) + local.get $22 + local.set $33 + i32.const 22 + local.set $34 + i32.const 32 + local.get $34 + i32.sub + local.set $35 + local.get $33 + local.get $34 + i32x4.shr_u + local.set $36 + local.get $33 + local.get $35 + i32x4.shl + local.set $37 + local.get $36 + local.get $37 + v128.or + br $assembly/simd/rotrV128|inlined.15 + end + v128.xor + br $assembly/simd/EP0V128|inlined.1 + end + block $assembly/simd/MAJV128|inlined.1 (result v128) + global.get $assembly/simd/aV128 + local.set $38 + global.get $assembly/simd/bV128 + local.set $39 + global.get $assembly/simd/cV128 + local.set $40 + local.get $38 + local.get $39 + v128.and + local.get $38 + local.get $40 + v128.and + v128.xor + local.get $39 + local.get $40 + v128.and + v128.xor + br $assembly/simd/MAJV128|inlined.1 + end + i32x4.add + global.set $assembly/simd/t2V128 + global.get $assembly/simd/gV128 + global.set $assembly/simd/hV128 + global.get $assembly/simd/fV128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/eV128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/dV128 + global.get $assembly/simd/t1V128 + i32x4.add + global.set $assembly/simd/eV128 + global.get $assembly/simd/cV128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/bV128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/aV128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/t1V128 + global.get $assembly/simd/t2V128 + i32x4.add + global.set $assembly/simd/aV128 + global.get $assembly/simd/i + i32.const 1 + i32.add + global.set $assembly/simd/i + br $for-loop|0 + end + end + global.get $assembly/simd/H0V128 + global.get $assembly/simd/aV128 + i32x4.add + global.set $assembly/simd/H0V128 + global.get $assembly/simd/H1V128 + global.get $assembly/simd/bV128 + i32x4.add + global.set $assembly/simd/H1V128 + global.get $assembly/simd/H2V128 + global.get $assembly/simd/cV128 + i32x4.add + global.set $assembly/simd/H2V128 + global.get $assembly/simd/H3V128 + global.get $assembly/simd/dV128 + i32x4.add + global.set $assembly/simd/H3V128 + global.get $assembly/simd/H4V128 + global.get $assembly/simd/eV128 + i32x4.add + global.set $assembly/simd/H4V128 + global.get $assembly/simd/H5V128 + global.get $assembly/simd/fV128 + i32x4.add + global.set $assembly/simd/H5V128 + global.get $assembly/simd/H6V128 + global.get $assembly/simd/gV128 + i32x4.add + global.set $assembly/simd/H6V128 + global.get $assembly/simd/H7V128 + global.get $assembly/simd/hV128 + i32x4.add + global.set $assembly/simd/H7V128 + ) + (func $assembly/simd/digest64V128 (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 v128) + (local $10 v128) + (local $11 i32) + (local $12 i32) + (local $13 v128) + (local $14 v128) + (local $15 v128) + (local $16 i32) + (local $17 i32) + (local $18 v128) + (local $19 v128) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 v128) + (local $27 v128) + (local $28 i32) + (local $29 i32) + (local $30 v128) + (local $31 v128) + (local $32 v128) + (local $33 i32) + (local $34 i32) + (local $35 v128) + (local $36 v128) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 v128) + (local $43 i32) + (local $44 v128) + (local $45 v128) + (local $46 i32) + (local $47 i32) + (local $48 v128) + (local $49 v128) + (local $50 v128) + (local $51 i32) + (local $52 i32) + (local $53 v128) + (local $54 v128) + (local $55 v128) + (local $56 i32) + (local $57 i32) + (local $58 v128) + (local $59 v128) + (local $60 v128) + (local $61 v128) + (local $62 v128) + (local $63 i32) + (local $64 i32) + (local $65 i32) + (local $66 v128) + (local $67 v128) + (local $68 i32) + (local $69 i32) + (local $70 v128) + (local $71 v128) + (local $72 v128) + (local $73 i32) + (local $74 i32) + (local $75 v128) + (local $76 v128) + (local $77 v128) + (local $78 i32) + (local $79 i32) + (local $80 v128) + (local $81 v128) + (local $82 v128) + (local $83 v128) + (local $84 v128) + (local $85 i32) + (local $86 i32) + (local $87 i32) + (local $88 i32) + (local $89 i32) + (local $90 i32) + (local $91 i32) + (local $92 i32) + (local $93 i32) + (local $94 i32) + (local $95 i32) + (local $96 i32) + (local $97 i32) + (local $98 i32) + (local $99 i32) + (local $100 i32) + (local $101 i32) + (local $102 i32) + (local $103 i32) + (local $104 i32) + (local $105 i32) + (local $106 i32) + (local $107 i32) + (local $108 i32) + (local $109 i32) + (local $110 i32) + (local $111 i32) + (local $112 i32) + (local $113 i32) + (local $114 i32) + (local $115 i32) + (local $116 i32) + (local $117 i32) + (local $118 i32) + (local $119 i32) + (local $120 i32) + (local $121 i32) + (local $122 i32) + (local $123 i32) + (local $124 i32) + (local $125 i32) + (local $126 i32) + (local $127 i32) + (local $128 i32) + (local $129 i32) + (local $130 i32) + (local $131 i32) + (local $132 i32) + (local $133 i32) + (local $134 i32) + (local $135 i32) + (local $136 i32) + (local $137 i32) + (local $138 i32) + (local $139 i32) + (local $140 i32) + (local $141 i32) + (local $142 i32) + (local $143 i32) + (local $144 i32) + (local $145 i32) + (local $146 i32) + (local $147 i32) + (local $148 i32) + (local $149 i32) + (local $150 i32) + (local $151 i32) + (local $152 i32) + (local $153 i32) + (local $154 i32) + (local $155 i32) + (local $156 i32) + (local $157 i32) + (local $158 i32) + (local $159 i32) + (local $160 i32) + (local $161 i32) + (local $162 i32) + (local $163 i32) + (local $164 i32) + (local $165 i32) + (local $166 i32) + (local $167 i32) + (local $168 i32) + (local $169 i32) + (local $170 i32) + (local $171 i32) + (local $172 i32) + (local $173 i32) + (local $174 i32) + (local $175 i32) + (local $176 i32) + (local $177 i32) + (local $178 i32) + (local $179 i32) + (local $180 i32) + call $assembly/simd/initV128 + local.get $0 + local.set $2 + global.get $assembly/simd/H0V128 + global.set $assembly/simd/aV128 + global.get $assembly/simd/H1V128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/H2V128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/H3V128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/H4V128 + global.set $assembly/simd/eV128 + global.get $assembly/simd/H5V128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/H6V128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/H7V128 + global.set $assembly/simd/hV128 + i32.const 0 + global.set $assembly/simd/i + loop $for-loop|0 + global.get $assembly/simd/i + i32.const 64 + i32.lt_s + if + global.get $assembly/simd/i + i32.const 16 + i32.lt_s + if (result v128) + block $assembly/utils/v128/getV128|inlined.0 (result v128) + local.get $2 + local.set $3 + global.get $assembly/simd/i + local.set $4 + block $case64|1 + block $case63|1 + block $case62|1 + block $case61|1 + block $case60|1 + block $case59|1 + block $case58|1 + block $case57|1 + block $case56|1 + block $case55|1 + block $case54|1 + block $case53|1 + block $case52|1 + block $case51|1 + block $case50|1 + block $case49|1 + block $case48|1 + block $case47|1 + block $case46|1 + block $case45|1 + block $case44|1 + block $case43|1 + block $case42|1 + block $case41|1 + block $case40|1 + block $case39|1 + block $case38|1 + block $case37|1 + block $case36|1 + block $case35|1 + block $case34|1 + block $case33|1 + block $case32|1 + block $case31|1 + block $case30|1 + block $case29|1 + block $case28|1 + block $case27|1 + block $case26|1 + block $case25|1 + block $case24|1 + block $case23|1 + block $case22|1 + block $case21|1 + block $case20|1 + block $case19|1 + block $case18|1 + block $case17|1 + block $case16|1 + block $case15|1 + block $case14|1 + block $case13|1 + block $case12|1 + block $case11|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + local.set $5 + local.get $5 + i32.const 0 + i32.eq + br_if $case0|1 + local.get $5 + i32.const 1 + i32.eq + br_if $case1|1 + local.get $5 + i32.const 2 + i32.eq + br_if $case2|1 + local.get $5 + i32.const 3 + i32.eq + br_if $case3|1 + local.get $5 + i32.const 4 + i32.eq + br_if $case4|1 + local.get $5 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $5 + i32.const 6 + i32.eq + br_if $case6|1 + local.get $5 + i32.const 7 + i32.eq + br_if $case7|1 + local.get $5 + i32.const 8 + i32.eq + br_if $case8|1 + local.get $5 + i32.const 9 + i32.eq + br_if $case9|1 + local.get $5 + i32.const 10 + i32.eq + br_if $case10|1 + local.get $5 + i32.const 11 + i32.eq + br_if $case11|1 + local.get $5 + i32.const 12 + i32.eq + br_if $case12|1 + local.get $5 + i32.const 13 + i32.eq + br_if $case13|1 + local.get $5 + i32.const 14 + i32.eq + br_if $case14|1 + local.get $5 + i32.const 15 + i32.eq + br_if $case15|1 + local.get $5 + i32.const 16 + i32.eq + br_if $case16|1 + local.get $5 + i32.const 17 + i32.eq + br_if $case17|1 + local.get $5 + i32.const 18 + i32.eq + br_if $case18|1 + local.get $5 + i32.const 19 + i32.eq + br_if $case19|1 + local.get $5 + i32.const 20 + i32.eq + br_if $case20|1 + local.get $5 + i32.const 21 + i32.eq + br_if $case21|1 + local.get $5 + i32.const 22 + i32.eq + br_if $case22|1 + local.get $5 + i32.const 23 + i32.eq + br_if $case23|1 + local.get $5 + i32.const 24 + i32.eq + br_if $case24|1 + local.get $5 + i32.const 25 + i32.eq + br_if $case25|1 + local.get $5 + i32.const 26 + i32.eq + br_if $case26|1 + local.get $5 + i32.const 27 + i32.eq + br_if $case27|1 + local.get $5 + i32.const 28 + i32.eq + br_if $case28|1 + local.get $5 + i32.const 29 + i32.eq + br_if $case29|1 + local.get $5 + i32.const 30 + i32.eq + br_if $case30|1 + local.get $5 + i32.const 31 + i32.eq + br_if $case31|1 + local.get $5 + i32.const 32 + i32.eq + br_if $case32|1 + local.get $5 + i32.const 33 + i32.eq + br_if $case33|1 + local.get $5 + i32.const 34 + i32.eq + br_if $case34|1 + local.get $5 + i32.const 35 + i32.eq + br_if $case35|1 + local.get $5 + i32.const 36 + i32.eq + br_if $case36|1 + local.get $5 + i32.const 37 + i32.eq + br_if $case37|1 + local.get $5 + i32.const 38 + i32.eq + br_if $case38|1 + local.get $5 + i32.const 39 + i32.eq + br_if $case39|1 + local.get $5 + i32.const 40 + i32.eq + br_if $case40|1 + local.get $5 + i32.const 41 + i32.eq + br_if $case41|1 + local.get $5 + i32.const 42 + i32.eq + br_if $case42|1 + local.get $5 + i32.const 43 + i32.eq + br_if $case43|1 + local.get $5 + i32.const 44 + i32.eq + br_if $case44|1 + local.get $5 + i32.const 45 + i32.eq + br_if $case45|1 + local.get $5 + i32.const 46 + i32.eq + br_if $case46|1 + local.get $5 + i32.const 47 + i32.eq + br_if $case47|1 + local.get $5 + i32.const 48 + i32.eq + br_if $case48|1 + local.get $5 + i32.const 49 + i32.eq + br_if $case49|1 + local.get $5 + i32.const 50 + i32.eq + br_if $case50|1 + local.get $5 + i32.const 51 + i32.eq + br_if $case51|1 + local.get $5 + i32.const 52 + i32.eq + br_if $case52|1 + local.get $5 + i32.const 53 + i32.eq + br_if $case53|1 + local.get $5 + i32.const 54 + i32.eq + br_if $case54|1 + local.get $5 + i32.const 55 + i32.eq + br_if $case55|1 + local.get $5 + i32.const 56 + i32.eq + br_if $case56|1 + local.get $5 + i32.const 57 + i32.eq + br_if $case57|1 + local.get $5 + i32.const 58 + i32.eq + br_if $case58|1 + local.get $5 + i32.const 59 + i32.eq + br_if $case59|1 + local.get $5 + i32.const 60 + i32.eq + br_if $case60|1 + local.get $5 + i32.const 61 + i32.eq + br_if $case61|1 + local.get $5 + i32.const 62 + i32.eq + br_if $case62|1 + local.get $5 + i32.const 63 + i32.eq + br_if $case63|1 + br $case64|1 + end + local.get $3 + v128.load + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.0 + end + local.get $3 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.0 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.0 + end + else + block $assembly/simd/SIG1V128|inlined.0 (result v128) + block $assembly/utils/v128/getV128|inlined.1 (result v128) + local.get $2 + local.set $6 + global.get $assembly/simd/i + i32.const 2 + i32.sub + local.set $7 + block $case64|2 + block $case63|2 + block $case62|2 + block $case61|2 + block $case60|2 + block $case59|2 + block $case58|2 + block $case57|2 + block $case56|2 + block $case55|2 + block $case54|2 + block $case53|2 + block $case52|2 + block $case51|2 + block $case50|2 + block $case49|2 + block $case48|2 + block $case47|2 + block $case46|2 + block $case45|2 + block $case44|2 + block $case43|2 + block $case42|2 + block $case41|2 + block $case40|2 + block $case39|2 + block $case38|2 + block $case37|2 + block $case36|2 + block $case35|2 + block $case34|2 + block $case33|2 + block $case32|2 + block $case31|2 + block $case30|2 + block $case29|2 + block $case28|2 + block $case27|2 + block $case26|2 + block $case25|2 + block $case24|2 + block $case23|2 + block $case22|2 + block $case21|2 + block $case20|2 + block $case19|2 + block $case18|2 + block $case17|2 + block $case16|2 + block $case15|2 + block $case14|2 + block $case13|2 + block $case12|2 + block $case11|2 + block $case10|2 + block $case9|2 + block $case8|2 + block $case7|2 + block $case6|2 + block $case5|2 + block $case4|2 + block $case3|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $7 + local.set $8 + local.get $8 + i32.const 0 + i32.eq + br_if $case0|2 + local.get $8 + i32.const 1 + i32.eq + br_if $case1|2 + local.get $8 + i32.const 2 + i32.eq + br_if $case2|2 + local.get $8 + i32.const 3 + i32.eq + br_if $case3|2 + local.get $8 + i32.const 4 + i32.eq + br_if $case4|2 + local.get $8 + i32.const 5 + i32.eq + br_if $case5|2 + local.get $8 + i32.const 6 + i32.eq + br_if $case6|2 + local.get $8 + i32.const 7 + i32.eq + br_if $case7|2 + local.get $8 + i32.const 8 + i32.eq + br_if $case8|2 + local.get $8 + i32.const 9 + i32.eq + br_if $case9|2 + local.get $8 + i32.const 10 + i32.eq + br_if $case10|2 + local.get $8 + i32.const 11 + i32.eq + br_if $case11|2 + local.get $8 + i32.const 12 + i32.eq + br_if $case12|2 + local.get $8 + i32.const 13 + i32.eq + br_if $case13|2 + local.get $8 + i32.const 14 + i32.eq + br_if $case14|2 + local.get $8 + i32.const 15 + i32.eq + br_if $case15|2 + local.get $8 + i32.const 16 + i32.eq + br_if $case16|2 + local.get $8 + i32.const 17 + i32.eq + br_if $case17|2 + local.get $8 + i32.const 18 + i32.eq + br_if $case18|2 + local.get $8 + i32.const 19 + i32.eq + br_if $case19|2 + local.get $8 + i32.const 20 + i32.eq + br_if $case20|2 + local.get $8 + i32.const 21 + i32.eq + br_if $case21|2 + local.get $8 + i32.const 22 + i32.eq + br_if $case22|2 + local.get $8 + i32.const 23 + i32.eq + br_if $case23|2 + local.get $8 + i32.const 24 + i32.eq + br_if $case24|2 + local.get $8 + i32.const 25 + i32.eq + br_if $case25|2 + local.get $8 + i32.const 26 + i32.eq + br_if $case26|2 + local.get $8 + i32.const 27 + i32.eq + br_if $case27|2 + local.get $8 + i32.const 28 + i32.eq + br_if $case28|2 + local.get $8 + i32.const 29 + i32.eq + br_if $case29|2 + local.get $8 + i32.const 30 + i32.eq + br_if $case30|2 + local.get $8 + i32.const 31 + i32.eq + br_if $case31|2 + local.get $8 + i32.const 32 + i32.eq + br_if $case32|2 + local.get $8 + i32.const 33 + i32.eq + br_if $case33|2 + local.get $8 + i32.const 34 + i32.eq + br_if $case34|2 + local.get $8 + i32.const 35 + i32.eq + br_if $case35|2 + local.get $8 + i32.const 36 + i32.eq + br_if $case36|2 + local.get $8 + i32.const 37 + i32.eq + br_if $case37|2 + local.get $8 + i32.const 38 + i32.eq + br_if $case38|2 + local.get $8 + i32.const 39 + i32.eq + br_if $case39|2 + local.get $8 + i32.const 40 + i32.eq + br_if $case40|2 + local.get $8 + i32.const 41 + i32.eq + br_if $case41|2 + local.get $8 + i32.const 42 + i32.eq + br_if $case42|2 + local.get $8 + i32.const 43 + i32.eq + br_if $case43|2 + local.get $8 + i32.const 44 + i32.eq + br_if $case44|2 + local.get $8 + i32.const 45 + i32.eq + br_if $case45|2 + local.get $8 + i32.const 46 + i32.eq + br_if $case46|2 + local.get $8 + i32.const 47 + i32.eq + br_if $case47|2 + local.get $8 + i32.const 48 + i32.eq + br_if $case48|2 + local.get $8 + i32.const 49 + i32.eq + br_if $case49|2 + local.get $8 + i32.const 50 + i32.eq + br_if $case50|2 + local.get $8 + i32.const 51 + i32.eq + br_if $case51|2 + local.get $8 + i32.const 52 + i32.eq + br_if $case52|2 + local.get $8 + i32.const 53 + i32.eq + br_if $case53|2 + local.get $8 + i32.const 54 + i32.eq + br_if $case54|2 + local.get $8 + i32.const 55 + i32.eq + br_if $case55|2 + local.get $8 + i32.const 56 + i32.eq + br_if $case56|2 + local.get $8 + i32.const 57 + i32.eq + br_if $case57|2 + local.get $8 + i32.const 58 + i32.eq + br_if $case58|2 + local.get $8 + i32.const 59 + i32.eq + br_if $case59|2 + local.get $8 + i32.const 60 + i32.eq + br_if $case60|2 + local.get $8 + i32.const 61 + i32.eq + br_if $case61|2 + local.get $8 + i32.const 62 + i32.eq + br_if $case62|2 + local.get $8 + i32.const 63 + i32.eq + br_if $case63|2 + br $case64|2 + end + local.get $6 + v128.load + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.1 + end + local.get $6 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.1 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.1 + end + local.set $9 + block $assembly/simd/rotrV128|inlined.0 (result v128) + local.get $9 + local.set $10 + i32.const 17 + local.set $11 + i32.const 32 + local.get $11 + i32.sub + local.set $12 + local.get $10 + local.get $11 + i32x4.shr_u + local.set $13 + local.get $10 + local.get $12 + i32x4.shl + local.set $14 + local.get $13 + local.get $14 + v128.or + br $assembly/simd/rotrV128|inlined.0 + end + block $assembly/simd/rotrV128|inlined.1 (result v128) + local.get $9 + local.set $15 + i32.const 19 + local.set $16 + i32.const 32 + local.get $16 + i32.sub + local.set $17 + local.get $15 + local.get $16 + i32x4.shr_u + local.set $18 + local.get $15 + local.get $17 + i32x4.shl + local.set $19 + local.get $18 + local.get $19 + v128.or + br $assembly/simd/rotrV128|inlined.1 + end + v128.xor + local.get $9 + i32.const 10 + i32x4.shr_u + v128.xor + br $assembly/simd/SIG1V128|inlined.0 + end + block $assembly/utils/v128/getV128|inlined.2 (result v128) + local.get $2 + local.set $20 + global.get $assembly/simd/i + i32.const 7 + i32.sub + local.set $21 + block $case64|3 + block $case63|3 + block $case62|3 + block $case61|3 + block $case60|3 + block $case59|3 + block $case58|3 + block $case57|3 + block $case56|3 + block $case55|3 + block $case54|3 + block $case53|3 + block $case52|3 + block $case51|3 + block $case50|3 + block $case49|3 + block $case48|3 + block $case47|3 + block $case46|3 + block $case45|3 + block $case44|3 + block $case43|3 + block $case42|3 + block $case41|3 + block $case40|3 + block $case39|3 + block $case38|3 + block $case37|3 + block $case36|3 + block $case35|3 + block $case34|3 + block $case33|3 + block $case32|3 + block $case31|3 + block $case30|3 + block $case29|3 + block $case28|3 + block $case27|3 + block $case26|3 + block $case25|3 + block $case24|3 + block $case23|3 + block $case22|3 + block $case21|3 + block $case20|3 + block $case19|3 + block $case18|3 + block $case17|3 + block $case16|3 + block $case15|3 + block $case14|3 + block $case13|3 + block $case12|3 + block $case11|3 + block $case10|3 + block $case9|3 + block $case8|3 + block $case7|3 + block $case6|3 + block $case5|3 + block $case4|3 + block $case3|3 + block $case2|3 + block $case1|3 + block $case0|3 + local.get $21 + local.set $22 + local.get $22 + i32.const 0 + i32.eq + br_if $case0|3 + local.get $22 + i32.const 1 + i32.eq + br_if $case1|3 + local.get $22 + i32.const 2 + i32.eq + br_if $case2|3 + local.get $22 + i32.const 3 + i32.eq + br_if $case3|3 + local.get $22 + i32.const 4 + i32.eq + br_if $case4|3 + local.get $22 + i32.const 5 + i32.eq + br_if $case5|3 + local.get $22 + i32.const 6 + i32.eq + br_if $case6|3 + local.get $22 + i32.const 7 + i32.eq + br_if $case7|3 + local.get $22 + i32.const 8 + i32.eq + br_if $case8|3 + local.get $22 + i32.const 9 + i32.eq + br_if $case9|3 + local.get $22 + i32.const 10 + i32.eq + br_if $case10|3 + local.get $22 + i32.const 11 + i32.eq + br_if $case11|3 + local.get $22 + i32.const 12 + i32.eq + br_if $case12|3 + local.get $22 + i32.const 13 + i32.eq + br_if $case13|3 + local.get $22 + i32.const 14 + i32.eq + br_if $case14|3 + local.get $22 + i32.const 15 + i32.eq + br_if $case15|3 + local.get $22 + i32.const 16 + i32.eq + br_if $case16|3 + local.get $22 + i32.const 17 + i32.eq + br_if $case17|3 + local.get $22 + i32.const 18 + i32.eq + br_if $case18|3 + local.get $22 + i32.const 19 + i32.eq + br_if $case19|3 + local.get $22 + i32.const 20 + i32.eq + br_if $case20|3 + local.get $22 + i32.const 21 + i32.eq + br_if $case21|3 + local.get $22 + i32.const 22 + i32.eq + br_if $case22|3 + local.get $22 + i32.const 23 + i32.eq + br_if $case23|3 + local.get $22 + i32.const 24 + i32.eq + br_if $case24|3 + local.get $22 + i32.const 25 + i32.eq + br_if $case25|3 + local.get $22 + i32.const 26 + i32.eq + br_if $case26|3 + local.get $22 + i32.const 27 + i32.eq + br_if $case27|3 + local.get $22 + i32.const 28 + i32.eq + br_if $case28|3 + local.get $22 + i32.const 29 + i32.eq + br_if $case29|3 + local.get $22 + i32.const 30 + i32.eq + br_if $case30|3 + local.get $22 + i32.const 31 + i32.eq + br_if $case31|3 + local.get $22 + i32.const 32 + i32.eq + br_if $case32|3 + local.get $22 + i32.const 33 + i32.eq + br_if $case33|3 + local.get $22 + i32.const 34 + i32.eq + br_if $case34|3 + local.get $22 + i32.const 35 + i32.eq + br_if $case35|3 + local.get $22 + i32.const 36 + i32.eq + br_if $case36|3 + local.get $22 + i32.const 37 + i32.eq + br_if $case37|3 + local.get $22 + i32.const 38 + i32.eq + br_if $case38|3 + local.get $22 + i32.const 39 + i32.eq + br_if $case39|3 + local.get $22 + i32.const 40 + i32.eq + br_if $case40|3 + local.get $22 + i32.const 41 + i32.eq + br_if $case41|3 + local.get $22 + i32.const 42 + i32.eq + br_if $case42|3 + local.get $22 + i32.const 43 + i32.eq + br_if $case43|3 + local.get $22 + i32.const 44 + i32.eq + br_if $case44|3 + local.get $22 + i32.const 45 + i32.eq + br_if $case45|3 + local.get $22 + i32.const 46 + i32.eq + br_if $case46|3 + local.get $22 + i32.const 47 + i32.eq + br_if $case47|3 + local.get $22 + i32.const 48 + i32.eq + br_if $case48|3 + local.get $22 + i32.const 49 + i32.eq + br_if $case49|3 + local.get $22 + i32.const 50 + i32.eq + br_if $case50|3 + local.get $22 + i32.const 51 + i32.eq + br_if $case51|3 + local.get $22 + i32.const 52 + i32.eq + br_if $case52|3 + local.get $22 + i32.const 53 + i32.eq + br_if $case53|3 + local.get $22 + i32.const 54 + i32.eq + br_if $case54|3 + local.get $22 + i32.const 55 + i32.eq + br_if $case55|3 + local.get $22 + i32.const 56 + i32.eq + br_if $case56|3 + local.get $22 + i32.const 57 + i32.eq + br_if $case57|3 + local.get $22 + i32.const 58 + i32.eq + br_if $case58|3 + local.get $22 + i32.const 59 + i32.eq + br_if $case59|3 + local.get $22 + i32.const 60 + i32.eq + br_if $case60|3 + local.get $22 + i32.const 61 + i32.eq + br_if $case61|3 + local.get $22 + i32.const 62 + i32.eq + br_if $case62|3 + local.get $22 + i32.const 63 + i32.eq + br_if $case63|3 + br $case64|3 + end + local.get $20 + v128.load + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.2 + end + local.get $20 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.2 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.2 + end + i32x4.add + block $assembly/simd/SIG0V128|inlined.0 (result v128) + block $assembly/utils/v128/getV128|inlined.3 (result v128) + local.get $2 + local.set $23 + global.get $assembly/simd/i + i32.const 15 + i32.sub + local.set $24 + block $case64|4 + block $case63|4 + block $case62|4 + block $case61|4 + block $case60|4 + block $case59|4 + block $case58|4 + block $case57|4 + block $case56|4 + block $case55|4 + block $case54|4 + block $case53|4 + block $case52|4 + block $case51|4 + block $case50|4 + block $case49|4 + block $case48|4 + block $case47|4 + block $case46|4 + block $case45|4 + block $case44|4 + block $case43|4 + block $case42|4 + block $case41|4 + block $case40|4 + block $case39|4 + block $case38|4 + block $case37|4 + block $case36|4 + block $case35|4 + block $case34|4 + block $case33|4 + block $case32|4 + block $case31|4 + block $case30|4 + block $case29|4 + block $case28|4 + block $case27|4 + block $case26|4 + block $case25|4 + block $case24|4 + block $case23|4 + block $case22|4 + block $case21|4 + block $case20|4 + block $case19|4 + block $case18|4 + block $case17|4 + block $case16|4 + block $case15|4 + block $case14|4 + block $case13|4 + block $case12|4 + block $case11|4 + block $case10|4 + block $case9|4 + block $case8|4 + block $case7|4 + block $case6|4 + block $case5|4 + block $case4|4 + block $case3|4 + block $case2|4 + block $case1|4 + block $case0|4 + local.get $24 + local.set $25 + local.get $25 + i32.const 0 + i32.eq + br_if $case0|4 + local.get $25 + i32.const 1 + i32.eq + br_if $case1|4 + local.get $25 + i32.const 2 + i32.eq + br_if $case2|4 + local.get $25 + i32.const 3 + i32.eq + br_if $case3|4 + local.get $25 + i32.const 4 + i32.eq + br_if $case4|4 + local.get $25 + i32.const 5 + i32.eq + br_if $case5|4 + local.get $25 + i32.const 6 + i32.eq + br_if $case6|4 + local.get $25 + i32.const 7 + i32.eq + br_if $case7|4 + local.get $25 + i32.const 8 + i32.eq + br_if $case8|4 + local.get $25 + i32.const 9 + i32.eq + br_if $case9|4 + local.get $25 + i32.const 10 + i32.eq + br_if $case10|4 + local.get $25 + i32.const 11 + i32.eq + br_if $case11|4 + local.get $25 + i32.const 12 + i32.eq + br_if $case12|4 + local.get $25 + i32.const 13 + i32.eq + br_if $case13|4 + local.get $25 + i32.const 14 + i32.eq + br_if $case14|4 + local.get $25 + i32.const 15 + i32.eq + br_if $case15|4 + local.get $25 + i32.const 16 + i32.eq + br_if $case16|4 + local.get $25 + i32.const 17 + i32.eq + br_if $case17|4 + local.get $25 + i32.const 18 + i32.eq + br_if $case18|4 + local.get $25 + i32.const 19 + i32.eq + br_if $case19|4 + local.get $25 + i32.const 20 + i32.eq + br_if $case20|4 + local.get $25 + i32.const 21 + i32.eq + br_if $case21|4 + local.get $25 + i32.const 22 + i32.eq + br_if $case22|4 + local.get $25 + i32.const 23 + i32.eq + br_if $case23|4 + local.get $25 + i32.const 24 + i32.eq + br_if $case24|4 + local.get $25 + i32.const 25 + i32.eq + br_if $case25|4 + local.get $25 + i32.const 26 + i32.eq + br_if $case26|4 + local.get $25 + i32.const 27 + i32.eq + br_if $case27|4 + local.get $25 + i32.const 28 + i32.eq + br_if $case28|4 + local.get $25 + i32.const 29 + i32.eq + br_if $case29|4 + local.get $25 + i32.const 30 + i32.eq + br_if $case30|4 + local.get $25 + i32.const 31 + i32.eq + br_if $case31|4 + local.get $25 + i32.const 32 + i32.eq + br_if $case32|4 + local.get $25 + i32.const 33 + i32.eq + br_if $case33|4 + local.get $25 + i32.const 34 + i32.eq + br_if $case34|4 + local.get $25 + i32.const 35 + i32.eq + br_if $case35|4 + local.get $25 + i32.const 36 + i32.eq + br_if $case36|4 + local.get $25 + i32.const 37 + i32.eq + br_if $case37|4 + local.get $25 + i32.const 38 + i32.eq + br_if $case38|4 + local.get $25 + i32.const 39 + i32.eq + br_if $case39|4 + local.get $25 + i32.const 40 + i32.eq + br_if $case40|4 + local.get $25 + i32.const 41 + i32.eq + br_if $case41|4 + local.get $25 + i32.const 42 + i32.eq + br_if $case42|4 + local.get $25 + i32.const 43 + i32.eq + br_if $case43|4 + local.get $25 + i32.const 44 + i32.eq + br_if $case44|4 + local.get $25 + i32.const 45 + i32.eq + br_if $case45|4 + local.get $25 + i32.const 46 + i32.eq + br_if $case46|4 + local.get $25 + i32.const 47 + i32.eq + br_if $case47|4 + local.get $25 + i32.const 48 + i32.eq + br_if $case48|4 + local.get $25 + i32.const 49 + i32.eq + br_if $case49|4 + local.get $25 + i32.const 50 + i32.eq + br_if $case50|4 + local.get $25 + i32.const 51 + i32.eq + br_if $case51|4 + local.get $25 + i32.const 52 + i32.eq + br_if $case52|4 + local.get $25 + i32.const 53 + i32.eq + br_if $case53|4 + local.get $25 + i32.const 54 + i32.eq + br_if $case54|4 + local.get $25 + i32.const 55 + i32.eq + br_if $case55|4 + local.get $25 + i32.const 56 + i32.eq + br_if $case56|4 + local.get $25 + i32.const 57 + i32.eq + br_if $case57|4 + local.get $25 + i32.const 58 + i32.eq + br_if $case58|4 + local.get $25 + i32.const 59 + i32.eq + br_if $case59|4 + local.get $25 + i32.const 60 + i32.eq + br_if $case60|4 + local.get $25 + i32.const 61 + i32.eq + br_if $case61|4 + local.get $25 + i32.const 62 + i32.eq + br_if $case62|4 + local.get $25 + i32.const 63 + i32.eq + br_if $case63|4 + br $case64|4 + end + local.get $23 + v128.load + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.3 + end + local.get $23 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.3 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.3 + end + local.set $26 + block $assembly/simd/rotrV128|inlined.2 (result v128) + local.get $26 + local.set $27 + i32.const 7 + local.set $28 + i32.const 32 + local.get $28 + i32.sub + local.set $29 + local.get $27 + local.get $28 + i32x4.shr_u + local.set $30 + local.get $27 + local.get $29 + i32x4.shl + local.set $31 + local.get $30 + local.get $31 + v128.or + br $assembly/simd/rotrV128|inlined.2 + end + block $assembly/simd/rotrV128|inlined.3 (result v128) + local.get $26 + local.set $32 + i32.const 18 + local.set $33 + i32.const 32 + local.get $33 + i32.sub + local.set $34 + local.get $32 + local.get $33 + i32x4.shr_u + local.set $35 + local.get $32 + local.get $34 + i32x4.shl + local.set $36 + local.get $35 + local.get $36 + v128.or + br $assembly/simd/rotrV128|inlined.3 + end + v128.xor + local.get $26 + i32.const 3 + i32x4.shr_u + v128.xor + br $assembly/simd/SIG0V128|inlined.0 + end + i32x4.add + block $assembly/utils/v128/getV128|inlined.4 (result v128) + local.get $2 + local.set $37 + global.get $assembly/simd/i + i32.const 16 + i32.sub + local.set $38 + block $case64|5 + block $case63|5 + block $case62|5 + block $case61|5 + block $case60|5 + block $case59|5 + block $case58|5 + block $case57|5 + block $case56|5 + block $case55|5 + block $case54|5 + block $case53|5 + block $case52|5 + block $case51|5 + block $case50|5 + block $case49|5 + block $case48|5 + block $case47|5 + block $case46|5 + block $case45|5 + block $case44|5 + block $case43|5 + block $case42|5 + block $case41|5 + block $case40|5 + block $case39|5 + block $case38|5 + block $case37|5 + block $case36|5 + block $case35|5 + block $case34|5 + block $case33|5 + block $case32|5 + block $case31|5 + block $case30|5 + block $case29|5 + block $case28|5 + block $case27|5 + block $case26|5 + block $case25|5 + block $case24|5 + block $case23|5 + block $case22|5 + block $case21|5 + block $case20|5 + block $case19|5 + block $case18|5 + block $case17|5 + block $case16|5 + block $case15|5 + block $case14|5 + block $case13|5 + block $case12|5 + block $case11|5 + block $case10|5 + block $case9|5 + block $case8|5 + block $case7|5 + block $case6|5 + block $case5|5 + block $case4|5 + block $case3|5 + block $case2|5 + block $case1|5 + block $case0|5 + local.get $38 + local.set $39 + local.get $39 + i32.const 0 + i32.eq + br_if $case0|5 + local.get $39 + i32.const 1 + i32.eq + br_if $case1|5 + local.get $39 + i32.const 2 + i32.eq + br_if $case2|5 + local.get $39 + i32.const 3 + i32.eq + br_if $case3|5 + local.get $39 + i32.const 4 + i32.eq + br_if $case4|5 + local.get $39 + i32.const 5 + i32.eq + br_if $case5|5 + local.get $39 + i32.const 6 + i32.eq + br_if $case6|5 + local.get $39 + i32.const 7 + i32.eq + br_if $case7|5 + local.get $39 + i32.const 8 + i32.eq + br_if $case8|5 + local.get $39 + i32.const 9 + i32.eq + br_if $case9|5 + local.get $39 + i32.const 10 + i32.eq + br_if $case10|5 + local.get $39 + i32.const 11 + i32.eq + br_if $case11|5 + local.get $39 + i32.const 12 + i32.eq + br_if $case12|5 + local.get $39 + i32.const 13 + i32.eq + br_if $case13|5 + local.get $39 + i32.const 14 + i32.eq + br_if $case14|5 + local.get $39 + i32.const 15 + i32.eq + br_if $case15|5 + local.get $39 + i32.const 16 + i32.eq + br_if $case16|5 + local.get $39 + i32.const 17 + i32.eq + br_if $case17|5 + local.get $39 + i32.const 18 + i32.eq + br_if $case18|5 + local.get $39 + i32.const 19 + i32.eq + br_if $case19|5 + local.get $39 + i32.const 20 + i32.eq + br_if $case20|5 + local.get $39 + i32.const 21 + i32.eq + br_if $case21|5 + local.get $39 + i32.const 22 + i32.eq + br_if $case22|5 + local.get $39 + i32.const 23 + i32.eq + br_if $case23|5 + local.get $39 + i32.const 24 + i32.eq + br_if $case24|5 + local.get $39 + i32.const 25 + i32.eq + br_if $case25|5 + local.get $39 + i32.const 26 + i32.eq + br_if $case26|5 + local.get $39 + i32.const 27 + i32.eq + br_if $case27|5 + local.get $39 + i32.const 28 + i32.eq + br_if $case28|5 + local.get $39 + i32.const 29 + i32.eq + br_if $case29|5 + local.get $39 + i32.const 30 + i32.eq + br_if $case30|5 + local.get $39 + i32.const 31 + i32.eq + br_if $case31|5 + local.get $39 + i32.const 32 + i32.eq + br_if $case32|5 + local.get $39 + i32.const 33 + i32.eq + br_if $case33|5 + local.get $39 + i32.const 34 + i32.eq + br_if $case34|5 + local.get $39 + i32.const 35 + i32.eq + br_if $case35|5 + local.get $39 + i32.const 36 + i32.eq + br_if $case36|5 + local.get $39 + i32.const 37 + i32.eq + br_if $case37|5 + local.get $39 + i32.const 38 + i32.eq + br_if $case38|5 + local.get $39 + i32.const 39 + i32.eq + br_if $case39|5 + local.get $39 + i32.const 40 + i32.eq + br_if $case40|5 + local.get $39 + i32.const 41 + i32.eq + br_if $case41|5 + local.get $39 + i32.const 42 + i32.eq + br_if $case42|5 + local.get $39 + i32.const 43 + i32.eq + br_if $case43|5 + local.get $39 + i32.const 44 + i32.eq + br_if $case44|5 + local.get $39 + i32.const 45 + i32.eq + br_if $case45|5 + local.get $39 + i32.const 46 + i32.eq + br_if $case46|5 + local.get $39 + i32.const 47 + i32.eq + br_if $case47|5 + local.get $39 + i32.const 48 + i32.eq + br_if $case48|5 + local.get $39 + i32.const 49 + i32.eq + br_if $case49|5 + local.get $39 + i32.const 50 + i32.eq + br_if $case50|5 + local.get $39 + i32.const 51 + i32.eq + br_if $case51|5 + local.get $39 + i32.const 52 + i32.eq + br_if $case52|5 + local.get $39 + i32.const 53 + i32.eq + br_if $case53|5 + local.get $39 + i32.const 54 + i32.eq + br_if $case54|5 + local.get $39 + i32.const 55 + i32.eq + br_if $case55|5 + local.get $39 + i32.const 56 + i32.eq + br_if $case56|5 + local.get $39 + i32.const 57 + i32.eq + br_if $case57|5 + local.get $39 + i32.const 58 + i32.eq + br_if $case58|5 + local.get $39 + i32.const 59 + i32.eq + br_if $case59|5 + local.get $39 + i32.const 60 + i32.eq + br_if $case60|5 + local.get $39 + i32.const 61 + i32.eq + br_if $case61|5 + local.get $39 + i32.const 62 + i32.eq + br_if $case62|5 + local.get $39 + i32.const 63 + i32.eq + br_if $case63|5 + br $case64|5 + end + local.get $37 + v128.load + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.4 + end + local.get $37 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.4 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.4 + end + i32x4.add + end + global.set $assembly/simd/tmpW + global.get $assembly/simd/i + i32.const 16 + i32.ge_s + if + local.get $2 + local.set $40 + global.get $assembly/simd/i + local.set $41 + global.get $assembly/simd/tmpW + local.set $42 + block $break|6 + block $case63|6 + block $case62|6 + block $case61|6 + block $case60|6 + block $case59|6 + block $case58|6 + block $case57|6 + block $case56|6 + block $case55|6 + block $case54|6 + block $case53|6 + block $case52|6 + block $case51|6 + block $case50|6 + block $case49|6 + block $case48|6 + block $case47|6 + block $case46|6 + block $case45|6 + block $case44|6 + block $case43|6 + block $case42|6 + block $case41|6 + block $case40|6 + block $case39|6 + block $case38|6 + block $case37|6 + block $case36|6 + block $case35|6 + block $case34|6 + block $case33|6 + block $case32|6 + block $case31|6 + block $case30|6 + block $case29|6 + block $case28|6 + block $case27|6 + block $case26|6 + block $case25|6 + block $case24|6 + block $case23|6 + block $case22|6 + block $case21|6 + block $case20|6 + block $case19|6 + block $case18|6 + block $case17|6 + block $case16|6 + block $case15|6 + block $case14|6 + block $case13|6 + block $case12|6 + block $case11|6 + block $case10|6 + block $case9|6 + block $case8|6 + block $case7|6 + block $case6|6 + block $case5|6 + block $case4|6 + block $case3|6 + block $case2|6 + block $case1|6 + block $case0|6 + local.get $41 + local.set $43 + local.get $43 + i32.const 0 + i32.eq + br_if $case0|6 + local.get $43 + i32.const 1 + i32.eq + br_if $case1|6 + local.get $43 + i32.const 2 + i32.eq + br_if $case2|6 + local.get $43 + i32.const 3 + i32.eq + br_if $case3|6 + local.get $43 + i32.const 4 + i32.eq + br_if $case4|6 + local.get $43 + i32.const 5 + i32.eq + br_if $case5|6 + local.get $43 + i32.const 6 + i32.eq + br_if $case6|6 + local.get $43 + i32.const 7 + i32.eq + br_if $case7|6 + local.get $43 + i32.const 8 + i32.eq + br_if $case8|6 + local.get $43 + i32.const 9 + i32.eq + br_if $case9|6 + local.get $43 + i32.const 10 + i32.eq + br_if $case10|6 + local.get $43 + i32.const 11 + i32.eq + br_if $case11|6 + local.get $43 + i32.const 12 + i32.eq + br_if $case12|6 + local.get $43 + i32.const 13 + i32.eq + br_if $case13|6 + local.get $43 + i32.const 14 + i32.eq + br_if $case14|6 + local.get $43 + i32.const 15 + i32.eq + br_if $case15|6 + local.get $43 + i32.const 16 + i32.eq + br_if $case16|6 + local.get $43 + i32.const 17 + i32.eq + br_if $case17|6 + local.get $43 + i32.const 18 + i32.eq + br_if $case18|6 + local.get $43 + i32.const 19 + i32.eq + br_if $case19|6 + local.get $43 + i32.const 20 + i32.eq + br_if $case20|6 + local.get $43 + i32.const 21 + i32.eq + br_if $case21|6 + local.get $43 + i32.const 22 + i32.eq + br_if $case22|6 + local.get $43 + i32.const 23 + i32.eq + br_if $case23|6 + local.get $43 + i32.const 24 + i32.eq + br_if $case24|6 + local.get $43 + i32.const 25 + i32.eq + br_if $case25|6 + local.get $43 + i32.const 26 + i32.eq + br_if $case26|6 + local.get $43 + i32.const 27 + i32.eq + br_if $case27|6 + local.get $43 + i32.const 28 + i32.eq + br_if $case28|6 + local.get $43 + i32.const 29 + i32.eq + br_if $case29|6 + local.get $43 + i32.const 30 + i32.eq + br_if $case30|6 + local.get $43 + i32.const 31 + i32.eq + br_if $case31|6 + local.get $43 + i32.const 32 + i32.eq + br_if $case32|6 + local.get $43 + i32.const 33 + i32.eq + br_if $case33|6 + local.get $43 + i32.const 34 + i32.eq + br_if $case34|6 + local.get $43 + i32.const 35 + i32.eq + br_if $case35|6 + local.get $43 + i32.const 36 + i32.eq + br_if $case36|6 + local.get $43 + i32.const 37 + i32.eq + br_if $case37|6 + local.get $43 + i32.const 38 + i32.eq + br_if $case38|6 + local.get $43 + i32.const 39 + i32.eq + br_if $case39|6 + local.get $43 + i32.const 40 + i32.eq + br_if $case40|6 + local.get $43 + i32.const 41 + i32.eq + br_if $case41|6 + local.get $43 + i32.const 42 + i32.eq + br_if $case42|6 + local.get $43 + i32.const 43 + i32.eq + br_if $case43|6 + local.get $43 + i32.const 44 + i32.eq + br_if $case44|6 + local.get $43 + i32.const 45 + i32.eq + br_if $case45|6 + local.get $43 + i32.const 46 + i32.eq + br_if $case46|6 + local.get $43 + i32.const 47 + i32.eq + br_if $case47|6 + local.get $43 + i32.const 48 + i32.eq + br_if $case48|6 + local.get $43 + i32.const 49 + i32.eq + br_if $case49|6 + local.get $43 + i32.const 50 + i32.eq + br_if $case50|6 + local.get $43 + i32.const 51 + i32.eq + br_if $case51|6 + local.get $43 + i32.const 52 + i32.eq + br_if $case52|6 + local.get $43 + i32.const 53 + i32.eq + br_if $case53|6 + local.get $43 + i32.const 54 + i32.eq + br_if $case54|6 + local.get $43 + i32.const 55 + i32.eq + br_if $case55|6 + local.get $43 + i32.const 56 + i32.eq + br_if $case56|6 + local.get $43 + i32.const 57 + i32.eq + br_if $case57|6 + local.get $43 + i32.const 58 + i32.eq + br_if $case58|6 + local.get $43 + i32.const 59 + i32.eq + br_if $case59|6 + local.get $43 + i32.const 60 + i32.eq + br_if $case60|6 + local.get $43 + i32.const 61 + i32.eq + br_if $case61|6 + local.get $43 + i32.const 62 + i32.eq + br_if $case62|6 + local.get $43 + i32.const 63 + i32.eq + br_if $case63|6 + br $break|6 + end + local.get $40 + local.get $42 + v128.store + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=16 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=32 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=48 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=64 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=80 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=96 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=112 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=128 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=144 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=160 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=176 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=192 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=208 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=224 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=240 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=256 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=272 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=288 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=304 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=320 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=336 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=352 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=368 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=384 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=400 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=416 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=432 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=448 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=464 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=480 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=496 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=512 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=528 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=544 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=560 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=576 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=592 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=608 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=624 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=640 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=656 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=672 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=688 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=704 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=720 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=736 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=752 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=768 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=784 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=800 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=816 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=832 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=848 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=864 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=880 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=896 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=912 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=928 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=944 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=960 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=976 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=992 + br $break|6 + end + local.get $40 + local.get $42 + v128.store offset=1008 + br $break|6 + end + end + global.get $assembly/simd/hV128 + block $assembly/simd/EP1V128|inlined.0 (result v128) + global.get $assembly/simd/eV128 + local.set $44 + block $assembly/simd/rotrV128|inlined.4 (result v128) + local.get $44 + local.set $45 + i32.const 6 + local.set $46 + i32.const 32 + local.get $46 + i32.sub + local.set $47 + local.get $45 + local.get $46 + i32x4.shr_u + local.set $48 + local.get $45 + local.get $47 + i32x4.shl + local.set $49 + local.get $48 + local.get $49 + v128.or + br $assembly/simd/rotrV128|inlined.4 + end + block $assembly/simd/rotrV128|inlined.5 (result v128) + local.get $44 + local.set $50 + i32.const 11 + local.set $51 + i32.const 32 + local.get $51 + i32.sub + local.set $52 + local.get $50 + local.get $51 + i32x4.shr_u + local.set $53 + local.get $50 + local.get $52 + i32x4.shl + local.set $54 + local.get $53 + local.get $54 + v128.or + br $assembly/simd/rotrV128|inlined.5 + end + v128.xor + block $assembly/simd/rotrV128|inlined.6 (result v128) + local.get $44 + local.set $55 + i32.const 25 + local.set $56 + i32.const 32 + local.get $56 + i32.sub + local.set $57 + local.get $55 + local.get $56 + i32x4.shr_u + local.set $58 + local.get $55 + local.get $57 + i32x4.shl + local.set $59 + local.get $58 + local.get $59 + v128.or + br $assembly/simd/rotrV128|inlined.6 + end + v128.xor + br $assembly/simd/EP1V128|inlined.0 + end + i32x4.add + block $assembly/simd/CHV128|inlined.0 (result v128) + global.get $assembly/simd/eV128 + local.set $60 + global.get $assembly/simd/fV128 + local.set $61 + global.get $assembly/simd/gV128 + local.set $62 + local.get $60 + local.get $61 + v128.and + local.get $60 + v128.not + local.get $62 + v128.and + v128.xor + br $assembly/simd/CHV128|inlined.0 + end + i32x4.add + block $assembly/utils/v128/getV128|inlined.5 (result v128) + global.get $assembly/simd/kV128Ptr + local.set $63 + global.get $assembly/simd/i + local.set $64 + block $case64|7 + block $case63|7 + block $case62|7 + block $case61|7 + block $case60|7 + block $case59|7 + block $case58|7 + block $case57|7 + block $case56|7 + block $case55|7 + block $case54|7 + block $case53|7 + block $case52|7 + block $case51|7 + block $case50|7 + block $case49|7 + block $case48|7 + block $case47|7 + block $case46|7 + block $case45|7 + block $case44|7 + block $case43|7 + block $case42|7 + block $case41|7 + block $case40|7 + block $case39|7 + block $case38|7 + block $case37|7 + block $case36|7 + block $case35|7 + block $case34|7 + block $case33|7 + block $case32|7 + block $case31|7 + block $case30|7 + block $case29|7 + block $case28|7 + block $case27|7 + block $case26|7 + block $case25|7 + block $case24|7 + block $case23|7 + block $case22|7 + block $case21|7 + block $case20|7 + block $case19|7 + block $case18|7 + block $case17|7 + block $case16|7 + block $case15|7 + block $case14|7 + block $case13|7 + block $case12|7 + block $case11|7 + block $case10|7 + block $case9|7 + block $case8|7 + block $case7|7 + block $case6|7 + block $case5|7 + block $case4|7 + block $case3|7 + block $case2|7 + block $case1|7 + block $case0|7 + local.get $64 + local.set $65 + local.get $65 + i32.const 0 + i32.eq + br_if $case0|7 + local.get $65 + i32.const 1 + i32.eq + br_if $case1|7 + local.get $65 + i32.const 2 + i32.eq + br_if $case2|7 + local.get $65 + i32.const 3 + i32.eq + br_if $case3|7 + local.get $65 + i32.const 4 + i32.eq + br_if $case4|7 + local.get $65 + i32.const 5 + i32.eq + br_if $case5|7 + local.get $65 + i32.const 6 + i32.eq + br_if $case6|7 + local.get $65 + i32.const 7 + i32.eq + br_if $case7|7 + local.get $65 + i32.const 8 + i32.eq + br_if $case8|7 + local.get $65 + i32.const 9 + i32.eq + br_if $case9|7 + local.get $65 + i32.const 10 + i32.eq + br_if $case10|7 + local.get $65 + i32.const 11 + i32.eq + br_if $case11|7 + local.get $65 + i32.const 12 + i32.eq + br_if $case12|7 + local.get $65 + i32.const 13 + i32.eq + br_if $case13|7 + local.get $65 + i32.const 14 + i32.eq + br_if $case14|7 + local.get $65 + i32.const 15 + i32.eq + br_if $case15|7 + local.get $65 + i32.const 16 + i32.eq + br_if $case16|7 + local.get $65 + i32.const 17 + i32.eq + br_if $case17|7 + local.get $65 + i32.const 18 + i32.eq + br_if $case18|7 + local.get $65 + i32.const 19 + i32.eq + br_if $case19|7 + local.get $65 + i32.const 20 + i32.eq + br_if $case20|7 + local.get $65 + i32.const 21 + i32.eq + br_if $case21|7 + local.get $65 + i32.const 22 + i32.eq + br_if $case22|7 + local.get $65 + i32.const 23 + i32.eq + br_if $case23|7 + local.get $65 + i32.const 24 + i32.eq + br_if $case24|7 + local.get $65 + i32.const 25 + i32.eq + br_if $case25|7 + local.get $65 + i32.const 26 + i32.eq + br_if $case26|7 + local.get $65 + i32.const 27 + i32.eq + br_if $case27|7 + local.get $65 + i32.const 28 + i32.eq + br_if $case28|7 + local.get $65 + i32.const 29 + i32.eq + br_if $case29|7 + local.get $65 + i32.const 30 + i32.eq + br_if $case30|7 + local.get $65 + i32.const 31 + i32.eq + br_if $case31|7 + local.get $65 + i32.const 32 + i32.eq + br_if $case32|7 + local.get $65 + i32.const 33 + i32.eq + br_if $case33|7 + local.get $65 + i32.const 34 + i32.eq + br_if $case34|7 + local.get $65 + i32.const 35 + i32.eq + br_if $case35|7 + local.get $65 + i32.const 36 + i32.eq + br_if $case36|7 + local.get $65 + i32.const 37 + i32.eq + br_if $case37|7 + local.get $65 + i32.const 38 + i32.eq + br_if $case38|7 + local.get $65 + i32.const 39 + i32.eq + br_if $case39|7 + local.get $65 + i32.const 40 + i32.eq + br_if $case40|7 + local.get $65 + i32.const 41 + i32.eq + br_if $case41|7 + local.get $65 + i32.const 42 + i32.eq + br_if $case42|7 + local.get $65 + i32.const 43 + i32.eq + br_if $case43|7 + local.get $65 + i32.const 44 + i32.eq + br_if $case44|7 + local.get $65 + i32.const 45 + i32.eq + br_if $case45|7 + local.get $65 + i32.const 46 + i32.eq + br_if $case46|7 + local.get $65 + i32.const 47 + i32.eq + br_if $case47|7 + local.get $65 + i32.const 48 + i32.eq + br_if $case48|7 + local.get $65 + i32.const 49 + i32.eq + br_if $case49|7 + local.get $65 + i32.const 50 + i32.eq + br_if $case50|7 + local.get $65 + i32.const 51 + i32.eq + br_if $case51|7 + local.get $65 + i32.const 52 + i32.eq + br_if $case52|7 + local.get $65 + i32.const 53 + i32.eq + br_if $case53|7 + local.get $65 + i32.const 54 + i32.eq + br_if $case54|7 + local.get $65 + i32.const 55 + i32.eq + br_if $case55|7 + local.get $65 + i32.const 56 + i32.eq + br_if $case56|7 + local.get $65 + i32.const 57 + i32.eq + br_if $case57|7 + local.get $65 + i32.const 58 + i32.eq + br_if $case58|7 + local.get $65 + i32.const 59 + i32.eq + br_if $case59|7 + local.get $65 + i32.const 60 + i32.eq + br_if $case60|7 + local.get $65 + i32.const 61 + i32.eq + br_if $case61|7 + local.get $65 + i32.const 62 + i32.eq + br_if $case62|7 + local.get $65 + i32.const 63 + i32.eq + br_if $case63|7 + br $case64|7 + end + local.get $63 + v128.load + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=16 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=32 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=48 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=64 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=80 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=96 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=112 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=128 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=144 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=160 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=176 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=192 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=208 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=224 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=240 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=256 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=272 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=288 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=304 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=320 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=336 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=352 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=368 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=384 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=400 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=416 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=432 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=448 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=464 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=480 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=496 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=512 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=528 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=544 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=560 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=576 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=592 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=608 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=624 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=640 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=656 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=672 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=688 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=704 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=720 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=736 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=752 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=768 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=784 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=800 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=816 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=832 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=848 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=864 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=880 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=896 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=912 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=928 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=944 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=960 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=976 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=992 + br $assembly/utils/v128/getV128|inlined.5 + end + local.get $63 + v128.load offset=1008 + br $assembly/utils/v128/getV128|inlined.5 + end + i32.const 0 + i32x4.splat + br $assembly/utils/v128/getV128|inlined.5 + end + i32x4.add + global.get $assembly/simd/tmpW + i32x4.add + global.set $assembly/simd/t1V128 + block $assembly/simd/EP0V128|inlined.0 (result v128) + global.get $assembly/simd/aV128 + local.set $66 + block $assembly/simd/rotrV128|inlined.7 (result v128) + local.get $66 + local.set $67 + i32.const 2 + local.set $68 + i32.const 32 + local.get $68 + i32.sub + local.set $69 + local.get $67 + local.get $68 + i32x4.shr_u + local.set $70 + local.get $67 + local.get $69 + i32x4.shl + local.set $71 + local.get $70 + local.get $71 + v128.or + br $assembly/simd/rotrV128|inlined.7 + end + block $assembly/simd/rotrV128|inlined.8 (result v128) + local.get $66 + local.set $72 + i32.const 13 + local.set $73 + i32.const 32 + local.get $73 + i32.sub + local.set $74 + local.get $72 + local.get $73 + i32x4.shr_u + local.set $75 + local.get $72 + local.get $74 + i32x4.shl + local.set $76 + local.get $75 + local.get $76 + v128.or + br $assembly/simd/rotrV128|inlined.8 + end + v128.xor + block $assembly/simd/rotrV128|inlined.9 (result v128) + local.get $66 + local.set $77 + i32.const 22 + local.set $78 + i32.const 32 + local.get $78 + i32.sub + local.set $79 + local.get $77 + local.get $78 + i32x4.shr_u + local.set $80 + local.get $77 + local.get $79 + i32x4.shl + local.set $81 + local.get $80 + local.get $81 + v128.or + br $assembly/simd/rotrV128|inlined.9 + end + v128.xor + br $assembly/simd/EP0V128|inlined.0 + end + block $assembly/simd/MAJV128|inlined.0 (result v128) + global.get $assembly/simd/aV128 + local.set $82 + global.get $assembly/simd/bV128 + local.set $83 + global.get $assembly/simd/cV128 + local.set $84 + local.get $82 + local.get $83 + v128.and + local.get $82 + local.get $84 + v128.and + v128.xor + local.get $83 + local.get $84 + v128.and + v128.xor + br $assembly/simd/MAJV128|inlined.0 + end + i32x4.add + global.set $assembly/simd/t2V128 + global.get $assembly/simd/gV128 + global.set $assembly/simd/hV128 + global.get $assembly/simd/fV128 + global.set $assembly/simd/gV128 + global.get $assembly/simd/eV128 + global.set $assembly/simd/fV128 + global.get $assembly/simd/dV128 + global.get $assembly/simd/t1V128 + i32x4.add + global.set $assembly/simd/eV128 + global.get $assembly/simd/cV128 + global.set $assembly/simd/dV128 + global.get $assembly/simd/bV128 + global.set $assembly/simd/cV128 + global.get $assembly/simd/aV128 + global.set $assembly/simd/bV128 + global.get $assembly/simd/t1V128 + global.get $assembly/simd/t2V128 + i32x4.add + global.set $assembly/simd/aV128 + global.get $assembly/simd/i + i32.const 1 + i32.add + global.set $assembly/simd/i + br $for-loop|0 + end + end + global.get $assembly/simd/H0V128 + global.get $assembly/simd/aV128 + i32x4.add + global.set $assembly/simd/H0V128 + global.get $assembly/simd/H1V128 + global.get $assembly/simd/bV128 + i32x4.add + global.set $assembly/simd/H1V128 + global.get $assembly/simd/H2V128 + global.get $assembly/simd/cV128 + i32x4.add + global.set $assembly/simd/H2V128 + global.get $assembly/simd/H3V128 + global.get $assembly/simd/dV128 + i32x4.add + global.set $assembly/simd/H3V128 + global.get $assembly/simd/H4V128 + global.get $assembly/simd/eV128 + i32x4.add + global.set $assembly/simd/H4V128 + global.get $assembly/simd/H5V128 + global.get $assembly/simd/fV128 + i32x4.add + global.set $assembly/simd/H5V128 + global.get $assembly/simd/H6V128 + global.get $assembly/simd/gV128 + i32x4.add + global.set $assembly/simd/H6V128 + global.get $assembly/simd/H7V128 + global.get $assembly/simd/hV128 + i32x4.add + global.set $assembly/simd/H7V128 + call $assembly/simd/hashPreCompWV128 + local.get $1 + local.set $85 + i32.const 0 + local.set $86 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $87 + local.get $85 + local.get $86 + i32.const 2 + i32.shl + i32.add + local.get $87 + i32.store + local.get $1 + local.set $88 + i32.const 1 + local.set $89 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $90 + local.get $88 + local.get $89 + i32.const 2 + i32.shl + i32.add + local.get $90 + i32.store + local.get $1 + local.set $91 + i32.const 2 + local.set $92 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $93 + local.get $91 + local.get $92 + i32.const 2 + i32.shl + i32.add + local.get $93 + i32.store + local.get $1 + local.set $94 + i32.const 3 + local.set $95 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $96 + local.get $94 + local.get $95 + i32.const 2 + i32.shl + i32.add + local.get $96 + i32.store + local.get $1 + local.set $97 + i32.const 4 + local.set $98 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $99 + local.get $97 + local.get $98 + i32.const 2 + i32.shl + i32.add + local.get $99 + i32.store + local.get $1 + local.set $100 + i32.const 5 + local.set $101 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $102 + local.get $100 + local.get $101 + i32.const 2 + i32.shl + i32.add + local.get $102 + i32.store + local.get $1 + local.set $103 + i32.const 6 + local.set $104 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $105 + local.get $103 + local.get $104 + i32.const 2 + i32.shl + i32.add + local.get $105 + i32.store + local.get $1 + local.set $106 + i32.const 7 + local.set $107 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 0 + call $~lib/polyfills/bswap + local.set $108 + local.get $106 + local.get $107 + i32.const 2 + i32.shl + i32.add + local.get $108 + i32.store + local.get $1 + local.set $109 + i32.const 8 + local.set $110 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $111 + local.get $109 + local.get $110 + i32.const 2 + i32.shl + i32.add + local.get $111 + i32.store + local.get $1 + local.set $112 + i32.const 9 + local.set $113 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $114 + local.get $112 + local.get $113 + i32.const 2 + i32.shl + i32.add + local.get $114 + i32.store + local.get $1 + local.set $115 + i32.const 10 + local.set $116 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $117 + local.get $115 + local.get $116 + i32.const 2 + i32.shl + i32.add + local.get $117 + i32.store + local.get $1 + local.set $118 + i32.const 11 + local.set $119 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $120 + local.get $118 + local.get $119 + i32.const 2 + i32.shl + i32.add + local.get $120 + i32.store + local.get $1 + local.set $121 + i32.const 12 + local.set $122 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $123 + local.get $121 + local.get $122 + i32.const 2 + i32.shl + i32.add + local.get $123 + i32.store + local.get $1 + local.set $124 + i32.const 13 + local.set $125 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $126 + local.get $124 + local.get $125 + i32.const 2 + i32.shl + i32.add + local.get $126 + i32.store + local.get $1 + local.set $127 + i32.const 14 + local.set $128 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $129 + local.get $127 + local.get $128 + i32.const 2 + i32.shl + i32.add + local.get $129 + i32.store + local.get $1 + local.set $130 + i32.const 15 + local.set $131 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 1 + call $~lib/polyfills/bswap + local.set $132 + local.get $130 + local.get $131 + i32.const 2 + i32.shl + i32.add + local.get $132 + i32.store + local.get $1 + local.set $133 + i32.const 16 + local.set $134 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $135 + local.get $133 + local.get $134 + i32.const 2 + i32.shl + i32.add + local.get $135 + i32.store + local.get $1 + local.set $136 + i32.const 17 + local.set $137 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $138 + local.get $136 + local.get $137 + i32.const 2 + i32.shl + i32.add + local.get $138 + i32.store + local.get $1 + local.set $139 + i32.const 18 + local.set $140 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $141 + local.get $139 + local.get $140 + i32.const 2 + i32.shl + i32.add + local.get $141 + i32.store + local.get $1 + local.set $142 + i32.const 19 + local.set $143 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $144 + local.get $142 + local.get $143 + i32.const 2 + i32.shl + i32.add + local.get $144 + i32.store + local.get $1 + local.set $145 + i32.const 20 + local.set $146 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $147 + local.get $145 + local.get $146 + i32.const 2 + i32.shl + i32.add + local.get $147 + i32.store + local.get $1 + local.set $148 + i32.const 21 + local.set $149 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $150 + local.get $148 + local.get $149 + i32.const 2 + i32.shl + i32.add + local.get $150 + i32.store + local.get $1 + local.set $151 + i32.const 22 + local.set $152 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $153 + local.get $151 + local.get $152 + i32.const 2 + i32.shl + i32.add + local.get $153 + i32.store + local.get $1 + local.set $154 + i32.const 23 + local.set $155 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 2 + call $~lib/polyfills/bswap + local.set $156 + local.get $154 + local.get $155 + i32.const 2 + i32.shl + i32.add + local.get $156 + i32.store + local.get $1 + local.set $157 + i32.const 24 + local.set $158 + global.get $assembly/simd/H0V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $159 + local.get $157 + local.get $158 + i32.const 2 + i32.shl + i32.add + local.get $159 + i32.store + local.get $1 + local.set $160 + i32.const 25 + local.set $161 + global.get $assembly/simd/H1V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $162 + local.get $160 + local.get $161 + i32.const 2 + i32.shl + i32.add + local.get $162 + i32.store + local.get $1 + local.set $163 + i32.const 26 + local.set $164 + global.get $assembly/simd/H2V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $165 + local.get $163 + local.get $164 + i32.const 2 + i32.shl + i32.add + local.get $165 + i32.store + local.get $1 + local.set $166 + i32.const 27 + local.set $167 + global.get $assembly/simd/H3V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $168 + local.get $166 + local.get $167 + i32.const 2 + i32.shl + i32.add + local.get $168 + i32.store + local.get $1 + local.set $169 + i32.const 28 + local.set $170 + global.get $assembly/simd/H4V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $171 + local.get $169 + local.get $170 + i32.const 2 + i32.shl + i32.add + local.get $171 + i32.store + local.get $1 + local.set $172 + i32.const 29 + local.set $173 + global.get $assembly/simd/H5V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $174 + local.get $172 + local.get $173 + i32.const 2 + i32.shl + i32.add + local.get $174 + i32.store + local.get $1 + local.set $175 + i32.const 30 + local.set $176 + global.get $assembly/simd/H6V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $177 + local.get $175 + local.get $176 + i32.const 2 + i32.shl + i32.add + local.get $177 + i32.store + local.get $1 + local.set $178 + i32.const 31 + local.set $179 + global.get $assembly/simd/H7V128 + i32x4.extract_lane 3 + call $~lib/polyfills/bswap + local.set $180 + local.get $178 + local.get $179 + i32.const 2 + i32.shl + i32.add + local.get $180 + i32.store + ) + (func $assembly/index/hash4Inputs (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i32) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i32) + (local $56 i32) + i32.const 0 + global.set $assembly/index/i + loop $for-loop|0 + global.get $assembly/index/i + i32.const 16 + i32.lt_u + if + global.get $assembly/index/wPtr + local.set $12 + global.get $assembly/index/PARALLEL_FACTOR + global.get $assembly/index/i + i32.mul + local.set $13 + block $assembly/index/load32be|inlined.1 (result i32) + global.get $assembly/index/inputPtr + local.set $1 + global.get $assembly/index/i + local.set $2 + local.get $2 + i32.const 2 + i32.shl + local.set $3 + block $assembly/index/load8|inlined.4 (result i32) + local.get $1 + local.set $4 + local.get $3 + i32.const 0 + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.4 + end + i32.const 255 + i32.and + i32.const 24 + i32.shl + block $assembly/index/load8|inlined.5 (result i32) + local.get $1 + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $7 + local.get $6 + local.get $7 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.5 + end + i32.const 255 + i32.and + i32.const 16 + i32.shl + i32.or + block $assembly/index/load8|inlined.6 (result i32) + local.get $1 + local.set $8 + local.get $3 + i32.const 2 + i32.add + local.set $9 + local.get $8 + local.get $9 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.6 + end + i32.const 255 + i32.and + i32.const 8 + i32.shl + i32.or + block $assembly/index/load8|inlined.7 (result i32) + local.get $1 + local.set $10 + local.get $3 + i32.const 3 + i32.add + local.set $11 + local.get $10 + local.get $11 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.7 + end + i32.const 255 + i32.and + i32.const 0 + i32.shl + i32.or + br $assembly/index/load32be|inlined.1 + end + local.set $14 + local.get $12 + local.get $13 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + global.get $assembly/index/wPtr + local.set $26 + global.get $assembly/index/PARALLEL_FACTOR + global.get $assembly/index/i + i32.mul + i32.const 1 + i32.add + local.set $27 + block $assembly/index/load32be|inlined.2 (result i32) + global.get $assembly/index/inputPtr + local.set $15 + global.get $assembly/index/i + i32.const 16 + i32.add + local.set $16 + local.get $16 + i32.const 2 + i32.shl + local.set $17 + block $assembly/index/load8|inlined.8 (result i32) + local.get $15 + local.set $18 + local.get $17 + i32.const 0 + i32.add + local.set $19 + local.get $18 + local.get $19 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.8 + end + i32.const 255 + i32.and + i32.const 24 + i32.shl + block $assembly/index/load8|inlined.9 (result i32) + local.get $15 + local.set $20 + local.get $17 + i32.const 1 + i32.add + local.set $21 + local.get $20 + local.get $21 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.9 + end + i32.const 255 + i32.and + i32.const 16 + i32.shl + i32.or + block $assembly/index/load8|inlined.10 (result i32) + local.get $15 + local.set $22 + local.get $17 + i32.const 2 + i32.add + local.set $23 + local.get $22 + local.get $23 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.10 + end + i32.const 255 + i32.and + i32.const 8 + i32.shl + i32.or + block $assembly/index/load8|inlined.11 (result i32) + local.get $15 + local.set $24 + local.get $17 + i32.const 3 + i32.add + local.set $25 + local.get $24 + local.get $25 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.11 + end + i32.const 255 + i32.and + i32.const 0 + i32.shl + i32.or + br $assembly/index/load32be|inlined.2 + end + local.set $28 + local.get $26 + local.get $27 + i32.const 2 + i32.shl + i32.add + local.get $28 + i32.store + global.get $assembly/index/wPtr + local.set $40 + global.get $assembly/index/PARALLEL_FACTOR + global.get $assembly/index/i + i32.mul + i32.const 2 + i32.add + local.set $41 + block $assembly/index/load32be|inlined.3 (result i32) + global.get $assembly/index/inputPtr + local.set $29 + global.get $assembly/index/i + i32.const 32 + i32.add + local.set $30 + local.get $30 + i32.const 2 + i32.shl + local.set $31 + block $assembly/index/load8|inlined.12 (result i32) + local.get $29 + local.set $32 + local.get $31 + i32.const 0 + i32.add + local.set $33 + local.get $32 + local.get $33 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.12 + end + i32.const 255 + i32.and + i32.const 24 + i32.shl + block $assembly/index/load8|inlined.13 (result i32) + local.get $29 + local.set $34 + local.get $31 + i32.const 1 + i32.add + local.set $35 + local.get $34 + local.get $35 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.13 + end + i32.const 255 + i32.and + i32.const 16 + i32.shl + i32.or + block $assembly/index/load8|inlined.14 (result i32) + local.get $29 + local.set $36 + local.get $31 + i32.const 2 + i32.add + local.set $37 + local.get $36 + local.get $37 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.14 + end + i32.const 255 + i32.and + i32.const 8 + i32.shl + i32.or + block $assembly/index/load8|inlined.15 (result i32) + local.get $29 + local.set $38 + local.get $31 + i32.const 3 + i32.add + local.set $39 + local.get $38 + local.get $39 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.15 + end + i32.const 255 + i32.and + i32.const 0 + i32.shl + i32.or + br $assembly/index/load32be|inlined.3 + end + local.set $42 + local.get $40 + local.get $41 + i32.const 2 + i32.shl + i32.add + local.get $42 + i32.store + global.get $assembly/index/wPtr + local.set $54 + global.get $assembly/index/PARALLEL_FACTOR + global.get $assembly/index/i + i32.mul + i32.const 3 + i32.add + local.set $55 + block $assembly/index/load32be|inlined.4 (result i32) + global.get $assembly/index/inputPtr + local.set $43 + global.get $assembly/index/i + i32.const 48 + i32.add + local.set $44 + local.get $44 + i32.const 2 + i32.shl + local.set $45 + block $assembly/index/load8|inlined.16 (result i32) + local.get $43 + local.set $46 + local.get $45 + i32.const 0 + i32.add + local.set $47 + local.get $46 + local.get $47 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.16 + end + i32.const 255 + i32.and + i32.const 24 + i32.shl + block $assembly/index/load8|inlined.17 (result i32) + local.get $43 + local.set $48 + local.get $45 + i32.const 1 + i32.add + local.set $49 + local.get $48 + local.get $49 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.17 + end + i32.const 255 + i32.and + i32.const 16 + i32.shl + i32.or + block $assembly/index/load8|inlined.18 (result i32) + local.get $43 + local.set $50 + local.get $45 + i32.const 2 + i32.add + local.set $51 + local.get $50 + local.get $51 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.18 + end + i32.const 255 + i32.and + i32.const 8 + i32.shl + i32.or + block $assembly/index/load8|inlined.19 (result i32) + local.get $43 + local.set $52 + local.get $45 + i32.const 3 + i32.add + local.set $53 + local.get $52 + local.get $53 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.19 + end + i32.const 255 + i32.and + i32.const 0 + i32.shl + i32.or + br $assembly/index/load32be|inlined.4 + end + local.set $56 + local.get $54 + local.get $55 + i32.const 2 + i32.shl + i32.add + local.get $56 + i32.store + global.get $assembly/index/i + i32.const 1 + i32.add + global.set $assembly/index/i + br $for-loop|0 + end + end + global.get $assembly/index/wPtr + local.get $0 + call $assembly/simd/digest64V128 + ) + (func $assembly/index/hash8HashObjects (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + i32.const 0 + global.set $assembly/index/i + loop $for-loop|0 + global.get $assembly/index/i + i32.const 16 + global.get $assembly/index/PARALLEL_FACTOR + i32.mul + i32.lt_u + if + global.get $assembly/index/wPtr + local.set $12 + global.get $assembly/index/i + local.set $13 + block $assembly/index/load32be|inlined.5 (result i32) + global.get $assembly/index/inputPtr + local.set $1 + global.get $assembly/index/i + local.set $2 + local.get $2 + i32.const 2 + i32.shl + local.set $3 + block $assembly/index/load8|inlined.20 (result i32) + local.get $1 + local.set $4 + local.get $3 + i32.const 0 + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.20 + end + i32.const 255 + i32.and + i32.const 24 + i32.shl + block $assembly/index/load8|inlined.21 (result i32) + local.get $1 + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $7 + local.get $6 + local.get $7 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.21 + end + i32.const 255 + i32.and + i32.const 16 + i32.shl + i32.or + block $assembly/index/load8|inlined.22 (result i32) + local.get $1 + local.set $8 + local.get $3 + i32.const 2 + i32.add + local.set $9 + local.get $8 + local.get $9 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.22 + end + i32.const 255 + i32.and + i32.const 8 + i32.shl + i32.or + block $assembly/index/load8|inlined.23 (result i32) + local.get $1 + local.set $10 + local.get $3 + i32.const 3 + i32.add + local.set $11 + local.get $10 + local.get $11 + i32.add + i32.load8_u + br $assembly/index/load8|inlined.23 + end + i32.const 255 + i32.and + i32.const 0 + i32.shl + i32.or + br $assembly/index/load32be|inlined.5 + end + local.set $14 + local.get $12 + local.get $13 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + global.get $assembly/index/i + i32.const 1 + i32.add + global.set $assembly/index/i + br $for-loop|0 + end + end + global.get $assembly/index/wPtr + local.get $0 + call $assembly/simd/digest64V128 + ) (func $~start call $start:assembly/index ) diff --git a/packages/as-sha256/package.json b/packages/as-sha256/package.json index 30a6194e..b4d4aa9d 100644 --- a/packages/as-sha256/package.json +++ b/packages/as-sha256/package.json @@ -30,8 +30,8 @@ "scripts": { "generate": "rm -rf ./dist && node -r ts-node/register ./scripts/codegen.ts", "build": "yarn asbuild:untouched && yarn asbuild:optimized && yarn build:lib", - "asbuild:untouched": "asc assembly/index.ts -o build/untouched.wasm -t build/untouched.wat --runtime minimal --target debug", - "asbuild:optimized": "asc assembly/index.ts -o build/optimized.wasm -t build/optimized.wat --runtime minimal --target release -O3z --noAssert", + "asbuild:untouched": "asc assembly/index.ts -o build/untouched.wasm -t build/untouched.wat --runtime minimal --target debug --enable simd", + "asbuild:optimized": "asc assembly/index.ts -o build/optimized.wasm -t build/optimized.wat --runtime minimal --target release -O3z --noAssert --enable simd", "build:lib": "run -T tsc -p tsconfig.build.json", "build:web": "run -T webpack --mode production --entry ./index.js --output ./dist/as-sha256.min.js", "test": "yarn run test:unit", diff --git a/packages/as-sha256/src/index.ts b/packages/as-sha256/src/index.ts index 6fa451bd..96e7c58b 100644 --- a/packages/as-sha256/src/index.ts +++ b/packages/as-sha256/src/index.ts @@ -7,7 +7,7 @@ const ctx = newInstance(); const wasmInputValue = ctx.input.value; const wasmOutputValue = ctx.output.value; const inputUint8Array = new Uint8Array(ctx.memory.buffer, wasmInputValue, ctx.INPUT_LENGTH); -const outputUint8Array = new Uint8Array(ctx.memory.buffer, wasmOutputValue, 32); +const outputUint8Array = new Uint8Array(ctx.memory.buffer, wasmOutputValue, ctx.PARALLEL_FACTOR * 32); const inputUint32Array = new Uint32Array(ctx.memory.buffer, wasmInputValue, ctx.INPUT_LENGTH); export function digest(data: Uint8Array): Uint8Array { @@ -82,6 +82,151 @@ export function digest64HashObjects(obj1: HashObject, obj2: HashObject): HashObj return byteArrayToHashObject(outputUint8Array); } +/** + * Hash 4 inputs, each 64 bytes + * @param i0 64 byte Uint8Array + * @param i1 + * @param i2 + * @param i3 + */ +export function hash4Inputs(i0: Uint8Array, i1: Uint8Array, i2: Uint8Array, i3: Uint8Array): Uint8Array[] { + if (i0.length !== 64 || i1.length !== 64 || i2.length !== 64 || i3.length !== 64) { + throw new Error("Input length must be 64"); + } + + // set up input buffer for v128 + inputUint8Array.set(i0, 0); + inputUint8Array.set(i1, 64); + inputUint8Array.set(i2, 128); + inputUint8Array.set(i3, 192); + + ctx.hash4Inputs(wasmOutputValue); + + const output0 = outputUint8Array.slice(0, 32); + const output1 = outputUint8Array.slice(32, 64); + const output2 = outputUint8Array.slice(64, 96); + const output3 = outputUint8Array.slice(96, 128); + + return [output0, output1, output2, output3]; +} + +/** + * Hash 8 HashObjects: + * input${i} has h0 to h7, each 4 bytes which make it 32 bytes + */ +export function hash8HashObjects(inputs: HashObject[]): HashObject[] { + if (inputs.length !== 8) { + throw new Error("Input length must be 8"); + } + + // inputUint8Array is 256 bytes + // inputUint32Array is 64 items + // v128 0 + inputUint32Array[0] = inputs[0].h0; + inputUint32Array[1] = inputs[2].h0; + inputUint32Array[2] = inputs[4].h0; + inputUint32Array[3] = inputs[6].h0; + + // v128 1 + inputUint32Array[4] = inputs[0].h1; + inputUint32Array[5] = inputs[2].h1; + inputUint32Array[6] = inputs[4].h1; + inputUint32Array[7] = inputs[6].h1; + + // v128 2 + inputUint32Array[8] = inputs[0].h2; + inputUint32Array[9] = inputs[2].h2; + inputUint32Array[10] = inputs[4].h2; + inputUint32Array[11] = inputs[6].h2; + + // v128 3 + inputUint32Array[12] = inputs[0].h3; + inputUint32Array[13] = inputs[2].h3; + inputUint32Array[14] = inputs[4].h3; + inputUint32Array[15] = inputs[6].h3; + + // v128 4 + inputUint32Array[16] = inputs[0].h4; + inputUint32Array[17] = inputs[2].h4; + inputUint32Array[18] = inputs[4].h4; + inputUint32Array[19] = inputs[6].h4; + + // v128 5 + inputUint32Array[20] = inputs[0].h5; + inputUint32Array[21] = inputs[2].h5; + inputUint32Array[22] = inputs[4].h5; + inputUint32Array[23] = inputs[6].h5; + + // v128 6 + inputUint32Array[24] = inputs[0].h6; + inputUint32Array[25] = inputs[2].h6; + inputUint32Array[26] = inputs[4].h6; + inputUint32Array[27] = inputs[6].h6; + + // v128 7 + inputUint32Array[28] = inputs[0].h7; + inputUint32Array[29] = inputs[2].h7; + inputUint32Array[30] = inputs[4].h7; + inputUint32Array[31] = inputs[6].h7; + + // v128 8 + inputUint32Array[32] = inputs[1].h0; + inputUint32Array[33] = inputs[3].h0; + inputUint32Array[34] = inputs[5].h0; + inputUint32Array[35] = inputs[7].h0; + + // v128 9 + inputUint32Array[36] = inputs[1].h1; + inputUint32Array[37] = inputs[3].h1; + inputUint32Array[38] = inputs[5].h1; + inputUint32Array[39] = inputs[7].h1; + + // v128 10 + inputUint32Array[40] = inputs[1].h2; + inputUint32Array[41] = inputs[3].h2; + inputUint32Array[42] = inputs[5].h2; + inputUint32Array[43] = inputs[7].h2; + + // v128 11 + inputUint32Array[44] = inputs[1].h3; + inputUint32Array[45] = inputs[3].h3; + inputUint32Array[46] = inputs[5].h3; + inputUint32Array[47] = inputs[7].h3; + + // v128 12 + inputUint32Array[48] = inputs[1].h4; + inputUint32Array[49] = inputs[3].h4; + inputUint32Array[50] = inputs[5].h4; + inputUint32Array[51] = inputs[7].h4; + + // v128 13 + inputUint32Array[52] = inputs[1].h5; + inputUint32Array[53] = inputs[3].h5; + inputUint32Array[54] = inputs[5].h5; + inputUint32Array[55] = inputs[7].h5; + + // v128 14 + inputUint32Array[56] = inputs[1].h6; + inputUint32Array[57] = inputs[3].h6; + inputUint32Array[58] = inputs[5].h6; + inputUint32Array[59] = inputs[7].h6; + + // v128 15 + inputUint32Array[60] = inputs[1].h7; + inputUint32Array[61] = inputs[3].h7; + inputUint32Array[62] = inputs[5].h7; + inputUint32Array[63] = inputs[7].h7; + + ctx.hash8HashObjects(wasmOutputValue); + + const output0 = byteArrayToHashObject(outputUint8Array.subarray(0, 32)); + const output1 = byteArrayToHashObject(outputUint8Array.subarray(32, 64)); + const output2 = byteArrayToHashObject(outputUint8Array.subarray(64, 96)); + const output3 = byteArrayToHashObject(outputUint8Array.subarray(96, 128)); + + return [output0, output1, output2, output3]; +} + function update(data: Uint8Array): void { const INPUT_LENGTH = ctx.INPUT_LENGTH; if (data.length > INPUT_LENGTH) { diff --git a/packages/as-sha256/src/wasm.ts b/packages/as-sha256/src/wasm.ts index e76abe5c..37ab4c96 100644 --- a/packages/as-sha256/src/wasm.ts +++ b/packages/as-sha256/src/wasm.ts @@ -4,6 +4,7 @@ const _module = new WebAssembly.Module(wasmCode); export interface WasmContext { readonly INPUT_LENGTH: number; + readonly PARALLEL_FACTOR: number; memory: { buffer: ArrayBuffer; }; @@ -20,6 +21,8 @@ export interface WasmContext { digest(length: number): void; digest64(inPtr: number, outPtr: number): void; + hash4Inputs(outPtr: number): void; + hash8HashObjects(outPtr: number): void; } const importObj = { diff --git a/packages/as-sha256/src/wasmCode.ts b/packages/as-sha256/src/wasmCode.ts index 5b06b4c3..1404764f 100644 --- a/packages/as-sha256/src/wasmCode.ts +++ b/packages/as-sha256/src/wasmCode.ts @@ -2,4 +2,4 @@ // DO NOT modify this file by hand! // eslint-disable-next-line prettier/prettier -export const wasmCode = Uint8Array.from([0,97,115,109,1,0,0,0,1,37,7,96,2,127,127,0,96,1,127,1,127,96,1,127,0,96,2,127,127,1,127,96,0,0,96,4,127,127,127,127,0,96,3,127,127,126,0,2,13,1,3,101,110,118,5,97,98,111,114,116,0,5,3,20,19,0,0,0,0,0,6,1,3,3,1,4,0,0,1,2,2,2,0,4,5,3,1,0,1,6,177,1,35,127,0,65,128,4,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,7,86,9,12,73,78,80,85,84,95,76,69,78,71,84,72,3,0,5,105,110,112,117,116,3,29,6,111,117,116,112,117,116,3,31,4,105,110,105,116,0,11,6,117,112,100,97,116,101,0,13,5,102,105,110,97,108,0,15,6,100,105,103,101,115,116,0,16,8,100,105,103,101,115,116,54,52,0,18,6,109,101,109,111,114,121,2,0,8,1,19,12,1,18,10,209,22,19,9,0,32,0,32,1,54,2,0,11,9,0,32,0,32,1,54,2,4,11,9,0,32,0,32,1,54,2,8,11,192,1,1,4,127,32,1,40,2,0,65,124,113,34,3,65,128,2,73,4,127,32,3,65,4,118,5,65,31,65,252,255,255,255,3,32,3,32,3,65,252,255,255,255,3,79,27,34,3,103,107,34,4,65,7,107,33,2,32,3,32,4,65,4,107,118,65,16,115,11,33,3,32,1,40,2,8,33,5,32,1,40,2,4,34,4,4,64,32,4,32,5,16,3,11,32,5,4,64,32,5,32,4,16,2,11,32,1,32,0,32,2,65,4,116,32,3,106,65,2,116,106,34,1,40,2,96,70,4,64,32,1,32,5,54,2,96,32,5,69,4,64,32,0,32,2,65,2,116,106,34,1,40,2,4,65,126,32,3,119,113,33,3,32,1,32,3,54,2,4,32,3,69,4,64,32,0,32,0,40,2,0,65,126,32,2,119,113,16,1,11,11,11,11,181,2,1,5,127,32,1,40,2,0,33,3,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,34,2,65,1,113,4,64,32,0,32,4,16,4,32,1,32,3,65,4,106,32,2,65,124,113,106,34,3,16,1,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,33,2,11,32,3,65,2,113,4,64,32,1,65,4,107,40,2,0,34,1,40,2,0,33,6,32,0,32,1,16,4,32,1,32,6,65,4,106,32,3,65,124,113,106,34,3,16,1,11,32,4,32,2,65,2,114,16,1,32,4,65,4,107,32,1,54,2,0,32,0,32,3,65,124,113,34,2,65,128,2,73,4,127,32,2,65,4,118,5,65,31,65,252,255,255,255,3,32,2,32,2,65,252,255,255,255,3,79,27,34,2,103,107,34,3,65,7,107,33,5,32,2,32,3,65,4,107,118,65,16,115,11,34,2,32,5,65,4,116,106,65,2,116,106,40,2,96,33,3,32,1,65,0,16,2,32,1,32,3,16,3,32,3,4,64,32,3,32,1,16,2,11,32,0,32,5,65,4,116,32,2,106,65,2,116,106,32,1,54,2,96,32,0,32,0,40,2,0,65,1,32,5,116,114,16,1,32,0,32,5,65,2,116,106,34,0,32,0,40,2,4,65,1,32,2,116,114,54,2,4,11,130,1,1,3,127,32,1,65,19,106,65,112,113,65,4,107,33,1,32,0,40,2,160,12,34,3,4,64,32,3,32,1,65,16,107,34,5,70,4,64,32,3,40,2,0,33,4,32,5,33,1,11,11,32,2,167,65,112,113,32,1,107,34,3,65,20,73,4,64,15,11,32,1,32,4,65,2,113,32,3,65,8,107,34,3,65,1,114,114,16,1,32,1,65,0,16,2,32,1,65,0,16,3,32,1,65,4,106,32,3,106,34,3,65,2,16,1,32,0,32,3,54,2,160,12,32,0,32,1,16,5,11,29,0,32,0,65,1,65,27,32,0,103,107,116,106,65,1,107,32,0,32,0,65,254,255,255,255,1,73,27,11,142,1,1,2,127,32,1,65,128,2,73,4,127,32,1,65,4,118,5,65,31,32,1,16,7,34,1,103,107,34,3,65,7,107,33,2,32,1,32,3,65,4,107,118,65,16,115,11,33,1,32,0,32,2,65,2,116,106,40,2,4,65,127,32,1,116,113,34,1,4,127,32,0,32,1,104,32,2,65,4,116,106,65,2,116,106,40,2,96,5,32,0,40,2,0,65,127,32,2,65,1,106,116,113,34,1,4,127,32,0,32,0,32,1,104,34,0,65,2,116,106,40,2,4,104,32,0,65,4,116,106,65,2,116,106,40,2,96,5,65,0,11,11,11,148,2,1,3,127,32,1,65,252,255,255,255,3,75,4,64,65,176,14,65,176,15,65,205,3,65,29,16,0,0,11,32,0,65,12,32,1,65,19,106,65,112,113,65,4,107,32,1,65,12,77,27,34,1,16,8,34,2,69,4,64,32,1,65,128,2,79,4,127,32,1,16,7,5,32,1,11,33,2,63,0,34,3,32,2,65,4,32,0,40,2,160,12,32,3,65,16,116,65,4,107,71,116,106,65,255,255,3,106,65,128,128,124,113,65,16,118,34,2,32,2,32,3,72,27,64,0,65,0,72,4,64,32,2,64,0,65,0,72,4,64,0,11,11,32,0,32,3,65,16,116,63,0,172,66,16,134,16,6,32,0,32,1,16,8,33,2,11,32,2,40,2,0,26,32,0,32,2,16,4,32,2,40,2,0,34,3,65,124,113,32,1,107,34,4,65,16,79,4,64,32,2,32,1,32,3,65,2,113,114,16,1,32,2,65,4,106,32,1,106,34,1,32,4,65,4,107,65,1,114,16,1,32,0,32,1,16,5,5,32,2,32,3,65,126,113,16,1,32,2,65,4,106,32,2,40,2,0,65,124,113,106,34,0,32,0,40,2,0,65,125,113,16,1,11,32,2,11,169,2,1,3,127,32,0,65,252,255,255,255,3,75,4,64,65,192,13,65,240,13,65,52,65,43,16,0,0,11,32,0,65,236,255,255,255,3,75,4,64,65,176,14,65,240,14,65,253,0,65,30,16,0,0,11,35,22,69,4,64,63,0,34,2,65,0,76,4,127,65,1,32,2,107,64,0,65,0,72,5,65,0,11,4,64,0,11,65,128,16,65,0,16,1,65,160,28,65,0,54,2,0,3,64,32,1,65,23,73,4,64,32,1,65,2,116,65,128,16,106,65,0,54,2,4,65,0,33,2,3,64,32,2,65,16,73,4,64,32,1,65,4,116,32,2,106,65,2,116,65,128,16,106,65,0,54,2,96,32,2,65,1,106,33,2,12,1,11,11,32,1,65,1,106,33,1,12,1,11,11,65,128,16,65,164,28,63,0,172,66,16,134,16,6,65,128,16,36,22,11,35,22,32,0,65,16,106,16,9,34,2,65,1,54,2,12,32,2,32,0,54,2,16,35,23,34,3,40,2,8,33,1,32,2,32,3,16,2,32,2,32,1,16,3,32,1,32,2,32,1,40,2,4,65,3,113,114,16,2,32,3,32,2,16,3,35,24,32,2,40,2,0,65,124,113,65,4,106,106,36,24,32,2,65,20,106,34,1,65,0,32,0,252,11,0,32,1,11,74,0,65,231,204,167,208,6,36,3,65,133,221,158,219,123,36,4,65,242,230,187,227,3,36,5,65,186,234,191,170,122,36,6,65,255,164,185,136,5,36,7,65,140,209,149,216,121,36,8,65,171,179,143,252,1,36,9,65,153,154,131,223,5,36,10,65,0,36,33,65,0,36,34,11,227,3,1,1,127,35,3,36,11,35,4,36,12,35,5,36,13,35,6,36,14,35,7,36,15,35,8,36,16,35,9,36,17,35,10,36,18,65,0,36,19,3,64,35,19,65,16,73,4,64,32,0,35,19,65,2,116,34,2,106,32,1,32,2,65,3,106,106,45,0,0,32,1,32,2,106,45,0,0,65,24,116,32,1,32,2,65,1,106,106,45,0,0,65,16,116,114,32,1,32,2,65,2,106,106,45,0,0,65,8,116,114,114,54,2,0,35,19,65,1,106,36,19,12,1,11,11,65,16,36,19,3,64,35,19,65,192,0,73,4,64,32,0,35,19,65,2,116,106,32,0,35,19,65,16,107,65,2,116,106,40,2,0,32,0,35,19,65,7,107,65,2,116,106,40,2,0,32,0,35,19,65,2,107,65,2,116,106,40,2,0,34,1,65,17,120,32,1,65,19,120,115,32,1,65,10,118,115,106,32,0,35,19,65,15,107,65,2,116,106,40,2,0,34,1,65,7,120,32,1,65,18,120,115,32,1,65,3,118,115,106,106,54,2,0,35,19,65,1,106,36,19,12,1,11,11,65,0,36,19,3,64,35,19,65,192,0,73,4,64,32,0,35,19,65,2,116,34,1,106,40,2,0,32,1,35,1,106,40,2,0,35,18,35,15,34,1,65,6,120,32,1,65,11,120,115,32,1,65,25,120,115,106,35,15,34,1,35,16,113,35,17,32,1,65,127,115,113,115,106,106,106,36,20,35,11,34,1,65,2,120,32,1,65,13,120,115,32,1,65,22,120,115,35,12,34,1,35,13,34,2,113,32,1,35,11,34,1,113,32,1,32,2,113,115,115,106,36,21,35,17,36,18,35,16,36,17,35,15,36,16,35,14,35,20,106,36,15,35,13,36,14,35,12,36,13,35,11,36,12,35,20,35,21,106,36,11,35,19,65,1,106,36,19,12,1,11,11,35,3,35,11,106,36,3,35,4,35,12,106,36,4,35,5,35,13,106,36,5,35,6,35,14,106,36,6,35,7,35,15,106,36,7,35,8,35,16,106,36,8,35,9,35,17,106,36,9,35,10,35,18,106,36,10,11,174,1,1,2,127,35,34,32,1,106,36,34,35,33,4,64,65,192,0,35,33,107,34,2,32,1,76,4,64,35,26,35,33,106,32,0,32,2,252,10,0,0,35,33,32,2,106,36,33,65,192,0,35,33,107,33,2,32,1,65,192,0,35,33,107,107,33,1,35,28,35,26,16,12,65,0,36,33,5,35,26,35,33,106,32,0,32,1,252,10,0,0,35,33,32,1,106,36,33,15,11,11,3,64,32,3,32,1,65,192,0,109,72,4,64,35,28,32,0,32,2,106,16,12,32,3,65,1,106,33,3,32,2,65,64,107,33,2,12,1,11,11,32,1,65,63,113,34,1,4,64,35,26,35,33,106,32,0,32,2,106,32,1,252,10,0,0,35,33,32,1,106,36,33,11,11,25,0,32,0,65,128,254,131,120,113,65,8,119,32,0,65,255,129,252,7,113,65,8,120,114,11,146,2,1,2,127,35,34,65,63,113,65,63,73,4,64,35,26,35,33,106,65,128,1,58,0,0,35,33,65,1,106,36,33,11,35,34,65,63,113,65,56,79,4,64,35,26,35,33,106,34,1,65,192,0,35,33,107,106,33,2,3,64,32,1,32,2,73,4,64,32,1,65,0,58,0,0,32,1,65,1,106,33,1,12,1,11,11,35,28,35,26,16,12,65,0,36,33,11,35,34,65,63,113,65,63,79,4,64,35,26,35,33,106,65,128,1,58,0,0,35,33,65,1,106,36,33,11,35,26,35,33,106,34,1,65,56,35,33,107,106,33,2,3,64,32,1,32,2,73,4,64,32,1,65,0,58,0,0,32,1,65,1,106,33,1,12,1,11,11,35,26,35,34,65,128,128,128,128,2,109,16,14,54,2,56,35,26,35,34,65,3,116,16,14,54,2,60,35,28,35,26,16,12,32,0,35,3,16,14,54,2,0,32,0,35,4,16,14,54,2,4,32,0,35,5,16,14,54,2,8,32,0,35,6,16,14,54,2,12,32,0,35,7,16,14,54,2,16,32,0,35,8,16,14,54,2,20,32,0,35,9,16,14,54,2,24,32,0,35,10,16,14,54,2,28,11,14,0,16,11,35,30,32,0,16,13,35,32,16,15,11,253,1,1,2,127,35,3,36,11,35,4,36,12,35,5,36,13,35,6,36,14,35,7,36,15,35,8,36,16,35,9,36,17,35,10,36,18,65,0,36,19,3,64,35,19,65,192,0,73,4,64,32,0,35,19,65,2,116,106,40,2,0,35,18,35,15,34,1,65,6,120,32,1,65,11,120,115,32,1,65,25,120,115,106,35,15,34,1,35,16,113,35,17,32,1,65,127,115,113,115,106,106,36,20,35,11,34,1,65,2,120,32,1,65,13,120,115,32,1,65,22,120,115,35,12,34,2,35,13,34,1,113,32,2,35,11,34,2,113,32,1,32,2,113,115,115,106,36,21,35,17,36,18,35,16,36,17,35,15,36,16,35,14,35,20,106,36,15,35,13,36,14,35,12,36,13,35,11,36,12,35,20,35,21,106,36,11,35,19,65,1,106,36,19,12,1,11,11,35,3,35,11,106,36,3,35,4,35,12,106,36,4,35,5,35,13,106,36,5,35,6,35,14,106,36,6,35,7,35,15,106,36,7,35,8,35,16,106,36,8,35,9,35,17,106,36,9,35,10,35,18,106,36,10,11,86,0,16,11,35,28,32,0,16,12,35,2,16,17,32,1,35,3,16,14,54,2,0,32,1,35,4,16,14,54,2,4,32,1,35,5,16,14,54,2,8,32,1,35,6,16,14,54,2,12,32,1,35,7,16,14,54,2,16,32,1,35,8,16,14,54,2,20,32,1,35,9,16,14,54,2,24,32,1,35,10,16,14,54,2,28,11,82,0,65,196,10,40,2,0,36,1,65,148,13,40,2,0,36,2,65,224,15,65,224,15,16,2,65,224,15,65,224,15,16,3,65,224,15,36,23,65,192,0,16,10,36,25,35,25,36,26,65,128,2,16,10,36,27,35,27,36,28,65,128,4,16,10,36,29,35,29,36,30,65,32,16,10,36,31,35,31,36,32,11,11,253,6,18,0,65,140,8,11,2,28,1,0,65,152,8,11,136,2,1,0,0,0,0,1,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,144,235,108,80,164,247,163,249,190,242,120,113,198,0,65,172,10,11,1,44,0,65,184,10,11,21,4,0,0,0,16,0,0,0,32,4,0,0,32,4,0,0,0,1,0,0,64,0,65,220,10,11,2,28,1,0,65,232,10,11,136,2,1,0,0,0,0,1,0,0,152,47,138,194,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,243,155,193,193,105,155,100,134,71,254,240,198,237,225,15,84,242,12,36,111,52,233,79,190,132,201,108,30,65,185,97,250,136,249,22,82,81,198,242,109,90,142,168,101,252,25,176,199,158,217,185,195,49,18,154,160,234,14,231,43,35,177,253,176,62,53,199,213,186,105,48,95,109,151,203,143,17,15,90,253,238,30,220,137,182,53,10,4,122,11,222,157,202,244,88,22,91,93,225,134,62,127,0,128,137,8,55,50,234,7,165,55,149,171,111,16,97,64,23,241,214,140,13,109,59,170,205,55,190,187,192,218,59,97,131,99,163,72,219,49,233,2,11,167,92,209,111,202,250,26,82,49,132,51,49,149,26,212,110,144,120,67,109,242,145,156,195,189,171,204,158,230,160,201,181,60,182,47,83,198,65,199,210,163,126,35,7,104,75,149,164,118,29,25,76,0,65,252,12,11,1,44,0,65,136,13,11,21,4,0,0,0,16,0,0,0,112,5,0,0,112,5,0,0,0,1,0,0,64,0,65,172,13,11,1,44,0,65,184,13,11,35,2,0,0,0,28,0,0,0,73,0,110,0,118,0,97,0,108,0,105,0,100,0,32,0,108,0,101,0,110,0,103,0,116,0,104,0,65,220,13,11,1,60,0,65,232,13,11,45,2,0,0,0,38,0,0,0,126,0,108,0,105,0,98,0,47,0,97,0,114,0,114,0,97,0,121,0,98,0,117,0,102,0,102,0,101,0,114,0,46,0,116,0,115,0,65,156,14,11,1,60,0,65,168,14,11,47,2,0,0,0,40,0,0,0,65,0,108,0,108,0,111,0,99,0,97,0,116,0,105,0,111,0,110,0,32,0,116,0,111,0,111,0,32,0,108,0,97,0,114,0,103,0,101,0,65,220,14,11,1,60,0,65,232,14,11,37,2,0,0,0,30,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,116,0,99,0,109,0,115,0,46,0,116,0,115,0,65,156,15,11,1,60,0,65,168,15,11,37,2,0,0,0,30,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,116,0,108,0,115,0,102,0,46,0,116,0,115]); +export const wasmCode = Uint8Array.from([0,97,115,109,1,0,0,0,1,37,7,96,2,127,127,0,96,1,127,0,96,0,0,96,1,127,1,127,96,2,127,127,1,127,96,4,127,127,127,127,0,96,3,127,127,126,0,2,13,1,3,101,110,118,5,97,98,111,114,116,0,5,3,26,25,0,0,0,0,0,6,3,4,4,3,4,2,2,0,0,3,1,1,1,0,2,0,1,1,2,5,3,1,0,1,6,222,4,60,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,1,65,0,11,123,1,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,0,65,4,11,127,0,65,128,4,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,7,137,1,12,15,80,65,82,65,76,76,69,76,95,70,65,67,84,79,82,3,27,12,73,78,80,85,84,95,76,69,78,71,84,72,3,28,5,105,110,112,117,116,3,54,6,111,117,116,112,117,116,3,56,4,105,110,105,116,0,13,6,117,112,100,97,116,101,0,15,5,102,105,110,97,108,0,17,6,100,105,103,101,115,116,0,18,8,100,105,103,101,115,116,54,52,0,20,11,104,97,115,104,52,73,110,112,117,116,115,0,23,16,104,97,115,104,56,72,97,115,104,79,98,106,101,99,116,115,0,24,6,109,101,109,111,114,121,2,0,8,1,25,12,1,22,10,159,108,25,9,0,32,0,32,1,54,2,0,11,9,0,32,0,32,1,54,2,4,11,9,0,32,0,32,1,54,2,8,11,192,1,1,4,127,32,1,40,2,0,65,124,113,34,3,65,128,2,73,4,127,32,3,65,4,118,5,65,31,65,252,255,255,255,3,32,3,32,3,65,252,255,255,255,3,79,27,34,3,103,107,34,4,65,7,107,33,2,32,3,32,4,65,4,107,118,65,16,115,11,33,3,32,1,40,2,8,33,5,32,1,40,2,4,34,4,4,64,32,4,32,5,16,3,11,32,5,4,64,32,5,32,4,16,2,11,32,1,32,0,32,2,65,4,116,32,3,106,65,2,116,106,34,1,40,2,96,70,4,64,32,1,32,5,54,2,96,32,5,69,4,64,32,0,32,2,65,2,116,106,34,1,40,2,4,65,126,32,3,119,113,33,3,32,1,32,3,54,2,4,32,3,69,4,64,32,0,32,0,40,2,0,65,126,32,2,119,113,16,1,11,11,11,11,181,2,1,5,127,32,1,40,2,0,33,3,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,34,2,65,1,113,4,64,32,0,32,4,16,4,32,1,32,3,65,4,106,32,2,65,124,113,106,34,3,16,1,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,33,2,11,32,3,65,2,113,4,64,32,1,65,4,107,40,2,0,34,1,40,2,0,33,6,32,0,32,1,16,4,32,1,32,6,65,4,106,32,3,65,124,113,106,34,3,16,1,11,32,4,32,2,65,2,114,16,1,32,4,65,4,107,32,1,54,2,0,32,0,32,3,65,124,113,34,2,65,128,2,73,4,127,32,2,65,4,118,5,65,31,65,252,255,255,255,3,32,2,32,2,65,252,255,255,255,3,79,27,34,2,103,107,34,3,65,7,107,33,5,32,2,32,3,65,4,107,118,65,16,115,11,34,2,32,5,65,4,116,106,65,2,116,106,40,2,96,33,3,32,1,65,0,16,2,32,1,32,3,16,3,32,3,4,64,32,3,32,1,16,2,11,32,0,32,5,65,4,116,32,2,106,65,2,116,106,32,1,54,2,96,32,0,32,0,40,2,0,65,1,32,5,116,114,16,1,32,0,32,5,65,2,116,106,34,0,32,0,40,2,4,65,1,32,2,116,114,54,2,4,11,130,1,1,3,127,32,1,65,19,106,65,112,113,65,4,107,33,1,32,0,40,2,160,12,34,3,4,64,32,3,32,1,65,16,107,34,5,70,4,64,32,3,40,2,0,33,4,32,5,33,1,11,11,32,2,167,65,112,113,32,1,107,34,3,65,20,73,4,64,15,11,32,1,32,4,65,2,113,32,3,65,8,107,34,3,65,1,114,114,16,1,32,1,65,0,16,2,32,1,65,0,16,3,32,1,65,4,106,32,3,106,34,3,65,2,16,1,32,0,32,3,54,2,160,12,32,0,32,1,16,5,11,29,0,32,0,65,1,65,27,32,0,103,107,116,106,65,1,107,32,0,32,0,65,254,255,255,255,1,73,27,11,142,1,1,2,127,32,1,65,128,2,73,4,127,32,1,65,4,118,5,65,31,32,1,16,7,34,1,103,107,34,3,65,7,107,33,2,32,1,32,3,65,4,107,118,65,16,115,11,33,1,32,0,32,2,65,2,116,106,40,2,4,65,127,32,1,116,113,34,1,4,127,32,0,32,1,104,32,2,65,4,116,106,65,2,116,106,40,2,96,5,32,0,40,2,0,65,127,32,2,65,1,106,116,113,34,1,4,127,32,0,32,0,32,1,104,34,0,65,2,116,106,40,2,4,104,32,0,65,4,116,106,65,2,116,106,40,2,96,5,65,0,11,11,11,148,2,1,3,127,32,1,65,252,255,255,255,3,75,4,64,65,176,14,65,176,15,65,205,3,65,29,16,0,0,11,32,0,65,12,32,1,65,19,106,65,112,113,65,4,107,32,1,65,12,77,27,34,1,16,8,34,2,69,4,64,32,1,65,128,2,79,4,127,32,1,16,7,5,32,1,11,33,2,63,0,34,3,32,2,65,4,32,0,40,2,160,12,32,3,65,16,116,65,4,107,71,116,106,65,255,255,3,106,65,128,128,124,113,65,16,118,34,2,32,2,32,3,72,27,64,0,65,0,72,4,64,32,2,64,0,65,0,72,4,64,0,11,11,32,0,32,3,65,16,116,63,0,172,66,16,134,16,6,32,0,32,1,16,8,33,2,11,32,2,40,2,0,26,32,0,32,2,16,4,32,2,40,2,0,34,3,65,124,113,32,1,107,34,4,65,16,79,4,64,32,2,32,1,32,3,65,2,113,114,16,1,32,2,65,4,106,32,1,106,34,1,32,4,65,4,107,65,1,114,16,1,32,0,32,1,16,5,5,32,2,32,3,65,126,113,16,1,32,2,65,4,106,32,2,40,2,0,65,124,113,106,34,0,32,0,40,2,0,65,125,113,16,1,11,32,2,11,169,2,1,3,127,32,0,65,252,255,255,255,3,75,4,64,65,192,13,65,240,13,65,52,65,43,16,0,0,11,32,0,65,236,255,255,255,3,75,4,64,65,176,14,65,240,14,65,253,0,65,30,16,0,0,11,35,20,69,4,64,63,0,34,2,65,0,76,4,127,65,1,32,2,107,64,0,65,0,72,5,65,0,11,4,64,0,11,65,240,16,65,0,16,1,65,144,29,65,0,54,2,0,3,64,32,1,65,23,73,4,64,32,1,65,2,116,65,240,16,106,65,0,54,2,4,65,0,33,2,3,64,32,2,65,16,73,4,64,32,1,65,4,116,32,2,106,65,2,116,65,240,16,106,65,0,54,2,96,32,2,65,1,106,33,2,12,1,11,11,32,1,65,1,106,33,1,12,1,11,11,65,240,16,65,148,29,63,0,172,66,16,134,16,6,65,240,16,36,20,11,35,20,32,0,65,16,106,16,9,34,2,65,1,54,2,12,32,2,32,0,54,2,16,35,21,34,3,40,2,8,33,1,32,2,32,3,16,2,32,2,32,1,16,3,32,1,32,2,32,1,40,2,4,65,3,113,114,16,2,32,3,32,2,16,3,35,22,32,2,40,2,0,65,124,113,65,4,106,106,36,22,32,2,65,20,106,34,1,65,0,32,0,252,11,0,32,1,11,41,0,32,1,32,0,40,2,12,79,4,64,65,144,16,65,208,16,65,242,0,65,42,16,0,0,11,32,0,40,2,4,32,1,65,2,116,106,40,2,0,11,249,15,2,2,127,1,123,65,224,15,65,224,15,16,2,65,224,15,65,224,15,16,3,65,224,15,36,21,65,128,8,16,10,36,23,35,23,36,24,3,64,32,0,65,192,0,72,4,64,35,24,33,1,65,192,10,32,0,16,11,253,17,33,2,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,32,0,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,1,32,2,253,11,4,0,12,63,11,32,1,32,2,253,11,4,16,12,62,11,32,1,32,2,253,11,4,32,12,61,11,32,1,32,2,253,11,4,48,12,60,11,32,1,32,2,253,11,4,64,12,59,11,32,1,32,2,253,11,4,80,12,58,11,32,1,32,2,253,11,4,96,12,57,11,32,1,32,2,253,11,4,112,12,56,11,32,1,32,2,253,11,4,128,1,12,55,11,32,1,32,2,253,11,4,144,1,12,54,11,32,1,32,2,253,11,4,160,1,12,53,11,32,1,32,2,253,11,4,176,1,12,52,11,32,1,32,2,253,11,4,192,1,12,51,11,32,1,32,2,253,11,4,208,1,12,50,11,32,1,32,2,253,11,4,224,1,12,49,11,32,1,32,2,253,11,4,240,1,12,48,11,32,1,32,2,253,11,4,128,2,12,47,11,32,1,32,2,253,11,4,144,2,12,46,11,32,1,32,2,253,11,4,160,2,12,45,11,32,1,32,2,253,11,4,176,2,12,44,11,32,1,32,2,253,11,4,192,2,12,43,11,32,1,32,2,253,11,4,208,2,12,42,11,32,1,32,2,253,11,4,224,2,12,41,11,32,1,32,2,253,11,4,240,2,12,40,11,32,1,32,2,253,11,4,128,3,12,39,11,32,1,32,2,253,11,4,144,3,12,38,11,32,1,32,2,253,11,4,160,3,12,37,11,32,1,32,2,253,11,4,176,3,12,36,11,32,1,32,2,253,11,4,192,3,12,35,11,32,1,32,2,253,11,4,208,3,12,34,11,32,1,32,2,253,11,4,224,3,12,33,11,32,1,32,2,253,11,4,240,3,12,32,11,32,1,32,2,253,11,4,128,4,12,31,11,32,1,32,2,253,11,4,144,4,12,30,11,32,1,32,2,253,11,4,160,4,12,29,11,32,1,32,2,253,11,4,176,4,12,28,11,32,1,32,2,253,11,4,192,4,12,27,11,32,1,32,2,253,11,4,208,4,12,26,11,32,1,32,2,253,11,4,224,4,12,25,11,32,1,32,2,253,11,4,240,4,12,24,11,32,1,32,2,253,11,4,128,5,12,23,11,32,1,32,2,253,11,4,144,5,12,22,11,32,1,32,2,253,11,4,160,5,12,21,11,32,1,32,2,253,11,4,176,5,12,20,11,32,1,32,2,253,11,4,192,5,12,19,11,32,1,32,2,253,11,4,208,5,12,18,11,32,1,32,2,253,11,4,224,5,12,17,11,32,1,32,2,253,11,4,240,5,12,16,11,32,1,32,2,253,11,4,128,6,12,15,11,32,1,32,2,253,11,4,144,6,12,14,11,32,1,32,2,253,11,4,160,6,12,13,11,32,1,32,2,253,11,4,176,6,12,12,11,32,1,32,2,253,11,4,192,6,12,11,11,32,1,32,2,253,11,4,208,6,12,10,11,32,1,32,2,253,11,4,224,6,12,9,11,32,1,32,2,253,11,4,240,6,12,8,11,32,1,32,2,253,11,4,128,7,12,7,11,32,1,32,2,253,11,4,144,7,12,6,11,32,1,32,2,253,11,4,160,7,12,5,11,32,1,32,2,253,11,4,176,7,12,4,11,32,1,32,2,253,11,4,192,7,12,3,11,32,1,32,2,253,11,4,208,7,12,2,11,32,1,32,2,253,11,4,224,7,12,1,11,32,1,32,2,253,11,4,240,7,11,32,0,65,1,106,33,0,12,1,11,11,65,128,8,16,10,36,25,35,25,36,26,65,0,33,0,3,64,32,0,65,192,0,72,4,64,35,26,33,1,65,144,13,32,0,16,11,253,17,33,2,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,32,0,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,1,32,2,253,11,4,0,12,63,11,32,1,32,2,253,11,4,16,12,62,11,32,1,32,2,253,11,4,32,12,61,11,32,1,32,2,253,11,4,48,12,60,11,32,1,32,2,253,11,4,64,12,59,11,32,1,32,2,253,11,4,80,12,58,11,32,1,32,2,253,11,4,96,12,57,11,32,1,32,2,253,11,4,112,12,56,11,32,1,32,2,253,11,4,128,1,12,55,11,32,1,32,2,253,11,4,144,1,12,54,11,32,1,32,2,253,11,4,160,1,12,53,11,32,1,32,2,253,11,4,176,1,12,52,11,32,1,32,2,253,11,4,192,1,12,51,11,32,1,32,2,253,11,4,208,1,12,50,11,32,1,32,2,253,11,4,224,1,12,49,11,32,1,32,2,253,11,4,240,1,12,48,11,32,1,32,2,253,11,4,128,2,12,47,11,32,1,32,2,253,11,4,144,2,12,46,11,32,1,32,2,253,11,4,160,2,12,45,11,32,1,32,2,253,11,4,176,2,12,44,11,32,1,32,2,253,11,4,192,2,12,43,11,32,1,32,2,253,11,4,208,2,12,42,11,32,1,32,2,253,11,4,224,2,12,41,11,32,1,32,2,253,11,4,240,2,12,40,11,32,1,32,2,253,11,4,128,3,12,39,11,32,1,32,2,253,11,4,144,3,12,38,11,32,1,32,2,253,11,4,160,3,12,37,11,32,1,32,2,253,11,4,176,3,12,36,11,32,1,32,2,253,11,4,192,3,12,35,11,32,1,32,2,253,11,4,208,3,12,34,11,32,1,32,2,253,11,4,224,3,12,33,11,32,1,32,2,253,11,4,240,3,12,32,11,32,1,32,2,253,11,4,128,4,12,31,11,32,1,32,2,253,11,4,144,4,12,30,11,32,1,32,2,253,11,4,160,4,12,29,11,32,1,32,2,253,11,4,176,4,12,28,11,32,1,32,2,253,11,4,192,4,12,27,11,32,1,32,2,253,11,4,208,4,12,26,11,32,1,32,2,253,11,4,224,4,12,25,11,32,1,32,2,253,11,4,240,4,12,24,11,32,1,32,2,253,11,4,128,5,12,23,11,32,1,32,2,253,11,4,144,5,12,22,11,32,1,32,2,253,11,4,160,5,12,21,11,32,1,32,2,253,11,4,176,5,12,20,11,32,1,32,2,253,11,4,192,5,12,19,11,32,1,32,2,253,11,4,208,5,12,18,11,32,1,32,2,253,11,4,224,5,12,17,11,32,1,32,2,253,11,4,240,5,12,16,11,32,1,32,2,253,11,4,128,6,12,15,11,32,1,32,2,253,11,4,144,6,12,14,11,32,1,32,2,253,11,4,160,6,12,13,11,32,1,32,2,253,11,4,176,6,12,12,11,32,1,32,2,253,11,4,192,6,12,11,11,32,1,32,2,253,11,4,208,6,12,10,11,32,1,32,2,253,11,4,224,6,12,9,11,32,1,32,2,253,11,4,240,6,12,8,11,32,1,32,2,253,11,4,128,7,12,7,11,32,1,32,2,253,11,4,144,7,12,6,11,32,1,32,2,253,11,4,160,7,12,5,11,32,1,32,2,253,11,4,176,7,12,4,11,32,1,32,2,253,11,4,192,7,12,3,11,32,1,32,2,253,11,4,208,7,12,2,11,32,1,32,2,253,11,4,224,7,12,1,11,32,1,32,2,253,11,4,240,7,11,32,0,65,1,106,33,0,12,1,11,11,11,74,0,65,231,204,167,208,6,36,31,65,133,221,158,219,123,36,32,65,242,230,187,227,3,36,33,65,186,234,191,170,122,36,34,65,255,164,185,136,5,36,35,65,140,209,149,216,121,36,36,65,171,179,143,252,1,36,37,65,153,154,131,223,5,36,38,65,0,36,58,65,0,36,59,11,227,3,1,1,127,35,31,36,39,35,32,36,40,35,33,36,41,35,34,36,42,35,35,36,43,35,36,36,44,35,37,36,45,35,38,36,46,65,0,36,47,3,64,35,47,65,16,73,4,64,32,0,35,47,65,2,116,34,2,106,32,1,32,2,65,3,106,106,45,0,0,32,1,32,2,106,45,0,0,65,24,116,32,1,32,2,65,1,106,106,45,0,0,65,16,116,114,32,1,32,2,65,2,106,106,45,0,0,65,8,116,114,114,54,2,0,35,47,65,1,106,36,47,12,1,11,11,65,16,36,47,3,64,35,47,65,192,0,73,4,64,32,0,35,47,65,2,116,106,32,0,35,47,65,16,107,65,2,116,106,40,2,0,32,0,35,47,65,7,107,65,2,116,106,40,2,0,32,0,35,47,65,2,107,65,2,116,106,40,2,0,34,1,65,17,120,32,1,65,19,120,115,32,1,65,10,118,115,106,32,0,35,47,65,15,107,65,2,116,106,40,2,0,34,1,65,7,120,32,1,65,18,120,115,32,1,65,3,118,115,106,106,54,2,0,35,47,65,1,106,36,47,12,1,11,11,65,0,36,47,3,64,35,47,65,192,0,73,4,64,32,0,35,47,65,2,116,34,1,106,40,2,0,32,1,35,29,106,40,2,0,35,46,35,43,34,1,65,6,120,32,1,65,11,120,115,32,1,65,25,120,115,106,35,43,34,1,35,44,113,35,45,32,1,65,127,115,113,115,106,106,106,36,48,35,39,34,1,65,2,120,32,1,65,13,120,115,32,1,65,22,120,115,35,40,34,1,35,41,34,2,113,32,1,35,39,34,1,113,32,1,32,2,113,115,115,106,36,49,35,45,36,46,35,44,36,45,35,43,36,44,35,42,35,48,106,36,43,35,41,36,42,35,40,36,41,35,39,36,40,35,48,35,49,106,36,39,35,47,65,1,106,36,47,12,1,11,11,35,31,35,39,106,36,31,35,32,35,40,106,36,32,35,33,35,41,106,36,33,35,34,35,42,106,36,34,35,35,35,43,106,36,35,35,36,35,44,106,36,36,35,37,35,45,106,36,37,35,38,35,46,106,36,38,11,174,1,1,2,127,35,59,32,1,106,36,59,35,58,4,64,65,192,0,35,58,107,34,2,32,1,76,4,64,35,51,35,58,106,32,0,32,2,252,10,0,0,35,58,32,2,106,36,58,65,192,0,35,58,107,33,2,32,1,65,192,0,35,58,107,107,33,1,35,53,35,51,16,14,65,0,36,58,5,35,51,35,58,106,32,0,32,1,252,10,0,0,35,58,32,1,106,36,58,15,11,11,3,64,32,3,32,1,65,192,0,109,72,4,64,35,53,32,0,32,2,106,16,14,32,3,65,1,106,33,3,32,2,65,64,107,33,2,12,1,11,11,32,1,65,63,113,34,1,4,64,35,51,35,58,106,32,0,32,2,106,32,1,252,10,0,0,35,58,32,1,106,36,58,11,11,25,0,32,0,65,128,254,131,120,113,65,8,119,32,0,65,255,129,252,7,113,65,8,120,114,11,146,2,1,2,127,35,59,65,63,113,65,63,73,4,64,35,51,35,58,106,65,128,1,58,0,0,35,58,65,1,106,36,58,11,35,59,65,63,113,65,56,79,4,64,35,51,35,58,106,34,1,65,192,0,35,58,107,106,33,2,3,64,32,1,32,2,73,4,64,32,1,65,0,58,0,0,32,1,65,1,106,33,1,12,1,11,11,35,53,35,51,16,14,65,0,36,58,11,35,59,65,63,113,65,63,79,4,64,35,51,35,58,106,65,128,1,58,0,0,35,58,65,1,106,36,58,11,35,51,35,58,106,34,1,65,56,35,58,107,106,33,2,3,64,32,1,32,2,73,4,64,32,1,65,0,58,0,0,32,1,65,1,106,33,1,12,1,11,11,35,51,35,59,65,128,128,128,128,2,109,16,16,54,2,56,35,51,35,59,65,3,116,16,16,54,2,60,35,53,35,51,16,14,32,0,35,31,16,16,54,2,0,32,0,35,32,16,16,54,2,4,32,0,35,33,16,16,54,2,8,32,0,35,34,16,16,54,2,12,32,0,35,35,16,16,54,2,16,32,0,35,36,16,16,54,2,20,32,0,35,37,16,16,54,2,24,32,0,35,38,16,16,54,2,28,11,14,0,16,13,35,55,32,0,16,15,35,57,16,17,11,253,1,1,2,127,35,31,36,39,35,32,36,40,35,33,36,41,35,34,36,42,35,35,36,43,35,36,36,44,35,37,36,45,35,38,36,46,65,0,36,47,3,64,35,47,65,192,0,73,4,64,32,0,35,47,65,2,116,106,40,2,0,35,46,35,43,34,1,65,6,120,32,1,65,11,120,115,32,1,65,25,120,115,106,35,43,34,1,35,44,113,35,45,32,1,65,127,115,113,115,106,106,36,48,35,39,34,1,65,2,120,32,1,65,13,120,115,32,1,65,22,120,115,35,40,34,2,35,41,34,1,113,32,2,35,39,34,2,113,32,1,32,2,113,115,115,106,36,49,35,45,36,46,35,44,36,45,35,43,36,44,35,42,35,48,106,36,43,35,41,36,42,35,40,36,41,35,39,36,40,35,48,35,49,106,36,39,35,47,65,1,106,36,47,12,1,11,11,35,31,35,39,106,36,31,35,32,35,40,106,36,32,35,33,35,41,106,36,33,35,34,35,42,106,36,34,35,35,35,43,106,36,35,35,36,35,44,106,36,36,35,37,35,45,106,36,37,35,38,35,46,106,36,38,11,86,0,16,13,35,53,32,0,16,14,35,30,16,19,32,1,35,31,16,16,54,2,0,32,1,35,32,16,16,54,2,4,32,1,35,33,16,16,54,2,8,32,1,35,34,16,16,54,2,12,32,1,35,35,16,16,54,2,16,32,1,35,36,16,16,54,2,20,32,1,35,37,16,16,54,2,24,32,1,35,38,16,16,54,2,28,11,182,9,2,1,127,2,123,35,0,36,8,35,1,36,9,35,2,36,10,35,3,36,11,35,4,36,12,35,5,36,13,35,6,36,14,35,7,36,15,65,0,36,18,3,64,35,18,65,192,0,72,4,64,35,15,35,12,34,1,65,6,253,173,1,32,1,65,26,253,171,1,253,80,32,1,65,11,253,173,1,32,1,65,21,253,171,1,253,80,253,81,32,1,65,25,253,173,1,32,1,65,7,253,171,1,253,80,253,81,253,174,1,35,12,34,1,35,13,253,78,32,1,253,77,35,14,253,78,253,81,253,174,1,2,123,35,26,33,0,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,174,1,36,16,35,8,34,1,65,2,253,173,1,32,1,65,30,253,171,1,253,80,32,1,65,13,253,173,1,32,1,65,19,253,171,1,253,80,253,81,32,1,65,22,253,173,1,32,1,65,10,253,171,1,253,80,253,81,35,8,34,1,35,9,34,2,253,78,32,1,35,10,34,1,253,78,253,81,32,2,32,1,253,78,253,81,253,174,1,36,17,35,14,36,15,35,13,36,14,35,12,36,13,35,11,35,16,253,174,1,36,12,35,10,36,11,35,9,36,10,35,8,36,9,35,16,35,17,253,174,1,36,8,35,18,65,1,106,36,18,12,1,11,11,35,0,35,8,253,174,1,36,0,35,1,35,9,253,174,1,36,1,35,2,35,10,253,174,1,36,2,35,3,35,11,253,174,1,36,3,35,4,35,12,253,174,1,36,4,35,5,35,13,253,174,1,36,5,35,6,35,14,253,174,1,36,6,35,7,35,15,253,174,1,36,7,11,201,56,2,2,123,1,127,253,12,103,230,9,106,103,230,9,106,103,230,9,106,103,230,9,106,36,0,253,12,133,174,103,187,133,174,103,187,133,174,103,187,133,174,103,187,36,1,253,12,114,243,110,60,114,243,110,60,114,243,110,60,114,243,110,60,36,2,253,12,58,245,79,165,58,245,79,165,58,245,79,165,58,245,79,165,36,3,253,12,127,82,14,81,127,82,14,81,127,82,14,81,127,82,14,81,36,4,253,12,140,104,5,155,140,104,5,155,140,104,5,155,140,104,5,155,36,5,253,12,171,217,131,31,171,217,131,31,171,217,131,31,171,217,131,31,36,6,253,12,25,205,224,91,25,205,224,91,25,205,224,91,25,205,224,91,36,7,253,12,103,230,9,106,103,230,9,106,103,230,9,106,103,230,9,106,36,8,253,12,133,174,103,187,133,174,103,187,133,174,103,187,133,174,103,187,36,9,253,12,114,243,110,60,114,243,110,60,114,243,110,60,114,243,110,60,36,10,253,12,58,245,79,165,58,245,79,165,58,245,79,165,58,245,79,165,36,11,253,12,127,82,14,81,127,82,14,81,127,82,14,81,127,82,14,81,36,12,253,12,140,104,5,155,140,104,5,155,140,104,5,155,140,104,5,155,36,13,253,12,171,217,131,31,171,217,131,31,171,217,131,31,171,217,131,31,36,14,253,12,25,205,224,91,25,205,224,91,25,205,224,91,25,205,224,91,36,15,65,0,36,18,3,64,35,18,65,192,0,72,4,64,35,18,65,16,72,4,123,2,123,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,2,123,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,65,2,107,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,2,65,17,253,173,1,32,2,65,15,253,171,1,253,80,32,2,65,19,253,173,1,32,2,65,13,253,171,1,253,80,253,81,32,2,65,10,253,173,1,253,81,2,123,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,65,7,107,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,174,1,2,123,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,65,15,107,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,2,65,7,253,173,1,32,2,65,25,253,171,1,253,80,32,2,65,18,253,173,1,32,2,65,14,253,171,1,253,80,253,81,32,2,65,3,253,173,1,253,81,253,174,1,2,123,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,65,16,107,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,253,0,4,0,12,64,11,32,0,253,0,4,16,12,63,11,32,0,253,0,4,32,12,62,11,32,0,253,0,4,48,12,61,11,32,0,253,0,4,64,12,60,11,32,0,253,0,4,80,12,59,11,32,0,253,0,4,96,12,58,11,32,0,253,0,4,112,12,57,11,32,0,253,0,4,128,1,12,56,11,32,0,253,0,4,144,1,12,55,11,32,0,253,0,4,160,1,12,54,11,32,0,253,0,4,176,1,12,53,11,32,0,253,0,4,192,1,12,52,11,32,0,253,0,4,208,1,12,51,11,32,0,253,0,4,224,1,12,50,11,32,0,253,0,4,240,1,12,49,11,32,0,253,0,4,128,2,12,48,11,32,0,253,0,4,144,2,12,47,11,32,0,253,0,4,160,2,12,46,11,32,0,253,0,4,176,2,12,45,11,32,0,253,0,4,192,2,12,44,11,32,0,253,0,4,208,2,12,43,11,32,0,253,0,4,224,2,12,42,11,32,0,253,0,4,240,2,12,41,11,32,0,253,0,4,128,3,12,40,11,32,0,253,0,4,144,3,12,39,11,32,0,253,0,4,160,3,12,38,11,32,0,253,0,4,176,3,12,37,11,32,0,253,0,4,192,3,12,36,11,32,0,253,0,4,208,3,12,35,11,32,0,253,0,4,224,3,12,34,11,32,0,253,0,4,240,3,12,33,11,32,0,253,0,4,128,4,12,32,11,32,0,253,0,4,144,4,12,31,11,32,0,253,0,4,160,4,12,30,11,32,0,253,0,4,176,4,12,29,11,32,0,253,0,4,192,4,12,28,11,32,0,253,0,4,208,4,12,27,11,32,0,253,0,4,224,4,12,26,11,32,0,253,0,4,240,4,12,25,11,32,0,253,0,4,128,5,12,24,11,32,0,253,0,4,144,5,12,23,11,32,0,253,0,4,160,5,12,22,11,32,0,253,0,4,176,5,12,21,11,32,0,253,0,4,192,5,12,20,11,32,0,253,0,4,208,5,12,19,11,32,0,253,0,4,224,5,12,18,11,32,0,253,0,4,240,5,12,17,11,32,0,253,0,4,128,6,12,16,11,32,0,253,0,4,144,6,12,15,11,32,0,253,0,4,160,6,12,14,11,32,0,253,0,4,176,6,12,13,11,32,0,253,0,4,192,6,12,12,11,32,0,253,0,4,208,6,12,11,11,32,0,253,0,4,224,6,12,10,11,32,0,253,0,4,240,6,12,9,11,32,0,253,0,4,128,7,12,8,11,32,0,253,0,4,144,7,12,7,11,32,0,253,0,4,160,7,12,6,11,32,0,253,0,4,176,7,12,5,11,32,0,253,0,4,192,7,12,4,11,32,0,253,0,4,208,7,12,3,11,32,0,253,0,4,224,7,12,2,11,32,0,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,174,1,11,36,19,35,18,65,16,78,4,64,35,19,33,2,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,0,32,2,253,11,4,0,12,63,11,32,0,32,2,253,11,4,16,12,62,11,32,0,32,2,253,11,4,32,12,61,11,32,0,32,2,253,11,4,48,12,60,11,32,0,32,2,253,11,4,64,12,59,11,32,0,32,2,253,11,4,80,12,58,11,32,0,32,2,253,11,4,96,12,57,11,32,0,32,2,253,11,4,112,12,56,11,32,0,32,2,253,11,4,128,1,12,55,11,32,0,32,2,253,11,4,144,1,12,54,11,32,0,32,2,253,11,4,160,1,12,53,11,32,0,32,2,253,11,4,176,1,12,52,11,32,0,32,2,253,11,4,192,1,12,51,11,32,0,32,2,253,11,4,208,1,12,50,11,32,0,32,2,253,11,4,224,1,12,49,11,32,0,32,2,253,11,4,240,1,12,48,11,32,0,32,2,253,11,4,128,2,12,47,11,32,0,32,2,253,11,4,144,2,12,46,11,32,0,32,2,253,11,4,160,2,12,45,11,32,0,32,2,253,11,4,176,2,12,44,11,32,0,32,2,253,11,4,192,2,12,43,11,32,0,32,2,253,11,4,208,2,12,42,11,32,0,32,2,253,11,4,224,2,12,41,11,32,0,32,2,253,11,4,240,2,12,40,11,32,0,32,2,253,11,4,128,3,12,39,11,32,0,32,2,253,11,4,144,3,12,38,11,32,0,32,2,253,11,4,160,3,12,37,11,32,0,32,2,253,11,4,176,3,12,36,11,32,0,32,2,253,11,4,192,3,12,35,11,32,0,32,2,253,11,4,208,3,12,34,11,32,0,32,2,253,11,4,224,3,12,33,11,32,0,32,2,253,11,4,240,3,12,32,11,32,0,32,2,253,11,4,128,4,12,31,11,32,0,32,2,253,11,4,144,4,12,30,11,32,0,32,2,253,11,4,160,4,12,29,11,32,0,32,2,253,11,4,176,4,12,28,11,32,0,32,2,253,11,4,192,4,12,27,11,32,0,32,2,253,11,4,208,4,12,26,11,32,0,32,2,253,11,4,224,4,12,25,11,32,0,32,2,253,11,4,240,4,12,24,11,32,0,32,2,253,11,4,128,5,12,23,11,32,0,32,2,253,11,4,144,5,12,22,11,32,0,32,2,253,11,4,160,5,12,21,11,32,0,32,2,253,11,4,176,5,12,20,11,32,0,32,2,253,11,4,192,5,12,19,11,32,0,32,2,253,11,4,208,5,12,18,11,32,0,32,2,253,11,4,224,5,12,17,11,32,0,32,2,253,11,4,240,5,12,16,11,32,0,32,2,253,11,4,128,6,12,15,11,32,0,32,2,253,11,4,144,6,12,14,11,32,0,32,2,253,11,4,160,6,12,13,11,32,0,32,2,253,11,4,176,6,12,12,11,32,0,32,2,253,11,4,192,6,12,11,11,32,0,32,2,253,11,4,208,6,12,10,11,32,0,32,2,253,11,4,224,6,12,9,11,32,0,32,2,253,11,4,240,6,12,8,11,32,0,32,2,253,11,4,128,7,12,7,11,32,0,32,2,253,11,4,144,7,12,6,11,32,0,32,2,253,11,4,160,7,12,5,11,32,0,32,2,253,11,4,176,7,12,4,11,32,0,32,2,253,11,4,192,7,12,3,11,32,0,32,2,253,11,4,208,7,12,2,11,32,0,32,2,253,11,4,224,7,12,1,11,32,0,32,2,253,11,4,240,7,11,11,35,15,35,12,34,2,65,6,253,173,1,32,2,65,26,253,171,1,253,80,32,2,65,11,253,173,1,32,2,65,21,253,171,1,253,80,253,81,32,2,65,25,253,173,1,32,2,65,7,253,171,1,253,80,253,81,253,174,1,35,12,34,2,35,13,253,78,32,2,253,77,35,14,253,78,253,81,253,174,1,2,123,35,24,33,4,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,35,18,14,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,11,32,4,253,0,4,0,12,64,11,32,4,253,0,4,16,12,63,11,32,4,253,0,4,32,12,62,11,32,4,253,0,4,48,12,61,11,32,4,253,0,4,64,12,60,11,32,4,253,0,4,80,12,59,11,32,4,253,0,4,96,12,58,11,32,4,253,0,4,112,12,57,11,32,4,253,0,4,128,1,12,56,11,32,4,253,0,4,144,1,12,55,11,32,4,253,0,4,160,1,12,54,11,32,4,253,0,4,176,1,12,53,11,32,4,253,0,4,192,1,12,52,11,32,4,253,0,4,208,1,12,51,11,32,4,253,0,4,224,1,12,50,11,32,4,253,0,4,240,1,12,49,11,32,4,253,0,4,128,2,12,48,11,32,4,253,0,4,144,2,12,47,11,32,4,253,0,4,160,2,12,46,11,32,4,253,0,4,176,2,12,45,11,32,4,253,0,4,192,2,12,44,11,32,4,253,0,4,208,2,12,43,11,32,4,253,0,4,224,2,12,42,11,32,4,253,0,4,240,2,12,41,11,32,4,253,0,4,128,3,12,40,11,32,4,253,0,4,144,3,12,39,11,32,4,253,0,4,160,3,12,38,11,32,4,253,0,4,176,3,12,37,11,32,4,253,0,4,192,3,12,36,11,32,4,253,0,4,208,3,12,35,11,32,4,253,0,4,224,3,12,34,11,32,4,253,0,4,240,3,12,33,11,32,4,253,0,4,128,4,12,32,11,32,4,253,0,4,144,4,12,31,11,32,4,253,0,4,160,4,12,30,11,32,4,253,0,4,176,4,12,29,11,32,4,253,0,4,192,4,12,28,11,32,4,253,0,4,208,4,12,27,11,32,4,253,0,4,224,4,12,26,11,32,4,253,0,4,240,4,12,25,11,32,4,253,0,4,128,5,12,24,11,32,4,253,0,4,144,5,12,23,11,32,4,253,0,4,160,5,12,22,11,32,4,253,0,4,176,5,12,21,11,32,4,253,0,4,192,5,12,20,11,32,4,253,0,4,208,5,12,19,11,32,4,253,0,4,224,5,12,18,11,32,4,253,0,4,240,5,12,17,11,32,4,253,0,4,128,6,12,16,11,32,4,253,0,4,144,6,12,15,11,32,4,253,0,4,160,6,12,14,11,32,4,253,0,4,176,6,12,13,11,32,4,253,0,4,192,6,12,12,11,32,4,253,0,4,208,6,12,11,11,32,4,253,0,4,224,6,12,10,11,32,4,253,0,4,240,6,12,9,11,32,4,253,0,4,128,7,12,8,11,32,4,253,0,4,144,7,12,7,11,32,4,253,0,4,160,7,12,6,11,32,4,253,0,4,176,7,12,5,11,32,4,253,0,4,192,7,12,4,11,32,4,253,0,4,208,7,12,3,11,32,4,253,0,4,224,7,12,2,11,32,4,253,0,4,240,7,12,1,11,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,174,1,35,19,253,174,1,36,16,35,8,34,2,65,2,253,173,1,32,2,65,30,253,171,1,253,80,32,2,65,13,253,173,1,32,2,65,19,253,171,1,253,80,253,81,32,2,65,22,253,173,1,32,2,65,10,253,171,1,253,80,253,81,35,8,34,2,35,9,34,3,253,78,32,2,35,10,34,2,253,78,253,81,32,3,32,2,253,78,253,81,253,174,1,36,17,35,14,36,15,35,13,36,14,35,12,36,13,35,11,35,16,253,174,1,36,12,35,10,36,11,35,9,36,10,35,8,36,9,35,16,35,17,253,174,1,36,8,35,18,65,1,106,36,18,12,1,11,11,35,0,35,8,253,174,1,36,0,35,1,35,9,253,174,1,36,1,35,2,35,10,253,174,1,36,2,35,3,35,11,253,174,1,36,3,35,4,35,12,253,174,1,36,4,35,5,35,13,253,174,1,36,5,35,6,35,14,253,174,1,36,6,35,7,35,15,253,174,1,36,7,16,21,32,1,35,0,253,27,0,16,16,54,2,0,32,1,35,1,253,27,0,16,16,54,2,4,32,1,35,2,253,27,0,16,16,54,2,8,32,1,35,3,253,27,0,16,16,54,2,12,32,1,35,4,253,27,0,16,16,54,2,16,32,1,35,5,253,27,0,16,16,54,2,20,32,1,35,6,253,27,0,16,16,54,2,24,32,1,35,7,253,27,0,16,16,54,2,28,32,1,35,0,253,27,1,16,16,54,2,32,32,1,35,1,253,27,1,16,16,54,2,36,32,1,35,2,253,27,1,16,16,54,2,40,32,1,35,3,253,27,1,16,16,54,2,44,32,1,35,4,253,27,1,16,16,54,2,48,32,1,35,5,253,27,1,16,16,54,2,52,32,1,35,6,253,27,1,16,16,54,2,56,32,1,35,7,253,27,1,16,16,54,2,60,32,1,65,64,107,35,0,253,27,2,16,16,54,2,0,32,1,35,1,253,27,2,16,16,54,2,68,32,1,35,2,253,27,2,16,16,54,2,72,32,1,35,3,253,27,2,16,16,54,2,76,32,1,35,4,253,27,2,16,16,54,2,80,32,1,35,5,253,27,2,16,16,54,2,84,32,1,35,6,253,27,2,16,16,54,2,88,32,1,35,7,253,27,2,16,16,54,2,92,32,1,35,0,253,27,3,16,16,54,2,96,32,1,35,1,253,27,3,16,16,54,2,100,32,1,35,2,253,27,3,16,16,54,2,104,32,1,35,3,253,27,3,16,16,54,2,108,32,1,35,4,253,27,3,16,16,54,2,112,32,1,35,5,253,27,3,16,16,54,2,116,32,1,35,6,253,27,3,16,16,54,2,120,32,1,35,7,253,27,3,16,16,54,2,124,11,207,2,1,4,127,65,0,36,47,3,64,35,47,65,16,73,4,64,35,47,65,2,116,34,1,65,1,106,33,2,35,53,32,1,65,2,116,106,32,1,65,3,106,34,3,35,55,34,4,106,45,0,0,32,1,32,4,106,45,0,0,65,24,116,32,2,32,4,106,45,0,0,65,16,116,114,32,1,65,2,106,34,1,32,4,106,45,0,0,65,8,116,114,114,54,2,0,35,53,32,2,65,2,116,106,35,55,34,2,35,47,65,16,106,65,2,116,34,4,65,3,106,106,45,0,0,32,2,32,4,106,45,0,0,65,24,116,32,4,65,1,106,32,2,106,45,0,0,65,16,116,114,32,4,65,2,106,32,2,106,45,0,0,65,8,116,114,114,54,2,0,35,53,32,1,65,2,116,106,35,55,34,1,35,47,65,32,106,65,2,116,34,2,65,3,106,106,45,0,0,32,1,32,2,106,45,0,0,65,24,116,32,2,65,1,106,32,1,106,45,0,0,65,16,116,114,32,2,65,2,106,32,1,106,45,0,0,65,8,116,114,114,54,2,0,35,53,32,3,65,2,116,106,35,55,34,1,35,47,65,48,106,65,2,116,34,2,65,3,106,106,45,0,0,32,1,32,2,106,45,0,0,65,24,116,32,2,65,1,106,32,1,106,45,0,0,65,16,116,114,32,2,65,2,106,32,1,106,45,0,0,65,8,116,114,114,54,2,0,35,47,65,1,106,36,47,12,1,11,11,35,53,32,0,16,22,11,103,1,2,127,65,0,36,47,3,64,35,47,65,192,0,73,4,64,35,47,65,2,116,34,1,35,53,106,35,55,34,2,32,1,65,3,106,106,45,0,0,32,1,32,2,106,45,0,0,65,24,116,32,1,65,1,106,32,2,106,45,0,0,65,16,116,114,32,1,65,2,106,32,2,106,45,0,0,65,8,116,114,114,54,2,0,35,47,65,1,106,36,47,12,1,11,11,35,53,32,0,16,22,11,63,0,16,12,65,196,10,40,2,0,36,29,65,148,13,40,2,0,36,30,65,192,0,16,10,36,50,35,50,36,51,65,128,8,16,10,36,52,35,52,36,53,65,128,4,16,10,36,54,35,54,36,55,65,32,16,10,36,56,35,56,36,57,11,11,227,7,22,0,65,140,8,11,2,28,1,0,65,152,8,11,136,2,1,0,0,0,0,1,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,144,235,108,80,164,247,163,249,190,242,120,113,198,0,65,172,10,11,1,44,0,65,184,10,11,21,4,0,0,0,16,0,0,0,32,4,0,0,32,4,0,0,0,1,0,0,64,0,65,220,10,11,2,28,1,0,65,232,10,11,136,2,1,0,0,0,0,1,0,0,152,47,138,194,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,243,155,193,193,105,155,100,134,71,254,240,198,237,225,15,84,242,12,36,111,52,233,79,190,132,201,108,30,65,185,97,250,136,249,22,82,81,198,242,109,90,142,168,101,252,25,176,199,158,217,185,195,49,18,154,160,234,14,231,43,35,177,253,176,62,53,199,213,186,105,48,95,109,151,203,143,17,15,90,253,238,30,220,137,182,53,10,4,122,11,222,157,202,244,88,22,91,93,225,134,62,127,0,128,137,8,55,50,234,7,165,55,149,171,111,16,97,64,23,241,214,140,13,109,59,170,205,55,190,187,192,218,59,97,131,99,163,72,219,49,233,2,11,167,92,209,111,202,250,26,82,49,132,51,49,149,26,212,110,144,120,67,109,242,145,156,195,189,171,204,158,230,160,201,181,60,182,47,83,198,65,199,210,163,126,35,7,104,75,149,164,118,29,25,76,0,65,252,12,11,1,44,0,65,136,13,11,21,4,0,0,0,16,0,0,0,112,5,0,0,112,5,0,0,0,1,0,0,64,0,65,172,13,11,1,44,0,65,184,13,11,35,2,0,0,0,28,0,0,0,73,0,110,0,118,0,97,0,108,0,105,0,100,0,32,0,108,0,101,0,110,0,103,0,116,0,104,0,65,220,13,11,1,60,0,65,232,13,11,45,2,0,0,0,38,0,0,0,126,0,108,0,105,0,98,0,47,0,97,0,114,0,114,0,97,0,121,0,98,0,117,0,102,0,102,0,101,0,114,0,46,0,116,0,115,0,65,156,14,11,1,60,0,65,168,14,11,47,2,0,0,0,40,0,0,0,65,0,108,0,108,0,111,0,99,0,97,0,116,0,105,0,111,0,110,0,32,0,116,0,111,0,111,0,32,0,108,0,97,0,114,0,103,0,101,0,65,220,14,11,1,60,0,65,232,14,11,37,2,0,0,0,30,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,116,0,99,0,109,0,115,0,46,0,116,0,115,0,65,156,15,11,1,60,0,65,168,15,11,37,2,0,0,0,30,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,116,0,108,0,115,0,102,0,46,0,116,0,115,0,65,252,15,11,1,60,0,65,136,16,11,43,2,0,0,0,36,0,0,0,73,0,110,0,100,0,101,0,120,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,114,0,97,0,110,0,103,0,101,0,65,188,16,11,1,44,0,65,200,16,11,33,2,0,0,0,26,0,0,0,126,0,108,0,105,0,98,0,47,0,97,0,114,0,114,0,97,0,121,0,46,0,116,0,115]); diff --git a/packages/as-sha256/test/perf/index.test.ts b/packages/as-sha256/test/perf/index.test.ts index dfcd296e..cc57ffcb 100644 --- a/packages/as-sha256/test/perf/index.test.ts +++ b/packages/as-sha256/test/perf/index.test.ts @@ -8,7 +8,7 @@ import * as sha256 from "../../src"; // ✓ digest 50023 times 27.31207 ops/s 36.61385 ms/op x0.999 1624 runs 60.0 s describe("digestTwoHashObjects vs digest64 vs digest", () => { setBenchOpts({ - minMs: 60000, + minMs: 160000, }); const input = Buffer.from("gajindergajindergajindergajindergajindergajindergajindergajinder", "utf8"); diff --git a/packages/as-sha256/test/perf/simd.test.ts b/packages/as-sha256/test/perf/simd.test.ts new file mode 100644 index 00000000..051b5482 --- /dev/null +++ b/packages/as-sha256/test/perf/simd.test.ts @@ -0,0 +1,31 @@ +import { itBench, setBenchOpts } from "@dapplion/benchmark"; +import * as sha256 from "../../src"; +import {byteArrayToHashObject} from "../../src/hashObject"; + +describe("digest64 vs hash4Inputs vs hash8HashObjects", function () { + this.timeout(0); + + setBenchOpts({ + minMs: 10_000, + }); + + const input = Buffer.from("gajindergajindergajindergajindergajindergajindergajindergajinder", "utf8"); + // total number of time running hash for 200000 balances + const iterations = 50023; + itBench(`digest64 ${iterations} times`, () => { + for (let j = 0; j < iterations; j++) sha256.digest64(input); + }); + + // hash4Inputs do 4 sha256 in parallel + const iterations2 = Math.floor(iterations / 4); + itBench(`hash ${iterations * 4} times using hash4Inputs`, () => { + for (let j = 0; j < iterations; j++) sha256.hash4Inputs(input, input, input, input); + }); + + const hashObject = byteArrayToHashObject(Buffer.from("gajindergajindergajindergajinder", "utf8")); + const hashInputs = Array.from({length: 8}, () => hashObject); + // hash8HashObjects do 4 sha256 in parallel + itBench(`hash ${iterations * 4} times using hash8HashObjects`, () => { + for (let j = 0; j < iterations; j++) sha256.hash8HashObjects(hashInputs); + }); +}); \ No newline at end of file diff --git a/packages/as-sha256/test/unit/simd.test.ts b/packages/as-sha256/test/unit/simd.test.ts new file mode 100644 index 00000000..410f953d --- /dev/null +++ b/packages/as-sha256/test/unit/simd.test.ts @@ -0,0 +1,47 @@ +import {expect} from "chai"; +import crypto from "crypto"; +import {byteArrayToHashObject, hashObjectToByteArray} from "../../src/hashObject"; +import * as sha256 from "../../src"; + +describe("Test SIMD implementation of as-sha256", () => { + it("testHash4Inputs", () => { + const input1 = "gajindergajindergajindergajinder"; + const input2 = "gajindergajindergajindergajinder"; + const input = Buffer.from(input1 + input2, "utf8"); + const outputs = sha256.hash4Inputs(input, input, input, input); + const expectedOutput = new Uint8Array([ + 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, + 131, 72, 178, 215, 235, 20, 207, 110, + ]); + for (let i = 0; i < 4; i++) { + expect(outputs[i]).to.be.deep.equal(expectedOutput, "incorrect hash4Inputs result " + i); + } + }); + + it("testHash4Inputs 1000 times", () => { + for (let i = 0; i < 1000; i++) { + const input = crypto.randomBytes(64); + const outputs = sha256.hash4Inputs(input, input, input, input); + const expectedOutput = sha256.digest64(input); + expect(outputs[0]).to.be.deep.equal(expectedOutput); + expect(outputs[1]).to.be.deep.equal(expectedOutput); + expect(outputs[2]).to.be.deep.equal(expectedOutput); + expect(outputs[3]).to.be.deep.equal(expectedOutput); + } + }); + + it("testHash4HashObjects", () => { + const input1 = "gajindergajindergajindergajinder"; + const inputHashObject = byteArrayToHashObject(Buffer.from(input1, "utf8")); + const outputs = sha256.hash8HashObjects(Array.from({length: 8}, () => inputHashObject)); + const expectedOutput = new Uint8Array([ + 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, + 131, 72, 178, 215, 235, 20, 207, 110, + ]); + for (let i = 0; i < 4; i++) { + const output = new Uint8Array(32); + hashObjectToByteArray(outputs[i], output, 0); + expect(output).to.be.deep.equal(expectedOutput, "incorrect hash4Inputs result " + i); + } + }); +});