diff --git a/NOTICE b/NOTICE index da2cb563d4..7b324535f7 100644 --- a/NOTICE +++ b/NOTICE @@ -91,3 +91,14 @@ the following terms: Copyright (c) Arm Limited The MIT License (https://opensource.org/licenses/MIT) + +* xjb-as: https://github.com/JairusSW/xjb-as + + The ECMAScript-compatible f64/f32 -> string (dtoa/ftoa) implementation in + std/assembly/util/dtoa.ts is vendored from xjb-as. + + Copyright (c) Jairus Tanaka + Apache License, Version 2.0 (https://opensource.org/licenses/Apache-2.0) + + xjb-as is itself derived from xjb (https://github.com/xjb714/xjb) and the + Zmij shortest-decimal core (https://github.com/vitaut/zmij). diff --git a/package.json b/package.json index 869f93b294..e209ef68d8 100644 --- a/package.json +++ b/package.json @@ -79,9 +79,10 @@ "build": "node scripts/build", "watch": "node scripts/build --watch", "coverage": "npx c8 -- npm test", - "test": "npm run test:parser && npm run test:compiler -- --parallel && npm run test:browser && npm run test:asconfig && npm run test:transform && npm run test:cli", + "test": "npm run test:parser && npm run test:compiler -- --parallel && npm run test:dtoa && npm run test:browser && npm run test:asconfig && npm run test:transform && npm run test:cli", "test:parser": "node --enable-source-maps tests/parser", "test:compiler": "node --enable-source-maps --no-warnings tests/compiler", + "test:dtoa": "node tests/dtoa", "test:browser": "node --enable-source-maps tests/browser", "test:asconfig": "cd tests/asconfig && npm run test", "test:transform": "npm run test:transform:esm && npm run test:transform:cjs", diff --git a/std/assembly/util/dtoa.ts b/std/assembly/util/dtoa.ts new file mode 100644 index 0000000000..27725434b3 --- /dev/null +++ b/std/assembly/util/dtoa.ts @@ -0,0 +1,1080 @@ +import { CharCode, POWERS10 } from "./string"; +import { DIGITS, MAX_DOUBLE_LENGTH } from "./number"; + +// Fixed-point log significands shared by the dec-exp / binary-exp estimates below. +@lazy @inline const LOG10_2_SIGNIFICAND = 0x4D105; // ~(log10(2) * 2**20) +@lazy const LOG10_2_EXP = 20; +@lazy @inline const LOG2_POW10_SIGNIFICAND = 0x3526B; // ~(log2(10) * 2**16) +@lazy const LOG2_POW10_EXP = 16; + +@lazy @inline const DIV10_EXP = 10; +@lazy const DIV10_SIG: u64 = (1 << DIV10_EXP) / 10 + 1; +@lazy @inline const NEG10: u64 = (1 << 8) - 10; + +@lazy @inline const DIV100_EXP = 19; +@lazy const DIV100_SIG: u64 = (1 << DIV100_EXP) / 100 + 1; +@lazy @inline const NEG100: u64 = (1 << 16) - 100; + +@lazy @inline const DIV10K_EXP = 40; +@lazy const DIV10K_SIG: u64 = ((1) << DIV10K_EXP) / 10000 + 1; +@lazy @inline const NEG10K: u64 = ((1) << 32) - 10000; + +@lazy @inline export const BCD_ZEROS: u64 = 0x3030303030303030; + +@lazy @inline export const DOUBLE_EXP_OFFSET = 1075; // exp_bias(1023) + num_sig_bits(52) +@lazy export const DOUBLE_SIGNIFICAND_SIZE = 52; // explicit mantissa bits +@lazy @inline export const DOUBLE_HIDDEN_BIT: u64 = (1) << DOUBLE_SIGNIFICAND_SIZE; // implicit leading 1 +@lazy export const DOUBLE_SIGNIFICAND_MASK: u64 = DOUBLE_HIDDEN_BIT - 1; +@lazy @inline export const EXTRA_SHIFT = 6; +@lazy export const BIASED_HALF: u64 = ((1) << 63) + 6; +@lazy @inline export const DOUBLE_MAX_DIGITS10 = 17; +// Fixed notation when decExp (= decimal-point position - 1) is in [-6, 20]. +@lazy @inline export const MIN_FIXED_DEC_EXP = -6; +@lazy export const MAX_FIXED_DEC_EXP = 20; + +// Compact pow10 (Dougall Johnson's method, ported from vitaut/zmij) +// 10**i = top-128-bits(major[(i+10)/28] * minor[(i+10)%28]) minus a per-power round-down bit. + +// 23 full 128-bit anchors (hi, lo) spaced every 28 powers, covering 10**-303..10**313. +// @ts-ignore: decorator +@lazy @inline const POW10_MAJOR = memory.data([ + 0xaf8e5410288e1b6f, 0x07ecf0ae5ee44dda, 0xb1442798f49ffb4a, 0x99cd11cfdf41779d, + 0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa15, 0xb4bca50b065abe63, 0x0fed077a756b53aa, + 0xb67f6455292cbf08, 0x1a3bc84c17b1d543, 0xb84687c269ef3bfb, 0x3d5d514f40eea742, + 0xba121a4650e4ddeb, 0x92f34d62616ce413, 0xbbe226efb628afea, 0x890489f70a55368c, + 0xbdb6b8e905cb600f, 0x5400e987bbc1c921, 0xbf8fdb78849a5f96, 0xde98520472bdd034, + 0xc16d9a0095928a27, 0x75b7053c0f178294, 0xc350000000000000, 0x0000000000000000, + 0xc5371912364ce305, 0x6c28000000000000, 0xc722f0ef9d80aad6, 0x424d3ad2b7b97ef6, + 0xc913936dd571c84c, 0x03bc3a19cd1e38ea, 0xcb090c8001ab551c, 0x5cadf5bfd3072cc6, + 0xcd036837130890a1, 0x36dba887c37a8c10, 0xcf02b2c21207ef2e, 0x94f967e45e03f4bc, + 0xd106f86e69d785c7, 0xe13336d701beba52, 0xd31045a8341ca07c, 0x1ede48111209a051, + 0xd51ea6fa85785631, 0x552a74227f3ea566, 0xd732290fbacaf133, 0xa97c177947ad4096, + 0xd94ad8b1c7380874, 0x18375281ae7822bc, +]); + +// One round-down fixup bit per power: bit (i & 31) of word (i >> 5) is subtracted +// from the reconstructed low limb. 20 words cover all 618 powers. +// @ts-ignore: decorator +@lazy @inline const POW10_FIXUPS = memory.data([ + 0x0a4e363f, 0x00001840, 0x00006400, 0x24200040, 0x00000000, + 0x0c000000, 0x82c81380, 0x5e4ce01f, 0xd730f60f, 0x0000001b, + 0x00000000, 0xcdf7fffc, 0x6e8201d8, 0x40cd3fd1, 0xdb642501, + 0x00000d0d, 0x14042400, 0x53713840, 0x11781db4, 0x00000000, +]); + +// Normalized powers shared by the f32 fast path, the f64 fast path, and +// the compact cache reconstruction. The first 45 limbs are high for powers +// 10^27 through 10^-17; the last eight are low for 10^-1 through 10^-8. +// A high limb is rounded up exactly when its low limb is nonzero. +// @ts-ignore: decorator +@lazy @inline const POW10_SHARED = memory.data([ + 0xcecb8f27f4200f3a, 0xa56fa5b99019a5c8, 0x84595161401484a0, 0xd3c21bcecceda100, + 0xa968163f0a57b400, 0x878678326eac9000, 0xd8d726b7177a8000, 0xad78ebc5ac620000, + 0x8ac7230489e80000, 0xde0b6b3a76400000, 0xb1a2bc2ec5000000, 0x8e1bc9bf04000000, + 0xe35fa931a0000000, 0xb5e620f480000000, 0x9184e72a00000000, 0xe8d4a51000000000, + 0xba43b74000000000, 0x9502f90000000000, 0xee6b280000000000, 0xbebc200000000000, + 0x9896800000000000, 0xf424000000000000, 0xc350000000000000, 0x9c40000000000000, + 0xfa00000000000000, 0xc800000000000000, 0xa000000000000000, 0x8000000000000000, + 0xcccccccccccccccd, 0xa3d70a3d70a3d70b, 0x83126e978d4fdf3c, 0xd1b71758e219652c, + 0xa7c5ac471b478424, 0x8637bd05af6c69b6, 0xd6bf94d5e57a42bd, 0xabcc77118461cefd, + 0x89705f4136b4a598, 0xdbe6fecebdedd5bf, 0xafebff0bcb24aaff, 0x8cbccc096f5088cc, + 0xe12e13424bb40e14, 0xb424dc35095cd810, 0x901d7cf73ab0acda, 0xe69594bec44de15c, + 0xb877aa3236a4b44a, 0xcccccccccccccccc, 0x3d70a3d70a3d70a3, 0x645a1cac083126e9, + 0xd3c36113404ea4a8, 0x0fcf80dc33721d53, 0xa63f9a49c2c1b10f, 0x3d32907604691b4c, + 0xfdc20d2b36ba7c3d +]); + +@lazy @inline const FLOAT_EXP_OFFSET = 150; // exp_bias(127) + num_sig_bits(23) +@lazy const FLOAT_SIGNIFICAND_SIZE = 23; // explicit mantissa bits +@lazy @inline const FLOAT_HIDDEN_BIT: u64 = (1) << FLOAT_SIGNIFICAND_SIZE; // implicit leading 1 +@lazy const FLOAT_SIGNIFICAND_MASK: u32 = (1 << FLOAT_SIGNIFICAND_SIZE) - 1; +@lazy @inline const FLOAT_BIT = 36; // xjb's fixed-point split for the f32 core +// xjb's c1, ASCII offset stripped so the `one` digit comes out numeric. +@lazy @inline const FLOAT_ONE_BIAS: u64 = ((1) << (FLOAT_BIT - 2)) - 7; + +@lazy @inline export const FLOAT_MAX_DIGITS10 = 9; + +// @ts-ignore: decorator +@lazy @inline export const SCRATCH = memory.data(128); + +// Shared results where the caller needs more than one return value. +@lazy export let gPow10Hi: u64 = 0; +@lazy let gBcdValue: u64 = 0; +@lazy export let gDigHi: u64 = 0; +@lazy export let gDigLo: u64 = 0; +@lazy export let gDigits: i32 = 0; +@lazy export let gSig: i64 = 0; +@lazy export let gExp: i32 = 0; +@lazy export let gLastDigit: i32 = 0; +@lazy export let gHasLastDigit: bool = false; + +// High 64 bits of the 128-bit product x * y. Matches umul128. +// @ts-ignore: decorator +@inline export function umul64hi(a: u64, b: u64): u64 { + let a0 = a & 0xffffffff + let a1 = a >> 32 + + let b0 = b & 0xffffffff + let b1 = b >> 32 + + let w0 = a0 * b0 + let t = a1 * b0 + (w0 >> 32) + let w1 = t & 0xffffffff + let w2 = t >> 32 + + w1 = a0 * b1 + w1 + + return a1 * b1 + w2 + (w1 >> 32) +} + +// Returns (x * y + c) >> 64. +// @ts-ignore: decorator +@inline export function umul64hiCarry(a: u64, b: u64, carry: u64): u64 { + let lo = a * b; + let hi = umul64hi(a, b); + return hi + u64(lo + carry < lo); +} + +// floor(log10(2**bin_exp)). (The f64 path only ever needs the regular form; the +// irregular 3/4 variant lives in ftoa.ts's own copy.) +// @ts-ignore: decorator +@inline export function toDecExponent(binExp: i32): i32 { + return (binExp * LOG10_2_SIGNIFICAND) >> LOG10_2_EXP; +} + +// Shift that keeps a fixed 128-bit fractional part after scaling by 10**dec_exp. +// @ts-ignore: decorator +@inline export function exponentShift(binExp: i32, decExp: i32): i32 { + let pow10BinExp = (-decExp * LOG2_POW10_SIGNIFICAND) >> LOG2_POW10_EXP; + return binExp + pow10BinExp + 1; +} + +// Rebuild the top 128 bits of 10**(i - 293) for table index i in [0,617]: +// major[(i+10)/28] * minor[(i+10)%28], normalized left if the top bit is clear, +// then the per-power fixup bit subtracted off the low limb. +// @ts-ignore: decorator +@inline function computePow10(i: i32): u64 { + if (i >= 285 && i <= 320) { + let t = 337 - i; + let hi = load(POW10_SHARED + ((t - 17) << 3)); + if (t <= 44) { + gPow10Hi = hi; + return 0; + } + let lo = load(POW10_SHARED + (t << 3)); + gPow10Hi = hi - 1; + return lo; + } + return computePow10Compact(i); +} + +// Shared cold path for powers outside the direct cache. +function computePow10Compact(i: i32): u64 { + let j = i + 10; + let major = (j * 293) >>> 13; // exact j / 28 for j in [10,627] + let minor = j - major * 28; + // The minor factors are POW10_SHARED[27..0] in reverse order. + let m = load(POW10_SHARED + ((27 - minor) << 3)); + let hoff = POW10_MAJOR + (major << 4); + let hHi = load(hoff); + let hLo = load(hoff, 8); + + // 192-bit product major * minor as c2:c1:c0, keep the top 128 bits (c2:c1). + let h1 = umul64hi(hLo, m); + let c0 = hLo * m; + let c1 = h1 + hHi * m; + let c2 = u64(c1 < h1) + umul64hi(hHi, m); + + let hi: u64, lo: u64; + if ((c2 >> 63) != 0) { + lo = c1; + hi = c2; + } else { + lo = (c1 << 1) | (c0 >> 63); + hi = (c2 << 1) | (c1 >> 63); + } + lo -= ((load(POW10_FIXUPS + ((i >> 5) << 2)) >> (i & 31)) & 1); + gPow10Hi = hi; + return lo; +} + +// value < 1e8 -> 8 packed BCD digits (SWAR: split by divide-by-constant +// reciprocals, halving the digits-per-lane each step). +// @ts-ignore: decorator +@inline function toBcd8Digits(value: u64): u64 { + // 12345678 -> two 4-digit groups, one per 32-bit lane: [1234][5678] + let quads = value + NEG10K * ((value * DIV10K_SIG) >> DIV10K_EXP); + // four 2-digit groups, one per 16-bit lane: [12][34][56][78] + let pairs = + quads + NEG100 * (((quads * DIV100_SIG) >> DIV100_EXP) & 0x7f0000007f); + // eight 1-digit groups, one per byte: [1][2][3][4][5][6][7][8] + let singles = + pairs + NEG10 * (((pairs * DIV10_SIG) >> DIV10_EXP) & 0xf000f000f000f); + // bswap to big-endian so the most-significant digit lands in the high byte + gBcdValue = bswap(singles); + return singles; +} + +function toBcd8(value: u64): i32 { + let singles = toBcd8Digits(value); + const BCD_LENGTH_BIAS = 70; // 64 bits, one sentinel bit, and a six-bit rounding offset + return ((BCD_LENGTH_BIAS - clz((singles << 1) | 1)) / 8); +} + +// Four 4-digit lanes -> 16 BCD bytes (byte i = 10**i digit). +// @ts-ignore: decorator +@inline function toBcd4x4(y: v128): v128 { + // Products fit in their lanes because y <= 9999 and each pair <= 99. + let hundreds = i32x4.shr_u(i32x4.mul(y, i32x4.splat(5243)), 19); + let pairs = i32x4.add(y, i32x4.mul(hundreds, i32x4.splat(65436))); + let tens = i16x8.shr_u(i16x8.mul(pairs, i16x8.splat(103)), 10); + return i16x8.add(pairs, i16x8.mul(tens, i16x8.splat(246))); +} + +// Pack the low 32 bits of each i64 lane into adjacent i32 lanes 0,1 (zero the +// rest), so a single-input swizzle replaces a two-input shuffle. +// @ts-ignore: decorator +@inline function packLo32(v: v128): v128 { + return v128.swizzle(v, i8x16( + 0, 1, 2, 3, 8, 9, 10, 11, + -128, -128, -128, -128, -128, -128, -128, -128 + )); +} + +// SIMD version of toDigits64: builds all 16 ASCII digits in one pass. +// @ts-ignore: decorator +@inline function toDigits64Simd(value: u64, countDigits: bool = true): void { + let revOrder = i8x16(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); + + let hi = value / 100000000; + let lo = value - hi * 100000000; + + let x = i64x2.replace_lane(i64x2.splat(lo), 1, hi); + + let q = i64x2.shr_u( + i64x2.extmul_low_i32x4_u(packLo32(x), i32x4.splat(DIV10K_SIG)), + DIV10K_EXP + ); + let sub = i64x2.extmul_low_i32x4_u(packLo32(q), i32x4.splat(-10000)); + let y = i64x2.add(x, sub); + + let bcd = toBcd4x4(y); + + if (countDigits) { + let mask = i8x16.bitmask(i8x16.gt_s(bcd, i8x16.splat(0))); + gDigits = 32 - clz(mask); // mask is never 0 (significand >= 1) + } + + let ascii = v128.or( + v128.swizzle(bcd, revOrder), + i8x16.splat(CharCode._0) + ); + gDigHi = i64x2.extract_lane(ascii, 0); + gDigLo = i64x2.extract_lane(ascii, 1); +} + +// SWAR version of toDigits64: two register-parallel to_bcd8 passes over u64. +// @ts-ignore: decorator +@inline function toDigits64Swar(value: u64, fixed16: bool = false): void { + let hi = value / 100000000; + let lo = value - hi * 100000000; + + if (fixed16) { + toBcd8Digits(hi); + let hiBcd = gBcdValue; + toBcd8Digits(lo); + gDigHi = hiBcd + BCD_ZEROS; + gDigLo = gBcdValue + BCD_ZEROS; + return; + } + + let hiLen = toBcd8(hi); + + let hiBcd = gBcdValue; + + if (lo == 0) { + gDigHi = hiBcd + BCD_ZEROS; + gDigLo = BCD_ZEROS; + gDigits = hiLen + 8; + return; + } + + let loLen = toBcd8(lo); + + gDigHi = hiBcd + BCD_ZEROS; + gDigLo = gBcdValue + BCD_ZEROS; + gDigits = hi == 0 ? loLen : hiLen + 8; +} + +// @ts-ignore: decorator +@inline export function toDigits64(value: u64): void { + if (ASC_FEATURE_SIMD) { + toDigits64Simd(value); + } else { + toDigits64Swar(value); + } +} + +// Pack a zero-padded 16-digit block without computing the logical length. +// @ts-ignore: decorator +@inline function toDigits64Fixed16(value: u64): void { + if (ASC_FEATURE_SIMD) toDigits64Simd(value, false); + else toDigits64Swar(value, true); +} + +// Eight packed ASCII digits in a u64 -> 8 UTF-16 code units (16 bytes) at +// `p + off`. SIMD zero-extends the bytes to u16 lanes in one store. +// @ts-ignore: decorator +@inline export function writeUnpacked8(p: usize, ascii: u64, off: usize = 0): void { + let base = p + off; + if (ASC_FEATURE_SIMD) { + v128.store(base, i16x8.extend_low_i8x16_u(i64x2.splat(ascii))); + } else { + let lo = ascii & 0xffffffff; + let hi = ascii >> 32; + lo = (lo | (lo << 16)) & 0x0000ffff0000ffff; + hi = (hi | (hi << 16)) & 0x0000ffff0000ffff; + lo = (lo | (lo << 8)) & 0x00ff00ff00ff00ff; + hi = (hi | (hi << 8)) & 0x00ff00ff00ff00ff; + store(base, lo); + store(base, hi, 8); + } +} + +// ECMAScript spellings for the non-finite cases. +// @ts-ignore: decorator +@inline export function writeNaN(buf: usize): usize { + store(buf, CharCode.N, 0); // 'N' + store(buf, CharCode.a, 2); // 'a' + store(buf, CharCode.N, 4); // 'N' + return buf + 6; +} + +// @ts-ignore: decorator +@inline export function writeInfinity(buf: usize, neg: bool): usize { + if (neg) { + store(buf, CharCode.MINUS); // '-' + buf += 2; + } + writeUnpacked8(buf, 0x7974696e69666e49); // 'Infinity' + return buf + 16; +} + +// @ts-ignore: decorator +@inline function finishInteger(end: usize, dotZero: bool): usize { + if (dotZero) { + store(end, CharCode.DOT); + store(end, CharCode._0, 2); + end += 4; + } + return end; +} + +// f64 fixed-notation layout: a full 16-digit block (gDigHi:gDigLo) plus a 17th +// digit (always, so no leading-'0' fold or bcdSize param like the f32 path). +// @ts-ignore: decorator +@inline function packedTrailingZeros16(high: u64, low: u64): i32 { + let count = (clz(low ^ BCD_ZEROS) >> 3); + if (count == 8) count += (clz(high ^ BCD_ZEROS) >> 3); + return count; +} + +// @ts-ignore: decorator +@inline export function writeFixed( + buf: usize, + start: usize, + decExp: i32, + hasLastDigit: bool, + dotZero: bool, +): usize { + if (decExp < 0) writeUnpacked8(start, BCD_ZEROS); + let lastDigitChar = (CharCode._0 + (hasLastDigit ? gLastDigit : 0)); + let numDigits = hasLastDigit ? 16 : 15; + let dHi = gDigHi; + let dLo = gDigLo; + + // decExp >= 16: integer rendered as significant digits then trailing zeros. + if (decExp >= 16) { + writeUnpacked8(buf, dHi); + writeUnpacked8(buf, dLo, 16); + store(buf + 32, lastDigitChar); + let endByte = buf + ((decExp + 1) << 1); + for (let z = buf + (17 << 1); z < endByte; z += 16) { + writeUnpacked8(z, BCD_ZEROS); + } + return finishInteger(endByte, dotZero); + } + + // Everything reaching here has a fractional part (exact integers < 1e16 are + // absorbed by writeUInt16 upstream), so n > decExp + 1 and output is "int.frac". + let n = numDigits + 1; + let endPos = decExp >= 0 ? n + 1 : n; + + // Branchless `decExp < 0 ? 1 - decExp : 0` (decExp >> 31 is all-ones if < 0). + let startPos = (1 - decExp) & (decExp >> 31); + + buf += startPos << 1; + writeUnpacked8(buf, dHi); + writeUnpacked8(buf, dLo, 16); + store(buf + 32, lastDigitChar); + + if (decExp >= 0) { + // Place '.' after k integer digits with no memmove: re-store the digits + // shifted right by k chars (fractional part at [k+1,...]), then drop '.' at k. + let k = decExp + 1; + let d16: u64 = lastDigitChar; + let s = k << 3; + let fHi: u64, fLo: u64; + if (s < 64) { + fHi = (dHi >> s) | (dLo << (64 - s)); + fLo = (dLo >> s) | (d16 << (64 - s)); + } else if (s == 64) { + fHi = dLo; + fLo = d16; + } else if (s < 128) { + let s2 = s - 64; + fHi = (dLo >> s2) | (d16 << (64 - s2)); + fLo = d16 >> s2; + } else { + fHi = d16; fLo = 0; + } + writeUnpacked8(buf + ((k + 1) << 1), fHi); + // fLo's window starts at char k + 9; skip it if the output ends before there. + if (endPos > k + 9) writeUnpacked8(buf + ((k + 9) << 1), fLo); + store(buf + (k << 1), CharCode.DOT); + } else { + store(start, CharCode.DOT, 2); // "0." prefix + } + + let end = buf + (endPos << 1); + if (decExp >= 0 && endPos == decExp + 1) return finishInteger(end, dotZero); + if (!hasLastDigit) end -= packedTrailingZeros16(dHi, dLo) << 1; + if (load(end - 2) == CharCode.DOT) { + if (dotZero) { + store(end, CharCode._0); + end += 2; + } else { + end -= 2; + } + } + return end; +} + +// Exponential-notation tail. Lays the mantissa "d.ddd" (single leading digit) +// then the "e +/- d" exponent. +// @ts-ignore: decorator +@inline export function writeExpNotation( + buf: usize, + start: usize, + decExp: i32, + hasLastDigit: bool, + hasExtraDigit: bool, + bcdSize: i32, +): usize { + buf += usize(hasExtraDigit) << 1; + writeUnpacked8(buf, gDigHi); + if (bcdSize == 16) writeUnpacked8(buf, gDigLo, 16); + store(buf + (bcdSize << 1), (CharCode._0 + gLastDigit)); + buf += (bcdSize + i32(hasLastDigit)) << 1; + if (!hasLastDigit) buf -= packedTrailingZeros16(gDigHi, gDigLo) << 1; + // Move the lead digit to pos 0, drop '.' at pos 1. + let lead: u32 = load(start, 2); + store(start, lead); + store(start, CharCode.DOT, 2); + buf -= usize(buf - 2 == start + 2) << 1; // drop a trailing point + return writeExponent(buf, decExp); +} + +// Writes "e +/- d" / "e +/- dd" / "e +/- ddd" exponent. +// @ts-ignore: decorator +@inline export function writeExponent(buf: usize, decExp: i32): usize { + let m = decExp >> 31; // all-ones if decExp < 0 + store(buf, CharCode.e); // 'e' + store(buf, CharCode.PLUS + (m & 2), 2); // '+' / '-' branchlessly + buf += 4; + let e = (decExp ^ m) - m; // abs(decExp) + if (e >= 100) { + let d = (e * DIV100_SIG) >> DIV100_EXP; // e / 100 + store(buf, CharCode._0 + d); + store(buf, load(DIGITS + ((e - d * 100) << alignof())), 2); + return buf + 6; + } + if (e >= 10) { + store(buf, load(DIGITS + (e << alignof()))); + return buf + 4; + } + store(buf, CharCode._0 + e); + return buf + 2; +} + +// @ts-ignore: decorator +@inline export function scratchString(byteLen: usize): string { + let str = changetype(__new(byteLen, idof())); + memory.copy(changetype(str), SCRATCH, byteLen); + return str; +} + +// @ts-ignore: decorator +@inline function setDecimalResult(integral: u64, one: u64, decExp: i32): void { + if (one == 10) { + gSig = (integral + 1); + gLastDigit = 0; + gHasLastDigit = false; + } else if (one == 0) { + gSig = integral; + gLastDigit = 0; + gHasLastDigit = false; + } else { + gSig = integral; + gLastDigit = one; + gHasLastDigit = true; + } + gExp = decExp; +} + +// Normal f64 -> shortest decimal. +// @ts-ignore: decorator +@inline function toDecimalDoubleNormal(binSig: u64, rawExp: i32, regular: bool): void { + let c = binSig | DOUBLE_HIDDEN_BIT; + let q = rawExp - DOUBLE_EXP_OFFSET; + + if (!regular) { + let decExp = (q * LOG10_2_SIGNIFICAND - 131072) >> LOG10_2_EXP; // 131072 = 2**17 rounding bias + let powExp = -decExp - 1; + let h = q + ((powExp * LOG2_POW10_SIGNIFICAND) >> LOG2_POW10_EXP); + + computePow10(powExp + 293); + let pow10Hi = gPow10Hi; + + let integral = pow10Hi >> (11 - h); + let halfUlp = pow10Hi >> (-h); + let dotOne = pow10Hi << (53 + h); + + let one = ((((dotOne >> (53 + h)) * 5) + (((1) << (9 - h)))) >> (10 - h)); + one = ((((dotOne >> 54) * 5) & 0x1ff) > ((halfUlp >> 55) * 5)) + ? ((((dotOne >> 54) * 5) >> 9) + 1) + : one; + one = dotOne == ((1) << 62) ? 2 : one; + one = (halfUlp >> 1) > dotOne ? 0 : one; + one = halfUlp > u64.MAX_VALUE - dotOne ? 10 : one; + + setDecimalResult(integral, one, decExp); + return; + } + + let decExp = ((rawExp - DOUBLE_EXP_OFFSET) * 78913) >> 18; // 78913/2**18 ~= log10(2) (Q18) + let powExp = -decExp - 1; + let h = q + ((powExp * LOG2_POW10_SIGNIFICAND) >> LOG2_POW10_EXP); + let shift = h + 1 + EXTRA_SHIFT; + + // xjb64 rounds up the negative-power low limb by one. + let pLo = computePow10(powExp + 293) + u64(powExp < 0); + let pHi = gPow10Hi; + let y = c << shift; + + let a = umul64hi(pHi, y); + let pLo64 = pHi * y; + let lo = pLo64 + umul64hi(pLo, y); + let pHi64 = a + u64(lo < pLo64); + + let integral = pHi64 >> EXTRA_SHIFT; + let dotOne = (pHi64 << (64 - EXTRA_SHIFT)) | (lo >> EXTRA_SHIFT); + let halfUlp = (pHi >> (-h)) + (1 - (c & 1)); + + let one = umul64hiCarry(dotOne, 10, dotOne == ((1) << 62) ? 0 : BIASED_HALF); + one = dotOne < halfUlp ? 0 : one; + one = u64.MAX_VALUE - dotOne < halfUlp ? 10 : one; + + setDecimalResult(integral, one, decExp); +} + +// bin_sig * 2**(raw_exp - exp_offset) -> shortest decimal. +// @ts-ignore: decorator +@inline export function toDecimalDouble(binSig: u64, rawExp: i32, regular: bool): void { + if (rawExp != 0) return toDecimalDoubleNormal(binSig, rawExp, regular); + + let decExp = toDecExponent(-1074); + let shift = exponentShift(-1074, decExp + 1) + EXTRA_SHIFT; + + let powExp = -decExp - 1; + let pLo = computePow10(powExp + 293) + u64(powExp < 0); + let pHi = gPow10Hi; + let y = binSig << shift; + + let a = umul64hi(pHi, y); + let pLo64 = pHi * y; + let lo = pLo64 + umul64hi(pLo, y); + let pHi64 = a + u64(lo < pLo64); + + let integral = pHi64 >> EXTRA_SHIFT; + let dotOne = (pHi64 << (64 - EXTRA_SHIFT)) | (lo >> EXTRA_SHIFT); + let halfUlp = (pHi >> (EXTRA_SHIFT + 1 - shift)) + (1 - (binSig & 1)); + + let one = umul64hiCarry(dotOne, 10, BIASED_HALF); + one = dotOne < halfUlp ? 0 : one; + one = u64.MAX_VALUE - dotOne < halfUlp ? 10 : one; + + setDecimalResult(integral, one, decExp); +} + +// @ts-ignore: decorator +@inline function decimalLen15(v: u64): i32 { + if (v < 100000000) { + if (v < 10000) { + if (v < 100) return 1 + i32(v >= 10); + return 3 + i32(v >= 1000); + } + if (v < 1000000) return 5 + i32(v >= 100000); + return 7 + i32(v >= 10000000); + } + if (v < 1000000000000) { + if (v < 10000000000) return 9 + i32(v >= 1000000000); + return 11 + i32(v >= 100000000000); + } + if (v < 100000000000000) return 13 + i32(v >= 10000000000000); + return 15; +} + +// @ts-ignore: decorator +@inline function decimalLen16(v: u64): i32 { + return v < 1000000000000000 ? decimalLen15(v) : 16; +} + +// @ts-ignore: decorator +@inline function writeUInt16(buf: usize, value: u64): usize { + let len = decimalLen16(value); + if (ASC_FEATURE_SIMD && value >= 100000000) { + toDigits64Fixed16(value); + let prefix = len - 8; + writeUnpacked8(buf, gDigHi >> ((8 - prefix) << 3)); + writeUnpacked8(buf + (prefix << 1), gDigLo); + return buf + (len << 1); + } + let p = buf + (len << 1); + let v = value; + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 100) { + let q = v / 100; + p -= 4; + store(p, load(DIGITS + ((v - q * 100) << alignof()))); + v = q; + } + if (v >= 10) { + store(buf, load(DIGITS + (v << alignof()))); + } else { + store(buf, CharCode._0 + v); + } + return buf + (len << 1); +} + +// @ts-ignore: decorator +@inline function normalizeDoubleShortest(): void { + let full = gSig * 10 + (gHasLastDigit ? gLastDigit : 0); + if (full >= 1000000000000000) { + gSig = full; + --gExp; + gLastDigit = 0; + gHasLastDigit = false; + return; + } + let scale = 16 - decimalLen15(full); + let mul = load(POWERS10 + (scale << 3)); + gSig = (full * mul); + gExp -= scale + 1; + gLastDigit = 0; + gHasLastDigit = false; +} + +// @ts-ignore: decorator +@inline function formatDecodedDouble(buf: usize, bits: u64, binExp: i32, binSig: u64, dotZero: bool): usize { + let neg = bits >> 63 != 0; + let threshold: u64 = 1000000000000000; + + // is_normal: 1 <= bin_exp <= 2046 + let isNormal = (binExp - 1) < 2046; + if (!isNormal) { + if (binExp != 0) { + if (binSig != 0) return writeNaN(buf); + return writeInfinity(buf, neg); + } + // +/-0 -> "0" + if (binSig == 0) { + store(buf, CharCode._0); + return finishInteger(buf + 2, dotZero); + } + } + + if (neg) { + store(buf, CharCode.MINUS); + buf += 2; + } + if (isNormal) { + let q = binExp - DOUBLE_EXP_OFFSET; + let c = binSig | DOUBLE_HIDDEN_BIT; + let intValue: u64 = 0; + if (q < 0) { + let shift = -q; + if (shift <= 52) { + let mask = ((1) << shift) - 1; + if ((c & mask) == 0) intValue = c >> shift; + } + } else if (q < 11) { + intValue = c << q; + if (intValue >= 10000000000000000) intValue = 0; + } + if (intValue != 0) return finishInteger(writeUInt16(buf, intValue), dotZero); + } + + if (isNormal) { + toDecimalDoubleNormal(binSig, binExp, binSig != 0); + } else { + toDecimalDouble(binSig, 0, true); + } + if (gSig < threshold) normalizeDoubleShortest(); + + let hasLastDigit = gHasLastDigit; + let decExp = gExp + 16; + let start = buf; + toDigits64Fixed16(gSig); + if (decExp >= MIN_FIXED_DEC_EXP && decExp <= MAX_FIXED_DEC_EXP) + return writeFixed(buf, start, decExp, hasLastDigit, dotZero); + return writeExpNotation(buf, start, decExp, hasLastDigit, true, 16); +} + +// @ts-ignore: decorator +@inline function formatDouble(buf: usize, value: f64, dotZero: bool): usize { + let bits = reinterpret(value); + let binExp = ((bits << 1) >> 53); + let binSig = bits & DOUBLE_SIGNIFICAND_MASK; + return formatDecodedDouble(buf, bits, binExp, binSig, dotZero); +} + +export function dtoa(value: f64): string { + let bits = reinterpret(value); + let exp = ((bits << 1) >> 53); + let sig = bits & DOUBLE_SIGNIFICAND_MASK; + + if (exp == 2047) { + if (sig != 0) return "NaN"; + return bits >> 63 != 0 ? "-Infinity" : "Infinity"; + } + if ((bits << 1) == 0) return "0"; + + return scratchString(formatDecodedDouble(SCRATCH, bits, exp, sig, false) - SCRATCH); +} + +export function dtoa_buffered(buffer: usize, value: f64): u32 { + return ((formatDouble(buffer, value, true) - buffer) >> 1); +} + +// @ts-ignore: decorator +@inline function toDigits32Simd(value: u64): void { + // two 4-digit groups, one per 32-bit lane: [1234][5678] (rest split in SIMD) + let quads = value + NEG10K * ((value * DIV10K_SIG) >> DIV10K_EXP); + let x = i64x2.replace_lane(i64x2.splat(quads), 1, 0); + let bcd = toBcd4x4(x); // bytes 0-7 = 10**0..10**7 digits + let low = i64x2.extract_lane(bcd, 0); + gDigHi = bswap(low) + BCD_ZEROS; + gDigits = ((70 - clz((low << 1) | 1)) / 8); +} + +// to_digits<32>: a single u64 of 8 ASCII digits (value < 1e8). +// @ts-ignore: decorator +@inline export function toDigits32(value: u64): void { + if (ASC_FEATURE_SIMD) { + toDigits32Simd(value); + } else { + let length = toBcd8(value); + gDigHi = gBcdValue + BCD_ZEROS; + gDigits = length; + } +} + +// Fixed-notation tail: 8-digit significand block (gDigHi) plus an optional 9th +// ("extra") digit. +// @ts-ignore: decorator +@inline function writeFixedFloat( + buf: usize, + start: usize, + decExp: i32, + hasLastDigit: bool, + hasExtraDigit: bool, + dotZero: bool, +): usize { + if (decExp < 0) writeUnpacked8(start, BCD_ZEROS); + let lastDigitChar = (CharCode._0 + (hasLastDigit ? gLastDigit : 0)); + let numDigits = hasLastDigit ? 8 : gDigits - i32(hasExtraDigit); + + // !hasExtraDigit: gSig has a leading '0'; shift it out and fold the last digit + // into the freed low slot, so the block is exactly 8 chars (no memmove). + let dHi = gDigHi; + if (!hasExtraDigit) { + dHi = (dHi >> 8) | (lastDigitChar << 56); + } + + // decExp >= 8: integer rendered as significant digits then trailing zeros. + if (decExp >= 8) { + writeUnpacked8(buf, dHi); + if (hasExtraDigit) store(buf + 16, lastDigitChar); + let sig = 8 + i32(hasExtraDigit); + let endByte = buf + ((decExp + 1) << 1); + for (let z = buf + (sig << 1); z < endByte; z += 16) { + writeUnpacked8(z, BCD_ZEROS); + } + return finishInteger(endByte, dotZero); + } + + let n = numDigits + i32(hasExtraDigit); + let endPos = n; + if (decExp >= 0) { + endPos = n > decExp + 1 ? n + 1 : decExp + 1; + } + + // Branchless `decExp < 0 ? 1 - decExp : 0` (decExp >> 31 is all-ones if < 0). + let startPos = (1 - decExp) & (decExp >> 31); + + buf += startPos << 1; + writeUnpacked8(buf, dHi); + if (hasExtraDigit) store(buf + 16, lastDigitChar); + + if (decExp >= 0) { + // Place '.' after k integer digits with no memmove: re-store the digits + // shifted right by k chars (fractional part at [k+1,...]), then drop '.' at k. + let k = decExp + 1; + let d16: u64 = hasExtraDigit ? lastDigitChar : 0; + let s = k << 3; + let fHi = s < 64 ? (dHi >> s) | (d16 << (64 - s)) : d16; + writeUnpacked8(buf + ((k + 1) << 1), fHi); + store(buf + (k << 1), CharCode.DOT); + } else { + store(start, CharCode.DOT, 2); // "0." prefix + } + + let end = buf + (endPos << 1); + if (decExp >= 0 && endPos == decExp + 1) return finishInteger(end, dotZero); + while (end > start + 2 && load(end - 2) == CharCode._0) { + end -= 2; + } + if (load(end - 2) == CharCode.DOT) { + if (dotZero) { + store(end, CharCode._0); + end += 2; + } else { + end -= 2; + } + } + return end; +} + +// Exponential-notation tail. Lays the mantissa "d.ddd" (single leading digit) +// then the "e +/- d" exponent. +// @ts-ignore: decorator +@inline function writeExpNotationFloat( + buf: usize, + start: usize, + decExp: i32, + hasLastDigit: bool, + hasExtraDigit: bool, +): usize { + buf += usize(hasExtraDigit) << 1; + writeUnpacked8(buf, gDigHi); + store(buf + 16, (CharCode._0 + gLastDigit)); + buf += (hasLastDigit ? 9 : gDigits + i32(!hasExtraDigit)) << 1; + while (buf > start + 4 && load(buf - 2) == CharCode._0) { + buf -= 2; + } + // Move the lead digit to pos 0, drop '.' at pos 1. + let lead: u32 = load(start, 2); + store(start, lead); + store(start, CharCode.DOT, 2); + buf -= usize(buf - 2 == start + 2) << 1; // drop a trailing point + return writeExponent(buf, decExp); +} + +// xjb's single-multiply f32 shortest-decimal core. One hi-only pow10 multiply +// covers both regular and irregular cases, taken as a narrow 64x24 product (two +// 32-bit partial products + a shift) since the significand is < 2**24. Sets +// gSig (integral), gExp (= k), gLastDigit (the "one" digit), gHasLastDigit. +// @ts-ignore: decorator +@inline export function toDecimalFloat(binSig: u64, rawExp: i32, regular: bool): void { + let expBin = rawExp - FLOAT_EXP_OFFSET; + + let k: i32, h: i32; + if (regular) { + k = (expBin * 1233) >> 12; + h = 37 + expBin + (((-k - 1) * 1701) >> 9); + } else { + k = (expBin * 1233 - 512) >> 12; + h = 37 + expBin + ((k * -1701 + (-1701)) >> 9); + } + let pow10Hi: u64; + if (k >= -28 && k <= 16) { + pow10Hi = load(POW10_SHARED + ((28 + k) << 3)); + } else { + let lo = computePow10Compact(292 - k); + pow10Hi = gPow10Hi + u64(lo != 0); + } + + // hi64 = (binSig * pow10Hi) >> (64 - h), split as >> 24 (folded into the + // partial-product combine; exact since 64 - h >= 24) then >> (40 - h). + let t0 = (pow10Hi & 0xffffffff) * binSig; + let t1 = (pow10Hi >> 32) * binSig + (t0 >> 32); + let mid = (t1 << 8) | ((t0 & 0xffffffff) >> 24); + let hi64 = mid >> (40 - h); + + let halfUlp = (pow10Hi >> (65 - h)) + (1 - (binSig & 1)); + let dotOne = hi64 & (((1) << FLOAT_BIT) - 1); + let mUp = (hi64 + halfUlp) >> FLOAT_BIT; + let one = ((dotOne * 5 + FLOAT_ONE_BIAS + (dotOne >> 32)) >> (FLOAT_BIT - 1)); + + let upDown: bool; + if (regular) { + upDown = mUp > ((hi64 - halfUlp) >> FLOAT_BIT); + } else { + // Three exact-boundary exponents need a +1 nudge to the last digit. + if (expBin == -119 || expBin == 64 || expBin == 67) ++one; + upDown = mUp > ((hi64 - (halfUlp >> 1)) >> FLOAT_BIT); + } + + gSig = mUp; + gExp = k; + gLastDigit = one; + gHasLastDigit = !upDown; +} + +// @ts-ignore: decorator +@inline function formatDecodedFloat(buf: usize, bits: u32, binExp: i32, binSig: u64, dotZero: bool): usize { + let neg = bits >> 31 != 0; + const THRESHOLD: u64 = 10000000; + + let isNormal = (binExp - 1) < 254; + if (!isNormal) { + if (binExp != 0) { + if (binSig != 0) return writeNaN(buf); + return writeInfinity(buf, neg); + } + if (binSig == 0) { + store(buf, CharCode._0); + return finishInteger(buf + 2, dotZero); + } + if (neg) { + store(buf, CharCode.MINUS); + buf += 2; + } + toDecimalFloat(binSig, 1, true); + let decSig = gSig * 10 + (gHasLastDigit ? gLastDigit : 0); + let decExp = gExp; + // At most seven powers of ten are needed; apply them in 4, 2, 1 steps. + if (decSig < 10000) { + decSig *= 10000; + decExp -= 4; + } + if (decSig < 1000000) { + decSig *= 100; + decExp -= 2; + } + if (decSig < THRESHOLD) { + decSig *= 10; + --decExp; + } + let q = (decSig / 10); + let last = (decSig - q * 10); + gSig = q; + gExp = decExp; + gLastDigit = last; + gHasLastDigit = last != 0; + } else { + if (neg) { + store(buf, CharCode.MINUS); + buf += 2; + } + let q = binExp - FLOAT_EXP_OFFSET; + if (q >= -FLOAT_SIGNIFICAND_SIZE && q < 24) { + let c = binSig | FLOAT_HIDDEN_BIT; + let intValue: u64 = 0; + if (q < 0) { + let shift = -q; + let mask = ((1) << shift) - 1; + if ((c & mask) == 0) intValue = c >> shift; + } else { + intValue = c << q; + if (intValue > 16777216) intValue = 0; + } + if (intValue != 0) return finishInteger(writeUInt16(buf, intValue), dotZero); + } + toDecimalFloat(binSig | FLOAT_HIDDEN_BIT, binExp, binSig != 0); + } + + let hasLastDigit = gHasLastDigit; + let hasExtraDigit = gSig >= THRESHOLD; + let decExp = gExp + FLOAT_MAX_DIGITS10 - 2 + i32(hasExtraDigit); + + if (gSig < 1000000) { + gSig = 10 * gSig + (hasLastDigit ? gLastDigit : 0); + hasLastDigit = false; + --decExp; + } + + let start = buf; + toDigits32(gSig); + + if (decExp >= MIN_FIXED_DEC_EXP && decExp <= MAX_FIXED_DEC_EXP) + return writeFixedFloat(buf, start, decExp, hasLastDigit, hasExtraDigit, dotZero); + return writeExpNotationFloat(buf, start, decExp, hasLastDigit, hasExtraDigit); +} + +export function ftoa(value: f32): string { + let bits = reinterpret(value); + let exp = ((bits << 1) >> 24); + let sig = (bits & FLOAT_SIGNIFICAND_MASK); + + if (exp == 255) { + if (sig != 0) return "NaN"; + return bits >> 31 != 0 ? "-Infinity" : "Infinity"; + } + if ((bits << 1) == 0) return "0"; + + return scratchString(formatDecodedFloat(SCRATCH, bits, exp, sig, false) - SCRATCH); +} + +export function ftoa_buffered(buffer: usize, value: f32): u32 { + let bits = reinterpret(value); + let binExp = ((bits << 1) >> 24); + let binSig = (bits & FLOAT_SIGNIFICAND_MASK); + return ((formatDecodedFloat(buffer, bits, binExp, binSig, true) - buffer) >> 1); +} diff --git a/std/assembly/util/number.ts b/std/assembly/util/number.ts index ebd9d093cd..689404a93d 100644 --- a/std/assembly/util/number.ts +++ b/std/assembly/util/number.ts @@ -2,24 +2,12 @@ import { idof } from "../builtins"; import { CharCode } from "./string"; +import * as floatFormat from "./dtoa"; +// >= 32 code units (64 bytes) per value // @ts-ignore: decorator @inline -export const MAX_DOUBLE_LENGTH = 28; - -// @ts-ignore: decorator -@lazy @inline const POWERS10 = memory.data([ - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000 -]); +export const MAX_DOUBLE_LENGTH = 32; /* Lookup table for pairwise char codes in range [0-99] @@ -36,7 +24,7 @@ export const MAX_DOUBLE_LENGTH = 28; "90", "91", "92", "93", "94", "95", "96", "97", "98", "99" */ // @ts-ignore: decorator -@lazy @inline const DIGITS = memory.data([ +@lazy @inline export const DIGITS = memory.data([ 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030, 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030, 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031, @@ -82,46 +70,6 @@ f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; // @ts-ignore: decorator @lazy @inline const ANY_DIGITS = "0123456789abcdefghijklmnopqrstuvwxyz"; -// @ts-ignore: decorator -@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */ - -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, - -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, - -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, - -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, - -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, - 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, - 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, - 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, - 907, 933, 960, 986, 1013, 1039, 1066 -/* eslint-enable indent */]); - -// 1e-348, 1e-340, ..., 1e340 -// @ts-ignore: decorator -@lazy @inline const FRC_POWERS = memory.data([ - 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA, - 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F, - 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5, - 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637, - 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5, - 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996, - 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8, - 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD, - 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B, - 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3, - 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C, - 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984, - 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245, - 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A, - 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85, - 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3, - 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE, - 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A, - 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A, - 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429, - 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841, - 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B -]); - // @ts-ignore: decorator @inline export function isPowerOf2(value: T): bool { @@ -460,301 +408,71 @@ export function itoa64(value: i64, radix: i32): String { return out; } -// @ts-ignore: decorator -@lazy let _K: i32 = 0; - -// // @ts-ignore: decorator -// @lazy -// let _frc: u64 = 0; - -// @ts-ignore: decorator -@lazy let _exp: i32 = 0; - -// @ts-ignore: decorator -@lazy let _frc_minus: u64 = 0; - -// @ts-ignore: decorator -@lazy let _frc_plus: u64 = 0; - -// @ts-ignore: decorator -@lazy let _frc_pow: u64 = 0; - -// @ts-ignore: decorator -@lazy let _exp_pow: i32 = 0; - -// @ts-ignore: decorator -@inline -function umul64f(u: u64, v: u64): u64 { - let u0 = u & 0xFFFFFFFF; - let v0 = v & 0xFFFFFFFF; - - let u1 = u >> 32; - let v1 = v >> 32; - - let l = u0 * v0; - let t = u1 * v0 + (l >> 32); - let w = u0 * v1 + (t & 0xFFFFFFFF); - - w += 0x7FFFFFFF; // rounding - - t >>= 32; - w >>= 32; - - return u1 * v1 + t + w; -} - -// @ts-ignore: decorator -@inline -function umul64e(e1: i32, e2: i32): i32 { - return e1 + e2 + 64; // where 64 is significand size -} // @ts-ignore: decorator -@inline -function normalizedBoundaries(f: u64, e: i32, isSingle: bool): void { - let frc = (f << 1) + 1; - let exp = e - 1; - let off = clz(frc); - frc <<= off; - exp -= off; - - let m = 1 + i32(f == (isSingle ? 0x00800000 : 0x0010000000000000)); - - _frc_plus = frc; - _frc_minus = ((f << m) - 1) << e - m - exp; - _exp = exp; -} +@lazy @inline const dtoa_buf = memory.data(128); -// @ts-ignore: decorator -@inline -function grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void { - let lastp = buffer + ((len - 1) << 1); - let digit = load(lastp); - while ( - rest < wp_w && - delta - rest >= ten_kappa && ( - rest + ten_kappa < wp_w || - wp_w - rest > rest + ten_kappa - wp_w - ) - ) { - --digit; - rest += ten_kappa; - } - store(lastp, digit); -} - -// @ts-ignore: decorator -@inline -function getCachedPower(minExp: i32): void { - const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114 - let dk = (-61 - minExp) * c + 347; // dk must be positive, so can do ceiling in positive - let k = dk; - k += i32(k != dk); // conversion with ceil - - let index = (k >> 3) + 1; - _K = 348 - (index << 3); // decimal exponent no need lookup table - _frc_pow = load(FRC_POWERS + (index << alignof())); - _exp_pow = load(EXP_POWERS + (index << alignof())); -} - -// @ts-ignore: decorator -@inline -function grisu2(value: f64, buffer: usize, sign: i32, isSingle: bool): i32 { - let frc: u64; - let exp: i32; - - // frexp routine - if (isSingle) { - let uv = reinterpret(value); - exp = (uv & 0x7F800000) >>> 23; - let sid = uv & 0x007FFFFF; - frc = (u64(exp != 0) << 23) + sid; - exp = (exp || 1) - (0x7F + 23); - } else { - let uv = reinterpret(value); - exp = i32((uv & 0x7FF0000000000000) >>> 52); - let sid = uv & 0x000FFFFFFFFFFFFF; - frc = (u64(exp != 0) << 52) + sid; - exp = (exp || 1) - (0x3FF + 52); +export function dtoa(value: T): String { + if (value == 0) return "0.0"; + if (!isFinite(value)) { + if (isNaN(value)) return "NaN"; + return select("-Infinity", "Infinity", value < 0); } - - normalizedBoundaries(frc, exp, isSingle); - getCachedPower(_exp); - - // normalize - let off = clz(frc); - frc <<= off; - exp -= off; - - let frc_pow = _frc_pow; - let exp_pow = _exp_pow; - - let w_frc = umul64f(frc, frc_pow); - let w_exp = umul64e(exp, exp_pow); - - let wp_frc = umul64f(_frc_plus, frc_pow) - 1; - let wp_exp = umul64e(_exp, exp_pow); - - let wm_frc = umul64f(_frc_minus, frc_pow) + 1; - let delta = wp_frc - wm_frc; - - return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign); -} - -function genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 { - let one_exp = -mp_exp; - let one_frc = (1) << one_exp; - let mask = one_frc - 1; - - let wp_w_frc = mp_frc - w_frc; - - let p1 = u32(mp_frc >> one_exp); - let p2 = mp_frc & mask; - - let kappa = decimalCount32(p1); - let len = sign; - - while (kappa > 0) { - let d: u32; - switch (kappa) { - case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; } - case 9: { d = p1 / 100000000; p1 %= 100000000; break; } - case 8: { d = p1 / 10000000; p1 %= 10000000; break; } - case 7: { d = p1 / 1000000; p1 %= 1000000; break; } - case 6: { d = p1 / 100000; p1 %= 100000; break; } - case 5: { d = p1 / 10000; p1 %= 10000; break; } - case 4: { d = p1 / 1000; p1 %= 1000; break; } - case 3: { d = p1 / 100; p1 %= 100; break; } - case 2: { d = p1 / 10; p1 %= 10; break; } - case 1: { d = p1; p1 = 0; break; } - default: { d = 0; break; } - } - - if (d | len) store(buffer + (len++ << 1), CharCode._0 + d); - - --kappa; - let tmp = ((p1) << one_exp) + p2; - if (tmp <= delta) { - _K += kappa; - grisuRound(buffer, len, delta, tmp, load(POWERS10 + (kappa << alignof())) << one_exp, wp_w_frc); - return len; + // Exact integers in this range can be written into their final allocation. + // The f32 limit matters: larger integral f32 values can have a shorter + // decimal representation than their exact integer value. + let exactIntegerRange = false; + if (isFloat()) { + if (sizeof() == 4) { + let bits = reinterpret(value) & 0x7fffffff; + exactIntegerRange = bits >= 0x3f800000 && bits <= 0x4b800000; + } else { + let bits = reinterpret(value) & 0x7fffffffffffffff; + exactIntegerRange = bits >= 0x3ff0000000000000 && bits <= 0x41cdcd6500000000; } } - - while (true) { - p2 *= 10; - delta *= 10; - - let d = p2 >> one_exp; - if (d | len) store(buffer + (len++ << 1), CharCode._0 + d); - - p2 &= mask; - --kappa; - if (p2 < delta) { - _K += kappa; - wp_w_frc *= load(POWERS10 + (-kappa << alignof())); - grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc); - return len; + if (exactIntegerRange) { + let integer = value; + if (value == integer) { + let negative = integer < 0; + let magnitude = (negative ? -integer : integer); + let digits = decimalCount32(magnitude); + let result = changetype(__new((digits + u32(negative) + 2) << 1, idof())); + let out = changetype(result); + if (negative) { + store(out, CharCode.MINUS); + out += 2; + } + if (magnitude < 10) { + store(out, CharCode._0 + magnitude); + } else if (magnitude < 100) { + store(out, load(DIGITS + (magnitude << 2))); + } else if (magnitude < 10000) { + let high = magnitude / 100; + let low = magnitude - high * 100; + if (magnitude < 1000) { + store(out, CharCode._0 + high); + store(out + 2, load(DIGITS + (low << 2))); + } else { + store(out, load(DIGITS + (high << 2))); + store(out + 4, load(DIGITS + (low << 2))); + } + } else { + utoa32_dec_core(out, magnitude, digits); + } + store(out + (digits << 1), CharCode.DOT | (CharCode._0 << 16)); + return result; } } -} - -// @ts-ignore: decorator -@inline -function genExponent(buffer: usize, k: i32): i32 { - let sign = k < 0; - if (sign) k = -k; - let decimals = decimalCount32(k) + 1; - utoa32_dec_core(buffer, k, decimals); - store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign)); - return decimals; -} - -function prettify(buffer: usize, length: i32, k: i32): i32 { - if (!k) { - store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16)); - return length + 2; - } - - let kk = length + k; - if (length <= kk && kk <= 21) { - // 1234e7 -> 12340000000 - for (let i = length; i < kk; ++i) { - store(buffer + (i << 1), CharCode._0); - } - store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16)); - return kk + 2; - } else if (kk > 0 && kk <= 21) { - // 1234e-2 -> 12.34 - let ptr = buffer + (kk << 1); - memory.copy( - ptr + 2, - ptr, - -k << 1 - ); - store(buffer + (kk << 1), CharCode.DOT); - return length + 1; - } else if (-6 < kk && kk <= 0) { - // 1234e-6 -> 0.001234 - let offset = 2 - kk; - memory.copy( - buffer + (offset << 1), - buffer, - length << 1 - ); - store(buffer, CharCode._0 | (CharCode.DOT << 16)); - for (let i = 2; i < offset; ++i) { - store(buffer + (i << 1), CharCode._0); - } - return length + offset; - } else if (length == 1) { - // 1e30 - store(buffer, CharCode.e, 2); - length = genExponent(buffer + 4, kk - 1); - return length + 2; + let len: u32; + if (isFloat() && sizeof() == 4) { + // @ts-ignore: type + len = floatFormat.ftoa_buffered(dtoa_buf, value); } else { - let len = length << 1; - memory.copy( - buffer + 4, - buffer + 2, - len - 2 - ); - store(buffer, CharCode.DOT, 2); - store(buffer + len, CharCode.e, 2); - length += genExponent(buffer + len + 4, kk - 1); - return length + 2; - } -} - -function dtoa_core(buffer: usize, value: f64, isSingle: bool): i32 { - let sign = i32(value < 0); - if (sign) { - value = -value; - store(buffer, CharCode.MINUS); - } - // assert(value > 0 && value <= (isSingle ? f32.MAX_VALUE : f64.MAX_VALUE)); - let len = grisu2(value, buffer, sign, isSingle); - len = prettify(buffer + (sign << 1), len - sign, _K); - return len + sign; -} - -// @ts-ignore: decorator -@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1); - -export function dtoa(value: T): String { - const isSingle = isFloat() && sizeof() == 4; - return dtoa_impl(value, isSingle); -} - -// @ts-ignore: decorator -@inline -function dtoa_impl(value: f64, isSingle: bool): String { - if (value == 0) return "0.0"; - if (!isFinite(value)) { - if (isNaN(value)) return "NaN"; - return select("-Infinity", "Infinity", value < 0); + // @ts-ignore: type + len = floatFormat.dtoa_buffered(dtoa_buf, value); } - let size = dtoa_core(dtoa_buf, value, isSingle) << 1; + let size = len << 1; let result = changetype(__new(size, idof())); memory.copy(changetype(result), dtoa_buf, size); return result; @@ -839,35 +557,13 @@ export function itoa_buffered(buffer: usize, value: T): u32 { } export function dtoa_buffered(buffer: usize, value: T): u32 { - const isSingle = isFloat() && sizeof() == 4; - return dtoa_buffered_impl(buffer, value, isSingle); -} - -// @ts-ignore: decorator -@inline -function dtoa_buffered_impl(buffer: usize, value: f64, isSingle: bool): u32 { - if (value == 0) { - store(buffer, CharCode._0); - store(buffer, CharCode.DOT, 2); - store(buffer, CharCode._0, 4); - return 3; - } - if (!isFinite(value)) { - if (isNaN(value)) { - store(buffer, CharCode.N); - store(buffer, CharCode.a, 2); - store(buffer, CharCode.N, 4); - return 3; - } else { - let sign = value < 0; - if (sign) { - store(buffer, CharCode.MINUS); // - - buffer += 2; - } - store(buffer, 0x690066006E0049, 0); // ifnI - store(buffer, 0x7900740069006E, 8); // ytin - return 8 + u32(sign); - } + let len: u32; + if (isFloat() && sizeof() == 4) { + // @ts-ignore: type + len = floatFormat.ftoa_buffered(buffer, value); + } else { + // @ts-ignore: type + len = floatFormat.dtoa_buffered(buffer, value); } - return dtoa_core(buffer, value, isSingle); + return len; } diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 8e8ba1d768..d7608b2a9e 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -461,7 +461,7 @@ import { // 23 * 8 = 184 bytes // @ts-ignore: decorator -@lazy @inline const POWERS10 = memory.data([ +@lazy @inline export const POWERS10 = memory.data([ 1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22 diff --git a/tests/compiler/issues/2873.debug.wat b/tests/compiler/issues/2873.debug.wat index 15c9c5ddef..73e72cceca 100644 --- a/tests/compiler/issues/2873.debug.wat +++ b/tests/compiler/issues/2873.debug.wat @@ -4,28 +4,22 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func)) - (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $8 (func (param i32 f64 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 f32) (result i32))) + (type $8 (func (param i32 f64) (result i32))) (type $9 (func (param i32 i32 i32 i32))) (type $10 (func (param i32 i32 i64) (result i32))) (type $11 (func (result i32))) - (type $12 (func (param f32 i32) (result i32))) - (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $14 (func (param f64 i32) (result i32))) - (type $15 (func (param i32 f32) (result i32))) - (type $16 (func (param i32 f64) (result i32))) - (type $17 (func (param f32) (result i32))) - (type $18 (func (param f64) (result i32))) + (type $12 (func (param i32) (result i64))) + (type $13 (func (param i64) (result i64))) + (type $14 (func (param i64) (result i32))) + (type $15 (func (param f32 i32) (result i32))) + (type $16 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $17 (func (param f64 i32) (result i32))) + (type $18 (func (param f32) (result i32))) + (type $19 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -40,40 +34,64 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $issues/2873/f32arr i32 (i32.const 2080)) - (global $issues/2873/f64arr i32 (i32.const 2288)) - (global $~lib/rt/__rtti_base i32 (i32.const 2320)) - (global $~lib/memory/__data_end i32 (i32.const 2348)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35116)) - (global $~lib/memory/__heap_base i32 (i32.const 35116)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE i32 (i32.const 23)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK i32 (i32.const 8388607)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $issues/2873/f32arr i32 (i32.const 2304)) + (global $issues/2873/f64arr i32 (i32.const 2512)) + (global $~lib/rt/__rtti_base i32 (i32.const 2544)) + (global $~lib/memory/__data_end i32 (i32.const 2572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35340)) + (global $~lib/memory/__heap_base i32 (i32.const 35340)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 232) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $16 (i32.const 1896) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $17 (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\001\00\00\00\00\00\00\00") + (data $18 (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s\00") + (data $19 (i32.const 2064) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $20 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") + (data $21 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\e0\08\00\00\e0\08\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003\00\00\00\00\00\00\00") + (data $25 (i32.const 2444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@\00\00\00\00") + (data $26 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\a0\t\00\00\a0\t\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2544) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -133,2134 +151,624 @@ end unreachable ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp - i32.sub - local.set $one_exp - i64.const 1 - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $one_frc - local.get $one_frc - i64.const 1 - i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s + local.get $iter + local.get $pn + i32.ne if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 - end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 1104 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 - end - end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return + i32.const 0 + i32.const 256 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter br $while-continue|0 end end - loop $while-continue|4 + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 1104 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $digit|36 - i32.const 1 - i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 - end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 1144 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 1144 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.const 0 + i32.const 256 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 1144 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 1144 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 + i32.const 0 + i32.const 256 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return + i32.const 384 + i32.const 448 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end - local.get $length - local.get $k + local.get $ptr + i32.const 4 i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u if (result i32) - local.get $kk - i32.const 21 - i32.le_s + i32.const 1 else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 - i32.add - local.get $ptr i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $kk - i32.lt_s - if (result i32) - local.get $kk - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset - i32.lt_s - if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 - i32.add - local.set $i|7 - br $for-loop|1 - end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 - i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 - i32.lt_s - local.set $sign - local.get $sign - if - i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 - end - local.get $k|9 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select - i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 - end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length - i32.const 1 - i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer - i32.const 2 - i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 - i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 - i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 - if - i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 - end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 - end - i32.add - local.set $length - local.get $length - i32.const 2 - i32.add - return - end - unreachable - end + i32.const 256 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort unreachable + else + local.get $1 end - unreachable + global.set $~lib/rt/itcms/iter end - unreachable + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 + return end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 232 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 928 - local.get $index + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.shl i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + local.set $ptr + br $while-continue|0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 end - local.set $len - local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and i32.add return ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) local.get $this - local.get $nextWithColor - i32.store offset=4 + local.get $flMap + i32.store ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) local.get $this local.get $prev - i32.store offset=8 + i32.store offset=4 ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) local.get $this i32.load offset=4 ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return + i32.load offset=8 ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return + i32.load ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne - if - i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 - end + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor + local.get $blockInfo i32.const 3 i32.const -1 i32.xor i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return + i32.const 528 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev i32.const 1 drop - local.get $prev + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 1632 - i32.const 132 - i32.const 16 + i32.const 528 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end local.get $next - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u if - i32.const 1760 - i32.const 1824 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev end - local.get $ptr - i32.const 4 - i32.add - local.get $id - i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) - local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - return - ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $this - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list - local.get $this - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 - i32.eqz - if (result i32) - i32.const 0 - i32.const 1632 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) - (local $obj i32) - local.get $ptr - i32.eqz - if - return - end - local.get $ptr - i32.const 20 - i32.sub - local.set $obj - i32.const 0 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white i32.eq if - local.get $obj - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/itcms/visitStack (param $cookie i32) - (local $ptr i32) - global.get $~lib/memory/__stack_pointer - local.set $ptr - loop $while-continue|0 - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz if - local.get $ptr - i32.load - local.get $cookie - call $~lib/rt/itcms/__visit - local.get $ptr - i32.const 4 + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl i32.add - local.set $ptr - br $while-continue|0 + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end end end ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) - i32.const 4 - local.get $this - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - return - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) - local.get $this - local.get $flMap - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) - local.get $this - local.get $next - i32.store offset=8 - ) - (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) (local $size i32) (local $fl i32) (local $sl i32) - (local $6 i32) - (local $7 i32) - (local $boundedSize i32) - (local $prev i32) - (local $next i32) - (local $root|11 i32) - (local $fl|12 i32) - (local $sl|13 i32) - (local $root|14 i32) - (local $fl|15 i32) - (local $sl|16 i32) - (local $head i32) - (local $root|18 i32) - (local $fl|19 i32) - (local $slMap i32) - (local $root|21 i32) - (local $fl|22 i32) - (local $slMap|23 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 - drop - local.get $blockInfo - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $size - i32.const 1 - drop - local.get $size - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $size - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $boundedSize - i32.const 31 - local.get $boundedSize - i32.clz - i32.sub - local.set $fl - local.get $boundedSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl - local.get $fl - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $fl - end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $block - call $~lib/rt/tlsf/Block#get:prev - local.set $prev - local.get $block - call $~lib/rt/tlsf/Block#get:next - local.set $next - local.get $prev - if - local.get $prev - local.get $next - call $~lib/rt/tlsf/Block#set:next - end - local.get $next - if - local.get $next - local.get $prev - call $~lib/rt/tlsf/Block#set:prev - end - local.get $block - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $root - local.set $root|11 - local.get $fl - local.set $fl|12 - local.get $sl - local.set $sl|13 - local.get $root|11 - local.get $fl|12 - i32.const 4 - i32.shl - local.get $sl|13 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.0 - end - i32.eq - if - local.get $root - local.set $root|14 - local.get $fl - local.set $fl|15 - local.get $sl - local.set $sl|16 - local.get $next - local.set $head - local.get $root|14 - local.get $fl|15 - i32.const 4 - i32.shl - local.get $sl|16 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head - i32.store offset=96 - local.get $next - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $root - local.set $root|18 - local.get $fl - local.set $fl|19 - local.get $root|18 - local.get $fl|19 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.0 - end - local.set $slMap - local.get $root - local.set $root|21 - local.get $fl - local.set $fl|22 - local.get $slMap - i32.const 1 - local.get $sl - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $slMap - local.set $slMap|23 - local.get $root|21 - local.get $fl|22 - i32.const 2 - i32.shl - i32.add - local.get $slMap|23 - i32.store offset=4 - local.get $slMap - i32.eqz - if - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 1 - local.get $fl - i32.shl - i32.const -1 - i32.xor - i32.and - call $~lib/rt/tlsf/Root#set:flMap - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $block|3 i32) - (local $right i32) - (local $rightInfo i32) - (local $block|6 i32) - (local $block|7 i32) - (local $left i32) - (local $leftInfo i32) - (local $size i32) - (local $fl i32) - (local $sl i32) - (local $13 i32) - (local $14 i32) + (local $13 i32) + (local $14 i32) (local $boundedSize i32) (local $root|16 i32) (local $fl|17 i32) @@ -2281,7 +789,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -2298,7 +806,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -2387,7 +895,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -2430,7 +938,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -2448,7 +956,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -2516,7 +1024,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -2633,7 +1141,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -2679,7 +1187,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -2711,7 +1219,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -2955,7 +1463,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -3175,7 +1683,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 256 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -3286,8 +1794,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1568 - i32.const 1904 + i32.const 192 + i32.const 528 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -3389,7 +1897,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -3460,7 +1968,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -3617,7 +2125,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -3732,7 +2240,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -3752,7 +2260,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 528 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -3800,8 +2308,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1568 - i32.const 1632 + i32.const 192 + i32.const 256 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -3846,226 +2354,7119 @@ local.get $ptr return ) - (func $~lib/number/F32#toString (param $this f32) (param $radix i32) (result i32) - local.get $this - call $~lib/util/number/dtoa - return - ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) - (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) - (local $ptr1 i32) - (local $ptr2 i32) - (local $7 i32) - (local $a i32) - (local $b i32) - local.get $str1 - local.get $index1 - i32.const 1 - i32.shl - i32.add - local.set $ptr1 - local.get $str2 - local.get $index2 - i32.const 1 - i32.shl - i32.add - local.set $ptr2 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $len - i32.const 4 - i32.ge_u - if (result i32) - local.get $ptr1 - i32.const 7 - i32.and - local.get $ptr2 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-loop|0 - local.get $ptr1 - i64.load - local.get $ptr2 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $ptr1 - i32.const 8 - i32.add - local.set $ptr1 - local.get $ptr2 - i32.const 8 - i32.add - local.set $ptr2 - local.get $len - i32.const 4 - i32.sub - local.set $len - local.get $len - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $len - local.tee $7 - i32.const 1 - i32.sub - local.set $len - local.get $7 + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u if - local.get $ptr1 - i32.load16_u - local.set $a - local.get $ptr2 - i32.load16_u - local.set $b - local.get $a - local.get $b - i32.ne - if - local.get $a - local.get $b - i32.sub - return - end - local.get $ptr1 + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 572 + local.get $d1 i32.const 2 + i32.shl i32.add - local.set $ptr1 - local.get $ptr2 + i64.load32_u + local.set $digits1 + i32.const 572 + local.get $d2 i32.const 2 + i32.shl i32.add - local.set $ptr2 - br $while-continue|1 + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 0 - return - ) - (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) - local.get $this - call $~lib/util/number/dtoa - return - ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/array/Array#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) - (local $buffer|2 i32) - (local $value|3 f64) - (local $isSingle i32) - (local $sign i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 572 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits local.get $buffer - local.set $buffer|2 - local.get $value - f64.promote_f32 - local.set $value|3 + local.get $offset i32.const 1 - local.set $isSingle - local.get $value|3 - f64.const 0 - f64.eq - if - local.get $buffer|2 - i32.const 48 - i32.store16 - local.get $buffer|2 - i32.const 46 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $value|3 - local.get $value|3 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|3 - local.get $value|3 - f64.ne - if - local.get $buffer|2 - i32.const 78 - i32.store16 - local.get $buffer|2 - i32.const 97 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $value|3 - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $buffer|2 - i32.const 45 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 572 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 1104 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 1528 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 1896 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + local.set $singles|5 + i32.const 70 + i64.extend_i32_s + local.get $singles|5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 8 + i64.div_u + i32.wrap_i64 + return + ) + (func $~lib/util/dtoa/ftoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $bits i32) + (local $binExp i32) + (local $binSig i64) + (local $buf i32) + (local $bits|6 i32) + (local $binExp|7 i32) + (local $binSig|8 i64) + (local $dotZero i32) + (local $neg i32) + (local $isNormal i32) + (local $buf|12 i32) + (local $buf|13 i32) + (local $neg|14 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|22 i32) + (local $binSig|23 i64) + (local $rawExp i32) + (local $regular i32) + (local $expBin i32) + (local $k i32) + (local $h i32) + (local $pow10Hi i64) + (local $lo|30 i64) + (local $t0 i64) + (local $t1 i64) + (local $mid i64) + (local $hi64 i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $mUp i64) + (local $one i32) + (local $upDown i32) + (local $decSig i64) + (local $decExp i32) + (local $q i64) + (local $last i32) + (local $q|44 i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|49 i32) + (local $value|50 i64) + (local $v i64) + (local $v|52 i64) + (local $len i32) + (local $p|54 i32) + (local $v|55 i64) + (local $q|56 i64) + (local $q|57 i64) + (local $q|58 i64) + (local $q|59 i64) + (local $q|60 i64) + (local $q|61 i64) + (local $q|62 i64) + (local $end|63 i32) + (local $dotZero|64 i32) + (local $binSig|65 i64) + (local $rawExp|66 i32) + (local $regular|67 i32) + (local $expBin|68 i32) + (local $k|69 i32) + (local $h|70 i32) + (local $pow10Hi|71 i64) + (local $lo|72 i64) + (local $t0|73 i64) + (local $t1|74 i64) + (local $mid|75 i64) + (local $hi64|76 i64) + (local $halfUlp|77 i64) + (local $dotOne|78 i64) + (local $mUp|79 i64) + (local $one|80 i32) + (local $upDown|81 i32) + (local $hasLastDigit i32) + (local $hasExtraDigit i32) + (local $decExp|84 i32) + (local $start i32) + (local $value|86 i64) + (local $length i32) + (local $buf|88 i32) + (local $start|89 i32) + (local $decExp|90 i32) + (local $hasLastDigit|91 i32) + (local $hasExtraDigit|92 i32) + (local $dotZero|93 i32) + (local $p|94 i32) + (local $ascii|95 i64) + (local $off|96 i32) + (local $base|97 i32) + (local $lo|98 i64) + (local $hi|99 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $p|103 i32) + (local $ascii|104 i64) + (local $off|105 i32) + (local $base|106 i32) + (local $lo|107 i64) + (local $hi|108 i64) + (local $sig i32) + (local $endByte i32) + (local $z i32) + (local $p|112 i32) + (local $ascii|113 i64) + (local $off|114 i32) + (local $base|115 i32) + (local $lo|116 i64) + (local $hi|117 i64) + (local $end|118 i32) + (local $dotZero|119 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|123 i32) + (local $ascii|124 i64) + (local $off|125 i32) + (local $base|126 i32) + (local $lo|127 i64) + (local $hi|128 i64) + (local $k|129 i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $p|133 i32) + (local $ascii|134 i64) + (local $off|135 i32) + (local $base|136 i32) + (local $lo|137 i64) + (local $hi|138 i64) + (local $end|139 i32) + (local $end|140 i32) + (local $dotZero|141 i32) + (local $buf|142 i32) + (local $start|143 i32) + (local $decExp|144 i32) + (local $hasLastDigit|145 i32) + (local $hasExtraDigit|146 i32) + (local $p|147 i32) + (local $ascii|148 i64) + (local $off|149 i32) + (local $base|150 i32) + (local $lo|151 i64) + (local $hi|152 i64) + (local $lead i32) + (local $buf|154 i32) + (local $decExp|155 i32) + (local $m i32) + (local $e i32) + (local $d i32) + local.get $value + i32.reinterpret_f32 + local.set $bits + local.get $bits + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK + i32.and + i64.extend_i32_u + local.set $binSig + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $bits + local.set $bits|6 + local.get $binExp + local.set $binExp|7 + local.get $binSig + local.set $binSig|8 + i32.const 1 + local.set $dotZero + local.get $bits|6 + i32.const 31 + i32.shr_u + i32.const 0 + i32.ne + local.set $neg + local.get $binExp|7 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|7 + i32.const 0 + i32.ne + if + local.get $binSig|8 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf + local.set $buf|12 + local.get $buf|12 + i32.const 78 + i32.store16 + local.get $buf|12 + i32.const 97 + i32.store16 offset=2 + local.get $buf|12 + i32.const 78 + i32.store16 offset=4 + local.get $buf|12 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf + local.set $buf|13 + local.get $neg + local.set $neg|14 + local.get $neg|14 + if + local.get $buf|13 + i32.const 45 + i32.store16 + local.get $buf|13 + i32.const 2 + i32.add + local.set $buf|13 + end + local.get $buf|13 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|13 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $binSig|8 + i64.const 0 + i64.eq + if + local.get $buf + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf + i32.const 2 + i32.add + local.set $end + local.get $dotZero + local.set $dotZero|22 + local.get $dotZero|22 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binSig|8 + local.set $binSig|23 + i32.const 1 + local.set $rawExp + i32.const 1 + local.set $regular + local.get $rawExp + i32.const 150 + i32.sub + local.set $expBin + local.get $regular + if + local.get $expBin + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h + else + local.get $expBin + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + local.get $k + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h + end + local.get $k + i32.const -28 + i32.ge_s + if (result i32) + local.get $k + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 1104 + i32.const 28 + local.get $k + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi + else + i32.const 292 + local.get $k + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|30 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|30 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi + end + local.get $pow10Hi + i64.const 4294967295 + i64.and + local.get $binSig|23 + i64.mul + local.set $t0 + local.get $pow10Hi + i64.const 32 + i64.shr_u + local.get $binSig|23 + i64.mul + local.get $t0 + i64.const 32 + i64.shr_u + i64.add + local.set $t1 + local.get $t1 + i64.const 8 + i64.shl + local.get $t0 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid + local.get $mid + i64.const 40 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64 + local.get $pow10Hi + i64.const 65 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|23 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp + local.get $hi64 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne + local.get $hi64 + local.get $halfUlp + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp + local.get $dotOne + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one + local.get $regular + if + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + else + local.get $expBin + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 67 + i32.eq + end + if + local.get $one + i32.const 1 + i32.add + local.set $one + end + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + end + local.get $mUp + global.set $~lib/util/dtoa/gSig + local.get $k + global.set $~lib/util/dtoa/gExp + local.get $one + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $decSig + global.get $~lib/util/dtoa/gExp + local.set $decExp + local.get $decSig + i64.const 10000 + i64.lt_u + if + local.get $decSig + i64.const 10000 + i64.mul + local.set $decSig + local.get $decExp + i32.const 4 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 1000000 + i64.lt_u + if + local.get $decSig + i64.const 100 + i64.mul + local.set $decSig + local.get $decExp + i32.const 2 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10000000 + i64.lt_u + if + local.get $decSig + i64.const 10 + i64.mul + local.set $decSig + local.get $decExp + i32.const 1 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10 + i64.div_u + local.set $q + local.get $decSig + local.get $q + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $last + local.get $q + global.set $~lib/util/dtoa/gSig + local.get $decExp + global.set $~lib/util/dtoa/gExp + local.get $last + global.set $~lib/util/dtoa/gLastDigit + local.get $last + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binExp|7 + i32.const 150 + i32.sub + local.set $q|44 + local.get $q|44 + i32.const 0 + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE + i32.sub + i32.ge_s + if (result i32) + local.get $q|44 + i32.const 24 + i32.lt_s + else + i32.const 0 + end + if + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q|44 + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q|44 + i32.sub + local.set $shift + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + else + local.get $c + local.get $q|44 + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 16777216 + i64.gt_u + if + i64.const 0 + local.set $intValue + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf + local.set $buf|49 + local.get $intValue + local.set $value|50 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|50 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|52 + local.get $v|52 + i64.const 100000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000 + i64.lt_u + if + local.get $v|52 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|52 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|52 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|52 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|52 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|52 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|52 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|52 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|54 + local.get $value|50 + local.set $v|55 + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|56 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|56 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|56 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|57 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|57 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|57 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|58 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|58 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|58 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|59 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|59 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|59 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|60 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|60 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|60 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|61 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|61 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|61 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|62 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 572 + local.get $v|55 + local.get $q|62 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|62 + local.set $v|55 + end + local.get $v|55 + i64.const 10 + i64.ge_u + if + local.get $buf|49 + i32.const 572 + local.get $v|55 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|49 + i32.const 48 + local.get $v|55 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|63 + local.get $dotZero + local.set $dotZero|64 + local.get $dotZero|64 + if + local.get $end|63 + i32.const 46 + i32.store16 + local.get $end|63 + i32.const 48 + i32.store16 offset=2 + local.get $end|63 + i32.const 4 + i32.add + local.set $end|63 + end + local.get $end|63 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $binSig|65 + local.get $binExp|7 + local.set $rawExp|66 + local.get $binSig|8 + i64.const 0 + i64.ne + local.set $regular|67 + local.get $rawExp|66 + i32.const 150 + i32.sub + local.set $expBin|68 + local.get $regular|67 + if + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add + i32.const 0 + local.get $k|69 + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + else + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add + local.get $k|69 + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + end + local.get $k|69 + i32.const -28 + i32.ge_s + if (result i32) + local.get $k|69 + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 1104 + i32.const 28 + local.get $k|69 + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi|71 + else + i32.const 292 + local.get $k|69 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|72 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|72 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi|71 + end + local.get $pow10Hi|71 + i64.const 4294967295 + i64.and + local.get $binSig|65 + i64.mul + local.set $t0|73 + local.get $pow10Hi|71 + i64.const 32 + i64.shr_u + local.get $binSig|65 + i64.mul + local.get $t0|73 + i64.const 32 + i64.shr_u + i64.add + local.set $t1|74 + local.get $t1|74 + i64.const 8 + i64.shl + local.get $t0|73 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid|75 + local.get $mid|75 + i64.const 40 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64|76 + local.get $pow10Hi|71 + i64.const 65 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|65 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|77 + local.get $hi64|76 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne|78 + local.get $hi64|76 + local.get $halfUlp|77 + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp|79 + local.get $dotOne|78 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne|78 + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one|80 + local.get $regular|67 + if + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + else + local.get $expBin|68 + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 67 + i32.eq + end + if + local.get $one|80 + i32.const 1 + i32.add + local.set $one|80 + end + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + end + local.get $mUp|79 + global.set $~lib/util/dtoa/gSig + local.get $k|69 + global.set $~lib/util/dtoa/gExp + local.get $one|80 + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown|81 + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.set $hasExtraDigit + global.get $~lib/util/dtoa/gExp + i32.const 9 + i32.add + i32.const 2 + i32.sub + local.get $hasExtraDigit + i32.add + local.set $decExp|84 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + i64.const 10 + global.get $~lib/util/dtoa/gSig + i64.mul + local.get $hasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $hasLastDigit + local.get $decExp|84 + i32.const 1 + i32.sub + local.set $decExp|84 + end + local.get $buf + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|86 + i32.const 0 + drop + local.get $value|86 + call $~lib/util/dtoa/toBcd8 + local.set $length + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length + global.set $~lib/util/dtoa/gDigits + local.get $decExp|84 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|84 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|88 + local.get $start + local.set $start|89 + local.get $decExp|84 + local.set $decExp|90 + local.get $hasLastDigit + local.set $hasLastDigit|91 + local.get $hasExtraDigit + local.set $hasExtraDigit|92 + local.get $dotZero + local.set $dotZero|93 + local.get $decExp|90 + i32.const 0 + i32.lt_s + if + local.get $start|89 + local.set $p|94 + i64.const 3472328296227680304 + local.set $ascii|95 + i32.const 0 + local.set $off|96 + local.get $p|94 + local.get $off|96 + i32.add + local.set $base|97 + i32.const 0 + drop + local.get $ascii|95 + i64.const 4294967295 + i64.and + local.set $lo|98 + local.get $ascii|95 + i64.const 32 + i64.shr_u + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|99 + local.get $base|97 + local.get $lo|98 + i64.store + local.get $base|97 + local.get $hi|99 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|91 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|91 + if (result i32) + i32.const 8 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|92 + i32.sub + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + local.get $hasExtraDigit|92 + i32.eqz + if + local.get $dHi + i64.const 8 + i64.shr_u + local.get $lastDigitChar + i64.const 56 + i64.shl + i64.or + local.set $dHi + end + local.get $decExp|90 + i32.const 8 + i32.ge_s + if + local.get $buf|88 + local.set $p|103 + local.get $dHi + local.set $ascii|104 + i32.const 0 + local.set $off|105 + local.get $p|103 + local.get $off|105 + i32.add + local.set $base|106 + i32.const 0 + drop + local.get $ascii|104 + i64.const 4294967295 + i64.and + local.set $lo|107 + local.get $ascii|104 + i64.const 32 + i64.shr_u + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|108 + local.get $base|106 + local.get $lo|107 + i64.store + local.get $base|106 + local.get $hi|108 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + i32.const 8 + local.get $hasExtraDigit|92 + i32.add + local.set $sig + local.get $buf|88 + local.get $decExp|90 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|88 + local.get $sig + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|112 + i64.const 3472328296227680304 + local.set $ascii|113 + i32.const 0 + local.set $off|114 + local.get $p|112 + local.get $off|114 + i32.add + local.set $base|115 + i32.const 0 + drop + local.get $ascii|113 + i64.const 4294967295 + i64.and + local.set $lo|116 + local.get $ascii|113 + i64.const 32 + i64.shr_u + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|117 + local.get $base|115 + local.get $lo|116 + i64.store + local.get $base|115 + local.get $hi|117 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|118 + local.get $dotZero|93 + local.set $dotZero|119 + local.get $dotZero|119 + if + local.get $end|118 + i32.const 46 + i32.store16 + local.get $end|118 + i32.const 48 + i32.store16 offset=2 + local.get $end|118 + i32.const 4 + i32.add + local.set $end|118 + end + local.get $end|118 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $numDigits + local.get $hasExtraDigit|92 + i32.add + local.set $n + local.get $n + local.set $endPos + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $n + local.get $decExp|90 + i32.const 1 + i32.add + i32.gt_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $decExp|90 + i32.const 1 + i32.add + end + local.set $endPos + end + i32.const 1 + local.get $decExp|90 + i32.sub + local.get $decExp|90 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|88 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|88 + local.get $buf|88 + local.set $p|123 + local.get $dHi + local.set $ascii|124 + i32.const 0 + local.set $off|125 + local.get $p|123 + local.get $off|125 + i32.add + local.set $base|126 + i32.const 0 + drop + local.get $ascii|124 + i64.const 4294967295 + i64.and + local.set $lo|127 + local.get $ascii|124 + i64.const 32 + i64.shr_u + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|128 + local.get $base|126 + local.get $lo|127 + i64.store + local.get $base|126 + local.get $hi|128 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $decExp|90 + i32.const 1 + i32.add + local.set $k|129 + local.get $hasExtraDigit|92 + if (result i64) + local.get $lastDigitChar + else + i64.const 0 + end + local.set $d16 + local.get $k|129 + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if (result i64) + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + else + local.get $d16 + end + local.set $fHi + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|133 + local.get $fHi + local.set $ascii|134 + i32.const 0 + local.set $off|135 + local.get $p|133 + local.get $off|135 + i32.add + local.set $base|136 + i32.const 0 + drop + local.get $ascii|134 + i64.const 4294967295 + i64.and + local.set $lo|137 + local.get $ascii|134 + i64.const 32 + i64.shr_u + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|138 + local.get $base|136 + local.get $lo|137 + i64.store + local.get $base|136 + local.get $hi|138 + i64.store offset=8 + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|89 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|88 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|139 + local.get $decExp|90 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|90 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|139 + local.set $end|140 + local.get $dotZero|93 + local.set $dotZero|141 + local.get $dotZero|141 + if + local.get $end|140 + i32.const 46 + i32.store16 + local.get $end|140 + i32.const 48 + i32.store16 offset=2 + local.get $end|140 + i32.const 4 + i32.add + local.set $end|140 + end + local.get $end|140 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $end|139 + local.get $start|89 + i32.const 2 + i32.add + i32.gt_u + if (result i32) + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + br $while-continue|1 + end + end + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|93 + if + local.get $end|139 + i32.const 48 + i32.store16 + local.get $end|139 + i32.const 2 + i32.add + local.set $end|139 + else + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + end + end + local.get $end|139 + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeExpNotationFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|142 + local.get $start + local.set $start|143 + local.get $decExp|84 + local.set $decExp|144 + local.get $hasLastDigit + local.set $hasLastDigit|145 + local.get $hasExtraDigit + local.set $hasExtraDigit|146 + local.get $buf|142 + local.get $hasExtraDigit|146 + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + local.get $buf|142 + local.set $p|147 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|148 + i32.const 0 + local.set $off|149 + local.get $p|147 + local.get $off|149 + i32.add + local.set $base|150 + i32.const 0 + drop + local.get $ascii|148 + i64.const 4294967295 + i64.and + local.set $lo|151 + local.get $ascii|148 + i64.const 32 + i64.shr_u + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|152 + local.get $base|150 + local.get $lo|151 + i64.store + local.get $base|150 + local.get $hi|152 + i64.store offset=8 + local.get $buf|142 + i32.const 16 + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|142 + local.get $hasLastDigit|145 + if (result i32) + i32.const 9 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|146 + i32.eqz + i32.add + end + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + loop $while-continue|2 + local.get $buf|142 + local.get $start|143 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $buf|142 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $buf|142 + i32.const 2 + i32.sub + local.set $buf|142 + br $while-continue|2 + end + end + local.get $start|143 + i32.load16_u offset=2 + local.set $lead + local.get $start|143 + local.get $lead + i32.store16 + local.get $start|143 + i32.const 46 + i32.store16 offset=2 + local.get $buf|142 + local.get $buf|142 + i32.const 2 + i32.sub + local.get $start|143 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|142 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|142 + local.set $buf|154 + local.get $decExp|144 + local.set $decExp|155 + local.get $decExp|155 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|154 + i32.const 101 + i32.store16 + local.get $buf|154 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|154 + i32.const 4 + i32.add + local.set $buf|154 + local.get $decExp|155 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|154 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|154 + i32.const 572 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|154 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|154 + i32.const 572 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|154 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|154 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|154 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotationFloat|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $buffer + i32.sub + i32.const 1 + i32.shr_u + return + ) + (func $~lib/number/F32#toString (param $this f32) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.4 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.4 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $neg + if + local.get $buf|8 + i32.const 45 + i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 + i32.sub + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.5 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.1 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.1 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 572 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 572 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.1 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.5 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $isNormal + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 1104 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 1104 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral + local.get $pow10Hi + i32.const 0 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|72 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 1104 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 1104 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u + i64.add + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 + end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 1104 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 1104 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 1104 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 1104 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 1104 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 1104 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end + end + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u + if + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.sub + local.set $scale + i32.const 2064 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 + i32.lt_s + if + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|289 + i32.const 17 + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.6 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.6 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 + i32.const 0 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s + if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 + i32.const 0 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|289 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.7 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.7 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end + i32.const 1 + i32.shl + i32.sub + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end + end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 + i32.const 1 + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 572 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 572 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add i32.store16 - local.get $buffer|2 + local.get $buf|387 i32.const 2 i32.add - local.set $buffer|2 + br $~lib/util/dtoa/writeExponent|inlined.1 end - local.get $buffer|2 - i64.const 29555310648492105 - i64.store - local.get $buffer|2 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $sign - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + br $~lib/util/dtoa/writeExpNotation|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - local.get $buffer|2 - local.get $value|3 - local.get $isSingle - call $~lib/util/number/dtoa_core - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end + local.get $buffer + i32.sub + i32.const 1 + i32.shr_u + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $len i32) + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $buffer + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len return ) (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) @@ -4077,89 +9478,16 @@ i32.load offset=12 ) (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) - (local $buffer|2 i32) - (local $value|3 f64) - (local $isSingle i32) - (local $sign i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $buffer - local.set $buffer|2 - local.get $value - local.set $value|3 - i32.const 0 - local.set $isSingle - local.get $value|3 - f64.const 0 - f64.eq - if - local.get $buffer|2 - i32.const 48 - i32.store16 - local.get $buffer|2 - i32.const 46 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $value|3 - local.get $value|3 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|3 - local.get $value|3 - f64.ne - if - local.get $buffer|2 - i32.const 78 - i32.store16 - local.get $buffer|2 - i32.const 97 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $value|3 - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $buffer|2 - i32.const 45 - i32.store16 - local.get $buffer|2 - i32.const 2 - i32.add - local.set $buffer|2 - end - local.get $buffer|2 - i64.const 29555310648492105 - i64.store - local.get $buffer|2 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $sign - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - unreachable - end - local.get $buffer|2 - local.get $value|3 - local.get $isSingle - call $~lib/util/number/dtoa_core - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end + (local $len i32) + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $buffer + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len return ) (func $~lib/rt/__visit_globals (param $0 i32) @@ -4178,10 +9506,10 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1760 + i32.const 384 local.get $0 call $~lib/rt/itcms/__visit - i32.const 1568 + i32.const 192 local.get $0 call $~lib/rt/itcms/__visit ) @@ -4266,8 +9594,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 35136 - i32.const 35184 + i32.const 35360 + i32.const 35408 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4468,7 +9796,7 @@ local.get $size i32.eqz if - i32.const 2128 + i32.const 2352 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4544,7 +9872,7 @@ i32.const 0 i32.lt_s if - i32.const 2128 + i32.const 2352 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4575,12 +9903,12 @@ local.get $10 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 + i32.const 32 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 28 + i32.const 32 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -4764,7 +10092,7 @@ i32.const 0 i32.lt_s if - i32.const 2128 + i32.const 2352 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4795,12 +10123,12 @@ local.get $10 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 + i32.const 32 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 28 + i32.const 32 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -4979,13 +10307,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1680 + i32.const 304 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 1712 + i32.const 336 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 1856 + i32.const 480 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace f32.const 1.100000023841858 @@ -4996,12 +10324,12 @@ local.get $2 i32.store local.get $2 - i32.const 1968 + i32.const 2000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 2032 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5015,12 +10343,12 @@ local.get $2 i32.store local.get $2 - i32.const 1968 + i32.const 2000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 2032 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -5032,19 +10360,19 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2160 + i32.const 2384 call $~lib/array/Array#join local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - i32.const 2192 + i32.const 2416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 2032 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -5056,19 +10384,19 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2160 + i32.const 2384 call $~lib/array/Array#join local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - i32.const 2192 + i32.const 2416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 2032 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -5102,186 +10430,619 @@ call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $exactIntegerRange i32) + (local $bits i32) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) + (local $result i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $value + f32.const 0 + f32.eq + if + i32.const 32 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + i32.eqz + if + local.get $value + local.get $value + f32.ne + if + i32.const 64 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 96 + i32.const 144 + local.get $value + f32.const 0 + f32.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $bits + local.get $bits + i32.const 1065353216 + i32.ge_u + if (result i32) + local.get $bits + i32.const 1266679808 + i32.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f32_s + local.set $integer + local.get $value + local.get $integer + f32.convert_i32_s + f32.eq + if + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 572 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 572 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 572 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 572 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + end + i32.const 4 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 + i32.eq drop - local.get $this - local.set $2 + i32.const 976 + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 976 + local.get $size + memory.copy + local.get $result|16 + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $17 + return ) - (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 32 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 32 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 64 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 96 + i32.const 144 + local.get $value f64.const 0 - f64.eq - i32.eqz - if - local.get $value|1 - local.get $value|1 - f64.ne - if - i32.const 64 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 96 - i32.const 144 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 176 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size + f64.lt + select + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 176 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.1 (result i32) - local.get $value - local.set $value|1 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 32 - br $~lib/util/number/dtoa_impl|inlined.1 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 64 - br $~lib/util/number/dtoa_impl|inlined.1 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 572 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 572 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 572 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 572 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 96 - i32.const 144 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.1 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 176 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 176 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.1 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 976 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 976 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) ) diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index 82a92f5c23..2d597e939d 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -5,23 +5,15 @@ (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 f64 i32) (result i32))) - (type $7 (func (param i32 i32 i32))) + (type $6 (func (param i32) (result i64))) + (type $7 (func (param i32 f32) (result i32))) (type $8 (func (param i32 f64) (result i32))) - (type $9 (func (param i32 f32) (result i32))) + (type $9 (func (param i32 i32 i32))) (type $10 (func (param f64) (result i32))) (type $11 (func (param f32) (result i32))) (type $12 (func (param i32 i32 i64))) - (type $13 (func (param i32 i32 i32) (result i32))) - (type $14 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $15 (func (result i32))) + (type $13 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,7 +24,16 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36140)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36364)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\000\00.\000") @@ -42,39 +43,40 @@ (data $2.1 (i32.const 1112) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $3 (i32.const 1148) ",") (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $5 (i32.const 1256) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $16 (i32.const 2920) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $17 (i32.const 3004) "\1c") + (data $17.1 (i32.const 3016) "\02\00\00\00\06\00\00\001\00.\001") + (data $18 (i32.const 3036) ",") + (data $18.1 (i32.const 3048) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s") + (data $19 (i32.const 3094) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $20 (i32.const 3276) "\1c") + (data $20.1 (i32.const 3288) "\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") + (data $21 (i32.const 3308) ",") + (data $21.1 (i32.const 3320) "\04\00\00\00\10\00\00\00\e0\0c\00\00\e0\0c\00\00\0c\00\00\00\03") + (data $22 (i32.const 3356) "\1c") + (data $22.1 (i32.const 3368) "\02") + (data $23 (i32.const 3388) "\1c") + (data $23.1 (i32.const 3400) "\02\00\00\00\02\00\00\00,") + (data $24 (i32.const 3420) ",") + (data $24.1 (i32.const 3432) "\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003") + (data $25 (i32.const 3468) ",") + (data $25.1 (i32.const 3480) "\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@") + (data $26 (i32.const 3516) ",") + (data $26.1 (i32.const 3528) "\05\00\00\00\10\00\00\00\a0\r\00\00\a0\r\00\00\18\00\00\00\03") + (data $27 (i32.const 3568) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/__visit (param $0 i32) @@ -106,7 +108,7 @@ i32.eqz if i32.const 0 - i32.const 2656 + i32.const 1280 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -115,7 +117,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + block $__inlined_func$~lib/rt/itcms/Object#unlink$144 local.get $1 i32.load offset=4 i32.const -4 @@ -127,19 +129,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 36140 + i32.const 36364 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 2656 + i32.const 1280 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + br $__inlined_func$~lib/rt/itcms/Object#unlink$144 end local.get $1 i32.load offset=8 @@ -147,7 +149,7 @@ i32.eqz if i32.const 0 - i32.const 2656 + i32.const 1280 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -176,12 +178,12 @@ i32.const 1 else local.get $0 - i32.const 3344 + i32.const 3568 i32.load i32.gt_u if - i32.const 2784 - i32.const 2848 + i32.const 1408 + i32.const 1472 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -190,7 +192,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3348 + i32.const 3572 i32.add i32.load i32.const 32 @@ -239,8 +241,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 2592 - i32.const 2656 + i32.const 1216 + i32.const 1280 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -250,7 +252,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$72 + block $__inlined_func$~lib/rt/itcms/interrupt$69 i32.const 2048 local.set $1 loop $do-loop|0 @@ -267,7 +269,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$72 + br $__inlined_func$~lib/rt/itcms/interrupt$69 end local.get $1 i32.const 0 @@ -300,8 +302,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 2592 - i32.const 2928 + i32.const 1216 + i32.const 1552 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -404,7 +406,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 1552 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -419,7 +421,7 @@ i32.gt_u if i32.const 0 - i32.const 2928 + i32.const 1552 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -438,7 +440,7 @@ i32.and if i32.const 0 - i32.const 2928 + i32.const 1552 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -543,184 +545,58 @@ memory.fill local.get $1 ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i64) (local $7 i64) - (local $8 i32) - (local $9 i32) + (local $8 i64) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $4 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 - end - local.get $2 - if (result i64) - local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - else - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.set $5 - local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - end - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.get $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $6 - i64.clz - i32.wrap_i64 - local.tee $8 - i32.sub - local.set $9 - local.get $6 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $3 - local.get $3 - i64.const 8388608 - i64.const 4503599627370496 - local.get $2 - select - i64.eq - i32.const 1 - i32.add - local.tee $2 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $5 - local.get $2 - i32.sub - local.get $9 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $9 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_sat_f64_s - local.tee $2 - local.get $2 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 + local.get $0 + i32.const 10 i32.add local.tee $2 - i32.const 3 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.tee $3 + i32.const 4 i32.shl - local.tee $5 - i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 1256 + i32.const 2552 i32.add + local.tee $4 i64.load - global.set $~lib/util/number/_frc_pow - local.get $2 - i32.const 1 - i32.shl - i32.const 1952 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $3 - local.get $3 - i64.clz - i64.shl - local.tee $3 + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 i64.const 4294967295 i64.and local.set $10 - local.get $3 + local.get $1 i64.const 32 i64.shr_u local.tee $6 - global.get $~lib/util/number/_frc_pow + i32.const 0 + local.get $2 + local.get $3 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 + i32.shl + i32.const 2344 + i32.add + i64.load local.tee $11 i64.const 4294967295 i64.and @@ -732,130 +608,115 @@ i64.const 32 i64.shr_u i64.add - local.set $13 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $14 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 - local.get $12 + local.set $7 + local.get $1 + local.get $11 i64.mul + local.set $8 local.get $12 - local.get $14 - i64.mul + local.get $9 i64.const 32 i64.shr_u - i64.add - local.set $15 - global.get $~lib/util/number/_frc_minus - local.tee $16 + local.tee $1 + i64.mul + local.get $9 i64.const 4294967295 i64.and - local.set $3 - local.get $12 - local.get $16 - i64.const 32 - i64.shr_u - local.tee $16 - i64.mul - local.get $3 + local.tee $5 local.get $12 i64.mul i64.const 32 i64.shr_u i64.add local.set $12 - local.get $7 local.get $11 i64.const 32 i64.shr_u - local.tee $7 - i64.mul - local.get $15 - i64.const 32 - i64.shr_u - i64.add - local.get $7 - local.get $14 - i64.mul - local.get $15 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $11 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 + local.tee $13 local.get $6 - local.get $7 i64.mul - local.get $13 + local.get $7 i64.const 32 i64.shr_u i64.add - local.get $7 local.get $10 - i64.mul local.get $13 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add - i64.const 2147483647 - i64.add i64.const 32 i64.shr_u i64.add + local.tee $6 + local.get $9 local.get $11 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $11 - local.get $7 - local.get $16 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 i64.mul local.get $12 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $7 + local.get $5 + local.get $13 i64.mul local.get $12 i64.const 4294967295 i64.and i64.add - i64.const 2147483647 - i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 i64.add - i64.sub - local.get $4 - call $~lib/util/number/genDigits - local.get $4 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $4 + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 2920 i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -867,11 +728,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 3596 i32.lt_s if - i32.const 36160 - i32.const 36208 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1019,1340 +880,4419 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/util/dtoa/ftoa_buffered (param $0 i32) (param $1 f32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i32) + local.get $0 + local.set $2 local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 2928 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 + i32.reinterpret_f32 local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 + i32.const 1 i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 + i32.const 24 + i32.shr_u + local.set $5 + local.get $4 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.set $7 + local.get $4 + i32.const 31 + i32.shr_u + local.set $4 + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) local.get $5 - i32.eqz + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + local.get $4 if - local.get $0 - local.get $0 - i32.load - i32.const -2 local.get $2 - i32.rotl - i32.and - i32.store + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 2928 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 2928 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $5 + i32.const 150 + i32.sub + local.tee $4 + i32.const 24 + i32.lt_s + local.get $4 + i32.const -23 + i32.ge_s + i32.and + if + local.get $7 + i64.const 8388608 + i64.or + local.set $3 + local.get $4 + i32.const 0 + i32.lt_s + if (result i64) + i64.const 1 + i32.const 0 + local.get $4 + i32.sub + i64.extend_i32_s + local.tee $8 + i64.shl + i64.const 1 + i64.sub + local.get $3 + i64.and + i64.eqz + if (result i64) + local.get $3 + local.get $8 + i64.shr_u + else + i64.const 0 + end + else + local.get $3 + local.get $4 + i64.extend_i32_s + i64.shl + local.tee $3 + i64.const 0 + local.get $3 + i64.const 16777216 + i64.le_u + select + end + local.tee $3 + i64.const 0 + i64.ne + if + local.get $2 + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $3 + i64.const 100000000 + i64.lt_u + if + local.get $3 + i64.const 10000 + i64.lt_u + if + local.get $3 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $3 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $3 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 1000000000000 + i64.lt_u + if + local.get $3 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $3 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $5 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 10 + i64.ge_u + if + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + else + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $7 + i64.const 8388608 + i64.or + local.set $8 + local.get $5 + i32.const 150 + i32.sub + local.set $5 + local.get $7 + i64.const 0 + i64.ne + local.tee $9 + if (result i32) + local.get $5 + i32.const 37 + i32.add + i32.const -1 + local.get $5 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.tee $4 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + else + local.get $5 + i32.const 37 + i32.add + local.get $5 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.tee $4 + i32.const -1701 + i32.mul + i32.const 1701 + i32.sub + i32.const 9 + i32.shr_s + i32.add + end + local.set $6 + local.get $4 + i32.const 16 + i32.le_s + local.get $4 + i32.const -28 + i32.ge_s + i32.and + if (result i64) + local.get $4 + i32.const 3 + i32.shl + i32.const 2352 + i32.add + i64.load + else + i32.const 292 + local.get $4 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $3 + global.get $~lib/util/dtoa/gPow10Hi + local.get $3 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + end + local.tee $7 + i64.const 32 + i64.shr_u + local.get $8 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + local.get $8 + i64.mul + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $3 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 40 + local.get $6 + i64.extend_i32_s + local.tee $10 + i64.sub + i64.shr_u + local.tee $11 + i64.const 68719476735 + i64.and + local.set $3 + local.get $11 + i64.const 1 + local.get $8 + i64.const 1 + i64.and + i64.sub + local.get $7 + i64.const 65 + local.get $10 + i64.sub + i64.shr_u + i64.add + local.tee $7 + i64.add + i64.const 36 + i64.shr_u + local.set $8 + local.get $3 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $3 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + local.set $6 + local.get $9 + if (result i32) + local.get $8 + local.get $11 + local.get $7 + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + else + local.get $6 + i32.const 1 + i32.add + local.get $6 + local.get $5 + i32.const 64 + i32.eq + local.get $5 + i32.const -119 + i32.eq + i32.or + local.get $5 + i32.const 67 + i32.eq + i32.or + select + local.set $6 + local.get $8 + local.get $11 + local.get $7 + i64.const 1 + i64.shr_u + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + end + local.get $8 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $6 + global.set $~lib/util/dtoa/gLastDigit + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $5 + if + local.get $7 + i64.const 0 + i64.ne + if + local.get $2 + i32.const 78 + i32.store16 + local.get $2 + i32.const 97 + i32.store16 offset=2 + local.get $2 + i32.const 78 + i32.store16 offset=4 + local.get $2 + i32.const 6 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 + end + local.get $2 + i64.const 29555310648492105 + i64.store + local.get $2 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $7 + i64.eqz + if + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 + end + i32.const 337 + call $~lib/util/dtoa/computePow10Compact + local.set $3 + global.get $~lib/util/dtoa/gPow10Hi + local.get $3 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.tee $3 + i64.const 4294967295 + i64.and + local.get $7 + i64.mul + local.set $8 + local.get $3 + i64.const 32 + i64.shr_u + local.get $7 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $8 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 6 + i64.shr_u + local.tee $8 + i64.const 68719476735 + i64.and + local.set $10 + local.get $8 + i64.const 1 + local.get $7 + i64.const 1 + i64.and + i64.sub + local.get $3 + i64.const 31 + i64.shr_u + i64.add + local.tee $3 + i64.add + i64.const 36 + i64.shr_u + local.tee $7 + global.set $~lib/util/dtoa/gSig + i32.const -45 + global.set $~lib/util/dtoa/gExp + local.get $10 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $10 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + local.get $8 + local.get $3 + i64.sub + i64.const 36 + i64.shr_u + local.get $7 + i64.ge_u + global.set $~lib/util/dtoa/gHasLastDigit + i32.const -45 + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $3 + i64.const 10000 + i64.lt_u + if + i32.const -49 + local.set $4 + local.get $3 + i64.const 10000 + i64.mul + local.set $3 + end + local.get $3 + i64.const 1000000 + i64.lt_u + if + local.get $4 + i32.const 2 + i32.sub + local.set $4 + local.get $3 + i64.const 100 + i64.mul + local.set $3 + end + local.get $3 + i64.const 10000000 + i64.lt_u + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + end + local.get $3 + local.get $3 + i64.const 10 + i64.div_u + local.tee $3 + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $3 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $5 + global.set $~lib/util/dtoa/gLastDigit + local.get $5 + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $6 + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.tee $9 + global.get $~lib/util/dtoa/gExp + i32.const 7 + i32.add + i32.add + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + local.get $6 + select + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $6 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + global.get $~lib/util/dtoa/gSig + local.tee $3 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $3 + i64.add + local.tee $3 + local.get $3 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $3 + local.get $3 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $7 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $7 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 70 + local.get $3 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 3 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gDigits + local.get $4 + i32.const 20 + i32.le_s + local.get $4 + i32.const -6 + i32.ge_s + i32.and + if + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $6 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $7 + global.get $~lib/util/dtoa/gDigHi + local.set $3 + local.get $9 + i32.eqz + if + local.get $7 + i64.const 56 + i64.shl + local.get $3 + i64.const 8 + i64.shr_u + i64.or + local.set $3 + end + local.get $2 + local.set $5 + i32.const 8 + global.get $~lib/util/dtoa/gDigits + local.get $9 + i32.sub + local.get $6 + select + local.set $6 + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $4 + i32.const 8 + i32.ge_s + if + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $9 + if + local.get $2 + local.get $7 + i64.store16 offset=16 + end + local.get $5 + local.get $4 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $5 + local.get $9 + i32.const 8 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_u + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $4 + i32.const 46 + i32.store16 + local.get $4 + i32.const 48 + i32.store16 offset=2 + local.get $4 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $6 + local.get $9 + i32.add + local.set $2 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $2 + local.get $6 + i32.gt_s + select + else + local.get $2 + end + local.set $6 + local.get $5 + i32.const 1 + local.get $4 + i32.sub + local.get $4 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $9 + if + local.get $2 + local.get $7 + i64.store16 offset=16 + end + local.get $4 + i32.const 0 + i32.ge_s + if + local.get $7 + i64.const 0 + local.get $9 + select + local.set $7 + local.get $4 + i32.const 1 + i32.add + local.tee $9 + i32.const 3 + i32.shl + local.tee $12 + i32.const 64 + i32.lt_s + if + local.get $7 + i64.const 64 + local.get $12 + i64.extend_i32_s + local.tee $7 + i64.sub + i64.shl + local.get $3 + local.get $7 + i64.shr_u + i64.or + local.set $7 + end + local.get $9 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $12 + local.get $7 + i64.const 4294967295 + i64.and + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $12 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $5 + i32.const 46 + i32.store16 offset=2 + end + local.get $2 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.set $2 + local.get $6 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $4 + i32.const 0 + i32.ge_s + i32.and + if + local.get $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $2 + local.get $5 + i32.const 2 + i32.add + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + end + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $2 + local.tee $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.tee $2 + global.get $~lib/util/dtoa/gDigHi + local.tee $3 + i64.const 4294967295 + i64.and + local.tee $7 + local.get $7 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $7 + local.get $7 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=16 + local.get $2 + i32.const 9 + global.get $~lib/util/dtoa/gDigits + local.get $9 + i32.eqz + i32.add + local.get $6 + select + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $while-continue|2 + local.get $2 + local.get $5 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|2 + end + end + local.get $5 + local.get $5 + i32.load16_u offset=2 + i32.store16 + local.get $5 + i32.const 46 + i32.store16 offset=2 + local.get $2 + local.get $2 + local.get $5 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $2 + i32.const 101 + i32.store16 + local.get $2 + local.get $4 + i32.const 31 + i32.shr_s + local.tee $5 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + local.set $2 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $4 + local.get $5 + i32.xor + local.get $5 + i32.sub + local.tee $4 + i32.const 100 + i32.ge_s + if + local.get $2 + local.get $4 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $5 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + local.get $5 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=2 + local.get $2 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $4 + i32.const 10 + i32.ge_s + if + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $2 + local.get $4 + i32.const 48 + i32.add + i32.store16 + local.get $2 + i32.const 2 + i32.add + end end - local.get $4 - i32.const 4 + local.get $0 i32.sub + i32.const 1 + i32.shr_u + ) + (func $~lib/util/dtoa/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) local.get $1 - i32.store + i64.reinterpret_f64 + local.tee $2 + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $6 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + i64.const 4503599627370495 + i64.and + local.set $5 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $3 + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $6 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.tee $7 + i32.eqz + if + local.get $6 + if + local.get $5 + i64.const 0 + i64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + local.get $0 + i32.const 6 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.tee $3 + i64.const 29555310648492105 + i64.store + local.get $3 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.set $3 + local.get $7 + if + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $6 + i32.const 1075 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if (result i64) + i32.const 0 + local.get $8 + i32.sub + local.tee $8 + i32.const 52 + i32.le_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $4 + i64.shl + i64.const 1 + i64.sub + local.get $2 + i64.and + i64.eqz + select + else + i64.const 0 + end + else + local.get $8 + i32.const 11 + i32.lt_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + i64.shl + local.tee $2 + i64.const 0 + local.get $2 + i64.const 10000000000000000 + i64.lt_u + select + else + i64.const 0 + end + end + local.tee $4 + i64.const 0 + i64.ne + if + local.get $3 + local.get $4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $4 + i64.const 100000000 + i64.lt_u + if + local.get $4 + i64.const 10000 + i64.lt_u + if + local.get $4 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $4 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $4 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 1000000000000 + i64.lt_u + if + local.get $4 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $4 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $4 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $7 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 10 + i64.ge_u + if + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $7 + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $6 + i32.const 1075 + i32.sub + local.set $7 + local.get $5 + i64.eqz + if + local.get $7 + i32.const -1 + local.get $7 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + i32.const 20 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.set $8 + block $~lib/util/dtoa/computePow10|inlined.0 + local.get $7 + i32.const 293 + i32.add + local.tee $7 + i32.const 320 + i32.le_s + local.get $7 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $7 + i32.sub + local.tee $7 + i32.const 3 + i32.shl + i32.const 1992 + i32.add + i64.load + local.set $2 + local.get $7 + i32.const 44 + i32.le_s + if + local.get $2 + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + i32.const 3 + i32.shl + i32.const 2128 + i32.add + i64.load + drop + local.get $2 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + call $~lib/util/dtoa/computePow10Compact + drop + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $2 + i64.const 11 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.sub + i64.shr_u + local.set $5 + i64.const 10 + i64.const 2 + local.get $2 + local.get $4 + i64.const 53 + i64.add + local.tee $9 + i64.shl + local.tee $10 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + local.tee $11 + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + local.get $10 + local.get $9 + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $4 + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $4 + i64.sub + i64.shr_u + local.get $2 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + local.tee $2 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + local.get $11 + i64.const 511 + i64.and + i64.lt_u + select + local.get $10 + i64.const 4611686018427387904 + i64.eq + select + i64.const 0 + local.get $2 + i64.const 1 + i64.shr_u + local.get $10 + i64.le_u + select + local.get $2 + i64.const -1 + local.get $10 + i64.sub + i64.gt_u + select + local.tee $2 + i64.const 10 + i64.eq + if + local.get $5 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $5 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $5 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $7 + i32.const -1 + local.get $6 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.tee $8 + i32.const 7 + i32.add + local.set $12 + block $~lib/util/dtoa/computePow10|inlined.1 + local.get $7 + i32.const 293 + i32.add + local.tee $13 + i32.const 320 + i32.le_s + local.get $13 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $13 + i32.sub + local.tee $13 + i32.const 3 + i32.shl + i32.const 1992 + i32.add + i64.load + local.set $5 + local.get $13 + i32.const 44 + i32.le_s + if + local.get $5 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + local.set $4 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + i32.const 3 + i32.shl + i32.const 2128 + i32.add + i64.load + local.set $4 + local.get $5 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + call $~lib/util/dtoa/computePow10Compact + local.set $4 + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $5 + local.get $2 + local.get $12 + i64.extend_i32_s + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $4 + local.get $7 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + local.tee $11 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $14 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $14 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + i64.const 10 + local.get $10 + local.get $11 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $4 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $4 + i64.const 6 + i64.shr_u + i64.or + local.tee $4 + i64.const 10 + i64.mul + local.tee $10 + local.get $10 + i64.const -9223372036854775802 + i64.const 0 + local.get $4 + i64.const 4611686018427387904 + i64.ne + select + i64.add + i64.gt_u + i64.extend_i32_u + local.get $4 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $2 + i64.const 1 + i64.and + i64.sub + local.get $5 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.add + local.tee $2 + local.get $4 + i64.le_u + select + i64.const -1 + local.get $4 + i64.sub + local.get $2 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + end + else + i32.const 616 + call $~lib/util/dtoa/computePow10Compact + local.set $2 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $4 + local.get $5 + i64.const 5 + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $14 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $11 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + i64.const 10 + local.get $10 + local.get $14 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $2 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $2 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.tee $10 + i64.const 9223372036854775802 + i64.sub + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $5 + i64.const 1 + i64.and + i64.sub + local.get $4 + i64.const 2 + i64.shr_u + i64.add + local.tee $4 + local.get $2 + i64.le_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $4 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + i32.const -324 + global.set $~lib/util/dtoa/gExp + end + global.get $~lib/util/dtoa/gSig + i64.const 1000000000000000 + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $2 + i64.const 1000000000000000 + i64.ge_u + if + local.get $2 + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $2 + i64.const 100000000 + i64.lt_u + if + local.get $2 + i64.const 10000 + i64.lt_u + if + local.get $2 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $2 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $2 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 1000000000000 + i64.lt_u + if + local.get $2 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $2 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + i32.const 15 + end + i32.sub + local.tee $6 + i32.const 3 + i32.shl + i32.const 3088 + i32.add + f64.load + i64.trunc_sat_f64_u + local.get $2 + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $6 + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + end + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $7 + global.get $~lib/util/dtoa/gSig + local.tee $2 + i64.const 100000000 + i64.div_u + local.tee $4 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $4 + i64.add + local.tee $5 + local.get $5 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $5 + local.get $5 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $5 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $5 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $5 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $5 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + local.tee $2 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul local.get $2 + i64.add + local.tee $2 local.get $2 - i32.const 1073741820 - i32.ge_u - select + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + global.get $~lib/util/dtoa/gExp i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + i32.add + local.tee $8 + i32.const 20 + i32.le_s + local.get $8 + i32.const -6 + i32.ge_s + i32.and + if + local.get $8 + i32.const 0 + i32.lt_s + if + local.get $3 + i64.const 13511005043687472 + i64.store + local.get $3 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $7 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $4 + i32.const 16 + i32.const 15 + local.get $7 + select + local.set $6 + global.get $~lib/util/dtoa/gDigHi + local.set $9 + global.get $~lib/util/dtoa/gDigLo + local.set $5 + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $8 + i32.const 16 + i32.ge_s + if + local.get $3 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $3 + local.get $4 + i64.store16 offset=32 + local.get $3 + local.get $8 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $3 + i32.const 34 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_u + if + local.get $6 + i64.const 13511005043687472 + i64.store + local.get $6 + i64.const 13511005043687472 + i64.store offset=8 + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + i32.const 46 + i32.store16 + local.get $7 + i32.const 48 + i32.store16 offset=2 + local.get $7 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.tee $6 + i32.const 1 + i32.add + local.get $6 + local.get $8 + i32.const 0 + i32.ge_s + local.tee $6 + select + local.set $12 + local.get $3 + i32.const 1 + local.get $8 + i32.sub + local.get $8 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $13 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $13 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $13 + local.get $4 + i64.store16 offset=32 + local.get $6 + if + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + local.tee $6 + i32.const 64 + i32.lt_s + if + local.get $5 + i64.const 64 + local.get $6 + i64.extend_i32_s + local.tee $10 + i64.sub + local.tee $11 + i64.shl + local.get $9 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $11 + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $4 + else + local.get $6 + i32.const 64 + i32.eq + if + local.get $5 + local.set $2 + else + local.get $6 + i32.const 128 + i32.lt_s + if (result i64) + local.get $6 + i32.const -64 + i32.add + i64.extend_i32_s + local.tee $2 + local.set $10 + local.get $4 + i64.const 64 + local.get $2 + i64.sub + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $10 + i64.shr_u + else + local.get $4 + local.set $2 + i64.const 0 end - return + local.set $4 end - return end - return + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $10 + local.get $10 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $10 + local.get $10 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 9 + i32.add + local.tee $6 + local.get $12 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + end + local.get $13 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $3 + i32.const 46 + i32.store16 offset=2 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.get $13 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $12 + local.get $8 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.const 0 + i32.ge_s + i32.and + if + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $7 + i32.eqz + if + local.get $3 + local.get $5 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 8 + i32.eq + if (result i32) + local.get $3 + local.get $9 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $3 + end + i32.const 1 + i32.shl + i32.sub + local.set $3 + end + local.get $3 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $3 + i32.const 48 + i32.store16 + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + end + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 + local.get $3 i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 + local.tee $6 + global.get $~lib/util/dtoa/gDigHi + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $6 + i32.const 16 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + global.get $~lib/util/dtoa/gDigLo + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $6 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2168 + i32.store16 offset=32 + local.get $6 + local.get $7 + i32.const 16 i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub i32.const 1 i32.shl i32.add - local.get $1 - i32.const 48 - i32.add + local.set $6 + local.get $3 + local.get $3 + i32.load16_u offset=2 i32.store16 - end - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $7 + i32.eqz if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 + global.get $~lib/util/dtoa/gDigHi + local.set $2 + local.get $6 + global.get $~lib/util/dtoa/gDigLo + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $6 + i32.const 8 + i32.eq + if (result i32) + local.get $6 local.get $2 - i32.const 8 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $6 end - unreachable - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/util/number/dtoa_core - end - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) - (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + i32.const 1 + i32.shl + i32.sub + local.set $6 end - local.get $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 - local.get $2 - f64.ne + local.get $6 + local.get $6 + local.get $3 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $3 + i32.const 101 + i32.store16 + local.get $3 + local.get $8 + i32.const 31 + i32.shr_s + local.tee $6 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $6 + local.get $8 + i32.xor + local.get $6 + i32.sub + local.tee $6 + i32.const 100 + i32.ge_s if - local.get $0 - i32.const 78 + local.get $3 + local.get $6 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $7 + i32.const 48 + i32.add i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 local.get $3 - i32.const 8 + local.get $6 + local.get $7 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=2 + local.get $3 + i32.const 6 i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + br $~lib/util/dtoa/writeExponent|inlined.1 end - unreachable + local.get $6 + i32.const 10 + i32.ge_s + if + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $3 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 2 + i32.add end - local.get $0 - local.get $2 - i32.const 1 - call $~lib/util/number/dtoa_core end + local.get $0 + i32.sub + i32.const 1 + i32.shr_u ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - i32.const 1088 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 1120 - i32.const 1168 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.1 - end - global.get $~lib/memory/__stack_pointer - i32.const 1200 - local.get $0 + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1200 - local.get $2 - memory.copy + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if local.get $1 - f64.sub - f64.const 0 - f64.ne + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if - i32.const 1088 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1120 - i32.const 1168 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - global.get $~lib/memory/__stack_pointer - i32.const 1200 - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 1200 - local.get $3 - memory.copy end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.load + local.tee $3 i32.const 1 - i32.shr_u - local.tee $1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select - i32.const 1 - i32.shl + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add local.tee $4 - local.get $3 - i32.sub + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3152 - return + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end local.get $3 - i32.eqz - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq + i32.const 2 i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - return + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 + i32.const 2 + i32.or + i32.store local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 i32.add local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 + i32.store + local.get $2 i32.const 256 i32.lt_u - if - local.get $1 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.xor end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 2928 - i32.const 334 + i32.const 1552 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.const -1 + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 10000 + i32.ge_u + if local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 local.get $2 - i32.ctz - local.get $1 i32.const 4 + i32.sub + local.tee $2 + i32.const 1 i32.shl i32.add + local.get $3 + i32.const 100 + i32.div_u i32.const 2 i32.shl + i32.const 1596 i32.add - i32.load offset=96 - else - i32.const 0 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 i32.const 1 + i32.shl + i32.add local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end + local.get $1 + i32.const 10 + i32.ge_u if - unreachable - end - i32.const 36144 - i32.const 0 - i32.store - i32.const 37712 - i32.const 0 - i32.store - loop $for-loop|0 local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 36144 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36144 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - i32.const 36144 - i32.const 37716 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36144 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s if - i32.const 0 - i32.const 2928 - i32.const 382 - i32.const 14 + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + f64.const 0 + f64.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 2928 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/memory/__stack_pointer + i32.const 1056 + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + local.get $0 + f64.ne if - i32.const 0 - i32.const 2928 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1088 + return end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + i32.const 1168 + local.get $0 + f64.const 0 + f64.lt + select return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 3104 - call $~lib/rt/itcms/__visit - i32.const 3312 - call $~lib/rt/itcms/__visit - i32.const 2784 - call $~lib/rt/itcms/__visit - i32.const 2592 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.const 4741671816366391296 + i64.le_u + local.get $4 + i64.const 4607182418800017408 + i64.ge_u i32.and - local.set $0 - loop $while-continue|0 + if local.get $0 - local.get $1 - i32.ne + local.get $0 + i32.trunc_sat_f64_s + local.tee $1 + f64.convert_i32_s + f64.eq if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $6 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 100 + i32.lt_u + if (result i32) + local.get $6 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $6 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $6 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $6 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $6 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $6 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $6 + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 2656 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + else + local.get $6 + i32.const 100 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + else + local.get $6 + i32.const 10000 + i32.lt_u + if + local.get $6 + local.get $6 + i32.const 100 + i32.div_u + local.tee $7 + i32.const 100 + i32.mul + i32.sub + local.set $5 + local.get $6 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $7 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $6 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + end + end end - local.get $0 - i32.const 20 + local.get $2 + local.get $3 + i32.const 1 + i32.shl i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end end - ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 2000 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + call $~lib/util/dtoa/dtoa_buffered + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 2000 + local.get $1 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~start - (local $0 i32) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2363,1229 +5303,1263 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 36140 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + if + i32.const 36384 + i32.const 36432 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 2708 - i32.const 2704 - i32.store - i32.const 2712 - i32.const 2704 - i32.store - i32.const 2704 - global.set $~lib/rt/itcms/pinSpace - i32.const 2740 - i32.const 2736 - i32.store - i32.const 2744 - i32.const 2736 - i32.store - i32.const 2736 - global.set $~lib/rt/itcms/toSpace - i32.const 2884 - i32.const 2880 - i32.store - i32.const 2888 - i32.const 2880 - i32.store - i32.const 2880 - global.set $~lib/rt/itcms/fromSpace - f32.const 1.100000023841858 - call $~lib/util/number/dtoa - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3024 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1 - call $~lib/util/number/dtoa - local.set $1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + f32.const 0 + f32.eq + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.ne + if + local.get $0 + local.get $0 + f32.ne if - i32.const 0 - i32.const 3024 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1088 + return end global.get $~lib/memory/__stack_pointer - i32.const 3104 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3104 - i32.store - i32.const 3108 - i32.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3104 - i32.store - i32.const 3116 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store - global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinFloatArray$143 + i32.const 1120 + i32.const 1168 + local.get $0 + f32.const 0 + f32.lt + select + return + end + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1266679808 + i32.le_u + local.get $1 + i32.const 1065353216 + i32.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f32_s + local.tee $1 + f32.convert_i32_s + f32.eq + if + i32.const 0 local.get $1 - i32.const 1 i32.sub - local.tee $4 + local.get $1 + local.get $1 i32.const 0 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3152 - local.set $1 - br $__inlined_func$~lib/util/string/joinFloatArray$143 - end - local.get $4 - i32.eqz - if - local.get $3 - f32.load - call $~lib/util/number/dtoa - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$143 + local.tee $2 + select + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end end + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3180 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 + local.get $2 + local.get $3 i32.add - local.get $4 - i32.mul - i32.const 28 + i32.const 2 i32.add - local.tee $6 i32.const 1 i32.shl call $~lib/rt/itcms/__new local.tee $1 - i32.store offset=4 - loop $for-loop|0 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $5 + i32.const 10 + i32.lt_u + if local.get $2 - local.get $4 - i32.lt_s + local.get $5 + i32.const 48 + i32.add + i32.store16 + else + local.get $5 + i32.const 100 + i32.lt_u if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 local.get $2 + local.get $5 i32.const 2 i32.shl + i32.const 1596 i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.set $0 + i32.load + i32.store + else local.get $5 + i32.const 10000 + i32.lt_u if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 3184 local.get $5 - i32.const 1 - i32.shl - memory.copy - local.get $0 local.get $5 - i32.add - local.set $0 + i32.const 100 + i32.div_u + local.tee $6 + i32.const 100 + i32.mul + i32.sub + local.set $4 + local.get $5 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 1596 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $5 + local.get $3 + call $~lib/util/number/utoa32_dec_lut end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end end - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add + local.get $2 local.get $3 - local.get $4 - i32.const 2 + i32.const 1 i32.shl i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.tee $0 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$143 - end + i32.const 3145774 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 + return end + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + local.get $0 + call $~lib/util/dtoa/ftoa_buffered + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 2000 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 3376 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store + i32.const 4 + i32.shr_u + local.set $1 + else local.get $1 - i32.const 3216 - call $~lib/string/String.__eq - i32.eqz + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 3024 - i32.const 5 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 3312 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3312 - i32.store - i32.const 3316 - i32.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3312 - i32.store - i32.const 3324 + i32.const 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 i32.load - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinFloatArray$144 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3152 - local.set $1 - br $__inlined_func$~lib/util/string/joinFloatArray$144 - end - local.get $4 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if - local.get $3 - f64.load - call $~lib/util/number/dtoa - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3180 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - local.get $4 - i32.mul - i32.const 28 + i32.const 2 + i32.shl i32.add - local.tee $6 - i32.const 1 + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36368 + i32.const 0 + i32.store + i32.const 37936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 i32.shl - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 + i32.const 36368 + i32.add i32.const 0 - local.set $0 + i32.store offset=4 i32.const 0 - local.set $2 - loop $for-loop|01 - local.get $2 - local.get $4 - i32.lt_s + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - local.get $1 local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.const 3 + i32.const 4 i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $5 - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 3184 - local.get $5 - i32.const 1 - i32.shl - memory.copy - local.get $0 - local.get $5 - i32.add - local.set $0 - end - local.get $2 + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $1 + br $for-loop|1 end end - local.get $1 local.get $0 i32.const 1 - i32.shl i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36368 + i32.const 37940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3328 + call $~lib/rt/itcms/__visit + i32.const 3536 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if local.get $0 - i32.add - local.tee $0 - local.get $6 - i32.lt_s + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end + end + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 36364 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + f32.const 1.100000023841858 + call $~lib/util/number/dtoa + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1 + call $~lib/util/number/dtoa + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 - i32.const 3216 + local.get $2 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3024 - i32.const 8 + i32.const 3056 + i32.const 2 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 3328 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 + global.get $~lib/memory/__stack_pointer + i32.const 3328 i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 + i32.const 3332 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + i32.const 3340 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray$1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $3 i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 + local.tee $3 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 + global.set $~lib/memory/__stack_pointer + i32.const 3376 + br $__inlined_func$~lib/util/string/joinFloatArray$1 + end + block $folding-inner00 + local.get $3 + i32.eqz + if local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 + f32.load + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner00 + end + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3404 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 32 + i32.add + local.get $3 + i32.mul + i32.const 32 + i32.add + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 i32.lt_s - local.tee $2 if - i32.const 0 + local.get $6 local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/dtoa/ftoa_buffered local.get $0 - i32.const 100 - i32.lt_u - if (result i32) + i32.add + local.set $0 + local.get $4 + if + local.get $6 local.get $0 - i32.const 10 - i32.ge_u i32.const 1 + i32.shl i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.const 3408 + local.get $4 + i32.const 1 + i32.shl + memory.copy local.get $0 - i32.const 100000000 - i32.ge_u + local.get $4 i32.add + local.set $0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 - local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 - local.get $2 - local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or - if + local.get $6 local.get $0 - local.get $5 i32.const 1 i32.shl i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 + local.get $2 + local.get $3 + i32.const 2 + i32.shl i32.add - i32.store16 + f32.load + call $~lib/util/dtoa/ftoa_buffered + local.get $0 + i32.add + local.tee $0 local.get $5 - i32.const 1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner00 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $5 + global.set $~lib/memory/__stack_pointer + local.get $6 + br $__inlined_func$~lib/util/string/joinFloatArray$1 end - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3056 + i32.const 5 i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store + i32.const 3540 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store + i32.const 3548 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray$2 (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $7 - local.get $4 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 2128 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 + global.set $~lib/memory/__stack_pointer + i32.const 3376 + br $__inlined_func$~lib/util/string/joinFloatArray$2 + end + block $folding-inner01 + local.get $3 + i32.eqz + if + local.get $2 + f64.load + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner01 + end + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3404 + i32.load i32.const 1 - i32.sub + i32.shr_u + local.tee $4 + i32.const 32 + i32.add + local.get $3 + i32.mul + i32.const 32 + i32.add + local.tee $5 i32.const 1 i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|02 local.get $1 - i64.sub - local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end + local.get $3 + i32.lt_s if - local.get $7 + local.get $6 + local.get $0 i32.const 1 - i32.sub - local.set $7 - local.get $1 + i32.shl + i32.add local.get $2 - i64.add + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $4 + if + local.get $6 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 3408 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $4 + i32.add + local.set $0 + end + local.get $1 + i32.const 1 + i32.add local.set $1 - br $while-continue|3 + br $for-loop|02 end end + local.get $6 local.get $0 - local.get $7 - i32.store16 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $0 + i32.add + local.tee $0 local.get $5 - return + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner01 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + br $__inlined_func$~lib/util/string/joinFloatArray$2 end - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3440 + call $~lib/string/String.__eq + i32.eqz if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 + i32.const 0 + i32.const 3056 + i32.const 8 i32.const 1 - i32.add - local.set $5 + call $~lib/builtins/abort + unreachable end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 2128 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $0 - local.get $5 + i32.const 36384 + i32.const 36432 i32.const 1 - i32.sub i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -3669,7 +6643,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36140 + i32.const 36364 i32.lt_u if local.get $0 @@ -3758,14 +6732,14 @@ i32.ne if i32.const 0 - i32.const 2656 + i32.const 1280 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36140 + i32.const 36364 i32.lt_u if local.get $0 @@ -3788,7 +6762,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36140 + i32.const 36364 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -3817,7 +6791,7 @@ end if i32.const 0 - i32.const 2928 + i32.const 1552 i32.const 562 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/number.debug.wat b/tests/compiler/number.debug.wat index a6dc854df5..7a220fb4b0 100644 --- a/tests/compiler/number.debug.wat +++ b/tests/compiler/number.debug.wat @@ -14,10 +14,11 @@ (type $12 (func (param i64 i32) (result i32))) (type $13 (func (param i32 i64 i32 i32))) (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $15 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $16 (func (param i32 i32 i32) (result i32))) - (type $17 (func (param i32 f64 i32) (result i32))) - (type $18 (func (param f64 i32) (result i32))) + (type $15 (func (param i32) (result i64))) + (type $16 (func (param i64) (result i64))) + (type $17 (func (param i64) (result i32))) + (type $18 (func (param i32 f64) (result i32))) + (type $19 (func (param f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -35,12 +36,26 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) (global $~lib/builtins/f32.NaN f32 (f32.const nan:0x400000)) (global $~lib/number/F32.NaN f32 (f32.const nan:0x400000)) (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) @@ -51,10 +66,10 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/rt/__rtti_base i32 (i32.const 3632)) - (global $~lib/memory/__data_end i32 (i32.const 3652)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36420)) - (global $~lib/memory/__heap_base i32 (i32.const 36420)) + (global $~lib/rt/__rtti_base i32 (i32.const 3856)) + (global $~lib/memory/__data_end i32 (i32.const 3876)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36644)) + (global $~lib/memory/__heap_base i32 (i32.const 36644)) (memory $0 1) (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") @@ -76,18 +91,19 @@ (data $17 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $18 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 2432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2488) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $23 (i32.const 3352) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $24 (i32.const 3432) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $25 (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\002\00.\000\00\00\00\00\00\00\00") + (data $26 (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\005\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 3788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $31 (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $32 (i32.const 3856) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -2828,1374 +2844,4615 @@ i32.const 0 return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 2560 + i32.const 27 + local.get $minor i32.sub - local.set $one_exp + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 2984 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 3352 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 - end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 i32.const 1 i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 3360 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 end - else + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 end - if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + local.get $neg if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add + local.get $buf|8 + i32.const 45 i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u + local.get $isNormal if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 3360 - i32.const 0 - local.get $kappa + local.get $binExp|10 + i32.const 1075 i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 i64.sub - local.get $ten_kappa|33 + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 636 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $isNormal + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 2560 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 2560 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral + local.get $pow10Hi + i32.const 0 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|72 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 2560 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 2560 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u + i64.add + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 + end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 2560 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 2560 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 2560 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 2560 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 2560 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 2560 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end + end + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s else - i32.const 0 + i64.const 0 end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u if - local.get $digit|36 + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp i32.const 1 i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 end + i32.sub + local.set $scale + i32.const 3432 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 i32.add - local.get $ptr + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 i32.const -6 - local.get $kk - i32.lt_s + i32.ge_s if (result i32) - local.get $kk - i32.const 0 + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32.le_s else i32.const 0 end if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 i32.lt_s if - local.get $buffer - local.get $i|7 + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $i|7 + local.set $endByte + local.get $buf|289 + i32.const 17 i32.const 1 + i32.shl i32.add - local.set $i|7 - br $for-loop|1 + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.add + i32.const 1 + i32.shl i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 + local.set $p|347 + local.get $fHi + local.set $ascii|348 i32.const 0 - i32.lt_s - local.set $sign - local.get $sign + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 end - local.get $k|9 - call $~lib/util/number/decimalCount32 + local.get $buf|289 + local.get $k i32.const 1 + i32.shl i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select + i32.const 46 i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length + local.get $buf|289 + local.get $endPos i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer - i32.const 2 - i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 i32.add - local.set $buffer|16 - local.get $kk + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end i32.const 1 + i32.shl i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 if - i32.const 0 - local.get $k|17 + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 i32.sub - local.set $k|17 + local.set $end|359 end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 end - i32.add - local.set $length - local.get $length - i32.const 2 - i32.add - return + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit i32.const 1 - end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 2488 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 3184 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 636 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 636 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|387 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotation|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) @@ -4206,9 +7463,9 @@ (func $~lib/number/Bool#toString (param $this i32) (param $radix i32) (result i32) local.get $this if (result i32) - i32.const 3584 + i32.const 3808 else - i32.const 3616 + i32.const 3840 end return ) @@ -4334,8 +7591,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36448 - i32.const 36496 + i32.const 36672 + i32.const 36720 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4496,7 +7753,7 @@ local.get $4 i32.store local.get $4 - i32.const 3424 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if @@ -4515,7 +7772,7 @@ local.get $4 i32.store local.get $4 - i32.const 3456 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if @@ -4534,7 +7791,7 @@ local.get $4 i32.store local.get $4 - i32.const 3488 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if @@ -4553,7 +7810,7 @@ local.get $4 i32.store local.get $4 - i32.const 3520 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if @@ -4576,7 +7833,7 @@ local.get $4 i32.store local.get $4 - i32.const 3552 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -4619,7 +7876,7 @@ local.get $4 i32.store local.get $4 - i32.const 3584 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if @@ -4639,7 +7896,7 @@ local.get $4 i32.store local.get $4 - i32.const 3616 + i32.const 3840 call $~lib/string/String.__eq i32.eqz if @@ -4687,7 +7944,7 @@ local.get $4 i32.store local.get $4 - i32.const 3552 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -5329,7 +8586,7 @@ if i32.const 32 i32.const 160 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -5477,79 +8734,296 @@ return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 2288 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 2288 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 2320 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 2352 + i32.const 2400 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 2320 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 636 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 636 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 636 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 636 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 2352 - i32.const 2400 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 2432 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 2432 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 2432 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 2432 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) ) diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat index 71d88ecec9..1b51079bef 100644 --- a/tests/compiler/number.release.wat +++ b/tests/compiler/number.release.wat @@ -5,10 +5,8 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i64 i64 i32 i64) (result i32))) - (type $9 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -21,10 +19,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37668)) (memory $0 1) (data $0 (i32.const 1036) "|") (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") @@ -59,24 +54,25 @@ (data $18.1 (i32.const 3368) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $19 (i32.const 3404) ",") (data $19.1 (i32.const 3416) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $21 (i32.const 3512) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $23 (i32.const 4376) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $24 (i32.const 4462) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $25 (i32.const 4652) "\1c") + (data $25.1 (i32.const 4664) "\02\00\00\00\06\00\00\002\00.\000") + (data $26 (i32.const 4684) "\1c") + (data $26.1 (i32.const 4696) "\02\00\00\00\02\00\00\003") + (data $27 (i32.const 4716) "\1c") + (data $27.1 (i32.const 4728) "\02\00\00\00\04\00\00\00-\005") + (data $28 (i32.const 4748) "\1c") + (data $28.1 (i32.const 4760) "\02\00\00\00\02\00\00\004") + (data $29 (i32.const 4780) "\1c") + (data $29.1 (i32.const 4792) "\02\00\00\00\02\00\00\002") + (data $30 (i32.const 4812) "\1c") + (data $30.1 (i32.const 4824) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $31 (i32.const 4844) "\1c") + (data $31.1 (i32.const 4856) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $32 (i32.const 4880) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) @@ -89,11 +85,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4676 + i32.const 4900 i32.lt_s if - i32.const 37472 - i32.const 37520 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -192,7 +188,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$81 + block $__inlined_func$~lib/util/string/compareImpl$80 loop $while-continue|1 local.get $0 local.tee $3 @@ -212,7 +208,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 + br_if $__inlined_func$~lib/util/string/compareImpl$80 local.get $2 i32.const 2 i32.add @@ -245,16 +241,18 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4676 + i32.const 4900 i32.lt_s if - i32.const 37472 - i32.const 37520 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -272,7 +270,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 - local.set $0 + local.set $5 br $__inlined_func$~lib/util/number/itoa32$73 end global.get $~lib/memory/__stack_pointer @@ -285,71 +283,170 @@ i32.shr_u i32.const 1 i32.shl - local.tee $1 + local.tee $4 select - local.tee $3 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.tee $2 + local.tee $0 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 - local.get $1 + local.get $4 + local.get $5 i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + local.set $2 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end local.get $1 + i32.const 10 + i32.ge_u if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $2 local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + if + local.get $5 i32.const 45 i32.store16 end @@ -358,7 +455,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $5 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -398,7 +495,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + block $__inlined_func$~lib/rt/itcms/Object#unlink$166 local.get $1 i32.load offset=4 i32.const -4 @@ -410,7 +507,7 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 37444 + i32.const 37668 i32.lt_u i32.and i32.eqz @@ -422,7 +519,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 + br $__inlined_func$~lib/rt/itcms/Object#unlink$166 end local.get $1 i32.load offset=8 @@ -459,7 +556,7 @@ i32.const 1 else local.get $0 - i32.const 4656 + i32.const 4880 i32.load i32.gt_u if @@ -473,7 +570,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 4660 + i32.const 4884 i32.add i32.load i32.const 32 @@ -512,110 +609,6 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1181,10 +1174,10 @@ if unreachable end - i32.const 37456 + i32.const 37680 i32.const 0 i32.store - i32.const 39024 + i32.const 39248 i32.const 0 i32.store loop $for-loop|0 @@ -1195,7 +1188,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 37456 + i32.const 37680 i32.add i32.const 0 i32.store offset=4 @@ -1213,7 +1206,7 @@ i32.add i32.const 2 i32.shl - i32.const 37456 + i32.const 37680 i32.add i32.const 0 i32.store offset=96 @@ -1231,14 +1224,14 @@ br $for-loop|0 end end - i32.const 37456 - i32.const 39028 + i32.const 37680 + i32.const 39252 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 37456 + i32.const 37680 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) @@ -1721,761 +1714,17 @@ (func $~start call $start:number ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 - i32.add - else - local.get $2 - i32.const 21 - i32.le_s - local.get $2 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - local.tee $2 - i32.const 2 - i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 - i32.add - else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3456 - local.get $0 - i32.const 1 - i32.shl - memory.copy - i32.const 3456 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $2 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if - i32.const 3458 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 3460 - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 3460 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 3460 - i32.const 3458 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 3458 - i32.const 46 - i32.store16 - local.get $1 - i32.const 3456 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $0 - end - local.get $0 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - local.get $0 - i64.sub - local.set $8 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $9 - i64.const 1 - i64.sub - local.tee $11 - local.get $1 - i64.and - local.set $7 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.gt_s - if - block $break|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 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $7 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $2 - i32.const 2 - i32.shl - i32.const 4384 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3454 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 - local.get $0 - local.get $8 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $0 - local.get $1 - i64.add - local.tee $7 - i64.gt_u - local.get $8 - local.get $0 - i64.sub - local.get $7 - local.get $8 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $7 - i64.const 10 - i64.mul - local.tee $0 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $11 - i64.and - local.tee $7 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.const 4384 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 3454 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $7 - i64.gt_u - local.get $3 - local.get $7 - i64.sub - local.get $9 - i64.ge_u - i32.and - if (result i32) - local.get $0 - local.get $7 - i64.sub - local.get $7 - local.get $9 - i64.add - local.tee $1 - local.get $0 - i64.sub - i64.gt_u - local.get $0 - local.get $1 - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $7 - local.get $9 - i64.add - local.set $7 - br $while-continue|6 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end i32.const 1 global.set $~lib/rt/itcms/state i32.const 0 @@ -2547,7 +1796,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 37444 + i32.const 37668 i32.lt_u if local.get $0 @@ -2643,7 +1892,7 @@ unreachable end local.get $0 - i32.const 37444 + i32.const 37668 i32.lt_u if local.get $0 @@ -2666,7 +1915,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 37444 + i32.const 37668 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -2727,18 +1976,13 @@ ) (func $start:number (local $0 i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4676 + i32.const 4900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2747,7 +1991,7 @@ memory.size i32.const 16 i32.shl - i32.const 37444 + i32.const 37668 i32.sub i32.const 1 i32.shr_u @@ -2795,140 +2039,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4676 + i32.const 4900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 - global.set $~lib/util/number/_K - i32.const 3864 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 4296 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $2 - i64.const 4294967295 - i64.and - local.tee $3 - i64.const 31 - i64.shl - local.set $1 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.const 31 - i64.shl - local.get $3 - i64.const 31 - i64.shl - local.get $3 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294967295 - i64.and - local.get $2 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 31 - i64.shl - local.get $1 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $4 - global.get $~lib/util/number/_exp_pow - i32.const 2 - i32.add - local.get $4 - local.get $2 - i64.const 2147483647 - i64.mul - local.get $3 - i64.const 2147483647 - i64.mul - local.get $3 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 4294966784 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - i32.const 1 - i32.shl - local.tee $5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store local.get $0 - i32.const 3456 - local.get $5 - memory.copy + i32.const 50 + i32.store16 + local.get $0 + i32.const 3145774 + i32.store offset=2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4448 + i32.const 4672 call $~lib/string/String.__eq i32.eqz if @@ -2946,7 +2086,7 @@ local.get $0 i32.store local.get $0 - i32.const 4480 + i32.const 4704 call $~lib/string/String.__eq i32.eqz if @@ -2964,7 +2104,7 @@ local.get $0 i32.store local.get $0 - i32.const 4512 + i32.const 4736 call $~lib/string/String.__eq i32.eqz if @@ -2982,7 +2122,7 @@ local.get $0 i32.store local.get $0 - i32.const 4544 + i32.const 4768 call $~lib/string/String.__eq i32.eqz if @@ -3004,7 +2144,7 @@ local.get $0 i32.store local.get $0 - i32.const 4576 + i32.const 4800 call $~lib/string/String.__eq i32.eqz if @@ -3038,10 +2178,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4608 + i32.const 4832 i32.store - i32.const 4608 - i32.const 4608 + i32.const 4832 + i32.const 4832 call $~lib/string/String.__eq i32.eqz if @@ -3053,10 +2193,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4640 + i32.const 4864 i32.store - i32.const 4640 - i32.const 4640 + i32.const 4864 + i32.const 4864 call $~lib/string/String.__eq i32.eqz if @@ -3102,7 +2242,7 @@ local.get $0 i32.store local.get $0 - i32.const 4576 + i32.const 4800 call $~lib/string/String.__eq i32.eqz if @@ -3119,8 +2259,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37472 - i32.const 37520 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-access.debug.wat b/tests/compiler/resolve-access.debug.wat index a2176400d2..798d2fa800 100644 --- a/tests/compiler/resolve-access.debug.wat +++ b/tests/compiler/resolve-access.debug.wat @@ -3479,7 +3479,7 @@ if i32.const 512 i32.const 640 - i32.const 401 + i32.const 349 i32.const 5 call $~lib/builtins/abort unreachable @@ -3689,7 +3689,7 @@ if i32.const 512 i32.const 640 - i32.const 350 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.debug.wat b/tests/compiler/resolve-binary.debug.wat index d10576390f..4ea1bd7825 100644 --- a/tests/compiler/resolve-binary.debug.wat +++ b/tests/compiler/resolve-binary.debug.wat @@ -13,11 +13,12 @@ (type $11 (func (param i64 i32) (result i32))) (type $12 (func (param i32 i64 i32 i32))) (type $13 (func (param f64 f64) (result f64))) - (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $15 (func (param i32 i32 i32) (result i32))) - (type $16 (func (param i32 f64 i32) (result i32))) - (type $17 (func (param f64 i32) (result i32))) - (type $18 (func (param f64) (result i32))) + (type $14 (func (param i32) (result i64))) + (type $15 (func (param i64) (result i64))) + (type $16 (func (param i64) (result i32))) + (type $17 (func (param i32 f64) (result i32))) + (type $18 (func (param f64 i32) (result i32))) + (type $19 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) @@ -37,20 +38,34 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) (global $resolve-binary/baz (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 10192)) - (global $~lib/memory/__data_end i32 (i32.const 10224)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 42992)) - (global $~lib/memory/__heap_base i32 (i32.const 42992)) + (global $~lib/rt/__rtti_base i32 (i32.const 10416)) + (global $~lib/memory/__data_end i32 (i32.const 10448)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 43216)) + (global $~lib/memory/__heap_base i32 (i32.const 43216)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") @@ -77,27 +92,28 @@ (data $22 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $23 (i32.const 8604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $24 (i32.const 8652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 8704) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 8760) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $28 (i32.const 9624) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $29 (i32.const 9704) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $30 (i32.const 9900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\00.\000\00\00\00\00\00\00\00") + (data $31 (i32.const 9932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 9964) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 9996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 10028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00l\00t\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 10060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00g\00t\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 10092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00l\00e\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 10124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00g\00e\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 10156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00e\00q\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 10188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00n\00e\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 10220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00d\00d\00\00\00\00\00\00\00") + (data $41 (i32.const 10252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00u\00b\00\00\00\00\00\00\00") + (data $42 (i32.const 10284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00m\00u\00l\00\00\00\00\00\00\00") + (data $43 (i32.const 10316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00d\00i\00v\00\00\00\00\00\00\00") + (data $44 (i32.const 10348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00r\00e\00m\00\00\00\00\00\00\00") + (data $45 (i32.const 10380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00p\00o\00w\00\00\00\00\00\00\00") + (data $46 (i32.const 10416) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -3891,1374 +3907,4615 @@ end return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul i32.sub - local.set $one_exp + local.set $minor + i32.const 8832 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 9256 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 9624 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i32.const 0 - local.set $d - br $break|1 end - local.get $d - local.get $len - i32.or + local.get $neg if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add + local.get $buf|8 + i32.const 45 i32.store16 - end - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 9632 - local.get $kappa + local.get $buf|8 i32.const 2 - i32.shl i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue end - else - i32.const 0 end + else + local.get $q + i32.const 11 + i32.lt_s if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end end end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 764 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 764 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u + local.get $isNormal if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 9632 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 8832 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 8832 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s i64.sub - local.get $ten_kappa|33 - i64.ge_u - else + i64.shr_u + local.set $integral + local.get $pow10Hi i32.const 0 - end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 i64.add - local.get $wp_w|34 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|72 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 8832 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 8832 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 i64.sub - i64.gt_u + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 end - else - i32.const 0 + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 end - if - local.get $digit|36 - i32.const 1 - i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 i64.add - local.set $rest|32 - br $while-continue|6 + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 - i32.add - local.get $ptr - i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $kk - i32.lt_s - if (result i32) - local.get $kk - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset - i32.lt_s - if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 - i32.add - local.set $i|7 - br $for-loop|1 + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 - i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 - i32.lt_s - local.set $sign - local.get $sign - if - i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF end - local.get $k|9 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select - i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u + i64.add + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 + end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length - i32.const 1 - i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer - i32.const 2 - i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 - i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 - i32.sub - local.set $k|17 - local.get $k|17 + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 end - i32.add - local.set $length - local.get $length - i32.const 2 - i32.add - return + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp else - i32.const 1 + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 8832 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 8832 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 8832 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 8832 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 8832 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 8832 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end end - i32.const 127 - i32.const 23 + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u + if + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.sub + local.set $scale + i32.const 9704 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 + i32.const -6 + i32.ge_s if (result i32) - local.get $exp + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s else - i32.const 1 + i32.const 0 end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 8760 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 9456 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + if + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 + i32.lt_s + if + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|289 + i32.const 17 + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 + i32.const 0 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s + if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 + i32.const 0 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|289 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end + i32.const 1 + i32.shl + i32.sub + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end + end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 + i32.const 1 + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 764 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 764 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|387 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotation|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) @@ -5485,7 +8742,7 @@ return ) (func $resolve-binary/Foo#lt (param $this i32) (param $other i32) (result i32) - i32.const 9824 + i32.const 10048 return ) (func $~lib/string/String#toString (param $this i32) (result i32) @@ -5493,47 +8750,47 @@ return ) (func $resolve-binary/Foo#gt (param $this i32) (param $other i32) (result i32) - i32.const 9856 + i32.const 10080 return ) (func $resolve-binary/Foo#le (param $this i32) (param $other i32) (result i32) - i32.const 9888 + i32.const 10112 return ) (func $resolve-binary/Foo#ge (param $this i32) (param $other i32) (result i32) - i32.const 9920 + i32.const 10144 return ) (func $resolve-binary/Foo#eq (param $this i32) (param $other i32) (result i32) - i32.const 9952 + i32.const 10176 return ) (func $resolve-binary/Foo#ne (param $this i32) (param $other i32) (result i32) - i32.const 9984 + i32.const 10208 return ) (func $resolve-binary/Foo#add (param $this i32) (param $other i32) (result i32) - i32.const 10016 + i32.const 10240 return ) (func $resolve-binary/Foo.sub (param $a i32) (param $b i32) (result i32) - i32.const 10048 + i32.const 10272 return ) (func $resolve-binary/Foo#mul (param $this i32) (param $other i32) (result i32) - i32.const 10080 + i32.const 10304 return ) (func $resolve-binary/Foo#div (param $this i32) (param $other i32) (result i32) - i32.const 10112 + i32.const 10336 return ) (func $resolve-binary/Foo#rem (param $this i32) (param $other i32) (result i32) - i32.const 10144 + i32.const 10368 return ) (func $resolve-binary/Foo#pow (param $this i32) (param $other i32) (result i32) - i32.const 10176 + i32.const 10400 return ) (func $resolve-binary/Bar#add (param $this i32) (param $other i32) (result i32) @@ -5657,8 +8914,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 43024 - i32.const 43072 + i32.const 43248 + i32.const 43296 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6135,7 +9392,7 @@ local.get $0 i32.store local.get $0 - i32.const 9696 + i32.const 9920 call $~lib/string/String.__eq i32.eqz if @@ -6206,7 +9463,7 @@ local.get $0 i32.store local.get $0 - i32.const 9728 + i32.const 9952 call $~lib/string/String.__eq i32.eqz if @@ -6298,7 +9555,7 @@ local.get $0 i32.store local.get $0 - i32.const 9760 + i32.const 9984 call $~lib/string/String.__eq i32.eqz if @@ -6342,7 +9599,7 @@ local.get $0 i32.store local.get $0 - i32.const 9760 + i32.const 9984 call $~lib/string/String.__eq i32.eqz if @@ -6363,7 +9620,7 @@ local.get $0 i32.store local.get $0 - i32.const 9792 + i32.const 10016 call $~lib/string/String.__eq i32.eqz if @@ -6447,7 +9704,7 @@ local.get $0 i32.store local.get $0 - i32.const 9728 + i32.const 9952 call $~lib/string/String.__eq i32.eqz if @@ -6468,7 +9725,7 @@ local.get $0 i32.store local.get $0 - i32.const 9696 + i32.const 9920 call $~lib/string/String.__eq i32.eqz if @@ -6489,7 +9746,7 @@ local.get $0 i32.store local.get $0 - i32.const 9696 + i32.const 9920 call $~lib/string/String.__eq i32.eqz if @@ -6510,7 +9767,7 @@ local.get $0 i32.store local.get $0 - i32.const 9728 + i32.const 9952 call $~lib/string/String.__eq i32.eqz if @@ -6552,7 +9809,7 @@ local.get $0 i32.store local.get $0 - i32.const 9760 + i32.const 9984 call $~lib/string/String.__eq i32.eqz if @@ -6594,7 +9851,7 @@ local.get $0 i32.store local.get $0 - i32.const 9760 + i32.const 9984 call $~lib/string/String.__eq i32.eqz if @@ -6729,7 +9986,7 @@ local.get $0 i32.store local.get $0 - i32.const 9824 + i32.const 10048 call $~lib/string/String.__eq i32.eqz if @@ -6764,7 +10021,7 @@ local.get $0 i32.store local.get $0 - i32.const 9856 + i32.const 10080 call $~lib/string/String.__eq i32.eqz if @@ -6799,7 +10056,7 @@ local.get $0 i32.store local.get $0 - i32.const 9888 + i32.const 10112 call $~lib/string/String.__eq i32.eqz if @@ -6834,7 +10091,7 @@ local.get $0 i32.store local.get $0 - i32.const 9920 + i32.const 10144 call $~lib/string/String.__eq i32.eqz if @@ -6869,7 +10126,7 @@ local.get $0 i32.store local.get $0 - i32.const 9952 + i32.const 10176 call $~lib/string/String.__eq i32.eqz if @@ -6904,7 +10161,7 @@ local.get $0 i32.store local.get $0 - i32.const 9984 + i32.const 10208 call $~lib/string/String.__eq i32.eqz if @@ -6939,7 +10196,7 @@ local.get $0 i32.store local.get $0 - i32.const 10016 + i32.const 10240 call $~lib/string/String.__eq i32.eqz if @@ -6974,7 +10231,7 @@ local.get $0 i32.store local.get $0 - i32.const 10048 + i32.const 10272 call $~lib/string/String.__eq i32.eqz if @@ -7009,7 +10266,7 @@ local.get $0 i32.store local.get $0 - i32.const 10080 + i32.const 10304 call $~lib/string/String.__eq i32.eqz if @@ -7044,7 +10301,7 @@ local.get $0 i32.store local.get $0 - i32.const 10112 + i32.const 10336 call $~lib/string/String.__eq i32.eqz if @@ -7079,7 +10336,7 @@ local.get $0 i32.store local.get $0 - i32.const 10144 + i32.const 10368 call $~lib/string/String.__eq i32.eqz if @@ -7114,7 +10371,7 @@ local.get $0 i32.store local.get $0 - i32.const 10176 + i32.const 10400 call $~lib/string/String.__eq i32.eqz if @@ -7294,7 +10551,7 @@ if i32.const 160 i32.const 288 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -7442,79 +10699,296 @@ return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 8560 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 8560 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8592 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 8624 + i32.const 8672 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative if - i32.const 8592 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out end - i32.const 8624 - i32.const 8672 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 764 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 764 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 764 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 764 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 8704 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 8704 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 8704 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 8704 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index 73db3a219c..a5d2634b5c 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -1,14 +1,12 @@ (module - (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (result i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) + (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -21,14 +19,11 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) (global $resolve-binary/baz (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 44016)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 44240)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\08\00\00\00t\00r\00u\00e") @@ -199,42 +194,43 @@ (data $23.1 (i32.const 9640) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $24 (i32.const 9676) ",") (data $24.1 (i32.const 9688) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $26 (i32.const 9784) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $28 (i32.const 10648) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $29 (i32.const 10734) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $30 (i32.const 10924) "\1c") + (data $30.1 (i32.const 10936) "\02\00\00\00\06\00\00\004\00.\000") + (data $31 (i32.const 10956) "\1c") + (data $31.1 (i32.const 10968) "\02\00\00\00\02\00\00\004") + (data $32 (i32.const 10988) "\1c") + (data $32.1 (i32.const 11000) "\02\00\00\00\02\00\00\003") + (data $33 (i32.const 11020) "\1c") + (data $33.1 (i32.const 11032) "\02\00\00\00\04\00\00\00-\001") + (data $34 (i32.const 11052) "\1c") + (data $34.1 (i32.const 11064) "\02\00\00\00\04\00\00\00l\00t") + (data $35 (i32.const 11084) "\1c") + (data $35.1 (i32.const 11096) "\02\00\00\00\04\00\00\00g\00t") + (data $36 (i32.const 11116) "\1c") + (data $36.1 (i32.const 11128) "\02\00\00\00\04\00\00\00l\00e") + (data $37 (i32.const 11148) "\1c") + (data $37.1 (i32.const 11160) "\02\00\00\00\04\00\00\00g\00e") + (data $38 (i32.const 11180) "\1c") + (data $38.1 (i32.const 11192) "\02\00\00\00\04\00\00\00e\00q") + (data $39 (i32.const 11212) "\1c") + (data $39.1 (i32.const 11224) "\02\00\00\00\04\00\00\00n\00e") + (data $40 (i32.const 11244) "\1c") + (data $40.1 (i32.const 11256) "\02\00\00\00\06\00\00\00a\00d\00d") + (data $41 (i32.const 11276) "\1c") + (data $41.1 (i32.const 11288) "\02\00\00\00\06\00\00\00s\00u\00b") + (data $42 (i32.const 11308) "\1c") + (data $42.1 (i32.const 11320) "\02\00\00\00\06\00\00\00m\00u\00l") + (data $43 (i32.const 11340) "\1c") + (data $43.1 (i32.const 11352) "\02\00\00\00\06\00\00\00d\00i\00v") + (data $44 (i32.const 11372) "\1c") + (data $44.1 (i32.const 11384) "\02\00\00\00\06\00\00\00r\00e\00m") + (data $45 (i32.const 11404) "\1c") + (data $45.1 (i32.const 11416) "\02\00\00\00\06\00\00\00p\00o\00w") + (data $46 (i32.const 11440) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) @@ -247,11 +243,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s if - i32.const 44048 - i32.const 44096 + i32.const 44272 + i32.const 44320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -350,7 +346,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$81 + block $__inlined_func$~lib/util/string/compareImpl$80 loop $while-continue|1 local.get $0 local.tee $3 @@ -370,7 +366,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 + br_if $__inlined_func$~lib/util/string/compareImpl$80 local.get $2 i32.const 2 i32.add @@ -403,16 +399,18 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s if - i32.const 44048 - i32.const 44096 + i32.const 44272 + i32.const 44320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -430,7 +428,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1376 - local.set $0 + local.set $5 br $__inlined_func$~lib/util/number/itoa32$74 end global.get $~lib/memory/__stack_pointer @@ -443,72 +441,171 @@ i32.shr_u i32.const 1 i32.shl - local.tee $1 - select local.tee $3 + select + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.tee $2 + local.tee $0 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 - local.get $1 - i32.add local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + local.get $5 + i32.add + local.set $4 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $2 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $4 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $4 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end local.get $1 + i32.const 10 + i32.ge_u if + local.get $4 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $4 local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $5 i32.const 45 i32.store16 end @@ -517,7 +614,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $5 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -557,7 +654,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + block $__inlined_func$~lib/rt/itcms/Object#unlink$168 local.get $1 i32.load offset=4 i32.const -4 @@ -569,7 +666,7 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 44016 + i32.const 44240 i32.lt_u i32.and i32.eqz @@ -581,7 +678,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 + br $__inlined_func$~lib/rt/itcms/Object#unlink$168 end local.get $1 i32.load offset=8 @@ -618,7 +715,7 @@ i32.const 1 else local.get $0 - i32.const 11216 + i32.const 11440 i32.load i32.gt_u if @@ -632,7 +729,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 11220 + i32.const 11444 i32.add i32.load i32.const 32 @@ -985,109 +1082,43 @@ memory.fill local.get $1 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u + (func $~lib/util/number/dtoa (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11472 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 + i32.const 44272 + i32.const 44320 i32.const 1 - i32.sub i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 52 + i32.store16 + local.get $0 + i32.const 3145774 + i32.store offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -1521,11 +1552,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s if - i32.const 44048 - i32.const 44096 + i32.const 44272 + i32.const 44320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1550,158 +1581,11 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/number/F64#toString (result i32) - (local $0 i64) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 - global.set $~lib/util/number/_K - i32.const 10136 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 10568 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.tee $0 - i64.const 31 - i64.shl - local.set $4 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $0 - i64.const 31 - i64.shl - local.get $0 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 31 - i64.shl - local.get $4 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $5 - global.get $~lib/util/number/_exp_pow - i32.const 3 - i32.add - local.get $5 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $0 - i64.const 2147483647 - i64.mul - local.get $0 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 9728 - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + local.get $1 + i32.const 256 + i32.lt_u if local.get $1 i32.const 4 @@ -1845,10 +1729,10 @@ if unreachable end - i32.const 44016 + i32.const 44240 i32.const 0 i32.store - i32.const 45584 + i32.const 45808 i32.const 0 i32.store loop $for-loop|0 @@ -1859,7 +1743,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 44016 + i32.const 44240 i32.add i32.const 0 i32.store offset=4 @@ -1877,7 +1761,7 @@ i32.add i32.const 2 i32.shl - i32.const 44016 + i32.const 44240 i32.add i32.const 0 i32.store offset=96 @@ -1895,14 +1779,14 @@ br $for-loop|0 end end - i32.const 44016 - i32.const 45588 + i32.const 44240 + i32.const 45812 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 44016 + i32.const 44240 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) @@ -1957,929 +1841,183 @@ i32.load local.set $4 local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-binary/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-binary/bar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-binary/bar2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-binary/baz - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1600 - call $~lib/rt/itcms/__visit - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 2208 - call $~lib/rt/itcms/__visit - i32.const 3264 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1472 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $resolve-binary/Bar#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~start - call $start:resolve-binary - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 - i32.add - else - local.get $2 - i32.const 21 - i32.le_s - local.get $2 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - local.tee $2 - i32.const 2 - i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 - i32.add - else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 9728 - local.get $0 - i32.const 1 - i32.shl - memory.copy - i32.const 9728 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $2 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if - i32.const 9730 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 9732 - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 9732 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 9732 - i32.const 9730 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 9730 - i32.const 46 - i32.store16 - local.get $1 - i32.const 9728 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $0 - end - local.get $0 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.gt_s - if - block $break|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 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $2 - i32.const 2 - i32.shl - i32.const 10656 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 9726 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 - local.get $0 - local.get $9 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $0 - local.get $1 - i64.add - local.tee $8 - local.get $9 - i64.lt_u - local.get $9 - local.get $0 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 + local.set $1 + end + else local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - i32.const 2 - i32.shl - i32.const 10656 - i32.add - i64.load32_u - i64.mul - local.set $0 + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 i32.const 1 - i32.shl - i32.const 9726 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-binary/foo + local.tee $0 + if local.get $0 - local.get $8 - i64.gt_u - local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $10 - i64.add - local.tee $1 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/baz + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1600 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if local.get $0 - i64.lt_u + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $8 - i64.sub - local.get $1 + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - local.get $5 - local.get $2 - i32.store16 - local.get $4 + ) + (func $resolve-binary/Bar#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11472 + i32.lt_s + if + i32.const 44272 + i32.const 44320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:resolve-binary ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -2963,7 +2101,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 44016 + i32.const 44240 i32.lt_u if local.get $0 @@ -3059,7 +2197,7 @@ unreachable end local.get $0 - i32.const 44016 + i32.const 44240 i32.lt_u if local.get $0 @@ -3082,7 +2220,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 44016 + i32.const 44240 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -3149,7 +2287,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3251,7 +2389,7 @@ memory.size i32.const 16 i32.shl - i32.const 44016 + i32.const 44240 i32.sub i32.const 1 i32.shr_u @@ -3366,13 +2504,13 @@ call $~lib/builtins/abort unreachable end - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 10720 + i32.const 10944 call $~lib/string/String.__eq i32.eqz if @@ -3438,7 +2576,7 @@ local.get $0 i32.store local.get $0 - i32.const 10752 + i32.const 10976 call $~lib/string/String.__eq i32.eqz if @@ -3526,7 +2664,7 @@ local.get $0 i32.store local.get $0 - i32.const 10784 + i32.const 11008 call $~lib/string/String.__eq i32.eqz if @@ -3566,7 +2704,7 @@ local.get $0 i32.store local.get $0 - i32.const 10784 + i32.const 11008 call $~lib/string/String.__eq i32.eqz if @@ -3584,7 +2722,7 @@ local.get $0 i32.store local.get $0 - i32.const 10816 + i32.const 11040 call $~lib/string/String.__eq i32.eqz if @@ -3656,7 +2794,7 @@ local.get $0 i32.store local.get $0 - i32.const 10752 + i32.const 10976 call $~lib/string/String.__eq i32.eqz if @@ -3667,13 +2805,13 @@ call $~lib/builtins/abort unreachable end - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 10720 + i32.const 10944 call $~lib/string/String.__eq i32.eqz if @@ -3684,13 +2822,13 @@ call $~lib/builtins/abort unreachable end - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 10720 + i32.const 10944 call $~lib/string/String.__eq i32.eqz if @@ -3708,7 +2846,7 @@ local.get $0 i32.store local.get $0 - i32.const 10752 + i32.const 10976 call $~lib/string/String.__eq i32.eqz if @@ -3744,7 +2882,7 @@ local.get $0 i32.store local.get $0 - i32.const 10784 + i32.const 11008 call $~lib/string/String.__eq i32.eqz if @@ -3780,7 +2918,7 @@ local.get $0 i32.store local.get $0 - i32.const 10784 + i32.const 11008 call $~lib/string/String.__eq i32.eqz if @@ -3886,7 +3024,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3919,13 +3057,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11072 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11072 i32.store - i32.const 10848 - i32.const 10848 + i32.const 11072 + i32.const 11072 call $~lib/string/String.__eq i32.eqz if @@ -3943,13 +3081,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10880 + i32.const 11104 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10880 + i32.const 11104 i32.store - i32.const 10880 - i32.const 10880 + i32.const 11104 + i32.const 11104 call $~lib/string/String.__eq i32.eqz if @@ -3967,13 +3105,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10912 + i32.const 11136 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10912 + i32.const 11136 i32.store - i32.const 10912 - i32.const 10912 + i32.const 11136 + i32.const 11136 call $~lib/string/String.__eq i32.eqz if @@ -3991,13 +3129,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10944 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10944 + i32.const 11168 i32.store - i32.const 10944 - i32.const 10944 + i32.const 11168 + i32.const 11168 call $~lib/string/String.__eq i32.eqz if @@ -4015,13 +3153,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10976 + i32.const 11200 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10976 + i32.const 11200 i32.store - i32.const 10976 - i32.const 10976 + i32.const 11200 + i32.const 11200 call $~lib/string/String.__eq i32.eqz if @@ -4039,13 +3177,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store - i32.const 11008 - i32.const 11008 + i32.const 11232 + i32.const 11232 call $~lib/string/String.__eq i32.eqz if @@ -4063,13 +3201,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11040 + i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11040 + i32.const 11264 i32.store - i32.const 11040 - i32.const 11040 + i32.const 11264 + i32.const 11264 call $~lib/string/String.__eq i32.eqz if @@ -4087,13 +3225,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11072 + i32.const 11296 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11072 + i32.const 11296 i32.store - i32.const 11072 - i32.const 11072 + i32.const 11296 + i32.const 11296 call $~lib/string/String.__eq i32.eqz if @@ -4111,13 +3249,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11104 + i32.const 11328 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11104 + i32.const 11328 i32.store - i32.const 11104 - i32.const 11104 + i32.const 11328 + i32.const 11328 call $~lib/string/String.__eq i32.eqz if @@ -4135,13 +3273,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11136 + i32.const 11360 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11136 + i32.const 11360 i32.store - i32.const 11136 - i32.const 11136 + i32.const 11360 + i32.const 11360 call $~lib/string/String.__eq i32.eqz if @@ -4159,13 +3297,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11168 + i32.const 11392 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11168 + i32.const 11392 i32.store - i32.const 11168 - i32.const 11168 + i32.const 11392 + i32.const 11392 call $~lib/string/String.__eq i32.eqz if @@ -4183,13 +3321,13 @@ global.get $resolve-binary/foo i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11200 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11200 + i32.const 11424 i32.store - i32.const 11200 - i32.const 11200 + i32.const 11424 + i32.const 11424 call $~lib/string/String.__eq i32.eqz if @@ -4244,7 +3382,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4312,8 +3450,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 44048 - i32.const 44096 + i32.const 44272 + i32.const 44320 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-elementaccess.debug.wat b/tests/compiler/resolve-elementaccess.debug.wat index f6a7e9d7e2..3cd48a280a 100644 --- a/tests/compiler/resolve-elementaccess.debug.wat +++ b/tests/compiler/resolve-elementaccess.debug.wat @@ -5,20 +5,22 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32 i32))) (type $5 (func)) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $11 (func (param i32 f64 i32) (result i32))) - (type $12 (func (param f32 i32) (result i32))) - (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $14 (func (param i32 i64 i32))) - (type $15 (func (param i64 i32) (result i32))) - (type $16 (func (param i32 i64 i32 i32))) - (type $17 (func (param i32 i32 f32))) - (type $18 (func (param i32 i32) (result f32))) - (type $19 (func (param f32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32) (result i64))) + (type $10 (func (param i64) (result i64))) + (type $11 (func (param i64) (result i32))) + (type $12 (func (param i32 f32) (result i32))) + (type $13 (func (param f32 i32) (result i32))) + (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $15 (func (param i32 i64 i32))) + (type $16 (func (param i64 i32) (result i32))) + (type $17 (func (param i32 i64 i32 i32))) + (type $18 (func (param i32 i32 i32) (result i32))) + (type $19 (func (param i32 i32 f32))) + (type $20 (func (param i32 i32) (result f32))) + (type $21 (func (param f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) @@ -36,18 +38,27 @@ (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE i32 (i32.const 23)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK i32 (i32.const 8388607)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 3776)) - (global $~lib/memory/__data_end i32 (i32.const 3808)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36576)) - (global $~lib/memory/__heap_base i32 (i32.const 36576)) + (global $~lib/rt/__rtti_base i32 (i32.const 3808)) + (global $~lib/memory/__data_end i32 (i32.const 3840)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36608)) + (global $~lib/memory/__heap_base i32 (i32.const 36608)) (memory $0 1) (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") @@ -64,24 +75,24 @@ (data $12 (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $13 (i32.const 652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $14 (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 752) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 808) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $19 (i32.const 2072) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $20 (i32.const 2156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\000\00\00\00\00\00\00\00") + (data $21 (i32.const 2188) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00e\00l\00e\00m\00e\00n\00t\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\002\00.\000\00\00\00\00\00\00\00") + (data $23 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\001\00.\000\00\00\00\00\00") + (data $24 (i32.const 2332) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $26 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2556) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 3612) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $29 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 3808) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\19\00\00A\00\00\00A\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -2439,507 +2450,6 @@ end unreachable ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp - i32.sub - local.set $one_exp - i64.const 1 - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $one_frc - local.get $one_frc - i64.const 1 - i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 - end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 1680 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 - end - end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 1680 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $digit|36 - i32.const 1 - i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 - end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) (local $t i32) (local $r i32) @@ -2975,14 +2485,14 @@ i32.const 100 i32.rem_u local.set $d2 - i32.const 1720 + i32.const 748 local.get $d1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 1720 + i32.const 748 local.get $d2 i32.const 2 i32.shl @@ -3025,7 +2535,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 1720 + i32.const 748 local.get $d1|10 i32.const 2 i32.shl @@ -3048,7 +2558,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 1720 + i32.const 748 local.get $num i32.const 2 i32.shl @@ -3080,873 +2590,2599 @@ i32.store16 end ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 1280 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 1704 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 - i32.add - local.get $ptr + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 2072 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + local.set $singles|5 + i32.const 70 + i64.extend_i32_s + local.get $singles|5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 8 + i64.div_u + i32.wrap_i64 + return + ) + (func $~lib/util/dtoa/ftoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $bits i32) + (local $binExp i32) + (local $binSig i64) + (local $buf i32) + (local $bits|6 i32) + (local $binExp|7 i32) + (local $binSig|8 i64) + (local $dotZero i32) + (local $neg i32) + (local $isNormal i32) + (local $buf|12 i32) + (local $buf|13 i32) + (local $neg|14 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|22 i32) + (local $binSig|23 i64) + (local $rawExp i32) + (local $regular i32) + (local $expBin i32) + (local $k i32) + (local $h i32) + (local $pow10Hi i64) + (local $lo|30 i64) + (local $t0 i64) + (local $t1 i64) + (local $mid i64) + (local $hi64 i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $mUp i64) + (local $one i32) + (local $upDown i32) + (local $decSig i64) + (local $decExp i32) + (local $q i64) + (local $last i32) + (local $q|44 i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|49 i32) + (local $value|50 i64) + (local $v i64) + (local $v|52 i64) + (local $len i32) + (local $p|54 i32) + (local $v|55 i64) + (local $q|56 i64) + (local $q|57 i64) + (local $q|58 i64) + (local $q|59 i64) + (local $q|60 i64) + (local $q|61 i64) + (local $q|62 i64) + (local $end|63 i32) + (local $dotZero|64 i32) + (local $binSig|65 i64) + (local $rawExp|66 i32) + (local $regular|67 i32) + (local $expBin|68 i32) + (local $k|69 i32) + (local $h|70 i32) + (local $pow10Hi|71 i64) + (local $lo|72 i64) + (local $t0|73 i64) + (local $t1|74 i64) + (local $mid|75 i64) + (local $hi64|76 i64) + (local $halfUlp|77 i64) + (local $dotOne|78 i64) + (local $mUp|79 i64) + (local $one|80 i32) + (local $upDown|81 i32) + (local $hasLastDigit i32) + (local $hasExtraDigit i32) + (local $decExp|84 i32) + (local $start i32) + (local $value|86 i64) + (local $length i32) + (local $buf|88 i32) + (local $start|89 i32) + (local $decExp|90 i32) + (local $hasLastDigit|91 i32) + (local $hasExtraDigit|92 i32) + (local $dotZero|93 i32) + (local $p|94 i32) + (local $ascii|95 i64) + (local $off|96 i32) + (local $base|97 i32) + (local $lo|98 i64) + (local $hi|99 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $p|103 i32) + (local $ascii|104 i64) + (local $off|105 i32) + (local $base|106 i32) + (local $lo|107 i64) + (local $hi|108 i64) + (local $sig i32) + (local $endByte i32) + (local $z i32) + (local $p|112 i32) + (local $ascii|113 i64) + (local $off|114 i32) + (local $base|115 i32) + (local $lo|116 i64) + (local $hi|117 i64) + (local $end|118 i32) + (local $dotZero|119 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|123 i32) + (local $ascii|124 i64) + (local $off|125 i32) + (local $base|126 i32) + (local $lo|127 i64) + (local $hi|128 i64) + (local $k|129 i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $p|133 i32) + (local $ascii|134 i64) + (local $off|135 i32) + (local $base|136 i32) + (local $lo|137 i64) + (local $hi|138 i64) + (local $end|139 i32) + (local $end|140 i32) + (local $dotZero|141 i32) + (local $buf|142 i32) + (local $start|143 i32) + (local $decExp|144 i32) + (local $hasLastDigit|145 i32) + (local $hasExtraDigit|146 i32) + (local $p|147 i32) + (local $ascii|148 i64) + (local $off|149 i32) + (local $base|150 i32) + (local $lo|151 i64) + (local $hi|152 i64) + (local $lead i32) + (local $buf|154 i32) + (local $decExp|155 i32) + (local $m i32) + (local $e i32) + (local $d i32) + local.get $value + i32.reinterpret_f32 + local.set $bits + local.get $bits + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK + i32.and + i64.extend_i32_u + local.set $binSig + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $bits + local.set $bits|6 + local.get $binExp + local.set $binExp|7 + local.get $binSig + local.set $binSig|8 + i32.const 1 + local.set $dotZero + local.get $bits|6 + i32.const 31 + i32.shr_u + i32.const 0 + i32.ne + local.set $neg + local.get $binExp|7 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|7 i32.const 0 + i32.ne + if + local.get $binSig|8 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf + local.set $buf|12 + local.get $buf|12 + i32.const 78 + i32.store16 + local.get $buf|12 + i32.const 97 + i32.store16 offset=2 + local.get $buf|12 + i32.const 78 + i32.store16 offset=4 + local.get $buf|12 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf + local.set $buf|13 + local.get $neg + local.set $neg|14 + local.get $neg|14 + if + local.get $buf|13 + i32.const 45 + i32.store16 + local.get $buf|13 + i32.const 2 + i32.add + local.set $buf|13 + end + local.get $buf|13 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|13 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $binSig|8 + i64.const 0 + i64.eq + if + local.get $buf + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf + i32.const 2 + i32.add + local.set $end + local.get $dotZero + local.set $dotZero|22 + local.get $dotZero|22 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binSig|8 + local.set $binSig|23 + i32.const 1 + local.set $rawExp + i32.const 1 + local.set $regular + local.get $rawExp + i32.const 150 + i32.sub + local.set $expBin + local.get $regular + if + local.get $expBin + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h + else + local.get $expBin + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + local.get $k + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h + end + local.get $k + i32.const -28 + i32.ge_s + if (result i32) + local.get $k + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 1280 + i32.const 28 + local.get $k + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi + else + i32.const 292 + local.get $k + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|30 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|30 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi + end + local.get $pow10Hi + i64.const 4294967295 + i64.and + local.get $binSig|23 + i64.mul + local.set $t0 + local.get $pow10Hi + i64.const 32 + i64.shr_u + local.get $binSig|23 + i64.mul + local.get $t0 + i64.const 32 + i64.shr_u + i64.add + local.set $t1 + local.get $t1 + i64.const 8 + i64.shl + local.get $t0 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid + local.get $mid + i64.const 40 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64 + local.get $pow10Hi + i64.const 65 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|23 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp + local.get $hi64 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne + local.get $hi64 + local.get $halfUlp + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp + local.get $dotOne + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one + local.get $regular + if + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + else + local.get $expBin + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 67 + i32.eq + end + if + local.get $one + i32.const 1 + i32.add + local.set $one + end + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + end + local.get $mUp + global.set $~lib/util/dtoa/gSig local.get $k + global.set $~lib/util/dtoa/gExp + local.get $one + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $decSig + global.get $~lib/util/dtoa/gExp + local.set $decExp + local.get $decSig + i64.const 10000 + i64.lt_u + if + local.get $decSig + i64.const 10000 + i64.mul + local.set $decSig + local.get $decExp + i32.const 4 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 1000000 + i64.lt_u + if + local.get $decSig + i64.const 100 + i64.mul + local.set $decSig + local.get $decExp + i32.const 2 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10000000 + i64.lt_u + if + local.get $decSig + i64.const 10 + i64.mul + local.set $decSig + local.get $decExp + i32.const 1 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10 + i64.div_u + local.set $q + local.get $decSig + local.get $q + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $last + local.get $q + global.set $~lib/util/dtoa/gSig + local.get $decExp + global.set $~lib/util/dtoa/gExp + local.get $last + global.set $~lib/util/dtoa/gLastDigit + local.get $last + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binExp|7 + i32.const 150 + i32.sub + local.set $q|44 + local.get $q|44 + i32.const 0 + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE + i32.sub + i32.ge_s + if (result i32) + local.get $q|44 + i32.const 24 + i32.lt_s + else + i32.const 0 + end + if + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q|44 + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q|44 + i32.sub + local.set $shift + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + else + local.get $c + local.get $q|44 + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 16777216 + i64.gt_u + if + i64.const 0 + local.set $intValue + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf + local.set $buf|49 + local.get $intValue + local.set $value|50 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|50 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|52 + local.get $v|52 + i64.const 100000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000 + i64.lt_u + if + local.get $v|52 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|52 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|52 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|52 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|52 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|52 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|52 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|52 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|54 + local.get $value|50 + local.set $v|55 + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|56 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|56 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|56 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|57 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|57 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|57 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|58 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|58 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|58 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|59 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|59 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|59 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|60 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|60 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|60 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|61 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|61 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|61 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|62 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 748 + local.get $v|55 + local.get $q|62 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|62 + local.set $v|55 + end + local.get $v|55 + i64.const 10 + i64.ge_u + if + local.get $buf|49 + i32.const 748 + local.get $v|55 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|49 + i32.const 48 + local.get $v|55 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|63 + local.get $dotZero + local.set $dotZero|64 + local.get $dotZero|64 + if + local.get $end|63 + i32.const 46 + i32.store16 + local.get $end|63 + i32.const 48 + i32.store16 offset=2 + local.get $end|63 + i32.const 4 + i32.add + local.set $end|63 + end + local.get $end|63 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $binSig|65 + local.get $binExp|7 + local.set $rawExp|66 + local.get $binSig|8 + i64.const 0 + i64.ne + local.set $regular|67 + local.get $rawExp|66 + i32.const 150 i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $kk - i32.lt_s - if (result i32) - local.get $kk + local.set $expBin|68 + local.get $regular|67 + if + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add i32.const 0 + local.get $k|69 + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + else + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add + local.get $k|69 + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + end + local.get $k|69 + i32.const -28 + i32.ge_s + if (result i32) + local.get $k|69 + i32.const 16 i32.le_s else i32.const 0 end if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl + i32.const 1280 + i32.const 28 + local.get $k|69 i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 + i32.const 3 i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset - i32.lt_s - if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 - i32.add - local.set $i|7 - br $for-loop|1 - end - end - local.get $length - local.get $offset i32.add - return + i64.load + local.set $pow10Hi|71 else - local.get $length - i32.const 1 + i32.const 292 + local.get $k|69 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|72 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|72 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi|71 + end + local.get $pow10Hi|71 + i64.const 4294967295 + i64.and + local.get $binSig|65 + i64.mul + local.set $t0|73 + local.get $pow10Hi|71 + i64.const 32 + i64.shr_u + local.get $binSig|65 + i64.mul + local.get $t0|73 + i64.const 32 + i64.shr_u + i64.add + local.set $t1|74 + local.get $t1|74 + i64.const 8 + i64.shl + local.get $t0|73 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid|75 + local.get $mid|75 + i64.const 40 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64|76 + local.get $pow10Hi|71 + i64.const 65 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|65 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|77 + local.get $hi64|76 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne|78 + local.get $hi64|76 + local.get $halfUlp|77 + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp|79 + local.get $dotOne|78 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne|78 + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one|80 + local.get $regular|67 + if + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + else + local.get $expBin|68 + i32.const -119 i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 67 + i32.eq + end if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + local.get $one|80 + i32.const 1 + i32.add + local.set $one|80 + end + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + end + local.get $mUp|79 + global.set $~lib/util/dtoa/gSig + local.get $k|69 + global.set $~lib/util/dtoa/gExp + local.get $one|80 + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown|81 + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.set $hasExtraDigit + global.get $~lib/util/dtoa/gExp + i32.const 9 + i32.add + i32.const 2 + i32.sub + local.get $hasExtraDigit + i32.add + local.set $decExp|84 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + i64.const 10 + global.get $~lib/util/dtoa/gSig + i64.mul + local.get $hasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $hasLastDigit + local.get $decExp|84 + i32.const 1 + i32.sub + local.set $decExp|84 + end + local.get $buf + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|86 + i32.const 0 + drop + local.get $value|86 + call $~lib/util/dtoa/toBcd8 + local.set $length + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length + global.set $~lib/util/dtoa/gDigits + local.get $decExp|84 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|84 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|88 + local.get $start + local.set $start|89 + local.get $decExp|84 + local.set $decExp|90 + local.get $hasLastDigit + local.set $hasLastDigit|91 + local.get $hasExtraDigit + local.set $hasExtraDigit|92 + local.get $dotZero + local.set $dotZero|93 + local.get $decExp|90 + i32.const 0 + i32.lt_s + if + local.get $start|89 + local.set $p|94 + i64.const 3472328296227680304 + local.set $ascii|95 + i32.const 0 + local.set $off|96 + local.get $p|94 + local.get $off|96 + i32.add + local.set $base|97 + i32.const 0 + drop + local.get $ascii|95 + i64.const 4294967295 + i64.and + local.set $lo|98 + local.get $ascii|95 + i64.const 32 + i64.shr_u + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|99 + local.get $base|97 + local.get $lo|98 + i64.store + local.get $base|97 + local.get $hi|99 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|91 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|91 + if (result i32) + i32.const 8 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|92 + i32.sub + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + local.get $hasExtraDigit|92 + i32.eqz + if + local.get $dHi + i64.const 8 + i64.shr_u + local.get $lastDigitChar + i64.const 56 + i64.shl + i64.or + local.set $dHi + end + local.get $decExp|90 + i32.const 8 + i32.ge_s + if + local.get $buf|88 + local.set $p|103 + local.get $dHi + local.set $ascii|104 + i32.const 0 + local.set $off|105 + local.get $p|103 + local.get $off|105 + i32.add + local.set $base|106 + i32.const 0 + drop + local.get $ascii|104 + i64.const 4294967295 + i64.and + local.set $lo|107 + local.get $ascii|104 + i64.const 32 + i64.shr_u + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|108 + local.get $base|106 + local.get $lo|107 + i64.store + local.get $base|106 + local.get $hi|108 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 - i32.lt_s - local.set $sign - local.get $sign + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + i32.const 8 + local.get $hasExtraDigit|92 + i32.add + local.set $sig + local.get $buf|88 + local.get $decExp|90 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|88 + local.get $sig + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u if + local.get $z + local.set $p|112 + i64.const 3472328296227680304 + local.set $ascii|113 + i32.const 0 + local.set $off|114 + local.get $p|112 + local.get $off|114 + i32.add + local.set $base|115 i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + drop + local.get $ascii|113 + i64.const 4294967295 + i64.and + local.set $lo|116 + local.get $ascii|113 + i64.const 32 + i64.shr_u + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|117 + local.get $base|115 + local.get $lo|116 + i64.store + local.get $base|115 + local.get $hi|117 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|118 + local.get $dotZero|93 + local.set $dotZero|119 + local.get $dotZero|119 + if + local.get $end|118 + i32.const 46 + i32.store16 + local.get $end|118 + i32.const 48 + i32.store16 offset=2 + local.get $end|118 + i32.const 4 + i32.add + local.set $end|118 end - local.get $k|9 - call $~lib/util/number/decimalCount32 + local.get $end|118 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $numDigits + local.get $hasExtraDigit|92 + i32.add + local.set $n + local.get $n + local.set $endPos + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $n + local.get $decExp|90 + i32.const 1 + i32.add + i32.gt_s + if (result i32) + local.get $n i32.const 1 i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 + else + local.get $decExp|90 i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select - i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + i32.add end - local.set $length - local.get $length - i32.const 2 + local.set $endPos + end + i32.const 1 + local.get $decExp|90 + i32.sub + local.get $decExp|90 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|88 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|88 + local.get $buf|88 + local.set $p|123 + local.get $dHi + local.set $ascii|124 + i32.const 0 + local.set $off|125 + local.get $p|123 + local.get $off|125 + i32.add + local.set $base|126 + i32.const 0 + drop + local.get $ascii|124 + i64.const 4294967295 + i64.and + local.set $lo|127 + local.get $ascii|124 + i64.const 32 + i64.shr_u + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|128 + local.get $base|126 + local.get $lo|127 + i64.store + local.get $base|126 + local.get $hi|128 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $decExp|90 + i32.const 1 + i32.add + local.set $k|129 + local.get $hasExtraDigit|92 + if (result i64) + local.get $lastDigitChar + else + i64.const 0 + end + local.set $d16 + local.get $k|129 + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if (result i64) + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + else + local.get $d16 + end + local.set $fHi + local.get $buf|88 + local.get $k|129 + i32.const 1 i32.add - return - else - local.get $length i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 i32.add - local.get $buffer - i32.const 2 + local.set $p|133 + local.get $fHi + local.set $ascii|134 + i32.const 0 + local.set $off|135 + local.get $p|133 + local.get $off|135 + i32.add + local.set $base|136 + i32.const 0 + drop + local.get $ascii|134 + i64.const 4294967295 + i64.and + local.set $lo|137 + local.get $ascii|134 + i64.const 32 + i64.shr_u + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|138 + local.get $base|136 + local.get $lo|137 + i64.store + local.get $base|136 + local.get $hi|138 + i64.store offset=8 + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.shl i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer + i32.const 46 + i32.store16 + else + local.get $start|89 i32.const 46 i32.store16 offset=2 - local.get $buffer - local.get $len + end + local.get $buf|88 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|139 + local.get $decExp|90 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|90 + i32.const 1 i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 - i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 - i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|139 + local.set $end|140 + local.get $dotZero|93 + local.set $dotZero|141 + local.get $dotZero|141 if - i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 + local.get $end|140 + i32.const 46 + i32.store16 + local.get $end|140 + i32.const 48 + i32.store16 offset=2 + local.get $end|140 + i32.const 4 + i32.add + local.set $end|140 end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 + local.get $end|140 + br $~lib/util/dtoa/finishInteger|inlined.3 end - i32.add - local.set $length - local.get $length + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $end|139 + local.get $start|89 i32.const 2 i32.add - return + i32.gt_u + if (result i32) + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + br $while-continue|1 + end end - unreachable + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|93 + if + local.get $end|139 + i32.const 48 + i32.store16 + local.get $end|139 + i32.const 2 + i32.add + local.set $end|139 + else + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + end + end + local.get $end|139 + br $~lib/util/dtoa/writeFixedFloat|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 127 - i32.const 23 + block $~lib/util/dtoa/writeExpNotationFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|142 + local.get $start + local.set $start|143 + local.get $decExp|84 + local.set $decExp|144 + local.get $hasLastDigit + local.set $hasLastDigit|145 + local.get $hasExtraDigit + local.set $hasExtraDigit|146 + local.get $buf|142 + local.get $hasExtraDigit|146 + i32.const 1 + i32.shl i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp + local.set $buf|142 + local.get $buf|142 + local.set $p|147 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|148 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 1023 - i32.const 52 + local.set $off|149 + local.get $p|147 + local.get $off|149 i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 808 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 1504 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v + local.set $base|150 + i32.const 0 + drop + local.get $ascii|148 i64.const 4294967295 i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l + local.set $lo|151 + local.get $ascii|148 i64.const 32 i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 + local.set $hi|152 + local.get $base|150 + local.get $lo|151 + i64.store + local.get $base|150 + local.get $hi|152 + i64.store offset=8 + local.get $buf|142 + i32.const 16 + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit i32.add - i32.const 64 + i32.store16 + local.get $buf|142 + local.get $hasLastDigit|145 + if (result i32) + i32.const 9 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|146 + i32.eqz + i32.add + end + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + loop $while-continue|2 + local.get $buf|142 + local.get $start|143 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $buf|142 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $buf|142 + i32.const 2 + i32.sub + local.set $buf|142 + br $while-continue|2 + end + end + local.get $start|143 + i32.load16_u offset=2 + local.set $lead + local.get $start|143 + local.get $lead + i32.store16 + local.get $start|143 + i32.const 46 + i32.store16 offset=2 + local.get $buf|142 + local.get $buf|142 + i32.const 2 + i32.sub + local.get $start|143 + i32.const 2 i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|142 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|142 + local.set $buf|154 + local.get $decExp|144 + local.set $decExp|155 + local.get $decExp|155 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|154 + i32.const 101 + i32.store16 + local.get $buf|154 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|154 + i32.const 4 + i32.add + local.set $buf|154 + local.get $decExp|155 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|154 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|154 + i32.const 748 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|154 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|154 + i32.const 748 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|154 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|154 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|154 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotationFloat|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/number/F32#toString (param $this f32) (param $radix i32) (result i32) @@ -4086,7 +5322,7 @@ i32.const 1 i32.shl i32.add - i32.const 2544 + i32.const 2576 local.get $num i32.wrap_i64 i32.const 255 @@ -4108,7 +5344,7 @@ i32.and if local.get $buffer - i32.const 2544 + i32.const 2576 local.get $num i32.wrap_i64 i32.const 6 @@ -4231,7 +5467,7 @@ i32.const 1 i32.shl i32.add - i32.const 3600 + i32.const 3632 local.get $num local.get $mask i64.and @@ -4265,7 +5501,7 @@ i32.const 1 i32.shl i32.add - i32.const 3600 + i32.const 3632 local.get $num local.get $q local.get $base @@ -4319,10 +5555,10 @@ i32.const 144 local.get $0 call $~lib/rt/itcms/__visit - i32.const 2544 + i32.const 2576 local.get $0 call $~lib/rt/itcms/__visit - i32.const 3600 + i32.const 3632 local.get $0 call $~lib/rt/itcms/__visit ) @@ -4404,8 +5640,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36608 - i32.const 36656 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4992,12 +6228,12 @@ local.get $4 i32.store local.get $4 - i32.const 2144 + i32.const 2176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -5018,12 +6254,12 @@ local.get $4 i32.store local.get $4 - i32.const 2256 + i32.const 2288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -5067,12 +6303,12 @@ local.get $4 i32.store local.get $4 - i32.const 2288 + i32.const 2320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -5109,7 +6345,7 @@ i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -5152,12 +6388,12 @@ local.get $4 i32.store local.get $4 - i32.const 3696 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -5178,12 +6414,12 @@ local.get $4 i32.store local.get $4 - i32.const 3728 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -5227,12 +6463,12 @@ local.get $4 i32.store local.get $4 - i32.const 3760 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -5269,7 +6505,7 @@ i32.eqz if i32.const 0 - i32.const 2176 + i32.const 2208 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -5281,80 +6517,296 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i32) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f32.const 0 + f32.eq + if + i32.const 608 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + i32.eqz + if local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f32.ne if - i32.const 608 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 640 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + i32.const 672 + i32.const 720 + local.get $value + f32.const 0 + f32.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $bits + local.get $bits + i32.const 1065353216 + i32.ge_u + if (result i32) + local.get $bits + i32.const 1266679808 + i32.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f32_s + local.set $integer + local.get $value + local.get $integer + f32.convert_i32_s + f32.eq if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 640 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 748 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 748 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 748 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 748 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 672 - i32.const 720 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 752 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 752 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1152 + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 1152 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) @@ -5388,9 +6840,9 @@ i32.gt_s end if - i32.const 2320 - i32.const 2448 - i32.const 350 + i32.const 2352 + i32.const 2480 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable @@ -5398,7 +6850,7 @@ local.get $value i32.eqz if - i32.const 2512 + i32.const 2544 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index 8a6fc68b91..7ff628ef57 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -4,16 +4,14 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32) (result f32))) - (type $7 (func (param i32 i32 f32))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param f32) (result i32))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i32 i32) (result i32))) - (type $12 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $13 (func (param f64) (result i32))) - (type $14 (func (result i32))) + (type $5 (func (param f32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32) (result f32))) + (type $8 (func (param i32 i32 f32))) + (type $9 (func (param i32) (result i32))) + (type $10 (func (param i32) (result i64))) + (type $11 (func (param i32 i32 i64))) + (type $12 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -26,14 +24,16 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37600)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37632)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") @@ -59,35 +59,35 @@ (data $13.1 (i32.const 1688) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $14 (i32.const 1724) ",") (data $14.1 (i32.const 1736) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $16 (i32.const 1832) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $19 (i32.const 3096) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $20 (i32.const 3180) "\1c") + (data $20.1 (i32.const 3192) "\02\00\00\00\06\00\00\001\00.\000") + (data $21 (i32.const 3212) "L") + (data $21.1 (i32.const 3224) "\02\00\00\000\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00e\00l\00e\00m\00e\00n\00t\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data $22 (i32.const 3292) "\1c") + (data $22.1 (i32.const 3304) "\02\00\00\00\06\00\00\002\00.\000") + (data $23 (i32.const 3324) "\1c") + (data $23.1 (i32.const 3336) "\02\00\00\00\08\00\00\001\001\00.\000") + (data $24 (i32.const 3356) "|") + (data $24.1 (i32.const 3368) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $25 (i32.const 3484) "<") + (data $25.1 (i32.const 3496) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $26 (i32.const 3548) "\1c") + (data $26.1 (i32.const 3560) "\02\00\00\00\02\00\00\000") + (data $27 (i32.const 3580) "\1c\04") + (data $27.1 (i32.const 3592) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $28 (i32.const 4636) "\\") + (data $28.1 (i32.const 4648) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $29 (i32.const 4732) "\1c") + (data $29.1 (i32.const 4744) "\02\00\00\00\02\00\00\001") + (data $30 (i32.const 4764) "\1c") + (data $30.1 (i32.const 4776) "\02\00\00\00\02\00\00\002") + (data $31 (i32.const 4796) "\1c") + (data $31.1 (i32.const 4808) "\02\00\00\00\04\00\00\001\001") + (data $32 (i32.const 4832) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\19\00\00A\00\00\00A") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/__visit (param $0 i32) @@ -434,11 +434,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -482,11 +482,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -537,11 +537,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -640,7 +640,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$97 + block $__inlined_func$~lib/util/string/compareImpl$94 loop $while-continue|1 local.get $0 local.tee $3 @@ -660,7 +660,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$97 + br_if $__inlined_func$~lib/util/string/compareImpl$94 local.get $2 i32.const 2 i32.add @@ -695,11 +695,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -743,11 +743,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -789,272 +789,289 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4864 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 37664 + i32.const 37712 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + f32.const 0 + f32.eq if - local.get $4 - local.get $5 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1632 + return end - local.get $5 + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.ne if - local.get $5 - local.get $4 - i32.store offset=4 + local.get $0 + local.get $0 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1664 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1696 + i32.const 1744 + local.get $0 + f32.const 0 + f32.lt + select + return end - local.get $1 local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add + i32.reinterpret_f32 + i32.const 2147483647 + i32.and local.tee $1 - i32.load offset=96 - i32.eq + i32.const 1266679808 + i32.le_u + local.get $1 + i32.const 1065353216 + i32.ge_u + i32.and if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + local.get $0 + local.get $0 + i32.trunc_sat_f32_s + local.tee $1 + f32.convert_i32_s + f32.eq if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 + i32.const 0 local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $5 + i32.const 10 + i32.lt_u if - local.get $0 - local.get $0 - i32.load - i32.const -2 local.get $2 - i32.rotl - i32.and - i32.store + local.get $5 + i32.const 48 + i32.add + i32.store16 + else + local.get $5 + i32.const 100 + i32.lt_u + if + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + else + local.get $5 + i32.const 10000 + i32.lt_u + if + local.get $5 + local.get $5 + i32.const 100 + i32.div_u + local.tee $6 + i32.const 100 + i32.mul + i32.sub + local.set $4 + local.get $5 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $5 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + end + end end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/dtoa/ftoa_buffered + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 2176 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 i32.load local.tee $3 @@ -1064,108 +1081,265 @@ if i32.const 0 i32.const 1504 - i32.const 203 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store local.get $3 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 12 i32.lt_u if i32.const 0 i32.const 1504 - i32.const 233 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 i32.add local.get $2 i32.add @@ -1308,7 +1482,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$153 + block $__inlined_func$~lib/rt/itcms/Object#unlink$155 local.get $0 i32.load offset=4 i32.const -4 @@ -1320,7 +1494,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 37600 + i32.const 37632 i32.lt_u i32.and i32.eqz @@ -1332,7 +1506,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$153 + br $__inlined_func$~lib/rt/itcms/Object#unlink$155 end local.get $0 i32.load offset=8 @@ -1369,7 +1543,7 @@ i32.const 1 else local.get $1 - i32.const 4800 + i32.const 4832 i32.load i32.gt_u if @@ -1383,7 +1557,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 4804 + i32.const 4836 i32.add i32.load i32.const 32 @@ -1449,11 +1623,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1462,7 +1636,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa32$79 + block $__inlined_func$~lib/util/number/utoa32$76 local.get $0 i32.const 255 i32.and @@ -1473,9 +1647,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3536 + i32.const 3568 local.set $0 - br $__inlined_func$~lib/util/number/utoa32$79 + br $__inlined_func$~lib/util/number/utoa32$76 end global.get $~lib/memory/__stack_pointer i32.const 3 @@ -1506,78 +1680,282 @@ end local.get $0 ) - (func $~lib/number/F32#toString (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1632 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 + loop $while-continue|0 local.get $1 - f64.sub - f64.const 0 - f64.ne + i32.const 10000 + i32.ge_u if - i32.const 1664 - local.set $2 - local.get $1 local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1696 - i32.const 1744 + i32.const 10000 + i32.rem_u + local.set $3 local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store local.get $1 - call $~lib/util/number/dtoa_core + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub i32.const 1 i32.shl - local.tee $3 + i32.add + local.get $1 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 + i32.shl + i32.const 1772 + i32.add + i32.load i32.store + else + local.get $0 local.get $2 - i32.const 1776 - local.get $3 - memory.copy + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + local.get $0 + i32.const 10 + i32.add + local.tee $2 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.tee $3 i32.const 4 + i32.shl + i32.const 2728 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $4 + i64.load + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 + i64.const 4294967295 + i64.and + local.set $10 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $6 + i32.const 0 local.get $2 + local.get $3 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 + i32.shl + i32.const 2520 + i32.add + i64.load + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + local.get $1 + local.get $11 + i64.mul + local.set $8 + local.get $12 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + local.tee $5 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $6 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + local.get $9 + local.get $11 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 3096 + i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1727,10 +2105,10 @@ if unreachable end - i32.const 37600 + i32.const 37632 i32.const 0 i32.store - i32.const 39168 + i32.const 39200 i32.const 0 i32.store loop $for-loop|0 @@ -1741,7 +2119,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 37600 + i32.const 37632 i32.add i32.const 0 i32.store offset=4 @@ -1759,7 +2137,7 @@ i32.add i32.const 2 i32.shl - i32.const 37600 + i32.const 37632 i32.add i32.const 0 i32.store offset=96 @@ -1777,14 +2155,14 @@ br $for-loop|0 end end - i32.const 37600 - i32.const 39172 + i32.const 37632 + i32.const 39204 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 37600 + i32.const 37632 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) @@ -1922,9 +2300,9 @@ call $~lib/rt/itcms/__visit i32.const 1168 call $~lib/rt/itcms/__visit - i32.const 3568 + i32.const 3600 call $~lib/rt/itcms/__visit - i32.const 4624 + i32.const 4656 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -2026,11 +2404,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s if - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2122,1035 +2500,1465 @@ (func $~start call $start:resolve-elementaccess ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/dtoa/ftoa_buffered (param $0 f32) (result i32) + (local $1 i64) + (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $4 local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s + i32.const 8388607 i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 + i64.extend_i32_u + local.set $11 + local.get $2 + i32.const 31 + i32.shr_u + local.set $2 + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $4 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 + i32.sub + i32.const 254 + i32.lt_u + if local.get $2 + if (result i32) + i32.const 2176 + i32.const 45 + i32.store16 + i32.const 2178 + else + i32.const 2176 + end + local.set $2 + local.get $4 + i32.const 150 i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s + local.tee $3 + i32.const 24 + i32.lt_s local.get $3 - i32.const -6 - i32.gt_s + i32.const -23 + i32.ge_s i32.and - if (result i32) - local.get $0 - i32.const 2 + if + local.get $11 + i64.const 8388608 + i64.or + local.set $5 local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 + i32.const 0 + i32.lt_s + if (result i64) + local.get $5 + i32.const 0 local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.sub + i64.extend_i32_s + local.tee $1 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $1 + i64.shl + i64.const 1 + i64.sub + local.get $5 + i64.and + i64.eqz + select + else + local.get $5 + local.get $3 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 16777216 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $1 end end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq + local.tee $1 + i64.const 0 + i64.ne if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u + local.get $2 + local.get $1 + i64.const 1000000000000000 + i64.lt_u if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $1 + i64.const 100000000 + i64.lt_u + if + local.get $1 + i64.const 10000 + i64.lt_u + if + local.get $1 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $1 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $1 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $1 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $1 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $1 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $1 + i64.const 1000000000000 + i64.lt_u + if + local.get $1 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $1 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.const 13 i32.add + local.get $1 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 end else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 16 end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 + local.tee $3 i32.const 1 i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 + local.set $4 + local.get $1 + i64.const 100 + i64.ge_u if - i32.const 0 - local.get $0 + local.get $4 + i32.const 4 i32.sub - local.set $0 + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 10 + i64.ge_u + if + local.get $2 + local.get $1 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + local.get $2 + local.get $1 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 end + local.get $2 + local.get $3 i32.const 1 + i32.shl i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select + local.tee $2 + i32.const 46 i32.store16 - local.get $0 - local.get $1 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 i32.add - local.set $1 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end + end + local.get $11 + i64.const 8388608 + i64.or + local.set $10 + local.get $4 + i32.const 150 + i32.sub + local.set $6 + local.get $11 + i64.const 0 + i64.ne + local.tee $4 + if (result i32) + local.get $6 + i32.const 37 + i32.add + i32.const -1 + local.get $6 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.tee $7 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + else + local.get $6 + i32.const 37 + i32.add + local.get $6 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.tee $7 + i32.const -1701 + i32.mul + i32.const 1701 + i32.sub + i32.const 9 + i32.shr_s + i32.add + end + local.set $3 + local.get $7 + i32.const 16 + i32.le_s + local.get $7 + i32.const -28 + i32.ge_s + i32.and + if (result i64) + local.get $7 + i32.const 3 + i32.shl + i32.const 2528 + i32.add + i64.load + else + i32.const 292 + local.get $7 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $1 + global.get $~lib/util/dtoa/gPow10Hi local.get $1 - i32.const 2 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + end + local.tee $5 + i64.const 32 + i64.shr_u + local.get $10 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + local.get $10 + i64.mul + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $1 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 40 + local.get $3 + i64.extend_i32_s + local.tee $1 + i64.sub + i64.shr_u + local.tee $9 + i64.const 68719476735 + i64.and + local.set $11 + i64.const 1 + local.get $10 + i64.const 1 + i64.and + i64.sub + local.get $5 + i64.const 65 + local.get $1 + i64.sub + i64.shr_u + i64.add + local.tee $5 + local.get $9 + i64.add + i64.const 36 + i64.shr_u + local.set $1 + local.get $11 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $11 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + local.set $8 + local.get $4 + if (result i32) + local.get $1 + local.get $9 + local.get $5 + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + else + local.get $8 + i32.const 1 i32.add + local.get $8 + local.get $6 + i32.const 64 + i32.eq + local.get $6 + i32.const -119 + i32.eq + i32.or + local.get $6 + i32.const 67 + i32.eq + i32.or + select + local.set $8 + local.get $1 + local.get $9 + local.get $5 + i64.const 1 + i64.shr_u + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + end + local.get $1 + global.set $~lib/util/dtoa/gSig + local.get $7 + global.set $~lib/util/dtoa/gExp + local.get $8 + global.set $~lib/util/dtoa/gLastDigit + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + if + local.get $11 + i64.const 0 + i64.ne + if + i32.const 2176 + i32.const 78 + i32.store16 + i32.const 2178 + i32.const 97 + i32.store16 + i32.const 2180 + i32.const 78 + i32.store16 + i32.const 2182 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $2 + if (result i32) + i32.const 2176 + i32.const 45 + i32.store16 + i32.const 2178 + else + i32.const 2176 + end + local.tee $2 + i64.const 29555310648492105 + i64.store + local.get $2 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $11 + i64.eqz + if + i32.const 2176 + i32.const 48 + i32.store16 + i32.const 2178 + i32.const 46 + i32.store16 + i32.const 2180 + i32.const 48 + i32.store16 + i32.const 2182 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) local.get $2 - i32.const 10 - i32.ge_u + if (result i32) + i32.const 2176 + i32.const 45 + i32.store16 + i32.const 2178 + else + i32.const 2176 + end + local.set $2 + i32.const 337 + call $~lib/util/dtoa/computePow10Compact + local.set $1 + global.get $~lib/util/dtoa/gPow10Hi + local.get $1 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.tee $5 + i64.const 4294967295 + i64.and + local.get $11 + i64.mul + local.set $1 + local.get $5 + i64.const 32 + i64.shr_u + local.get $11 + i64.mul + local.get $1 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $1 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 6 + i64.shr_u + local.tee $10 + i64.const 68719476735 + i64.and + local.set $9 + local.get $10 + i64.const 1 + local.get $11 + i64.const 1 + i64.and + i64.sub + local.get $5 + i64.const 31 + i64.shr_u + i64.add + local.tee $5 + i64.add + i64.const 36 + i64.shr_u + local.tee $1 + global.set $~lib/util/dtoa/gSig + i32.const -45 + global.set $~lib/util/dtoa/gExp + local.get $9 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $9 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + local.get $10 + local.get $5 + i64.sub + i64.const 36 + i64.shr_u + local.get $1 + i64.ge_u + global.set $~lib/util/dtoa/gHasLastDigit + i32.const -45 + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $1 + i64.const 10000 + i64.lt_u + if + i32.const -49 + local.set $4 + local.get $1 + i64.const 10000 + i64.mul + local.set $1 + end + local.get $1 + i64.const 1000000 + i64.lt_u + if + local.get $4 + i32.const 2 + i32.sub + local.set $4 + local.get $1 + i64.const 100 + i64.mul + local.set $1 + end + local.get $1 + i64.const 10000000 + i64.lt_u + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + end + local.get $1 + local.get $1 + i64.const 10 + i64.div_u + local.tee $1 + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $3 + local.get $1 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $3 + global.set $~lib/util/dtoa/gLastDigit + local.get $3 + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $8 + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.tee $7 + global.get $~lib/util/dtoa/gExp + i32.const 7 + i32.add + i32.add + local.set $6 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + local.get $8 + select + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $8 + local.get $6 i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add + i32.sub + local.set $6 end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 + global.get $~lib/util/dtoa/gSig + local.tee $1 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + local.get $1 + i64.add + local.tee $5 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $5 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 70 + local.get $5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 3 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gDigits + local.get $6 + i32.const 20 + i32.le_s + local.get $6 + i32.const -6 + i32.ge_s + i32.and + if + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $8 + select + i32.const 48 i32.add - else + i64.extend_i32_s + local.set $9 + global.get $~lib/util/dtoa/gDigHi + local.set $5 + local.get $7 + i32.eqz + if + local.get $9 + i64.const 56 + i64.shl + local.get $5 + i64.const 8 + i64.shr_u + i64.or + local.set $5 + end local.get $2 - i32.const 1000000000 - i32.ge_u + local.set $4 i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end + global.get $~lib/util/dtoa/gDigits + local.get $7 + i32.sub + local.get $8 + select + local.set $3 + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $6 + i32.const 8 + i32.ge_s + if + local.get $2 + local.get $5 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $7 + if + local.get $2 + local.get $9 + i64.store16 offset=16 + end + local.get $4 + local.get $6 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $4 + local.get $7 + i32.const 8 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i64.const 13511005043687472 + i64.store local.get $2 - i32.const 100 - i32.div_u - local.set $5 + i64.const 13511005043687472 + i64.store offset=8 local.get $2 - i32.const 100 - i32.rem_u + i32.const 16 + i32.add local.set $2 - br $break|1 + br $for-loop|0 end - local.get $2 - i32.const 10 - i32.div_u - local.set $5 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 end - local.get $2 - local.set $5 - i32.const 0 - local.set $2 - br $break|1 + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 end + local.get $3 + local.get $7 + i32.add + local.set $3 + local.get $6 i32.const 0 - local.set $5 - end - local.get $4 - local.get $5 - i32.or - if + i32.ge_s + if + local.get $3 + i32.const 1 + i32.add + local.get $6 + i32.const 1 + i32.add + local.tee $2 + local.get $2 + local.get $3 + i32.lt_s + select + local.set $3 + end local.get $4 - local.tee $6 i32.const 1 - i32.add - local.set $4 local.get $6 + i32.sub + local.get $6 + i32.const 31 + i32.shr_s + i32.and i32.const 1 i32.shl - i32.const 1776 i32.add + local.tee $8 local.get $5 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $8 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 local.get $7 - i32.const 2 + if + local.get $8 + local.get $9 + i64.store16 offset=16 + end + local.get $6 + i32.const 0 + i32.ge_s + if + local.get $9 + i64.const 0 + local.get $7 + select + local.set $1 + local.get $6 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.shl + local.tee $2 + i32.const 64 + i32.lt_s + if + local.get $1 + i64.const 64 + local.get $2 + i64.extend_i32_s + local.tee $1 + i64.sub + i64.shl + local.get $5 + local.get $1 + i64.shr_u + i64.or + local.set $1 + end + local.get $7 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $8 + i32.add + local.tee $2 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $5 + i64.const 16 + i64.shl + local.get $5 + i64.or + i64.const 281470681808895 + i64.and + local.tee $5 + i64.const 8 + i64.shl + local.get $5 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $8 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $4 + i32.const 46 + i32.store16 offset=2 + end + local.get $8 + local.get $3 + i32.const 1 i32.shl - i32.const 2704 i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 + local.set $2 + local.get $3 + local.get $6 i32.const 1 - i32.shl - i32.const 1774 i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $0 - local.get $9 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and + i32.eq + local.get $6 + i32.const 0 + i32.ge_s + i32.and + if + local.get $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $2 + local.get $4 + i32.const 2 + i32.add + i32.gt_u if (result i32) - local.get $9 - local.get $0 - local.get $1 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $0 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq else i32.const 0 end if - local.get $7 - i32.const 1 + local.get $2 + i32.const 2 i32.sub - local.set $7 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 + local.set $2 + br $while-continue|1 end end local.get $2 - local.get $7 - i32.store16 - local.get $4 - return + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + end end - br $while-continue|0 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s + local.get $2 + local.tee $3 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $2 + global.get $~lib/util/dtoa/gDigHi + local.tee $5 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $5 + i64.const 32 i64.shr_u local.tee $1 - local.get $4 - i64.extend_i32_s + i64.const 16 + i64.shl + local.get $1 i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=16 + local.get $2 + i32.const 9 + global.get $~lib/util/dtoa/gDigits + local.get $7 + i32.eqz + i32.add + local.get $8 + select + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $while-continue|2 local.get $2 - i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + local.get $3 + i32.const 4 i32.add - i32.store16 + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|2 + end end - local.get $7 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $2 + local.get $2 + local.get $3 + i32.const 4 + i32.add + i32.eq i32.const 1 + i32.shl i32.sub - local.set $7 - local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 2704 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 1774 - i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $0 - local.get $8 - i64.gt_u + local.tee $3 + i32.const 101 + i32.store16 local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u + local.get $6 + i32.const 31 + i32.shr_s + local.tee $2 + i32.const 2 i32.and - if (result i32) - local.get $0 - local.get $8 - local.get $10 - i64.add - local.tee $1 - i64.gt_u - local.get $0 - local.get $8 - i64.sub - local.get $1 - local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $4 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $2 + local.get $6 + i32.xor + local.get $2 i32.sub - local.set $7 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 + local.tee $3 + i32.const 100 + i32.ge_s + if + local.get $4 + local.get $3 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $2 + i32.const 48 + i32.add + i32.store16 + local.get $4 + local.get $3 + local.get $2 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store offset=2 + local.get $4 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $3 + i32.const 10 + i32.ge_s + if + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.const 1772 + i32.add + i32.load + i32.store + local.get $4 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $4 + local.get $3 + i32.const 48 + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add end end - local.get $2 - local.get $7 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 1776 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 - end - f32.demote_f64 - i32.reinterpret_f32 - local.tee $4 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 150 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $4 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $8 - i32.sub - local.set $4 - local.get $3 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $1 - local.get $1 - i64.const 8388608 - i64.eq - i32.const 1 - i32.add - local.tee $8 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $8 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $8 + i32.const 2176 i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 1832 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 2528 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 - local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $5 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 - i64.and - local.tee $11 - local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $5 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $3 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $12 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $2 - call $~lib/util/number/genDigits - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - i32.add + i32.shr_u ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -3234,7 +4042,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 37600 + i32.const 37632 i32.lt_u if local.get $0 @@ -3330,7 +4138,7 @@ unreachable end local.get $0 - i32.const 37600 + i32.const 37632 i32.lt_u if local.get $0 @@ -3353,7 +4161,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 37600 + i32.const 37632 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -3421,7 +4229,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3431,7 +4239,7 @@ memory.size i32.const 16 i32.shl - i32.const 37600 + i32.const 37632 i32.sub i32.const 1 i32.shr_u @@ -3465,7 +4273,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3515,18 +4323,18 @@ local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3168 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -3539,18 +4347,18 @@ local.get $0 i32.const 1 call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3280 + i32.const 3312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3581,18 +4389,18 @@ local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3312 + i32.const 3344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -3625,7 +4433,7 @@ f32.ne if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -3636,7 +4444,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3657,7 +4465,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4832 + i32.const 4864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3723,12 +4531,12 @@ local.get $0 i32.store local.get $0 - i32.const 4720 + i32.const 4752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3747,12 +4555,12 @@ local.get $0 i32.store local.get $0 - i32.const 4752 + i32.const 4784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -3789,12 +4597,12 @@ local.get $0 i32.store local.get $0 - i32.const 4784 + i32.const 4816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -3827,7 +4635,7 @@ i32.ne if i32.const 0 - i32.const 3200 + i32.const 3232 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -3839,8 +4647,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37632 - i32.const 37680 + i32.const 37664 + i32.const 37712 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/resolve-function-expression.debug.wat b/tests/compiler/resolve-function-expression.debug.wat index c1640f112a..cb2e4d6210 100644 --- a/tests/compiler/resolve-function-expression.debug.wat +++ b/tests/compiler/resolve-function-expression.debug.wat @@ -3141,7 +3141,7 @@ if i32.const 208 i32.const 336 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-propertyaccess.debug.wat b/tests/compiler/resolve-propertyaccess.debug.wat index 06b17954f1..6b2c63ec7e 100644 --- a/tests/compiler/resolve-propertyaccess.debug.wat +++ b/tests/compiler/resolve-propertyaccess.debug.wat @@ -3356,7 +3356,7 @@ if i32.const 32 i32.const 160 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat index ff33c0b57a..4ad4831a6d 100644 --- a/tests/compiler/resolve-ternary.debug.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -12,11 +12,12 @@ (type $10 (func (param i64 i32) (result i32))) (type $11 (func (param i32 i64 i32 i32))) (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $13 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $14 (func (param i32 i32 i32) (result i32))) - (type $15 (func (param i32 f64 i32) (result i32))) - (type $16 (func (param f64 i32) (result i32))) - (type $17 (func (param f64) (result i32))) + (type $13 (func (param i32) (result i64))) + (type $14 (func (param i64) (result i64))) + (type $15 (func (param i64) (result i32))) + (type $16 (func (param i32 f64) (result i32))) + (type $17 (func (param f64 i32) (result i32))) + (type $18 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-ternary/b (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -34,19 +35,33 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $resolve-ternary/f1 i32 (i32.const 3472)) - (global $resolve-ternary/f2 i32 (i32.const 3504)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) + (global $resolve-ternary/f1 i32 (i32.const 3696)) + (global $resolve-ternary/f2 i32 (i32.const 3728)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 3584)) - (global $~lib/memory/__data_end i32 (i32.const 3608)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36376)) - (global $~lib/memory/__heap_base i32 (i32.const 36376)) + (global $~lib/rt/__rtti_base i32 (i32.const 3808)) + (global $~lib/memory/__data_end i32 (i32.const 3832)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36600)) + (global $~lib/memory/__heap_base i32 (i32.const 36600)) (memory $0 1) (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") @@ -68,16 +83,17 @@ (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $18 (i32.const 2348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $19 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 2448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2504) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $23 (i32.const 3368) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $24 (i32.const 3448) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $25 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\000\00\00\00\00\00\00\00") + (data $26 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 3808) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 5 5 funcref) (elem $0 (i32.const 1) $start:resolve-ternary~anonymous|0 $start:resolve-ternary~anonymous|1 $resolve-ternary/g1 $resolve-ternary/g2) (export "memory" (memory $0)) @@ -2818,1374 +2834,4615 @@ i32.const 0 return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 2576 + i32.const 27 + local.get $minor i32.sub - local.set $one_exp + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 3000 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 3368 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $neg + if + local.get $buf|8 + i32.const 45 + i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 + i32.sub + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 + else + i32.const 16 end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 636 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 636 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 end - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u + local.get $isNormal if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 3376 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 2576 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 2576 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s i64.sub - local.get $ten_kappa - i64.ge_u - else + i64.shr_u + local.set $integral + local.get $pow10Hi i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s i64.add - local.get $wp_w - i64.lt_u + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s if (result i32) - i32.const 1 + local.get $i|72 + i32.const 320 + i32.le_s else - local.get $wp_w - local.get $rest + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 2576 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 2576 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 i64.sub - local.get $rest - local.get $ten_kappa + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u i64.add - local.get $wp_w - i64.sub - i64.gt_u + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne if - local.get $digit + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 2576 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 2576 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 2576 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 2576 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 2576 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 2576 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 i64.add - local.set $rest - br $while-continue|3 + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 end - end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 3376 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 else - i32.const 0 + local.get $one|261 end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end + end + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s else - i32.const 0 + i64.const 0 end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u if - local.get $digit|36 + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp i32.const 1 i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 end + i32.sub + local.set $scale + i32.const 3448 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 i32.add - local.get $ptr + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 i32.const -6 - local.get $kk - i32.lt_s + i32.ge_s if (result i32) - local.get $kk - i32.const 0 + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32.le_s else i32.const 0 end if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 i32.lt_s if - local.get $buffer - local.get $i|7 + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $i|7 + local.set $endByte + local.get $buf|289 + i32.const 17 i32.const 1 + i32.shl i32.add - local.set $i|7 - br $for-loop|1 + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 i32.add - local.set $buffer|8 - local.get $kk i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 i32.const 0 - i32.lt_s - local.set $sign - local.get $sign + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 end - local.get $k|9 - call $~lib/util/number/decimalCount32 + local.get $buf|289 + local.get $k i32.const 1 + i32.shl i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select + i32.const 46 i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length + local.get $buf|289 + local.get $endPos i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer - i32.const 2 - i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 i32.add - local.set $buffer|16 - local.get $kk + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end i32.const 1 + i32.shl i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 if - i32.const 0 - local.get $k|17 + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 i32.sub - local.set $k|17 + local.set $end|359 end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 end - i32.add - local.set $length - local.get $length - i32.const 2 - i32.add - return + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit i32.const 1 - end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 2504 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 3200 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 636 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 636 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|387 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotation|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) @@ -4293,8 +7550,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36400 - i32.const 36448 + i32.const 36624 + i32.const 36672 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4461,7 +7718,7 @@ local.get $0 i32.store local.get $0 - i32.const 3440 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if @@ -4499,9 +7756,9 @@ global.set $~argumentsLength global.get $resolve-ternary/b if (result i32) - i32.const 3536 + i32.const 3760 else - i32.const 3568 + i32.const 3792 end i32.load call_indirect (type $0) @@ -4523,7 +7780,7 @@ if (result i32) global.get $resolve-ternary/f2 else - i32.const 3568 + i32.const 3792 end i32.load call_indirect (type $0) @@ -4602,7 +7859,7 @@ if i32.const 32 i32.const 160 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -4750,79 +8007,296 @@ return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 2304 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 2304 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 2336 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 2368 + i32.const 2416 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 2336 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 636 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 636 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 636 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 636 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 2368 - i32.const 2416 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 2448 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 2448 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 2448 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 2448 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) ) diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index d6ff759cbd..15d6af611d 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1,14 +1,12 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i64 i64 i32 i64) (result i32))) - (type $9 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -20,10 +18,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37400)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37624)) (memory $0 1) (data $0 (i32.const 1036) "|") (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") @@ -58,20 +53,21 @@ (data $18.1 (i32.const 3384) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $19 (i32.const 3420) ",") (data $19.1 (i32.const 3432) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $21 (i32.const 3528) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $23 (i32.const 4392) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $24 (i32.const 4478) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $25 (i32.const 4668) "\1c") + (data $25.1 (i32.const 4680) "\02\00\00\00\06\00\00\001\00.\000") + (data $26 (i32.const 4700) "\1c") + (data $26.1 (i32.const 4712) "\04\00\00\00\08\00\00\00\01") + (data $27 (i32.const 4732) "\1c") + (data $27.1 (i32.const 4744) "\04\00\00\00\08\00\00\00\02") + (data $28 (i32.const 4764) "\1c") + (data $28.1 (i32.const 4776) "\04\00\00\00\08\00\00\00\03") + (data $29 (i32.const 4796) "\1c") + (data $29.1 (i32.const 4808) "\04\00\00\00\08\00\00\00\04") + (data $30 (i32.const 4832) "\05\00\00\00 \00\00\00 \00\00\00 ") (table $0 5 5 funcref) (elem $0 (i32.const 1) $start:resolve-ternary~anonymous|0 $start:resolve-ternary~anonymous|1 $resolve-ternary/g1 $resolve-ternary/g2) (export "memory" (memory $0)) @@ -114,7 +110,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 local.get $1 i32.load offset=4 i32.const -4 @@ -126,7 +122,7 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 37400 + i32.const 37624 i32.lt_u i32.and i32.eqz @@ -138,7 +134,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 end local.get $1 i32.load offset=8 @@ -175,7 +171,7 @@ i32.const 1 else local.get $0 - i32.const 4608 + i32.const 4832 i32.load i32.gt_u if @@ -189,7 +185,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 4612 + i32.const 4836 i32.add i32.load i32.const 32 @@ -228,110 +224,6 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -753,11 +645,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4856 i32.lt_s if - i32.const 37424 - i32.const 37472 + i32.const 37648 + i32.const 37696 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -790,11 +682,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4856 i32.lt_s if - i32.const 37424 - i32.const 37472 + i32.const 37648 + i32.const 37696 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -893,7 +785,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$84 + block $__inlined_func$~lib/util/string/compareImpl$83 loop $while-continue|1 local.get $0 local.tee $3 @@ -913,7 +805,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$84 + br_if $__inlined_func$~lib/util/string/compareImpl$83 local.get $2 i32.const 2 i32.add @@ -1090,10 +982,10 @@ if unreachable end - i32.const 37408 + i32.const 37632 i32.const 0 i32.store - i32.const 38976 + i32.const 39200 i32.const 0 i32.store loop $for-loop|0 @@ -1104,7 +996,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 37408 + i32.const 37632 i32.add i32.const 0 i32.store offset=4 @@ -1122,7 +1014,7 @@ i32.add i32.const 2 i32.shl - i32.const 37408 + i32.const 37632 i32.add i32.const 0 i32.store offset=96 @@ -1140,14 +1032,14 @@ br $for-loop|0 end end - i32.const 37408 - i32.const 38980 + i32.const 37632 + i32.const 39204 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 37408 + i32.const 37632 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) @@ -1628,28 +1520,26 @@ local.get $1 ) (func $~start - (local $0 i64) + (local $0 i32) (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4856 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store memory.size i32.const 16 i32.shl - i32.const 37400 + i32.const 37624 i32.sub i32.const 1 i32.shr_u @@ -1683,9 +1573,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4856 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1694,10 +1584,111 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - local.get $1 i32.const 1 + local.set $3 i32.const 1 - call $~lib/util/number/utoa32_dec_lut + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $2 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1718,140 +1709,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4856 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 - global.set $~lib/util/number/_K - i32.const 3880 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 4312 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $2 - i64.const 4294967295 - i64.and - local.tee $3 - i64.const 31 - i64.shl - local.set $0 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.const 31 - i64.shl - local.get $3 - i64.const 31 - i64.shl - local.get $3 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294967295 - i64.and - local.get $2 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 31 - i64.shl - local.get $0 - i64.const 32 - i64.shr_u - i64.add - local.get $0 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $4 - global.get $~lib/util/number/_exp_pow - i32.const 1 - i32.add - local.get $4 - local.get $2 - i64.const 2147483647 - i64.mul - local.get $3 - i64.const 2147483647 - i64.mul - local.get $3 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 4294966784 - i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - i32.const 1 - i32.shl - local.tee $5 + i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - i32.const 3472 - local.get $5 - memory.copy + local.get $0 + i32.const 49 + i32.store16 + local.get $0 + i32.const 3145774 + i32.store offset=2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.const 4464 + local.get $0 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if @@ -1863,7 +1750,7 @@ unreachable end i32.const 1 - i32.const 4496 + i32.const 4720 i32.load call_indirect (type $0) i32.const 2 @@ -1877,7 +1764,7 @@ unreachable end i32.const 1 - i32.const 4560 + i32.const 4784 i32.load call_indirect (type $0) i32.const 4 @@ -1891,7 +1778,7 @@ unreachable end i32.const 1 - i32.const 4528 + i32.const 4752 i32.load call_indirect (type $0) i32.const 3 @@ -1910,757 +1797,13 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37424 - i32.const 37472 + i32.const 37648 + i32.const 37696 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 - i32.add - else - local.get $2 - i32.const 21 - i32.le_s - local.get $2 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.tee $2 - i32.const 2 - i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 - i32.add - else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 3472 - local.get $0 - i32.const 1 - i32.shl - memory.copy - i32.const 3472 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $2 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if - i32.const 3474 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 3476 - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 3476 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 3476 - i32.const 3474 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 3474 - i32.const 46 - i32.store16 - local.get $1 - i32.const 3472 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $0 - end - local.get $0 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - local.get $0 - i64.sub - local.set $8 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $9 - i64.const 1 - i64.sub - local.tee $11 - local.get $1 - i64.and - local.set $7 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.gt_s - if - block $break|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 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $7 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $2 - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 - local.get $0 - local.get $8 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $0 - local.get $1 - i64.add - local.tee $7 - i64.gt_u - local.get $8 - local.get $0 - i64.sub - local.get $7 - local.get $8 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $7 - i64.const 10 - i64.mul - local.tee $0 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $11 - i64.and - local.tee $7 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $2 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $7 - i64.gt_u - local.get $3 - local.get $7 - i64.sub - local.get $9 - i64.ge_u - i32.and - if (result i32) - local.get $0 - local.get $7 - i64.sub - local.get $7 - local.get $9 - i64.add - local.tee $1 - local.get $0 - i64.sub - i64.gt_u - local.get $0 - local.get $1 - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $7 - local.get $9 - i64.add - local.set $7 - br $while-continue|6 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -2743,7 +1886,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 37400 + i32.const 37624 i32.lt_u if local.get $0 @@ -2839,7 +1982,7 @@ unreachable end local.get $0 - i32.const 37400 + i32.const 37624 i32.lt_u if local.get $0 @@ -2862,7 +2005,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 37400 + i32.const 37624 i32.ge_u if global.get $~lib/rt/tlsf/ROOT diff --git a/tests/compiler/resolve-unary.debug.wat b/tests/compiler/resolve-unary.debug.wat index 46d35d9426..2b1c2f8600 100644 --- a/tests/compiler/resolve-unary.debug.wat +++ b/tests/compiler/resolve-unary.debug.wat @@ -3808,7 +3808,7 @@ if i32.const 32 i32.const 160 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat index b54061ee14..4a86c34757 100644 --- a/tests/compiler/std/array.debug.wat +++ b/tests/compiler/std/array.debug.wat @@ -13,23 +13,23 @@ (type $11 (func)) (type $12 (func (param i64 i32) (result i32))) (type $13 (func (result f64))) - (type $14 (func (param i32 f64 i32) (result i32))) - (type $15 (func (param i32 i32 i32 i32))) - (type $16 (func (param i64) (result i64))) - (type $17 (func (param i32 i64 i32))) - (type $18 (func (param i32 i32 i32) (result f32))) - (type $19 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $20 (func (param i32 i64) (result i32))) - (type $21 (func (param i32 f32 i32 i32) (result i32))) - (type $22 (func (param i32 f32 i32) (result i32))) - (type $23 (func (param i32 i32 i64) (result i32))) - (type $24 (func (result i32))) - (type $25 (func (param i32 i32 f32 i32 i32))) - (type $26 (func (param i32 i64 i32 i32))) - (type $27 (func (param i64))) - (type $28 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $29 (func (param i32 f64) (result i32))) - (type $30 (func (param i64) (result i32))) + (type $14 (func (param i32 i32 i32 i32))) + (type $15 (func (param i64) (result i64))) + (type $16 (func (param i32 i64 i32))) + (type $17 (func (param i32 i32 i32) (result f32))) + (type $18 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $19 (func (param i64) (result i32))) + (type $20 (func (param i32 f64) (result i32))) + (type $21 (func (param i32 i64) (result i32))) + (type $22 (func (param i32 f32 i32 i32) (result i32))) + (type $23 (func (param i32 f32 i32) (result i32))) + (type $24 (func (param i32 f64 i32) (result i32))) + (type $25 (func (param i32 i32 i64) (result i32))) + (type $26 (func (result i32))) + (type $27 (func (param i32 i32 f32 i32 i32))) + (type $28 (func (param i32 i64 i32 i32))) + (type $29 (func (param i64))) + (type $30 (func (param i32) (result i64))) (type $31 (func (param i32 i32) (result f32))) (type $32 (func (param i32 i32) (result f64))) (type $33 (func (param f64) (result i32))) @@ -66,18 +66,32 @@ (global $std/array/outputStabArr (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/rt/__rtti_base i32 (i32.const 14976)) - (global $~lib/memory/__data_end i32 (i32.const 15168)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 47936)) - (global $~lib/memory/__heap_base i32 (i32.const 47936)) + (global $~lib/rt/__rtti_base i32 (i32.const 15200)) + (global $~lib/memory/__data_end i32 (i32.const 15392)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48160)) + (global $~lib/memory/__heap_base i32 (i32.const 48160)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") @@ -318,70 +332,71 @@ (data $235 (i32.const 11308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $236 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $237 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $238 (i32.const 11440) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $239 (i32.const 11496) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $248 (i32.const 12844) "\1c\00\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\00\00") - (data $249 (i32.const 12876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $250 (i32.const 12908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $251 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $252 (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") - (data $253 (i32.const 13020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $254 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") - (data $255 (i32.const 13100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data $256 (i32.const 13132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\80\81\80\00\00\00\00\00\00\00\00\00") - (data $257 (i32.const 13164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008\00") - (data $258 (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") - (data $259 (i32.const 13244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") - (data $260 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\80\01\ff\00\00\00\00\00\00\00\00") - (data $261 (i32.const 13324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005\00\00\00\00\00\00\00") - (data $262 (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff\00\00\00\00") - (data $263 (i32.const 13404) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $264 (i32.const 13468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $265 (i32.const 13516) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $266 (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00") - (data $267 (i32.const 13660) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $268 (i32.const 13820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") - (data $269 (i32.const 13868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") - (data $270 (i32.const 13916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $271 (i32.const 13948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data $272 (i32.const 13980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\001\00\00p6\00\00\00\00\00\00\906\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $273 (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data $274 (i32.const 14060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $275 (i32.const 14092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data $276 (i32.const 14124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $277 (i32.const 14172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") - (data $278 (i32.const 14204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") - (data $279 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $280 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $281 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $282 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data $283 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data $284 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data $285 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00P8\00\00\00\00\00\00\00\00\00\00") - (data $286 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data $287 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data $288 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\908\00\00\00\00\00\00\b08\00\00") - (data $289 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data $290 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") - (data $291 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") - (data $292 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\f08\00\00\109\00\0009\00\00") - (data $293 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") - (data $294 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00p9\00\00\00\00\00\00\00\00\00\00") - (data $295 (i32.const 14748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00P8\00\00\908\00\00\00\00\00\00\b08\00\00\f08\00\00\109\00\0009\00\00p9\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $296 (i32.const 14812) "\1c\00\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\00\00") - (data $297 (i32.const 14844) "\1c\00\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\00\00") - (data $298 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $299 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $300 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") - (data $301 (i32.const 14976) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00\00\00\00\00") + (data $238 (i32.const 11440) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $239 (i32.const 11568) ":\0f \f4\'\8f\cb\ce\c8\a5\19\90\b9\a5o\a5\a0\84\14@aQY\84\00\a1\ed\cc\ce\1b\c2\d3\00\b4W\n?\16h\a9\00\90\acn2x\86\87\00\80z\17\b7&\d7\d8\00\00b\ac\c5\ebx\ad\00\00\e8\89\04#\c7\8a\00\00@v:k\0b\de\00\00\00\c5.\bc\a2\b1\00\00\00\04\bf\c9\1b\8e\00\00\00\a01\a9_\e3\00\00\00\80\f4 \e6\b5\00\00\00\00*\e7\84\91\00\00\00\00\10\a5\d4\e8\00\00\00\00@\b7C\ba\00\00\00\00\00\f9\02\95\00\00\00\00\00(k\ee\00\00\00\00\00 \bc\be\00\00\00\00\00\80\96\98\00\00\00\00\00\00$\f4\00\00\00\00\00\00P\c3\00\00\00\00\00\00@\9c\00\00\00\00\00\00\00\fa\00\00\00\00\00\00\00\c8\00\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\80\cd\cc\cc\cc\cc\cc\cc\cc\0b\d7\a3p=\n\d7\a3<\dfO\8d\97n\12\83,e\19\e2X\17\b7\d1$\84G\1bG\ac\c5\a7\b6il\af\05\bd7\86\bdBz\e5\d5\94\bf\d6\fd\cea\84\11w\cc\ab\98\a5\b46A_p\89\bf\d5\ed\bd\ce\fe\e6\db\ff\aa$\cb\0b\ff\eb\af\cc\88Po\t\cc\bc\8c\14\0e\b4KB\13.\e1\10\d8\\\t5\dc$\b4\da\ac\b0:\f7|\1d\90\\\e1M\c4\be\94\95\e6J\b4\a462\aaw\b8\cc\cc\cc\cc\cc\cc\cc\cc\a3p=\n\d7\a3p=\e9&1\08\ac\1cZd\a8\a4N@\13a\c3\d3S\1dr3\dc\80\cf\0f\0f\b1\c1\c2I\9a?\a6L\1bi\04v\902==|\ba6+\r\c2\fd") + (data $240 (i32.const 11992) "o\1b\8e(\10T\8e\af\daM\e4^\ae\f0\ec\07J\fb\9f\f4\98\'D\b1\9dwA\df\cf\11\cd\99\07\ef\99\85\0b?\fe\b2\15\aa\b4\dc\e6\a7\1f\86c\beZ\06\0b\a5\bc\b4\aaSkuz\07\ed\0f\08\bf,)Ud\7f\b6C\d5\b1\17L\c8;\1a\fb;\efi\c2\87F\b8B\a7\ee@OQ]=\eb\dd\e4PF\1a\12\ba\13\e4labM\f3\92\ea\af(\b6\ef&\e2\bb\8c6U\n\f7\89\04\89\0f`\cb\05\e9\b8\b6\bd!\c9\c1\bb\87\e9\00T\96_\9a\84x\db\8f\bf4\d0\bdr\04R\98\de\'\8a\92\95\00\9am\c1\94\82\17\0f<\05\b7u\00\00\00\00\00\00P\c3\00\00\00\00\00\00\00\00\05\e3L6\12\197\c5\00\00\00\00\00\00(l\d6\aa\80\9d\ef\f0\"\c7\f6~\b9\b7\d2:MBL\c8q\d5m\93\13\c9\ea8\1e\cd\19:\bc\03\1cU\ab\01\80\0c\t\cb\c6,\07\d3\bf\f5\ad\\\a1\90\08\137h\03\cd\10\8cz\c3\87\a8\db6.\ef\07\12\c2\b2\02\cf\bc\f4\03^\e4g\f9\94\c7\85\d7in\f8\06\d1R\ba\be\01\d763\e1|\a0\1c4\a8E\10\d3Q\a0\t\12\11H\de\1e1Vx\85\fa\a6\1e\d5f\a5>\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $241 (i32.const 12360) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $242 (i32.const 12440) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $243 (i32.const 12636) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00P\00\00\000\00.\000\00,\00 \001\00.\000\00,\00 \00-\002\00.\000\00,\00 \00N\00a\00N\00,\00 \00-\00I\00n\00f\00i\00n\00i\00t\00y\00,\00 \00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $244 (i32.const 12748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $245 (i32.const 12780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000)\00\00\e01\00\00\00\00\00\00") + (data $246 (i32.const 12812) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $247 (i32.const 12876) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $248 (i32.const 12972) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $249 (i32.const 13068) "\1c\00\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\00\00") + (data $250 (i32.const 13100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $251 (i32.const 13132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $252 (i32.const 13164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $253 (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data $254 (i32.const 13244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $255 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data $256 (i32.const 13324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data $257 (i32.const 13356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\80\81\80\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 13388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008\00") + (data $259 (i32.const 13436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data $260 (i32.const 13468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") + (data $261 (i32.const 13516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\80\01\ff\00\00\00\00\00\00\00\00") + (data $262 (i32.const 13548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005\00\00\00\00\00\00\00") + (data $263 (i32.const 13596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff\00\00\00\00") + (data $264 (i32.const 13628) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $265 (i32.const 13692) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $266 (i32.const 13740) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $267 (i32.const 13820) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00") + (data $268 (i32.const 13884) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $269 (i32.const 14044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") + (data $270 (i32.const 14092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") + (data $271 (i32.const 14140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 14172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $273 (i32.const 14204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\e01\00\00P7\00\00\00\00\00\00p7\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $274 (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data $275 (i32.const 14284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $276 (i32.const 14316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data $277 (i32.const 14348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $278 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data $279 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data $280 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $282 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $283 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data $284 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data $285 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data $286 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\0009\00\00\00\00\00\00\00\00\00\00") + (data $287 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data $288 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data $289 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00p9\00\00\00\00\00\00\909\00\00") + (data $290 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data $291 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data $292 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data $293 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\d09\00\00\f09\00\00\10:\00\00") + (data $294 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data $295 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00P:\00\00\00\00\00\00\00\00\00\00") + (data $296 (i32.const 14972) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\0009\00\00p9\00\00\00\00\00\00\909\00\00\d09\00\00\f09\00\00\10:\00\00P:\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $297 (i32.const 15036) "\1c\00\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\00\00") + (data $298 (i32.const 15068) "\1c\00\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\00\00") + (data $299 (i32.const 15100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 15132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 15164) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $302 (i32.const 15200) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00\00\00\00\00") (table $0 64 64 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $std/array/assertStableSortedForComplexObjects~anonymous|0 $start:std/array~anonymous|48 $start:std/array~anonymous|49 $start:std/array~anonymous|50 $start:std/array~anonymous|51 $start:std/array~anonymous|52 $start:std/array~anonymous|53 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) @@ -6207,1464 +6222,4575 @@ i32.add return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp - i32.sub - local.set $one_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 11568 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 11992 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 12360 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $neg + if + local.get $buf|8 + i32.const 45 + i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 + i32.sub + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 + else + i32.const 16 end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6700 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 6700 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i32.const 0 - local.set $d - br $break|1 end - local.get $d - local.get $len - i32.or + local.get $isNormal if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 12368 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 11568 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 11568 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s i64.sub - local.get $ten_kappa - i64.ge_u - else + i64.shr_u + local.set $integral + local.get $pow10Hi i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s i64.add - local.get $wp_w - i64.lt_u + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s if (result i32) - i32.const 1 + local.get $i|72 + i32.const 320 + i32.le_s else - local.get $wp_w - local.get $rest + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 11568 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 11568 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 i64.sub - local.get $rest - local.get $ten_kappa + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u i64.add - local.get $wp_w - i64.sub - i64.gt_u + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 else - i32.const 0 + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa + local.get $integral|122 + i64.const 1 i64.add - local.set $rest - br $while-continue|3 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 12368 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u - else + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 11568 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 11568 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 11568 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 11568 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.lt_u + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s if (result i32) - i32.const 1 + local.get $i|212 + i32.const 320 + i32.le_s else - local.get $wp_w|34 - local.get $rest|32 + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 11568 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 11568 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 i64.sub - local.get $rest|32 - local.get $ten_kappa|33 + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 else - i32.const 0 + local.get $one|261 end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq if - local.get $digit|36 - i32.const 1 - i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 + local.get $integral|262 + i64.const 1 i64.add - local.set $rest|32 - br $while-continue|6 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u + if + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.sub + local.set $scale + i32.const 12440 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 i32.add - local.get $ptr + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 i32.const -6 - local.get $kk - i32.lt_s + i32.ge_s if (result i32) - local.get $kk - i32.const 0 + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32.le_s else i32.const 0 end if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 i32.lt_s if - local.get $buffer - local.get $i|7 + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $i|7 + local.set $endByte + local.get $buf|289 + i32.const 17 i32.const 1 + i32.shl i32.add - local.set $i|7 - br $for-loop|1 + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 i32.add - local.set $buffer|8 - local.get $kk + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 i32.lt_s - local.set $sign - local.get $sign if - i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end end - local.get $k|9 - call $~lib/util/number/decimalCount32 + local.get $buf|289 + local.get $k i32.const 1 i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 i32.const 1 - i32.ge_s + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 + i32.const 0 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s + if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 + i32.const 0 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.shl + i32.add + i32.const 46 i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length + local.get $buf|289 + local.get $endPos i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer - i32.const 2 i32.add - local.get $len + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end + i32.const 1 + i32.shl + i32.sub + local.set $end|359 + end + local.get $end|359 i32.const 2 i32.sub - memory.copy - local.get $buffer + i32.load16_u i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end + end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 + i32.const 1 + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 + i32.store16 + local.get $buf|387 + i32.const 6700 + local.get $e + local.get $d + i32.const 100 + i32.mul i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 - if - i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 - end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 6700 + local.get $e + i32.const 2 + i32.shl i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 end + local.get $buf|387 + i32.const 48 + local.get $e i32.add - local.set $length - local.get $length + i32.store16 + local.get $buf|387 i32.const 2 i32.add - return + br $~lib/util/dtoa/writeExponent|inlined.0 end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 + br $~lib/util/dtoa/writeExpNotation|inlined.0 end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 11496 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 12192 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) - (local $buffer|2 i32) - (local $value|3 f64) - (local $isSingle i32) - (local $sign i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $buffer - local.set $buffer|2 - local.get $value - local.set $value|3 - i32.const 0 - local.set $isSingle - local.get $value|3 - f64.const 0 - f64.eq - if - local.get $buffer|2 - i32.const 48 - i32.store16 - local.get $buffer|2 - i32.const 46 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $value|3 - local.get $value|3 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|3 - local.get $value|3 - f64.ne - if - local.get $buffer|2 - i32.const 78 - i32.store16 - local.get $buffer|2 - i32.const 97 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $value|3 - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $buffer|2 - i32.const 45 - i32.store16 - local.get $buffer|2 - i32.const 2 - i32.add - local.set $buffer|2 - end - local.get $buffer|2 - i64.const 29555310648492105 - i64.store - local.get $buffer|2 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $sign - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - unreachable - end - local.get $buffer|2 - local.get $value|3 - local.get $isSingle - call $~lib/util/number/dtoa_core - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end + (local $len i32) + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $buffer + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len return ) (func $std/array/Ref#toString (param $this i32) (result i32) - i32.const 12608 + i32.const 12832 return ) (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) @@ -9442,8 +12568,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 47968 - i32.const 48016 + i32.const 48192 + i32.const 48240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14737,7 +17863,7 @@ global.set $~argumentsLength local.get $8 i32.load - call_indirect (type $18) + call_indirect (type $17) local.set $result local.get $outStart local.get $i @@ -28620,12 +31746,12 @@ local.get $10 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 + i32.const 32 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 28 + i32.const 32 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -42951,7 +46077,7 @@ local.get $296 i32.store local.get $296 - i32.const 12432 + i32.const 12656 call $~lib/string/String.__eq i32.eqz if @@ -42965,7 +46091,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 12576 + i32.const 12800 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42979,7 +46105,7 @@ local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12768 call $~lib/string/String.__eq i32.eqz if @@ -43031,7 +46157,7 @@ local.get $296 i32.store local.get $296 - i32.const 12672 + i32.const 12896 call $~lib/string/String.__eq i32.eqz if @@ -43079,7 +46205,7 @@ local.get $296 i32.store local.get $296 - i32.const 12768 + i32.const 12992 call $~lib/string/String.__eq i32.eqz if @@ -43094,7 +46220,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 12864 + i32.const 13088 call $~lib/rt/__newArray local.tee $240 i32.store offset=348 @@ -43102,7 +46228,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 12896 + i32.const 13120 call $~lib/rt/__newArray local.tee $242 i32.store offset=352 @@ -43110,7 +46236,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 12928 + i32.const 13152 call $~lib/rt/__newArray local.tee $244 i32.store offset=356 @@ -43118,7 +46244,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 12960 + i32.const 13184 call $~lib/rt/__newArray local.tee $246 i32.store offset=360 @@ -43157,7 +46283,7 @@ local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12768 call $~lib/string/String.__eq i32.eqz if @@ -43180,7 +46306,7 @@ local.get $296 i32.store local.get $296 - i32.const 13008 + i32.const 13232 call $~lib/string/String.__eq i32.eqz if @@ -43203,7 +46329,7 @@ local.get $296 i32.store local.get $296 - i32.const 13040 + i32.const 13264 call $~lib/string/String.__eq i32.eqz if @@ -43217,7 +46343,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 13088 + i32.const 13312 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43230,7 +46356,7 @@ local.get $296 i32.store local.get $296 - i32.const 13120 + i32.const 13344 call $~lib/string/String.__eq i32.eqz if @@ -43244,7 +46370,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 13152 + i32.const 13376 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43257,7 +46383,7 @@ local.get $296 i32.store local.get $296 - i32.const 13184 + i32.const 13408 call $~lib/string/String.__eq i32.eqz if @@ -43271,7 +46397,7 @@ i32.const 3 i32.const 1 i32.const 11 - i32.const 13232 + i32.const 13456 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43284,7 +46410,7 @@ local.get $296 i32.store local.get $296 - i32.const 13264 + i32.const 13488 call $~lib/string/String.__eq i32.eqz if @@ -43298,7 +46424,7 @@ i32.const 2 i32.const 1 i32.const 39 - i32.const 13312 + i32.const 13536 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43311,7 +46437,7 @@ local.get $296 i32.store local.get $296 - i32.const 13344 + i32.const 13568 call $~lib/string/String.__eq i32.eqz if @@ -43325,7 +46451,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 13392 + i32.const 13616 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43338,7 +46464,7 @@ local.get $296 i32.store local.get $296 - i32.const 13424 + i32.const 13648 call $~lib/string/String.__eq i32.eqz if @@ -43352,7 +46478,7 @@ i32.const 3 i32.const 3 i32.const 40 - i32.const 13488 + i32.const 13712 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43365,7 +46491,7 @@ local.get $296 i32.store local.get $296 - i32.const 13536 + i32.const 13760 call $~lib/string/String.__eq i32.eqz if @@ -43379,7 +46505,7 @@ i32.const 5 i32.const 3 i32.const 41 - i32.const 13616 + i32.const 13840 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43392,7 +46518,7 @@ local.get $296 i32.store local.get $296 - i32.const 13680 + i32.const 13904 call $~lib/string/String.__eq i32.eqz if @@ -43407,7 +46533,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 13840 + i32.const 14064 call $~lib/rt/__newArray local.tee $255 i32.store offset=364 @@ -43423,7 +46549,7 @@ local.get $296 i32.store local.get $296 - i32.const 13888 + i32.const 14112 call $~lib/string/String.__eq i32.eqz if @@ -43437,7 +46563,7 @@ i32.const 4 i32.const 2 i32.const 34 - i32.const 14000 + i32.const 14224 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43450,7 +46576,7 @@ local.get $296 i32.store local.get $296 - i32.const 14048 + i32.const 14272 call $~lib/string/String.__eq i32.eqz if @@ -43475,7 +46601,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14080 + i32.const 14304 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $257 @@ -43483,7 +46609,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14112 + i32.const 14336 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $257 @@ -43501,7 +46627,7 @@ local.get $296 i32.store local.get $296 - i32.const 14144 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if @@ -43526,7 +46652,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 14192 + i32.const 14416 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $261 @@ -43534,7 +46660,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 14224 + i32.const 14448 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $261 @@ -43552,7 +46678,7 @@ local.get $296 i32.store local.get $296 - i32.const 14144 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if @@ -43587,7 +46713,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 14256 + i32.const 14480 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $266 @@ -43607,7 +46733,7 @@ local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12768 call $~lib/string/String.__eq i32.eqz if @@ -43632,7 +46758,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 14288 + i32.const 14512 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -43640,7 +46766,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14320 + i32.const 14544 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -43648,7 +46774,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14352 + i32.const 14576 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -43656,7 +46782,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14384 + i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -43737,7 +46863,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 14448 + i32.const 14672 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -43745,7 +46871,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 14544 + i32.const 14768 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -43753,7 +46879,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 14672 + i32.const 14896 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -43761,7 +46887,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 14736 + i32.const 14960 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -43781,7 +46907,7 @@ i32.const 8 i32.const 2 i32.const 34 - i32.const 14768 + i32.const 14992 call $~lib/rt/__newArray local.tee $285 i32.store offset=420 @@ -43873,7 +46999,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 14832 + i32.const 15056 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $287 @@ -43881,7 +47007,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 14864 + i32.const 15088 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $287 @@ -43925,7 +47051,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 14896 + i32.const 15120 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $291 @@ -43933,7 +47059,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 14928 + i32.const 15152 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $291 @@ -43946,7 +47072,7 @@ local.get $296 i32.store offset=8 local.get $296 - i32.const 14960 + i32.const 15184 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -45621,7 +48747,7 @@ if i32.const 6496 i32.const 6624 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -46605,7 +49731,7 @@ if i32.const 6496 i32.const 6624 - i32.const 350 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable @@ -46720,79 +49846,296 @@ return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 11296 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 11296 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 11328 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 11360 + i32.const 11408 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative if - i32.const 11328 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out end - i32.const 11360 - i32.const 11408 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 6700 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 6700 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 6700 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 6700 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 11440 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 11440 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 11440 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 11440 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) @@ -46833,7 +50176,7 @@ if i32.const 6496 i32.const 6624 - i32.const 401 + i32.const 349 i32.const 5 call $~lib/builtins/abort unreachable @@ -47021,7 +50364,7 @@ if i32.const 6496 i32.const 6624 - i32.const 431 + i32.const 379 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index d3525108c2..ffa3d8264c 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -15,15 +15,16 @@ (type $13 (func (param i32 i32 i32 i32 i32 i32))) (type $14 (func (result i32))) (type $15 (func (param i32 i64) (result i32))) - (type $16 (func (param i32 f64) (result i32))) - (type $17 (func (param i32 i32 i32) (result f32))) - (type $18 (func (param i32 i32) (result f32))) - (type $19 (func (param i32 i32) (result f64))) - (type $20 (func (param i32 i64 i32))) - (type $21 (func (param i32 f32 i32))) - (type $22 (func (param i32 f32 i32 i32))) - (type $23 (func (param i32 i32 i64))) - (type $24 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $16 (func (param i32 i32 i32) (result f32))) + (type $17 (func (param i32 i32) (result f32))) + (type $18 (func (param i32 i32) (result f64))) + (type $19 (func (param i32 i64 i32))) + (type $20 (func (param i32 f32 i32))) + (type $21 (func (param i32 f32 i32 i32))) + (type $22 (func (param i32 f64) (result i32))) + (type $23 (func (param i32) (result i64))) + (type $24 (func (param i32 i32 i64))) + (type $25 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) @@ -45,13 +46,15 @@ (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $std/array/inputStabArr (mut i32) (i32.const 0)) (global $std/array/outputStabArr (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48960)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49184)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) ",") @@ -530,132 +533,133 @@ (data $236.1 (i32.const 12376) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $237 (i32.const 12412) ",") (data $237.1 (i32.const 12424) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $239 (i32.const 12520) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data $248 (i32.const 13868) "\1c") - (data $248.1 (i32.const 13880) "\01") - (data $249 (i32.const 13900) "\1c") - (data $249.1 (i32.const 13912) "\01\00\00\00\04\00\00\00\01") - (data $250 (i32.const 13932) "\1c") - (data $250.1 (i32.const 13944) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $251 (i32.const 13964) ",") - (data $251.1 (i32.const 13976) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data $252 (i32.const 14012) "\1c") - (data $252.1 (i32.const 14024) "\02\00\00\00\06\00\00\001\00,\002") - (data $253 (i32.const 14044) ",") - (data $253.1 (i32.const 14056) "\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data $254 (i32.const 14092) "\1c") - (data $254.1 (i32.const 14104) "\01\00\00\00\03\00\00\00\01\ff") - (data $255 (i32.const 14124) "\1c") - (data $255.1 (i32.const 14136) "\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data $256 (i32.const 14156) "\1c") - (data $256.1 (i32.const 14168) "\01\00\00\00\03\00\00\00\80\81\80") - (data $257 (i32.const 14188) ",") - (data $257.1 (i32.const 14200) "\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008") - (data $258 (i32.const 14236) "\1c") - (data $258.1 (i32.const 14248) "\01\00\00\00\06\00\00\00\01\00\ff\ff") - (data $259 (i32.const 14268) ",") - (data $259.1 (i32.const 14280) "\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data $260 (i32.const 14316) "\1c") - (data $260.1 (i32.const 14328) "\01\00\00\00\04\00\00\00\00\80\01\ff") - (data $261 (i32.const 14348) ",") - (data $261.1 (i32.const 14360) "\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005") - (data $262 (i32.const 14396) "\1c") - (data $262.1 (i32.const 14408) "\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff") - (data $263 (i32.const 14428) "<") - (data $263.1 (i32.const 14440) "\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008") - (data $264 (i32.const 14492) ",") - (data $264.1 (i32.const 14504) "\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data $265 (i32.const 14540) "L") - (data $265.1 (i32.const 14552) "\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data $266 (i32.const 14620) "<") - (data $266.1 (i32.const 14632) "\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data $267 (i32.const 14684) "\9c") - (data $267.1 (i32.const 14696) "\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data $268 (i32.const 14844) ",") - (data $268.1 (i32.const 14856) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") - (data $269 (i32.const 14892) ",") - (data $269.1 (i32.const 14904) "\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data $270 (i32.const 14940) "\1c") - (data $270.1 (i32.const 14952) "\02\00\00\00\02\00\00\002") - (data $271 (i32.const 14972) "\1c") - (data $271.1 (i32.const 14984) "\02\00\00\00\02\00\00\004") - (data $272 (i32.const 15004) ",") - (data $272.1 (i32.const 15016) "\01\00\00\00\10\00\00\00\005\00\00p:\00\00\00\00\00\00\90:") - (data $273 (i32.const 15052) "\1c") - (data $273.1 (i32.const 15064) "\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data $274 (i32.const 15084) "\1c") - (data $274.1 (i32.const 15096) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $275 (i32.const 15116) "\1c") - (data $275.1 (i32.const 15128) "\01\00\00\00\08\00\00\00\03\00\00\00\04") - (data $276 (i32.const 15148) ",") - (data $276.1 (i32.const 15160) "\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data $277 (i32.const 15196) "\1c") - (data $277.1 (i32.const 15208) "\01\00\00\00\02\00\00\00\01\02") - (data $278 (i32.const 15228) "\1c") - (data $278.1 (i32.const 15240) "\01\00\00\00\02\00\00\00\03\04") - (data $279 (i32.const 15260) "\1c") - (data $279.1 (i32.const 15272) "\01\00\00\00\04\00\00\00\01") - (data $280 (i32.const 15292) "\1c") - (data $280.1 (i32.const 15304) "\01\00\00\00\04") - (data $281 (i32.const 15324) "\1c") - (data $281.1 (i32.const 15336) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $282 (i32.const 15356) "\1c") - (data $282.1 (i32.const 15368) "\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data $283 (i32.const 15388) "\1c") - (data $283.1 (i32.const 15400) "\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data $284 (i32.const 15420) "\1c") - (data $284.1 (i32.const 15432) "\02\00\00\00\06\00\00\00o\00n\00e") - (data $285 (i32.const 15452) "\1c") - (data $285.1 (i32.const 15464) "\01\00\00\00\04\00\00\00P<") - (data $286 (i32.const 15484) "\1c") - (data $286.1 (i32.const 15496) "\02\00\00\00\06\00\00\00t\00w\00o") - (data $287 (i32.const 15516) "\1c") - (data $287.1 (i32.const 15528) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data $288 (i32.const 15548) "\1c") - (data $288.1 (i32.const 15560) "\01\00\00\00\0c\00\00\00\90<\00\00\00\00\00\00\b0<") - (data $289 (i32.const 15580) "\1c") - (data $289.1 (i32.const 15592) "\02\00\00\00\08\00\00\00f\00o\00u\00r") - (data $290 (i32.const 15612) "\1c") - (data $290.1 (i32.const 15624) "\02\00\00\00\08\00\00\00f\00i\00v\00e") - (data $291 (i32.const 15644) "\1c") - (data $291.1 (i32.const 15656) "\02\00\00\00\06\00\00\00s\00i\00x") - (data $292 (i32.const 15676) "\1c") - (data $292.1 (i32.const 15688) "\01\00\00\00\0c\00\00\00\f0<\00\00\10=\00\000=") - (data $293 (i32.const 15708) "\1c") - (data $293.1 (i32.const 15720) "\02\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data $294 (i32.const 15740) "\1c") - (data $294.1 (i32.const 15752) "\01\00\00\00\04\00\00\00p=") - (data $295 (i32.const 15772) "<") - (data $295.1 (i32.const 15784) "\01\00\00\00 \00\00\00P<\00\00\90<\00\00\00\00\00\00\b0<\00\00\f0<\00\00\10=\00\000=\00\00p=") - (data $296 (i32.const 15836) "\1c") - (data $296.1 (i32.const 15848) "\01") - (data $297 (i32.const 15868) "\1c") - (data $297.1 (i32.const 15880) "\01") - (data $298 (i32.const 15900) "\1c") - (data $298.1 (i32.const 15912) "\01\00\00\00\04\00\00\00\01") - (data $299 (i32.const 15932) "\1c") - (data $299.1 (i32.const 15944) "\01\00\00\00\04\00\00\00\02") - (data $300 (i32.const 15964) "\1c") - (data $300.1 (i32.const 15976) ".\00\00\00\08\00\00\00?") - (data $301 (i32.const 16000) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a") - (data $301.1 (i32.const 16068) "\02A") - (data $301.2 (i32.const 16092) " \00\00\00\02A") - (data $301.3 (i32.const 16120) "\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a") - (data $301.4 (i32.const 16152) "B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A") + (data $239 (i32.const 12592) ":\0f \f4\'\8f\cb\ce\c8\a5\19\90\b9\a5o\a5\a0\84\14@aQY\84\00\a1\ed\cc\ce\1b\c2\d3\00\b4W\n?\16h\a9\00\90\acn2x\86\87\00\80z\17\b7&\d7\d8\00\00b\ac\c5\ebx\ad\00\00\e8\89\04#\c7\8a\00\00@v:k\0b\de\00\00\00\c5.\bc\a2\b1\00\00\00\04\bf\c9\1b\8e\00\00\00\a01\a9_\e3\00\00\00\80\f4 \e6\b5\00\00\00\00*\e7\84\91\00\00\00\00\10\a5\d4\e8\00\00\00\00@\b7C\ba\00\00\00\00\00\f9\02\95\00\00\00\00\00(k\ee\00\00\00\00\00 \bc\be\00\00\00\00\00\80\96\98\00\00\00\00\00\00$\f4\00\00\00\00\00\00P\c3\00\00\00\00\00\00@\9c\00\00\00\00\00\00\00\fa\00\00\00\00\00\00\00\c8\00\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\80\cd\cc\cc\cc\cc\cc\cc\cc\0b\d7\a3p=\n\d7\a3<\dfO\8d\97n\12\83,e\19\e2X\17\b7\d1$\84G\1bG\ac\c5\a7\b6il\af\05\bd7\86\bdBz\e5\d5\94\bf\d6\fd\cea\84\11w\cc\ab\98\a5\b46A_p\89\bf\d5\ed\bd\ce\fe\e6\db\ff\aa$\cb\0b\ff\eb\af\cc\88Po\t\cc\bc\8c\14\0e\b4KB\13.\e1\10\d8\\\t5\dc$\b4\da\ac\b0:\f7|\1d\90\\\e1M\c4\be\94\95\e6J\b4\a462\aaw\b8\cc\cc\cc\cc\cc\cc\cc\cc\a3p=\n\d7\a3p=\e9&1\08\ac\1cZd\a8\a4N@\13a\c3\d3S\1dr3\dc\80\cf\0f\0f\b1\c1\c2I\9a?\a6L\1bi\04v\902==|\ba6+\r\c2\fd") + (data $240 (i32.const 13016) "o\1b\8e(\10T\8e\af\daM\e4^\ae\f0\ec\07J\fb\9f\f4\98\'D\b1\9dwA\df\cf\11\cd\99\07\ef\99\85\0b?\fe\b2\15\aa\b4\dc\e6\a7\1f\86c\beZ\06\0b\a5\bc\b4\aaSkuz\07\ed\0f\08\bf,)Ud\7f\b6C\d5\b1\17L\c8;\1a\fb;\efi\c2\87F\b8B\a7\ee@OQ]=\eb\dd\e4PF\1a\12\ba\13\e4labM\f3\92\ea\af(\b6\ef&\e2\bb\8c6U\n\f7\89\04\89\0f`\cb\05\e9\b8\b6\bd!\c9\c1\bb\87\e9\00T\96_\9a\84x\db\8f\bf4\d0\bdr\04R\98\de\'\8a\92\95\00\9am\c1\94\82\17\0f<\05\b7u\00\00\00\00\00\00P\c3\00\00\00\00\00\00\00\00\05\e3L6\12\197\c5\00\00\00\00\00\00(l\d6\aa\80\9d\ef\f0\"\c7\f6~\b9\b7\d2:MBL\c8q\d5m\93\13\c9\ea8\1e\cd\19:\bc\03\1cU\ab\01\80\0c\t\cb\c6,\07\d3\bf\f5\ad\\\a1\90\08\137h\03\cd\10\8cz\c3\87\a8\db6.\ef\07\12\c2\b2\02\cf\bc\f4\03^\e4g\f9\94\c7\85\d7in\f8\06\d1R\ba\be\01\d763\e1|\a0\1c4\a8E\10\d3Q\a0\t\12\11H\de\1e1Vx\85\fa\a6\1e\d5f\a5>\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $241 (i32.const 13384) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $242 (i32.const 13470) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $243 (i32.const 13660) "l") + (data $243.1 (i32.const 13672) "\02\00\00\00P\00\00\000\00.\000\00,\00 \001\00.\000\00,\00 \00-\002\00.\000\00,\00 \00N\00a\00N\00,\00 \00-\00I\00n\00f\00i\00n\00i\00t\00y\00,\00 \00I\00n\00f\00i\00n\00i\00t\00y") + (data $244 (i32.const 13772) "\1c") + (data $244.1 (i32.const 13784) "\02\00\00\00\02\00\00\001") + (data $245 (i32.const 13804) "\1c") + (data $245.1 (i32.const 13816) "\01\00\00\00\0c\00\00\000-\00\00\e05") + (data $246 (i32.const 13836) "<") + (data $246.1 (i32.const 13848) "\02\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data $247 (i32.const 13900) "\\") + (data $247.1 (i32.const 13912) "\02\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data $248 (i32.const 13996) "\\") + (data $248.1 (i32.const 14008) "\02\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data $249 (i32.const 14092) "\1c") + (data $249.1 (i32.const 14104) "\01") + (data $250 (i32.const 14124) "\1c") + (data $250.1 (i32.const 14136) "\01\00\00\00\04\00\00\00\01") + (data $251 (i32.const 14156) "\1c") + (data $251.1 (i32.const 14168) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $252 (i32.const 14188) ",") + (data $252.1 (i32.const 14200) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $253 (i32.const 14236) "\1c") + (data $253.1 (i32.const 14248) "\02\00\00\00\06\00\00\001\00,\002") + (data $254 (i32.const 14268) ",") + (data $254.1 (i32.const 14280) "\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data $255 (i32.const 14316) "\1c") + (data $255.1 (i32.const 14328) "\01\00\00\00\03\00\00\00\01\ff") + (data $256 (i32.const 14348) "\1c") + (data $256.1 (i32.const 14360) "\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data $257 (i32.const 14380) "\1c") + (data $257.1 (i32.const 14392) "\01\00\00\00\03\00\00\00\80\81\80") + (data $258 (i32.const 14412) ",") + (data $258.1 (i32.const 14424) "\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008") + (data $259 (i32.const 14460) "\1c") + (data $259.1 (i32.const 14472) "\01\00\00\00\06\00\00\00\01\00\ff\ff") + (data $260 (i32.const 14492) ",") + (data $260.1 (i32.const 14504) "\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data $261 (i32.const 14540) "\1c") + (data $261.1 (i32.const 14552) "\01\00\00\00\04\00\00\00\00\80\01\ff") + (data $262 (i32.const 14572) ",") + (data $262.1 (i32.const 14584) "\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005") + (data $263 (i32.const 14620) "\1c") + (data $263.1 (i32.const 14632) "\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff") + (data $264 (i32.const 14652) "<") + (data $264.1 (i32.const 14664) "\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008") + (data $265 (i32.const 14716) ",") + (data $265.1 (i32.const 14728) "\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data $266 (i32.const 14764) "L") + (data $266.1 (i32.const 14776) "\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data $267 (i32.const 14844) "<") + (data $267.1 (i32.const 14856) "\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data $268 (i32.const 14908) "\9c") + (data $268.1 (i32.const 14920) "\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data $269 (i32.const 15068) ",") + (data $269.1 (i32.const 15080) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") + (data $270 (i32.const 15116) ",") + (data $270.1 (i32.const 15128) "\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data $271 (i32.const 15164) "\1c") + (data $271.1 (i32.const 15176) "\02\00\00\00\02\00\00\002") + (data $272 (i32.const 15196) "\1c") + (data $272.1 (i32.const 15208) "\02\00\00\00\02\00\00\004") + (data $273 (i32.const 15228) ",") + (data $273.1 (i32.const 15240) "\01\00\00\00\10\00\00\00\e05\00\00P;\00\00\00\00\00\00p;") + (data $274 (i32.const 15276) "\1c") + (data $274.1 (i32.const 15288) "\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data $275 (i32.const 15308) "\1c") + (data $275.1 (i32.const 15320) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $276 (i32.const 15340) "\1c") + (data $276.1 (i32.const 15352) "\01\00\00\00\08\00\00\00\03\00\00\00\04") + (data $277 (i32.const 15372) ",") + (data $277.1 (i32.const 15384) "\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data $278 (i32.const 15420) "\1c") + (data $278.1 (i32.const 15432) "\01\00\00\00\02\00\00\00\01\02") + (data $279 (i32.const 15452) "\1c") + (data $279.1 (i32.const 15464) "\01\00\00\00\02\00\00\00\03\04") + (data $280 (i32.const 15484) "\1c") + (data $280.1 (i32.const 15496) "\01\00\00\00\04\00\00\00\01") + (data $281 (i32.const 15516) "\1c") + (data $281.1 (i32.const 15528) "\01\00\00\00\04") + (data $282 (i32.const 15548) "\1c") + (data $282.1 (i32.const 15560) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $283 (i32.const 15580) "\1c") + (data $283.1 (i32.const 15592) "\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data $284 (i32.const 15612) "\1c") + (data $284.1 (i32.const 15624) "\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data $285 (i32.const 15644) "\1c") + (data $285.1 (i32.const 15656) "\02\00\00\00\06\00\00\00o\00n\00e") + (data $286 (i32.const 15676) "\1c") + (data $286.1 (i32.const 15688) "\01\00\00\00\04\00\00\000=") + (data $287 (i32.const 15708) "\1c") + (data $287.1 (i32.const 15720) "\02\00\00\00\06\00\00\00t\00w\00o") + (data $288 (i32.const 15740) "\1c") + (data $288.1 (i32.const 15752) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data $289 (i32.const 15772) "\1c") + (data $289.1 (i32.const 15784) "\01\00\00\00\0c\00\00\00p=\00\00\00\00\00\00\90=") + (data $290 (i32.const 15804) "\1c") + (data $290.1 (i32.const 15816) "\02\00\00\00\08\00\00\00f\00o\00u\00r") + (data $291 (i32.const 15836) "\1c") + (data $291.1 (i32.const 15848) "\02\00\00\00\08\00\00\00f\00i\00v\00e") + (data $292 (i32.const 15868) "\1c") + (data $292.1 (i32.const 15880) "\02\00\00\00\06\00\00\00s\00i\00x") + (data $293 (i32.const 15900) "\1c") + (data $293.1 (i32.const 15912) "\01\00\00\00\0c\00\00\00\d0=\00\00\f0=\00\00\10>") + (data $294 (i32.const 15932) "\1c") + (data $294.1 (i32.const 15944) "\02\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data $295 (i32.const 15964) "\1c") + (data $295.1 (i32.const 15976) "\01\00\00\00\04\00\00\00P>") + (data $296 (i32.const 15996) "<") + (data $296.1 (i32.const 16008) "\01\00\00\00 \00\00\000=\00\00p=\00\00\00\00\00\00\90=\00\00\d0=\00\00\f0=\00\00\10>\00\00P>") + (data $297 (i32.const 16060) "\1c") + (data $297.1 (i32.const 16072) "\01") + (data $298 (i32.const 16092) "\1c") + (data $298.1 (i32.const 16104) "\01") + (data $299 (i32.const 16124) "\1c") + (data $299.1 (i32.const 16136) "\01\00\00\00\04\00\00\00\01") + (data $300 (i32.const 16156) "\1c") + (data $300.1 (i32.const 16168) "\01\00\00\00\04\00\00\00\02") + (data $301 (i32.const 16188) "\1c") + (data $301.1 (i32.const 16200) ".\00\00\00\08\00\00\00?") + (data $302 (i32.const 16224) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a") + (data $302.1 (i32.const 16292) "\02A") + (data $302.2 (i32.const 16316) " \00\00\00\02A") + (data $302.3 (i32.const 16344) "\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a") + (data $302.4 (i32.const 16376) "B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A") (table $0 64 64 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|20 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $start:std/array~anonymous|52 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) @@ -668,11 +672,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -729,11 +733,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -759,11 +763,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -833,11 +837,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -919,11 +923,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -970,11 +974,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1142,11 +1146,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1198,11 +1202,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1355,7 +1359,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1376,7 +1380,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1417,8 +1421,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1517,7 +1521,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1534,7 +1538,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1554,7 +1558,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$~lib/string/String#concat$740 + block $__inlined_func$~lib/string/String#concat$742 local.get $1 i32.const 20 i32.sub @@ -1573,7 +1577,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/string/String#concat$740 + br $__inlined_func$~lib/string/String#concat$742 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -1603,13 +1607,54 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $while-continue|0 @@ -1714,47 +1759,6 @@ i32.store16 end ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_s - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $std/array/Ref#constructor (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -1762,11 +1766,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1813,10 +1817,10 @@ if unreachable end - i32.const 48960 + i32.const 49184 i32.const 0 i32.store - i32.const 50528 + i32.const 50752 i32.const 0 i32.store loop $for-loop|0 @@ -1827,7 +1831,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 48960 + i32.const 49184 i32.add i32.const 0 i32.store offset=4 @@ -1845,7 +1849,7 @@ i32.add i32.const 2 i32.shl - i32.const 48960 + i32.const 49184 i32.add i32.const 0 i32.store offset=96 @@ -1863,14 +1867,14 @@ br $for-loop|0 end end - i32.const 48960 - i32.const 50532 + i32.const 49184 + i32.const 50756 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 48960 + i32.const 49184 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -1883,11 +1887,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2209,7 +2213,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 48960 + i32.const 49184 i32.lt_u if return @@ -2262,11 +2266,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2358,11 +2362,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2462,11 +2466,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2495,11 +2499,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2548,11 +2552,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2615,11 +2619,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2746,11 +2750,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2779,11 +2783,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2811,11 +2815,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2889,11 +2893,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2974,11 +2978,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3105,11 +3109,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3174,11 +3178,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3226,11 +3230,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3310,11 +3314,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3421,11 +3425,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3509,11 +3513,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3555,11 +3559,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3607,11 +3611,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3696,11 +3700,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3765,7 +3769,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$657 + block $__inlined_func$~lib/rt/itcms/__renew$660 local.get $3 i32.const 20 i32.sub @@ -3783,7 +3787,7 @@ i32.store offset=16 local.get $3 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$657 + br $__inlined_func$~lib/rt/itcms/__renew$660 end local.get $1 local.get $4 @@ -3831,11 +3835,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3881,11 +3885,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3969,11 +3973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4062,11 +4066,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4143,11 +4147,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4234,11 +4238,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4357,7 +4361,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4387,7 +4391,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4401,7 +4405,7 @@ local.get $2 call $~lib/array/Array#get:length local.set $3 - block $__inlined_func$std/array/isSorted$662 (result i32) + block $__inlined_func$std/array/isSorted$665 (result i32) loop $for-loop|0 local.get $0 local.get $3 @@ -4437,7 +4441,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted$662 + br $__inlined_func$std/array/isSorted$665 end local.get $0 i32.const 1 @@ -4467,8 +4471,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4576,11 +4580,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4766,7 +4770,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 48960 + i32.const 49184 i32.lt_u if local.get $0 @@ -4862,7 +4866,7 @@ unreachable end local.get $0 - i32.const 48960 + i32.const 49184 i32.lt_u if local.get $0 @@ -4907,11 +4911,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4982,11 +4986,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5093,11 +5097,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5138,11 +5142,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5186,11 +5190,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5269,11 +5273,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5364,11 +5368,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5452,11 +5456,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5511,11 +5515,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5561,11 +5565,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5670,11 +5674,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5882,11 +5886,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6555,11 +6559,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6642,164 +6646,2468 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/dtoa/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u + i64.reinterpret_f64 + local.tee $2 + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $6 local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 + i64.const 4503599627370495 + i64.and local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $3 + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $6 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.tee $7 i32.eqz if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + local.get $6 if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 201 + local.get $5 + i64.const 0 + i64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + local.get $0 + i32.const 6 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.tee $3 + i64.const 29555310648492105 + i64.store + local.get $3 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.set $3 + local.get $7 + if + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $6 + i32.const 1075 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if (result i64) + i32.const 0 + local.get $8 + i32.sub + local.tee $8 + i32.const 52 + i32.le_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $4 + i64.shl + i64.const 1 + i64.sub + local.get $2 + i64.and + i64.eqz + select + else + i64.const 0 + end + else + local.get $8 + i32.const 11 + i32.lt_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + i64.shl + local.tee $2 + i64.const 0 + local.get $2 + i64.const 10000000000000000 + i64.lt_u + select + else + i64.const 0 + end + end + local.tee $4 + i64.const 0 + i64.ne + if + local.get $3 + local.get $4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $4 + i64.const 100000000 + i64.lt_u + if + local.get $4 + i64.const 10000 + i64.lt_u + if + local.get $4 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $4 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $4 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $4 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $4 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $4 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $4 + i64.const 1000000000000 + i64.lt_u + if + local.get $4 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $4 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $4 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $4 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $4 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $7 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 10 + i64.ge_u + if + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $7 + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $6 + i32.const 1075 + i32.sub + local.set $7 + local.get $5 + i64.eqz + if + local.get $7 + i32.const -1 + local.get $7 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + i32.const 20 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.set $8 + block $~lib/util/dtoa/computePow10|inlined.0 + local.get $7 + i32.const 293 + i32.add + local.tee $7 + i32.const 320 + i32.le_s + local.get $7 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $7 + i32.sub + local.tee $7 + i32.const 3 + i32.shl + i32.const 12456 + i32.add + i64.load + local.set $2 + local.get $7 + i32.const 44 + i32.le_s + if + local.get $2 + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + i32.const 3 + i32.shl + i32.const 12592 + i32.add + i64.load + drop + local.get $2 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + call $~lib/util/dtoa/computePow10Compact + drop + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $2 + i64.const 11 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.sub + i64.shr_u + local.set $5 + i64.const 10 + i64.const 2 + local.get $2 + local.get $4 + i64.const 53 + i64.add + local.tee $9 + i64.shl + local.tee $10 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + local.tee $11 + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + local.get $10 + local.get $9 + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $4 + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $4 + i64.sub + i64.shr_u + local.get $2 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + local.tee $2 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + local.get $11 + i64.const 511 + i64.and + i64.lt_u + select + local.get $10 + i64.const 4611686018427387904 + i64.eq + select + i64.const 0 + local.get $2 + i64.const 1 + i64.shr_u + local.get $10 + i64.le_u + select + local.get $2 + i64.const -1 + local.get $10 + i64.sub + i64.gt_u + select + local.tee $2 + i64.const 10 + i64.eq + if + local.get $5 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $5 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $5 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $7 + i32.const -1 + local.get $6 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.tee $8 + i32.const 7 + i32.add + local.set $12 + block $~lib/util/dtoa/computePow10|inlined.1 + local.get $7 + i32.const 293 + i32.add + local.tee $13 + i32.const 320 + i32.le_s + local.get $13 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $13 + i32.sub + local.tee $13 + i32.const 3 + i32.shl + i32.const 12456 + i32.add + i64.load + local.set $5 + local.get $13 + i32.const 44 + i32.le_s + if + local.get $5 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + local.set $4 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + i32.const 3 + i32.shl + i32.const 12592 + i32.add + i64.load + local.set $4 + local.get $5 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + call $~lib/util/dtoa/computePow10Compact + local.set $4 + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $5 + local.get $2 + local.get $12 + i64.extend_i32_s + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $4 + local.get $7 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + local.tee $11 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $14 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $14 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + i64.const 10 + local.get $10 + local.get $11 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $4 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $4 + i64.const 6 + i64.shr_u + i64.or + local.tee $4 + i64.const 10 + i64.mul + local.tee $10 + local.get $10 + i64.const -9223372036854775802 + i64.const 0 + local.get $4 + i64.const 4611686018427387904 + i64.ne + select + i64.add + i64.gt_u + i64.extend_i32_u + local.get $4 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $2 + i64.const 1 + i64.and + i64.sub + local.get $5 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.add + local.tee $2 + local.get $4 + i64.le_u + select + i64.const -1 + local.get $4 + i64.sub + local.get $2 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + end + else + i32.const 616 + call $~lib/util/dtoa/computePow10Compact + local.set $2 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $4 + local.get $5 + i64.const 5 + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $14 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $11 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + i64.const 10 + local.get $10 + local.get $14 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $2 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $2 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.tee $10 + i64.const 9223372036854775802 + i64.sub + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $5 + i64.const 1 + i64.and + i64.sub + local.get $4 + i64.const 2 + i64.shr_u + i64.add + local.tee $4 + local.get $2 + i64.le_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $4 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + i32.const -324 + global.set $~lib/util/dtoa/gExp + end + global.get $~lib/util/dtoa/gSig + i64.const 1000000000000000 + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $2 + i64.const 1000000000000000 + i64.ge_u + if + local.get $2 + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $2 + i64.const 100000000 + i64.lt_u + if + local.get $2 + i64.const 10000 + i64.lt_u + if + local.get $2 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $2 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $2 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $2 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $2 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $2 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $2 + i64.const 1000000000000 + i64.lt_u + if + local.get $2 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $2 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + i32.const 15 + end + i32.sub + local.tee $6 + i32.const 3 + i32.shl + i32.const 13464 + i32.add + f64.load + i64.trunc_sat_f64_u + local.get $2 + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $6 + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + end + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $7 + global.get $~lib/util/dtoa/gSig + local.tee $2 + i64.const 100000000 + i64.div_u + local.tee $4 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $4 + i64.add + local.tee $5 + local.get $5 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $5 + local.get $5 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $5 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $5 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $5 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $5 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + local.get $2 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + local.tee $2 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $2 + i64.add + local.tee $2 + local.get $2 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $2 + local.get $2 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.tee $8 + i32.const 20 + i32.le_s + local.get $8 + i32.const -6 + i32.ge_s + i32.and + if + local.get $8 + i32.const 0 + i32.lt_s + if + local.get $3 + i64.const 13511005043687472 + i64.store + local.get $3 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $7 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $4 + i32.const 16 + i32.const 15 + local.get $7 + select + local.set $6 + global.get $~lib/util/dtoa/gDigHi + local.set $9 + global.get $~lib/util/dtoa/gDigLo + local.set $5 + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $8 + i32.const 16 + i32.ge_s + if + local.get $3 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $3 + local.get $4 + i64.store16 offset=32 + local.get $3 + local.get $8 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $3 + i32.const 34 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_u + if + local.get $6 + i64.const 13511005043687472 + i64.store + local.get $6 + i64.const 13511005043687472 + i64.store offset=8 + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + i32.const 46 + i32.store16 + local.get $7 + i32.const 48 + i32.store16 offset=2 + local.get $7 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.tee $6 + i32.const 1 + i32.add + local.get $6 + local.get $8 + i32.const 0 + i32.ge_s + local.tee $6 + select + local.set $12 + local.get $3 + i32.const 1 + local.get $8 + i32.sub + local.get $8 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $13 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $13 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $13 + local.get $4 + i64.store16 offset=32 + local.get $6 + if + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + local.tee $6 + i32.const 64 + i32.lt_s + if + local.get $5 + i64.const 64 + local.get $6 + i64.extend_i32_s + local.tee $10 + i64.sub + local.tee $11 + i64.shl + local.get $9 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $11 + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $4 + else + local.get $6 + i32.const 64 + i32.eq + if + local.get $5 + local.set $2 + else + local.get $6 + i32.const 128 + i32.lt_s + if (result i64) + local.get $6 + i32.const -64 + i32.add + i64.extend_i32_s + local.tee $2 + local.set $10 + local.get $4 + i64.const 64 + local.get $2 + i64.sub + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $10 + i64.shr_u + else + local.get $4 + local.set $2 + i64.const 0 + end + local.set $4 + end + end + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $10 + local.get $10 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $10 + local.get $10 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 9 + i32.add + local.tee $6 + local.get $12 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + end + local.get $13 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $3 + i32.const 46 + i32.store16 offset=2 + end + local.get $13 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $12 + local.get $8 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.const 0 + i32.ge_s + i32.and + if + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $7 + i32.eqz + if + local.get $3 + local.get $5 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 8 + i32.eq + if (result i32) + local.get $3 + local.get $9 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $3 + end + i32.const 1 + i32.shl + i32.sub + local.set $3 + end + local.get $3 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $3 + i32.const 48 + i32.store16 + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + end + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + i32.const 2 + i32.add + local.tee $6 + global.get $~lib/util/dtoa/gDigHi + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $6 + i32.const 16 + i32.add + global.get $~lib/util/dtoa/gDigLo + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $6 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=32 + local.get $6 + local.get $7 + i32.const 16 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $7 + i32.eqz + if + global.get $~lib/util/dtoa/gDigHi + local.set $2 + local.get $6 + global.get $~lib/util/dtoa/gDigLo + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $6 + i32.const 8 + i32.eq + if (result i32) + local.get $6 + local.get $2 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $6 + end + i32.const 1 + i32.shl + i32.sub + local.set $6 + end + local.get $6 + local.get $6 + local.get $3 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $3 + i32.const 101 + i32.store16 + local.get $3 + local.get $8 + i32.const 31 + i32.shr_s + local.tee $6 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $6 + local.get $8 + i32.xor + local.get $6 + i32.sub + local.tee $6 + i32.const 100 + i32.ge_s + if + local.get $3 + local.get $6 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $7 + i32.const 48 + i32.add + i32.store16 + local.get $3 + local.get $6 + local.get $7 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store offset=2 + local.get $3 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $6 + i32.const 10 + i32.ge_s + if + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $3 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 2 + i32.add + end + end + local.get $0 + i32.sub + i32.const 1 + i32.shr_u + ) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + local.get $0 + i32.const 10 + i32.add + local.tee $2 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.tee $3 + i32.const 4 + i32.shl + i32.const 13016 + i32.add + local.tee $4 + i64.load + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 + i64.const 4294967295 + i64.and + local.set $10 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $6 + i32.const 0 + local.get $2 + local.get $3 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 + i32.shl + i32.const 12808 + i32.add + i64.load + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + local.get $1 + local.get $11 + i64.mul + local.set $8 + local.get $12 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + local.tee $5 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $6 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + local.get $9 + local.get $11 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 13384 + i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -7057,7 +9365,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$735 + block $__inlined_func$~lib/rt/itcms/Object#unlink$737 local.get $0 i32.load offset=4 i32.const -4 @@ -7069,7 +9377,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 48960 + i32.const 49184 i32.lt_u i32.and i32.eqz @@ -7081,7 +9389,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$735 + br $__inlined_func$~lib/rt/itcms/Object#unlink$737 end local.get $0 i32.load offset=8 @@ -7118,7 +9426,7 @@ i32.const 1 else local.get $1 - i32.const 16000 + i32.const 16224 i32.load i32.gt_u if @@ -7132,7 +9440,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 16004 + i32.const 16228 i32.add i32.load i32.const 32 @@ -7219,7 +9527,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -7232,7 +9540,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -7280,7 +9588,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -7298,8 +9606,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7419,7 +9727,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7433,7 +9741,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7460,7 +9768,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7621,8 +9929,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7640,11 +9948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7786,7 +10094,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7800,7 +10108,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7826,13 +10134,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$747 + block $__inlined_func$~lib/util/string/joinIntegerArray$749 local.get $0 i32.const 1 i32.sub @@ -7846,7 +10154,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$747 + br $__inlined_func$~lib/util/string/joinIntegerArray$749 end local.get $6 i32.eqz @@ -7859,7 +10167,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$747 + br $__inlined_func$~lib/util/string/joinIntegerArray$749 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -7952,7 +10260,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$747 + br $__inlined_func$~lib/util/string/joinIntegerArray$749 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7970,8 +10278,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7991,11 +10299,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8154,11 +10462,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8203,11 +10511,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8234,11 +10542,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8290,11 +10598,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8417,11 +10725,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8468,11 +10776,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8513,11 +10821,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8618,7 +10926,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -8644,13 +10952,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$742 + block $__inlined_func$~lib/util/string/joinIntegerArray$744 local.get $0 i32.const 1 i32.sub @@ -8664,7 +10972,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end local.get $7 i32.eqz @@ -8677,7 +10985,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -8776,7 +11084,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -8790,8 +11098,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8805,11 +11113,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8863,7 +11171,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -8893,7 +11201,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 local.get $1 @@ -8912,7 +11220,7 @@ local.get $5 call $~lib/array/Array#get:length local.set $4 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$664 (result i32) + block $__inlined_func$std/array/isSorted<~lib/array/Array>$667 (result i32) loop $for-loop|0 local.get $1 local.get $4 @@ -8958,7 +11266,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$664 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$667 end local.get $1 i32.const 1 @@ -8988,8 +11296,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9133,11 +11441,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9668,11 +11976,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9846,11 +12154,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10048,11 +12356,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10227,11 +12535,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10406,11 +12714,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10586,11 +12894,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11214,645 +13522,295 @@ i32.const 3 i32.add local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $0 - local.get $4 - local.get $2 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $4 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut - end - local.get $0 - local.get $3 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - local.get $2 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $3 - i32.const -32768 - i32.eq - if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend16_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add + i32.const 1000 + i32.ge_u + i32.add + end else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end end + local.set $0 + local.get $4 + local.get $2 + local.get $0 + call $~lib/util/number/utoa32_dec_lut else + local.get $4 local.get $1 - i32.const 10000000 - i32.lt_u + local.get $1 + i64.const 1000000000000000 + i64.lt_u if (result i32) local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end else local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - local.set $3 local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 local.get $3 i32.add ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - f64.const 0 - f64.lt - local.tee $3 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 1 - local.get $5 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.tee $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 - local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $10 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $5 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_sat_f64_s - local.tee $5 - local.get $5 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $5 - i32.const 3 - i32.shl - local.tee $9 - i32.sub - global.set $~lib/util/number/_K - local.get $9 - i32.const 12520 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $5 - i32.const 1 - i32.shl - i32.const 13216 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u + i32.lt_s local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $0 local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $13 - i64.mul - local.get $8 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $15 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $3 - call $~lib/util/number/genDigits - local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $3 i32.add ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $1 - f64.const 0 - f64.eq + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq if local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 + i64.const 15481338470793261 + i64.store local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $1 - f64.sub - f64.const 0 - f64.ne - if + i32.const 100 + i32.lt_u + if (result i32) local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - unreachable + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12177,11 +14135,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12208,11 +14166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12254,7 +14212,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12280,13 +14238,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$743 + block $__inlined_func$~lib/util/string/joinIntegerArray$745 local.get $0 i32.const 1 i32.sub @@ -12300,7 +14258,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end local.get $7 i32.eqz @@ -12313,7 +14271,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -12412,427 +14370,89 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - local.get $0 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $0 - i32.store - local.get $0 - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 13632 - else - i32.const 11568 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - i32.const 11568 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=4 - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $4 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 11856 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 + local.get $1 local.get $0 i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - i32.const 2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - local.tee $3 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 local.get $1 i32.const 2 i32.shl - memory.copy - local.get $2 - local.get $1 - local.get $4 i32.add - local.tee $4 - i32.ne - if - local.get $6 - local.get $3 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.sub - i32.const 2 - i32.shl - memory.copy - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - i32.sub - i32.store offset=12 + i32.load global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12853,512 +14473,513 @@ global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$744 + block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill local.get $0 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$744 + br $__inlined_func$~lib/util/string/joinReferenceArray$4 end - local.get $6 + local.get $2 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 13856 + else + i32.const 11568 + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$744 + br $__inlined_func$~lib/util/string/joinReferenceArray$4 end + i32.const 11568 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store + i32.const 11568 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 i32.const 11852 i32.load i32.const 1 i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 + local.set $4 loop $for-loop|0 - local.get $3 - local.get $6 + local.get $1 + local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $5 local.get $1 - i32.const 1 + i32.const 2 i32.shl i32.add + i32.load + local.tee $3 + i32.store local.get $3 - local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end local.get $4 if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 11856 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $1 + local.get $2 + i32.const 2 + i32.shl i32.add + i32.load local.tee $1 - local.get $2 - i32.lt_s + i32.store + local.get $1 if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/string/String#substring - local.set $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$744 + i32.const 13856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 2 local.get $0 i32.load offset=12 - i32.const 1 - i32.add local.tee $2 - i32.const 1 - call $~lib/array/ensureCapacity + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 local.tee $3 - i32.const 4 + local.get $4 + i32.const 2 + i32.shl i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub + local.tee $6 + local.get $1 i32.const 2 i32.shl memory.copy - local.get $3 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.tee $4 + i32.ne if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $2 + local.get $6 + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $1 local.get $2 - call $~lib/array/Array#lastIndexOf + local.get $1 + i32.sub + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/array/Array#sort@varargs (param $0 i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 10256 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 10256 - i32.store - end + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 i32.load offset=12 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11856 i32.store - local.get $1 - call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$746 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$746 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$746 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$746 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.add + local.get $0 + return + end + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13368,75 +14989,58 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store - local.get $3 - i32.const 1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 + local.get $0 + i32.load offset=12 + i32.const 1 i32.add - ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.tee $2 i32.const 1 - local.get $1 - i32.const 100 - i32.gt_s + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - select - ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 + local.get $2 i32.const 1 - local.get $1 + i32.sub i32.const 2 - i32.gt_s + i32.shl + memory.copy + local.get $3 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - select - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/array/i + i32.store local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - global.set $std/array/i - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/array + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13446,1152 +15050,866 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 11568 - local.get $0 - select - return - end - loop $for-loop|0 - local.get $1 - local.get $4 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - i32.const 0 - local.set $4 + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=12 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.get $7 - i32.add - local.set $4 - end - local.get $1 - if - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $4 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const 8 i32.add - i32.load - local.tee $0 - i32.store offset=4 + global.set $~lib/memory/__stack_pointer local.get $0 + ) + (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $6 - local.get $4 + i32.const 49216 + i32.const 49264 i32.const 1 - i32.shl - i32.add + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy + i32.load offset=12 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $7 - i32.eqz - if - local.get $0 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64$485 - local.get $3 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - local.set $1 - br $__inlined_func$~lib/util/number/utoa64$485 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.wrap_i64 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $3 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $3 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $3 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $3 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $3 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $3 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - local.get $0 - call $~lib/util/number/utoa64_dec_lut - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange end - br $folding-inner1 + unreachable end + i32.const 10256 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 10256 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 20 - i32.add - local.get $7 - i32.mul - i32.const 20 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 11856 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return end - i32.const 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 + i32.add ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 100 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $7 - i32.eqz - if - local.get $0 - f64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 12320 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 12352 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 12384 - i32.const 12432 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - global.get $~lib/memory/__stack_pointer - i32.const 12464 - local.get $3 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 12464 - local.get $1 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 12288 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12284 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $7 - i32.mul - i32.const 28 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 12288 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 11568 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 3 + local.get $4 + i32.const 2 i32.shl i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - local.get $5 - i32.lt_s + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 if global.get $~lib/memory/__stack_pointer local.get $6 - i32.store + i32.store offset=8 + local.get $3 local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $3 end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + local.set $4 + br $for-loop|0 end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end + i32.const 0 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/sort/SORT (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 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) + local.get $2 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + local.get $2 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $3 - select - local.tee $1 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $2 - local.get $0 - local.get $4 - local.get $1 - local.get $2 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $4 - local.get $2 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add local.get $2 local.get $1 + i32.const 1 + i32.shl + memory.copy local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - select - i32.store offset=4 - br $folding-inner0 + local.get $4 + i32.add + local.set $4 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub + local.tee $7 i32.const 0 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 - i32.add - local.set $10 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u + i32.lt_s if - local.get $9 - local.get $2 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -1 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $7 + i32.eqz + if + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + block $__inlined_func$~lib/util/number/utoa64$486 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$486 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner1 end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11856 i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $8 - local.get $8 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|2 - local.get $4 - local.get $8 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 local.get $4 - i32.const 1 - i32.add - local.tee $5 - local.get $8 - call $~lib/util/sort/extendRunRight - local.tee $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.tee $6 - i32.const 32 + local.get $7 i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $0 - local.get $5 - local.get $8 - local.get $5 - i32.const 31 + local.get $4 + i32.const 3 + i32.shl i32.add - local.tee $3 - local.get $3 - local.get $8 - i32.gt_s - select - local.tee $3 - local.get $6 - call $~lib/util/sort/insertionSort - end - local.get $2 - local.get $5 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $8 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $12 - i64.div_u - local.get $3 - local.get $5 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $12 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $6 - loop $for-loop|3 + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 local.get $1 - local.get $6 - i32.gt_u if - local.get $1 - i32.const 2 + local.get $6 + local.get $2 + i32.const 1 i32.shl - local.tee $13 - local.get $9 i32.add - local.tee $14 - i32.load - local.tee $7 - i32.const -1 - i32.ne - if - local.get $10 - local.get $13 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $7 - local.get $2 - local.get $4 - local.get $11 - call $~lib/util/sort/mergeRuns - local.get $14 - i32.const -1 - i32.store - local.get $7 - local.set $2 - end + i32.const 11856 local.get $1 i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $10 - i32.add - local.get $4 - i32.store - local.get $5 - local.set $2 - local.get $3 - local.set $4 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $9 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $10 - i32.add - i32.load + local.get $4 i32.const 1 i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $3 - local.get $2 - local.get $8 - local.get $11 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub + local.set $4 + br $for-loop|0 + end + end + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring local.set $1 - br $for-loop|4 + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14599,22 +15917,21 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14622,8 +15939,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -14645,140 +15961,109 @@ br_if $case1|0 br $break|0 end - global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $1 local.get $0 i32.load offset=4 - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 + local.set $2 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $1 + local.tee $3 select - local.tee $4 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 + local.get $2 local.get $3 + select + local.tee $1 local.get $4 - local.get $4 - local.get $3 - local.get $2 + i32.const 10848 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.set $2 + local.get $0 + local.get $4 + local.get $1 + local.get $2 select i32.store offset=4 local.get $0 - local.get $4 - local.get $3 local.get $1 + local.get $4 + local.get $2 select i32.store offset=8 end - global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer + local.set $1 local.get $0 i32.load offset=4 - local.tee $3 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 + local.set $2 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store local.get $0 - local.get $4 - local.get $3 local.get $1 + local.get $2 + local.get $3 select i32.store offset=4 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort br $folding-inner0 end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $3 i32.const 2 i32.shl local.tee $4 i32.const 1 i32.shl - local.set $3 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -14786,29 +16071,29 @@ end local.get $4 global.get $~lib/rt/tlsf/ROOT - local.get $3 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $9 i32.add - local.set $12 + local.set $10 loop $for-loop|1 - local.get $5 - local.get $7 - i32.gt_u + local.get $2 + local.get $3 + i32.lt_u if - local.get $13 - local.get $7 + local.get $9 + local.get $2 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 + local.set $2 br $for-loop|1 end end @@ -14826,17 +16111,16 @@ i32.add local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $8 + call $~lib/util/sort/extendRunRight + local.tee $4 i32.const 1 i32.add local.tee $1 @@ -14844,219 +16128,214 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 i32.const 0 i32.const 31 - local.get $14 - local.get $14 + local.get $8 + local.get $8 i32.const 31 i32.ge_s select - local.tee $5 + local.tee $4 local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 - local.set $7 - i32.const 0 local.set $1 + i32.const 0 + local.set $2 loop $while-continue|2 - local.get $5 - local.get $14 + local.get $4 + local.get $8 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add - local.tee $4 - local.get $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $4 + local.tee $5 + local.get $8 + call $~lib/util/sort/extendRunRight + local.tee $3 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $6 i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 - local.get $4 - local.get $14 - local.get $4 + local.get $5 + local.get $8 + local.get $5 i32.const 31 i32.add local.tee $3 local.get $3 - local.get $14 + local.get $8 i32.gt_s select - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $1 - local.get $4 + local.tee $3 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $10 + local.tee $12 i64.div_u - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $10 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $3 + local.set $6 loop $for-loop|3 - local.get $3 - local.get $7 - i32.lt_u + local.get $1 + local.get $6 + i32.gt_u if - local.get $7 + local.get $1 i32.const 2 i32.shl - local.tee $9 - local.get $13 + local.tee $13 + local.get $9 i32.add - local.tee $8 + local.tee $14 i32.load - local.tee $15 + local.tee $7 i32.const -1 i32.ne if - local.get $9 - local.get $12 + local.get $10 + local.get $13 i32.add i32.load i32.const 1 i32.add - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 - local.get $15 - local.get $1 - local.get $5 - local.get $11 + local.get $7 local.get $2 - call $~lib/util/sort/mergeRuns - local.get $8 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 i32.const -1 i32.store - local.get $15 - local.set $1 + local.get $7 + local.set $2 end - local.get $7 + local.get $1 i32.const 1 i32.sub - local.set $7 + local.set $1 br $for-loop|3 end end - local.get $3 + local.get $6 i32.const 2 i32.shl - local.tee $7 - local.get $13 + local.tee $1 + local.get $9 i32.add - local.get $1 + local.get $2 i32.store - local.get $7 - local.get $12 + local.get $1 + local.get $10 i32.add - local.get $5 - i32.store local.get $4 - local.set $1 - local.get $6 - local.set $5 + i32.store + local.get $5 + local.set $2 local.get $3 - local.set $7 + local.set $4 + local.get $6 + local.set $1 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.const 2 i32.shl - local.tee $1 - local.get $13 + local.tee $2 + local.get $9 i32.add i32.load local.tee $3 i32.const -1 i32.ne if - local.get $1 - local.get $12 + local.get $2 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 + i32.const 10848 + i32.store local.get $0 local.get $3 - local.get $1 - local.get $14 - local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $1 i32.const 1 i32.sub - local.set $7 + local.set $1 br $for-loop|4 end end local.get $11 call $~lib/rt/tlsf/__free - local.get $13 + local.get $9 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15064,22 +16343,22 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + (local $10 i64) (local $11 i32) (local $12 i32) - (local $13 i64) + (local $13 i32) (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15087,7 +16366,8 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 24 + memory.fill block $folding-inner0 local.get $1 i32.const 48 @@ -15109,88 +16389,119 @@ br_if $case1|0 br $break|0 end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.set $1 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $3 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $1 select + local.tee $4 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.set $5 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $1 local.get $3 local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 + local.get $4 + local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $3 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $5 + local.get $4 local.get $3 + local.get $1 select i32.store offset=8 end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.set $1 + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $3 + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 br $folding-inner0 end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 i32.const 0 local.get $1 @@ -15198,50 +16509,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort br $folding-inner0 end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 1 i32.shl - local.set $6 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end - local.get $5 + local.get $4 global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.get $3 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $10 + local.tee $13 i32.add - local.set $11 + local.set $12 loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $10 - local.get $3 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|1 end end @@ -15257,19 +16568,19 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $14 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 + call $~lib/util/sort/extendRunRight + local.tee $5 i32.const 1 i32.add local.tee $1 @@ -15278,81 +16589,81 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 i32.const 0 i32.const 31 - local.get $9 - local.get $9 + local.get $14 + local.get $14 i32.const 31 i32.ge_s select - local.tee $4 + local.tee $5 local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 - local.set $1 + local.set $7 i32.const 0 - local.set $3 + local.set $1 loop $while-continue|2 - local.get $4 - local.get $9 + local.get $5 + local.get $14 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 - local.get $4 + local.get $5 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $4 + local.get $14 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $4 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $4 + local.get $14 + local.get $4 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $9 + local.tee $3 + local.get $3 + local.get $14 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end - local.get $3 - local.get $6 + local.get $1 + local.get $4 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $14 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $10 i64.div_u - local.get $5 + local.get $4 local.get $6 i32.add i32.const 1 @@ -15360,143 +16671,142 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $10 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $3 loop $for-loop|3 - local.get $1 + local.get $3 local.get $7 - i32.gt_u + i32.lt_u if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.tee $14 - local.get $10 + local.tee $9 + local.get $13 i32.add - local.tee $15 - i32.load local.tee $8 + i32.load + local.tee $15 i32.const -1 i32.ne if - local.get $11 - local.get $14 + local.get $9 + local.get $12 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns local.get $15 + local.get $1 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $8 i32.const -1 i32.store - local.get $8 - local.set $3 + local.get $15 + local.set $1 end - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $for-loop|3 end end - local.get $7 + local.get $3 i32.const 2 i32.shl - local.tee $1 - local.get $10 + local.tee $7 + local.get $13 i32.add - local.get $3 - i32.store local.get $1 - local.get $11 - i32.add - local.get $4 i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 local.get $7 + local.get $12 + i32.add + local.get $5 + i32.store + local.get $4 local.set $1 + local.get $6 + local.set $5 + local.get $3 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $1 + local.get $7 if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.tee $3 - local.get $10 + local.tee $1 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $3 i32.const -1 i32.ne if - local.get $3 - local.get $11 + local.get $1 + local.get $12 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=8 local.get $0 - local.get $4 local.get $3 - local.get $9 - local.get $12 + local.get $1 + local.get $14 + local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $13 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) @@ -15504,18 +16814,16 @@ (local $13 i64) (local $14 i32) (local $15 i32) - (local $16 f64) - (local $17 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15546,87 +16854,86 @@ br $break|0 end local.get $0 - f64.load - local.set $16 + i32.load + local.set $1 local.get $0 - f64.load offset=8 - local.set $17 + i32.load offset=4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $17 - local.get $16 - local.get $16 - local.get $17 - i32.const 10544 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 i32.load - call_indirect (type $5) + call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select - f64.store + i32.store local.get $0 - f64.load offset=16 - local.set $8 + i32.load offset=8 + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $16 - local.get $17 + local.get $0 + local.get $5 local.get $1 + local.get $3 + local.get $4 select - local.tee $16 - local.get $8 - i32.const 10544 + local.tee $1 + local.get $1 + local.get $5 + local.get $2 i32.load - call_indirect (type $5) + call_indirect (type $0) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $8 - local.get $16 - local.get $1 + local.tee $3 select - f64.store offset=8 + i32.store offset=4 local.get $0 - local.get $16 - local.get $8 local.get $1 + local.get $5 + local.get $3 select - f64.store offset=16 + i32.store offset=8 end local.get $0 - f64.load - local.set $8 + i32.load + local.set $1 local.get $0 - f64.load offset=8 - local.set $16 + i32.load offset=4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 - local.get $8 - local.get $8 - local.get $16 - i32.const 10544 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 i32.load - call_indirect (type $5) + call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select - f64.store + i32.store local.get $0 - local.get $8 - local.get $16 local.get $1 + local.get $3 + local.get $2 select - f64.store offset=8 + i32.store offset=4 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 i32.const 0 @@ -15634,28 +16941,29 @@ i32.const 1 i32.sub i32.const 0 - call $~lib/util/sort/insertionSort + local.get $2 + call $~lib/util/sort/insertionSort br $folding-inner0 end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 2 i32.shl - local.tee $4 + local.tee $5 i32.const 1 i32.shl - local.set $5 + local.set $6 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end - local.get $4 - global.get $~lib/rt/tlsf/ROOT local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add @@ -15663,21 +16971,21 @@ i32.add local.set $11 loop $for-loop|1 - local.get $2 local.get $3 + local.get $4 i32.lt_u if local.get $10 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|1 end end @@ -15688,14 +16996,14 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 3 + i32.const 2 i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $12 global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 i32.const 0 @@ -15703,8 +17011,9 @@ i32.const 1 i32.sub local.tee $9 - call $~lib/util/sort/extendRunRight - local.tee $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 i32.const 1 i32.add local.tee $1 @@ -15712,7 +17021,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 i32.const 0 @@ -15722,58 +17031,61 @@ i32.const 31 i32.ge_s select - local.tee $3 + local.tee $4 local.get $1 - call $~lib/util/sort/insertionSort + local.get $2 + call $~lib/util/sort/insertionSort end i32.const 0 local.set $1 i32.const 0 - local.set $2 + local.set $3 loop $while-continue|2 - local.get $3 + local.get $4 local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.add - local.tee $5 + local.tee $6 local.get $9 - call $~lib/util/sort/extendRunRight - local.tee $4 - local.get $5 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $7 i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 - local.get $5 + local.get $6 local.get $9 - local.get $5 + local.get $6 i32.const 31 i32.add - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 local.get $9 i32.gt_s select - local.tee $4 - local.get $6 - call $~lib/util/sort/insertionSort + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort end - local.get $2 - local.get $5 + local.get $3 + local.get $6 i32.add i64.extend_i32_u i64.const 30 @@ -15784,8 +17096,8 @@ i64.extend_i32_u local.tee $13 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add @@ -15797,10 +17109,10 @@ i64.xor i32.wrap_i64 i32.clz - local.set $6 + local.set $7 loop $for-loop|3 local.get $1 - local.get $6 + local.get $7 i32.gt_u if local.get $1 @@ -15811,7 +17123,7 @@ i32.add local.tee $15 i32.load - local.tee $7 + local.tee $8 i32.const -1 i32.ne if @@ -15821,21 +17133,22 @@ i32.load i32.const 1 i32.add - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 - local.get $7 - local.get $2 + local.get $8 local.get $3 + local.get $4 local.get $12 - call $~lib/util/sort/mergeRuns + local.get $2 + call $~lib/util/sort/mergeRuns local.get $15 i32.const -1 i32.store - local.get $7 - local.set $2 + local.get $8 + local.set $3 end local.get $1 i32.const 1 @@ -15844,24 +17157,24 @@ br $for-loop|3 end end - local.get $6 + local.get $7 i32.const 2 i32.shl local.tee $1 local.get $10 i32.add - local.get $2 + local.get $3 i32.store local.get $1 local.get $11 i32.add - local.get $3 - i32.store - local.get $5 - local.set $2 local.get $4 - local.set $3 + i32.store local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 local.set $1 br $while-continue|2 end @@ -15872,30 +17185,31 @@ local.get $1 i32.const 2 i32.shl - local.tee $2 + local.tee $3 local.get $10 i32.add i32.load - local.tee $3 + local.tee $4 i32.const -1 i32.ne if - local.get $2 + local.get $3 local.get $11 i32.add i32.load i32.const 1 i32.add - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 10544 + local.get $2 i32.store local.get $0 + local.get $4 local.get $3 - local.get $2 local.get $9 local.get $12 - call $~lib/util/sort/mergeRuns + local.get $2 + call $~lib/util/sort/mergeRuns end local.get $1 i32.const 1 @@ -15919,33 +17233,33 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (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 f32) + (local $8 f64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i64) + (local $13 i64) + (local $14 i32) (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f32) + (local $16 f64) + (local $17 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15976,86 +17290,87 @@ br $break|0 end local.get $0 - f32.load - local.set $9 + f64.load + local.set $16 local.get $0 - f32.load offset=4 + f64.load offset=8 local.set $17 i32.const 2 global.set $~argumentsLength local.get $0 local.get $17 - local.get $9 - local.get $9 + local.get $16 + local.get $16 local.get $17 - local.get $2 + i32.const 10544 i32.load - call_indirect (type $6) + call_indirect (type $5) i32.const 0 i32.gt_s local.tee $1 select - f32.store + f64.store local.get $0 - f32.load offset=8 - local.set $18 + f64.load offset=16 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 + local.get $16 local.get $17 local.get $1 select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 + local.tee $16 + local.get $8 + i32.const 10544 i32.load - call_indirect (type $6) + call_indirect (type $5) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $16 + local.get $1 select - f32.store offset=4 + f64.store offset=8 local.get $0 - local.get $9 - local.get $18 + local.get $16 + local.get $8 local.get $1 select - f32.store offset=8 + f64.store offset=16 end local.get $0 - f32.load - local.set $9 + f64.load + local.set $8 local.get $0 - f32.load offset=4 - local.set $17 + f64.load offset=8 + local.set $16 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 + local.get $16 + local.get $8 + local.get $8 + local.get $16 + i32.const 10544 i32.load - call_indirect (type $6) + call_indirect (type $5) i32.const 0 i32.gt_s local.tee $1 select - f32.store + f64.store local.get $0 - local.get $9 - local.get $17 + local.get $8 + local.get $16 local.get $1 select - f32.store offset=4 + f64.store offset=8 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 i32.const 0 @@ -16063,51 +17378,50 @@ i32.const 1 i32.sub i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort br $folding-inner0 end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 1 i32.shl - local.set $6 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end - local.get $5 + local.get $4 global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 + local.tee $10 i32.add - local.set $12 + local.set $11 loop $for-loop|1 + local.get $2 local.get $3 - local.get $4 i32.lt_u if - local.get $11 - local.get $3 + local.get $10 + local.get $2 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|1 end end @@ -16118,24 +17432,23 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 2 + i32.const 3 i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 + local.tee $9 + call $~lib/util/sort/extendRunRight + local.tee $3 i32.const 1 i32.add local.tee $1 @@ -16143,134 +17456,130 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 i32.const 0 i32.const 31 - local.get $10 - local.get $10 + local.get $9 + local.get $9 i32.const 31 i32.ge_s select - local.tee $4 + local.tee $3 local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $1 i32.const 0 - local.set $3 + local.set $2 loop $while-continue|2 - local.get $4 - local.get $10 + local.get $3 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 - local.get $4 + local.get $3 i32.const 1 i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + call $~lib/util/sort/extendRunRight + local.tee $4 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 - local.get $6 - local.get $10 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $10 + local.tee $4 + local.get $4 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort + local.tee $4 + local.get $6 + call $~lib/util/sort/insertionSort end - local.get $3 - local.get $6 + local.get $2 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $10 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $14 + local.tee $13 i64.div_u + local.get $4 local.get $5 - local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $6 loop $for-loop|3 local.get $1 - local.get $7 + local.get $6 i32.gt_u if local.get $1 i32.const 2 i32.shl - local.tee $15 - local.get $11 + local.tee $14 + local.get $10 i32.add - local.tee $16 + local.tee $15 i32.load - local.tee $8 + local.tee $7 i32.const -1 i32.ne if - local.get $12 - local.get $15 + local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 10544 i32.store local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 + local.get $7 local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 + local.get $3 + local.get $12 + call $~lib/util/sort/mergeRuns + local.get $15 i32.const -1 i32.store - local.get $8 - local.set $3 + local.get $7 + local.set $2 end local.get $1 i32.const 1 @@ -16279,24 +17588,24 @@ br $for-loop|3 end end - local.get $7 + local.get $6 i32.const 2 i32.shl local.tee $1 - local.get $11 + local.get $10 i32.add - local.get $3 + local.get $2 i32.store local.get $1 - local.get $12 + local.get $11 i32.add - local.get $4 + local.get $3 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $4 - local.get $7 + local.set $2 + local.get $4 + local.set $3 + local.get $6 local.set $1 br $while-continue|2 end @@ -16307,873 +17616,835 @@ local.get $1 i32.const 2 i32.shl - local.tee $3 - local.get $11 + local.tee $2 + local.get $10 i32.add i32.load - local.tee $4 + local.tee $3 i32.const -1 i32.ne if - local.get $3 - local.get $12 + local.get $2 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $9 + local.get $12 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 local.get $2 - i32.store + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + select + f32.store offset=4 + br $folding-inner0 end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $2 - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $3 - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $3 - i32.xor - local.tee $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 + i32.const 33 local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 i32.const 1 i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + local.tee $11 i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 + local.set $12 + loop $for-loop|1 local.get $3 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $0 - local.get $1 - i32.const 1 + local.get $11 + local.get $3 + i32.const 2 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $1 + i32.const -1 + i32.store + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $0 - local.get $3 - i32.const 1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - i32.const 3145774 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 + local.get $0 i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy + i32.store local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 + local.get $4 i32.const 1 - i32.shl i32.add - local.get $0 - local.get $1 + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 i32.add - else - local.get $1 - i32.const 1 - i32.eq + local.tee $7 + i32.const 32 + i32.lt_s if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add + i32.store local.get $0 - i32.const 2 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 + i32.load + i32.const 1 i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load i32.const 1 i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - select - i32.store16 + i32.store local.get $0 - local.get $1 - i32.add - local.set $1 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns end local.get $1 - i32.const 2 - i32.add + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u local.get $2 + i64.xor + local.tee $2 local.get $1 - i64.sub - local.set $9 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s i64.const 1 - i32.const 0 + i64.shr_u local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 + i64.xor + local.tee $3 + i64.gt_s local.get $2 - i64.and - local.set $8 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u local.get $2 + i32.xor + local.tee $2 local.get $1 - i64.shr_u - i32.wrap_i64 + i32.reinterpret_f32 local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub + ) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + if + i32.const 49216 + i32.const 49264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 12320 + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + if + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add + global.set $~lib/memory/__stack_pointer + i32.const 12352 + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 12384 + i32.const 12432 + local.get $0 + f64.const 0 + f64.lt + select + return end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.const 4741671816366391296 + i64.le_u + local.get $4 + i64.const 4607182418800017408 + i64.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f64_s + local.tee $1 + f64.convert_i32_s + f64.eq if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $6 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 100 + i32.lt_u + if (result i32) + local.get $6 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $6 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $6 + i32.const 1000 + i32.ge_u + i32.add end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add + else local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $6 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $6 + i32.const 100000000 + i32.ge_u + i32.add + end end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 i32.const 2 - i32.shl - i32.const 13392 i32.add - i64.load32_u + else + local.get $1 + end + local.set $2 + local.get $6 + i32.const 10 + i32.lt_u + if local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + local.get $6 + i32.const 48 i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub + i32.store16 + else + local.get $6 + i32.const 100 + i32.lt_u + if local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or + local.get $6 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + else + local.get $6 + i32.const 10000 + i32.lt_u + if + local.get $6 + local.get $6 + i32.const 100 + i32.div_u + local.tee $7 + i32.const 100 + i32.mul + i32.sub + local.set $5 + local.get $6 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $7 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store offset=4 + end else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 local.get $2 - i64.add - local.set $1 - br $while-continue|3 + local.get $6 + local.get $3 + call $~lib/util/number/utoa32_dec_lut end end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.const 1 i32.shl i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $5 + global.set $~lib/memory/__stack_pointer + local.get $1 + return end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 13392 - i32.add - i64.load32_u - i64.mul - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12464 local.get $0 - local.get $5 - i32.const 1 - i32.sub + call $~lib/util/dtoa/dtoa_buffered i32.const 1 i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 12464 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $start:std/array~anonymous|54 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -17181,11 +18452,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17242,11 +18513,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17279,11 +18550,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17325,11 +18596,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17367,11 +18638,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17400,11 +18671,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17442,11 +18713,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17486,11 +18757,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17611,11 +18882,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17645,11 +18916,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17679,11 +18950,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17717,11 +18988,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17760,11 +19031,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17798,11 +19069,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17858,7 +19129,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17868,7 +19139,7 @@ memory.size i32.const 16 i32.shl - i32.const 48960 + i32.const 49184 i32.sub i32.const 1 i32.shr_u @@ -17902,16 +19173,16 @@ global.set $std/array/arr i32.const 0 call $std/array/Ref#constructor - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17921,18 +19192,18 @@ i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17941,36 +19212,36 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -17980,48 +19251,48 @@ local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=12 - local.get $0 + local.get $1 local.get $10 i32.store - local.get $0 + local.get $1 local.get $10 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.eqz if i32.const 0 @@ -18037,18 +19308,18 @@ i32.const 7 i32.const 1696 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18059,7 +19330,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18072,16 +19343,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18092,7 +19363,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18105,15 +19376,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18124,7 +19395,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18137,16 +19408,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18157,7 +19428,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18170,15 +19441,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18189,7 +19460,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18202,16 +19473,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 0 @@ -18222,7 +19493,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18240,18 +19511,18 @@ i32.const 8 i32.const 1920 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18262,7 +19533,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18275,16 +19546,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18295,7 +19566,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18308,15 +19579,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18327,7 +19598,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18340,16 +19611,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18360,7 +19631,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18373,15 +19644,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18392,7 +19663,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18405,16 +19676,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18425,7 +19696,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18443,18 +19714,18 @@ i32.const 9 i32.const 2256 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 f32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18465,7 +19736,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18478,16 +19749,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 f32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18498,7 +19769,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18511,15 +19782,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 f32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18530,7 +19801,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18543,16 +19814,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 f32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18563,7 +19834,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18576,15 +19847,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 f32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18595,7 +19866,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18608,16 +19879,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 f32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18628,7 +19899,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18641,16 +19912,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 f32.const -0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -18661,7 +19932,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 call $std/array/isArraysEqual i32.eqz @@ -18675,9 +19946,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18689,9 +19960,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18705,16 +19976,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 42 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -18729,9 +20000,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18745,9 +20016,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18761,9 +20032,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -18777,9 +20048,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18791,9 +20062,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18807,16 +20078,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 43 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18830,9 +20101,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18846,9 +20117,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18863,16 +20134,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 44 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -18886,9 +20157,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18902,9 +20173,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18919,9 +20190,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18936,16 +20207,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 45 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18959,9 +20230,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18975,9 +20246,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18992,9 +20263,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -19009,9 +20280,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -19053,7 +20324,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -19092,12 +20363,12 @@ i32.const 4 i32.const 2688 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -19111,9 +20382,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -19127,9 +20398,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -19143,9 +20414,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -19161,18 +20432,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $0 + local.tee $1 i32.store offset=32 global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $9 - local.get $0 + local.get $1 call $~lib/array/Array#concat local.tee $9 i32.store offset=36 @@ -19304,15 +20575,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 46 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 47 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer @@ -19320,11 +20591,11 @@ local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $9 - local.get $0 + local.get $1 call $~lib/array/Array#concat local.tee $9 i32.store offset=36 @@ -19345,9 +20616,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -19481,12 +20752,12 @@ i32.const 4 i32.const 2768 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19497,14 +20768,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $9 call $~lib/array/Array#concat local.tee $9 @@ -19525,9 +20796,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19543,20 +20814,20 @@ i32.const 4 i32.const 2800 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19567,7 +20838,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19586,20 +20857,20 @@ i32.const 4 i32.const 2896 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 1 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19610,7 +20881,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19629,20 +20900,20 @@ i32.const 4 i32.const 2992 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19653,7 +20924,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19672,20 +20943,20 @@ i32.const 4 i32.const 3088 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 2 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19696,7 +20967,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19715,19 +20986,19 @@ i32.const 4 i32.const 3184 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19738,7 +21009,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19757,19 +21028,19 @@ i32.const 4 i32.const 3280 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19780,7 +21051,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19799,19 +21070,19 @@ i32.const 4 i32.const 3376 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19822,7 +21093,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19841,20 +21112,20 @@ i32.const 4 i32.const 3472 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const -2 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19865,7 +21136,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19884,19 +21155,19 @@ i32.const 4 i32.const 3568 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19907,7 +21178,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19926,19 +21197,19 @@ i32.const 4 i32.const 3664 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19949,7 +21220,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -19968,19 +21239,19 @@ i32.const 4 i32.const 3760 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -19991,7 +21262,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -20010,20 +21281,20 @@ i32.const 4 i32.const 3856 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const -4 i32.const -3 call $~lib/array/Array#copyWithin@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -20034,7 +21305,7 @@ global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=8 - local.get $0 + local.get $1 local.get $9 i32.const 0 call $std/array/isArraysEqual @@ -20049,16 +21320,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 42 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -20072,9 +21343,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20088,9 +21359,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20105,9 +21376,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20122,9 +21393,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -20139,9 +21410,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -20156,16 +21427,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 41 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 5 i32.ne @@ -20179,9 +21450,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20195,9 +21466,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -20212,9 +21483,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -20229,9 +21500,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -20246,9 +21517,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -20263,9 +21534,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -20280,23 +21551,23 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 local.tee $9 i32.const 0 @@ -20310,9 +21581,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=4 local.tee $10 i32.load @@ -20334,9 +21605,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -20357,9 +21628,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -20373,9 +21644,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20389,9 +21660,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20406,9 +21677,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20423,9 +21694,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -20440,9 +21711,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -20457,9 +21728,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -20475,9 +21746,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -20491,9 +21762,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20507,9 +21778,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20524,9 +21795,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20541,9 +21812,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -20562,15 +21833,15 @@ i32.const 4 i32.const 3952 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=52 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#slice@varargs local.tee $9 @@ -20601,10 +21872,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 i32.const 4 call $~lib/array/Array#slice @@ -20636,10 +21907,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 5 call $~lib/array/Array#slice @@ -20671,12 +21942,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#slice@varargs local.tee $9 @@ -20685,10 +21956,10 @@ local.get $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 local.get $9 - local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20701,12 +21972,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -2 call $~lib/array/Array#slice@varargs local.tee $9 @@ -20737,10 +22008,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 i32.const -1 call $~lib/array/Array#slice @@ -20772,10 +22043,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -3 i32.const -1 call $~lib/array/Array#slice @@ -20807,9 +22078,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const -1 i32.const -3 call $~lib/array/Array#slice @@ -20828,18 +22099,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 10 call $~lib/array/Array#slice@varargs - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -20851,49 +22122,49 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=4 local.set $9 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u local.set $10 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $0 local.get $10 i32.lt_u if local.get $9 - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add @@ -20902,8 +22173,8 @@ local.set $12 local.get $11 local.get $9 + local.get $1 local.get $0 - local.get $2 i32.sub i32.const 2 i32.shl @@ -20914,10 +22185,10 @@ local.get $11 local.get $12 i32.store - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end @@ -21029,11 +22300,11 @@ i32.const 7 i32.const 4208 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=60 @@ -21042,9 +22313,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|0 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21085,11 +22356,11 @@ i32.const 7 i32.const 4240 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=64 @@ -21100,9 +22371,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21143,11 +22414,11 @@ i32.const 7 i32.const 4272 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=68 @@ -21158,9 +22429,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|2 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21201,11 +22472,11 @@ i32.const 11 i32.const 4320 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=72 @@ -21216,9 +22487,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|3 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21259,11 +22530,11 @@ i32.const 11 i32.const 4368 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=76 @@ -21274,9 +22545,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|4 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21317,11 +22588,11 @@ i32.const 11 i32.const 4416 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse local.tee $0 i32.store offset=80 @@ -21332,9 +22603,9 @@ i32.store local.get $0 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|5 - local.get $2 + local.get $1 local.get $3 i32.gt_s if @@ -21572,28 +22843,28 @@ i32.const 9 i32.const 4464 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf$718 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf$720 + local.get $0 i32.load offset=12 local.tee $3 i32.eqz @@ -21607,22 +22878,22 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$718 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf$720 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|05 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21634,12 +22905,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$718 + br $__inlined_func$~lib/array/Array#indexOf$720 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end @@ -21648,9 +22919,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -21666,28 +22937,28 @@ i32.const 12 i32.const 4496 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf$719 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf$721 + local.get $0 i32.load offset=12 local.tee $3 i32.eqz @@ -21701,22 +22972,22 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$719 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf$721 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|07 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -21728,12 +22999,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$719 + br $__inlined_func$~lib/array/Array#indexOf$721 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|07 end end @@ -21742,9 +23013,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -22044,28 +23315,28 @@ i32.const 9 i32.const 4576 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - block $__inlined_func$~lib/array/Array#includes$720 (result i32) - local.get $2 + block $__inlined_func$~lib/array/Array#includes$722 (result i32) + local.get $0 i32.load offset=12 local.tee $3 i32.eqz @@ -22079,21 +23350,21 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$720 + br $__inlined_func$~lib/array/Array#includes$722 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|09 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -22107,12 +23378,12 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$720 + br $__inlined_func$~lib/array/Array#includes$722 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|09 end end @@ -22136,28 +23407,28 @@ i32.const 12 i32.const 4608 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - block $__inlined_func$~lib/array/Array#includes$721 (result i32) - local.get $2 + block $__inlined_func$~lib/array/Array#includes$723 (result i32) + local.get $0 i32.load offset=12 local.tee $3 i32.eqz @@ -22171,21 +23442,21 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$721 + br $__inlined_func$~lib/array/Array#includes$723 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|011 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -22199,12 +23470,12 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$721 + br $__inlined_func$~lib/array/Array#includes$723 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end @@ -22314,9 +23585,9 @@ local.get $0 i32.const 0 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -22327,7 +23598,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22348,12 +23619,12 @@ i32.const 4 i32.const 4736 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22380,9 +23651,9 @@ i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22393,7 +23664,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22414,12 +23685,12 @@ i32.const 4 i32.const 4848 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22447,9 +23718,9 @@ local.get $0 i32.const 2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 i32.const 2 @@ -22460,7 +23731,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22481,12 +23752,12 @@ i32.const 4 i32.const 4976 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22513,9 +23784,9 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22526,7 +23797,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22547,12 +23818,12 @@ i32.const 4 i32.const 5088 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22579,9 +23850,9 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22592,7 +23863,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22613,12 +23884,12 @@ i32.const 4 i32.const 5200 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22646,9 +23917,9 @@ local.get $0 i32.const -1 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22659,7 +23930,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22680,12 +23951,12 @@ i32.const 4 i32.const 5328 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22713,9 +23984,9 @@ local.get $0 i32.const -2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22726,7 +23997,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22747,12 +24018,12 @@ i32.const 4 i32.const 5456 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22779,9 +24050,9 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22792,7 +24063,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22813,12 +24084,12 @@ i32.const 4 i32.const 5568 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22845,9 +24116,9 @@ i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22858,7 +24129,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22879,12 +24150,12 @@ i32.const 4 i32.const 5696 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22911,9 +24182,9 @@ i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22924,7 +24195,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -22945,12 +24216,12 @@ i32.const 4 i32.const 5824 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22977,9 +24248,9 @@ i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22990,7 +24261,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -23011,12 +24282,12 @@ i32.const 4 i32.const 5952 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23043,9 +24314,9 @@ i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -23056,7 +24327,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -23077,12 +24348,12 @@ i32.const 4 i32.const 6080 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23109,9 +24380,9 @@ i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -23122,7 +24393,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -23143,12 +24414,12 @@ i32.const 4 i32.const 6208 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23175,9 +24446,9 @@ i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -23188,7 +24459,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 i32.const 0 call $std/array/isArraysEqual @@ -23209,12 +24480,12 @@ i32.const 4 i32.const 6336 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23241,12 +24512,12 @@ local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $2 + local.tee $1 i32.store offset=96 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -23276,40 +24547,40 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=100 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 3 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 3 i32.const 4 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 4 i32.const 5 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=92 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#splice local.tee $0 @@ -23374,9 +24645,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -23389,9 +24660,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get local.set $0 @@ -23411,9 +24682,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.set $0 @@ -23433,9 +24704,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get local.set $0 @@ -23461,43 +24732,43 @@ i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=104 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=108 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $3 i32.const 0 @@ -23535,9 +24806,9 @@ local.get $11 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 local.tee $12 local.get $9 @@ -23570,9 +24841,9 @@ memory.copy end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $3 local.get $10 i32.sub @@ -23633,9 +24904,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -23648,9 +24919,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -23662,10 +24933,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.tee $0 @@ -24552,23 +25823,23 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|6 - local.get $0 + local.get $1 i32.const 100 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 call $~lib/array/Array#pop drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|6 end end @@ -24613,7 +25884,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -24640,12 +25911,12 @@ i32.load offset=4 local.set $11 i32.const 0 - local.set $2 + local.set $0 loop $for-loop|012 global.get $~lib/memory/__stack_pointer local.get $3 i32.store - local.get $2 + local.get $0 local.get $9 local.get $3 i32.load offset=12 @@ -24662,7 +25933,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 - local.get $2 + local.get $0 i32.const 2 i32.shl local.tee $12 @@ -24678,7 +25949,7 @@ global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $13 - local.get $2 + local.get $0 local.get $3 i32.const 9296 i32.load @@ -24694,10 +25965,10 @@ local.get $13 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|012 end end @@ -24720,7 +25991,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -24749,12 +26020,12 @@ i32.load offset=4 local.set $11 i32.const 0 - local.set $2 + local.set $0 loop $for-loop|013 global.get $~lib/memory/__stack_pointer local.get $3 i32.store - local.get $2 + local.get $0 local.get $9 local.get $3 i32.load offset=12 @@ -24771,7 +26042,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 - local.get $2 + local.get $0 i32.const 2 i32.shl local.tee $12 @@ -24789,16 +26060,16 @@ local.get $12 i32.add local.get $13 - local.get $2 + local.get $0 local.get $3 i32.const 9328 i32.load - call_indirect (type $17) + call_indirect (type $16) f32.store - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|013 end end @@ -25693,243 +26964,243 @@ i32.store offset=140 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=148 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=152 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=164 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=168 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=172 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=176 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=180 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=184 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=188 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/inputStabArr @@ -25943,243 +27214,243 @@ i32.store offset=192 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=196 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=200 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=204 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=208 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=212 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=216 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=220 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=224 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=228 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=232 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=236 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=240 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/outputStabArr @@ -26206,12 +27477,12 @@ i32.const 9 i32.const 10288 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -26245,12 +27516,12 @@ i32.const 9 i32.const 10384 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -26267,10 +27538,10 @@ i32.const 12 i32.const 10448 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=252 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 0 global.set $~argumentsLength @@ -26279,7 +27550,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26292,7 +27563,7 @@ i32.const 10544 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -26302,21 +27573,21 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=12 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -26331,7 +27602,7 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 8 i32.const 3 @@ -26344,22 +27615,22 @@ i32.store offset=8 block $__inlined_func$std/array/isArraysEqual$7 (result i32) i32.const 0 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length local.set $9 global.get $~lib/memory/__stack_pointer @@ -26372,20 +27643,20 @@ local.get $9 i32.ne br_if $folding-inner01 - local.get $0 + local.get $1 local.get $3 i32.eq br_if $folding-inner1 loop $for-loop|02 - local.get $2 + local.get $0 local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#__get local.tee $7 local.get $7 @@ -26395,7 +27666,7 @@ local.get $3 i32.store local.get $3 - local.get $2 + local.get $0 call $~lib/array/Array#__get local.tee $7 local.get $7 @@ -26406,10 +27677,10 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 @@ -26419,7 +27690,7 @@ local.get $3 i32.store local.get $3 - local.get $2 + local.get $0 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 @@ -26428,26 +27699,26 @@ i32.ne br_if $folding-inner01 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#__get local.set $7 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 - local.get $2 + local.get $0 call $~lib/array/Array#__get local.get $7 f64.ne br_if $folding-inner01 end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|02 end end @@ -26493,7 +27764,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26527,12 +27798,12 @@ i32.const 4 i32.const 10752 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26562,7 +27833,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26585,7 +27856,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26621,12 +27892,12 @@ i32.const 8 i32.const 10880 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -26700,7 +27971,7 @@ global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $2 + local.tee $1 i32.store offset=300 global.get $~lib/memory/__stack_pointer local.get $3 @@ -26888,16 +28159,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26907,7 +28178,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/inputStabArr - local.tee $0 + local.tee $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength @@ -26916,30 +28187,30 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 local.tee $3 i32.const 0 @@ -26972,9 +28243,9 @@ i32.load offset=4 local.set $11 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=4 local.get $9 i32.const 2 @@ -26982,20 +28253,20 @@ i32.add local.set $9 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.const 2 i32.shl local.set $3 loop $while-continue|06 - local.get $0 + local.get $1 local.get $3 i32.lt_u if - local.get $0 + local.get $1 local.get $11 i32.add - local.get $0 + local.get $1 local.get $9 i32.add i32.load @@ -27005,10 +28276,10 @@ local.get $12 i32.const 1 call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 br $while-continue|06 end end @@ -27029,10 +28300,10 @@ local.get $10 i32.const 11216 call $~lib/array/Array#sort - local.tee $0 + local.tee $1 i32.store offset=12 i32.const 1 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer global.get $std/array/inputStabArr local.tee $3 @@ -27047,10 +28318,10 @@ if block $for-break0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $4 call $~lib/array/Array#__get local.tee $9 @@ -27093,7 +28364,7 @@ end if i32.const 0 - local.set $2 + local.set $0 br $for-break0 end local.get $4 @@ -27104,7 +28375,7 @@ end end end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -27126,7 +28397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $2 + local.tee $1 i32.store offset=308 global.get $~lib/memory/__stack_pointer local.get $0 @@ -27147,21 +28418,21 @@ i32.const 11280 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11312 i32.store offset=8 - local.get $2 + local.get $1 i32.const 11312 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11344 i32.store offset=8 - local.get $2 + local.get $1 i32.const 11344 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer @@ -27170,7 +28441,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27185,7 +28456,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27272,9 +28543,9 @@ local.get $3 i32.store i32.const 0 - local.set $0 + local.set $1 loop $for-loop|015 - local.get $0 + local.get $1 i32.const 2 i32.lt_s if @@ -27289,7 +28560,7 @@ local.get $4 i32.const 0 i32.const 1 - local.get $0 + local.get $1 i32.sub call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer @@ -27299,13 +28570,13 @@ local.get $4 i32.store offset=12 local.get $3 - local.get $0 + local.get $1 local.get $4 call $~lib/array/Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|015 end end @@ -27330,7 +28601,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27345,7 +28616,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27432,9 +28703,9 @@ local.get $3 i32.store i32.const 0 - local.set $2 + local.set $0 loop $for-loop|06 - local.get $2 + local.get $0 i32.const 512 i32.lt_s if @@ -27446,7 +28717,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27463,7 +28734,7 @@ i32.store offset=4 local.get $4 i32.const 511 - local.get $2 + local.get $0 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -27474,13 +28745,13 @@ local.get $4 i32.store offset=8 local.get $3 - local.get $2 + local.get $0 local.get $4 call $~lib/array/Array#__set - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|06 end end @@ -27513,7 +28784,7 @@ i32.const 34 i32.const 11648 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=324 global.get $~lib/memory/__stack_pointer local.get $0 @@ -27525,7 +28796,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27548,7 +28819,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27578,7 +28849,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27595,7 +28866,7 @@ local.get $3 call $~lib/array/Array#get:length local.set $9 - block $__inlined_func$std/array/isSorted<~lib/string/String|null>$666 (result i32) + block $__inlined_func$std/array/isSorted<~lib/string/String|null>$669 (result i32) loop $for-loop|07 local.get $4 local.get $9 @@ -27641,7 +28912,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null>$666 + br $__inlined_func$std/array/isSorted<~lib/string/String|null>$669 end local.get $4 i32.const 1 @@ -27677,14 +28948,14 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27700,10 +28971,10 @@ call $~lib/array/Array#get:length local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$752 (result i32) - local.get $2 + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$754 (result i32) + local.get $1 call $~lib/array/Array#get:length local.get $3 i32.ne @@ -27713,10 +28984,10 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$752 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$754 end local.get $0 - local.get $2 + local.get $1 i32.eq if global.get $~lib/memory/__stack_pointer @@ -27724,7 +28995,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$752 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$754 end i32.const 0 local.set $4 @@ -27744,9 +29015,9 @@ local.get $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 call $~lib/array/Array#__get local.set $10 @@ -27758,7 +29029,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27784,7 +29055,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$752 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$754 end local.get $4 i32.const 1 @@ -27814,7 +29085,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27829,7 +29100,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27876,26 +29147,26 @@ i32.const 1600 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 local.get $10 - local.get $2 + local.get $1 i32.store local.get $10 - local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=4 local.get $10 - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $10 @@ -27916,9 +29187,9 @@ local.get $10 i32.store i32.const 0 - local.set $2 + local.set $0 loop $for-loop|019 - local.get $2 + local.get $0 i32.const 400 i32.lt_s if @@ -27935,7 +29206,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27945,7 +29216,7 @@ i32.const 0 i32.store offset=8 i32.const 11568 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store @@ -27957,7 +29228,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/math/NativeMath.random @@ -27975,7 +29246,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27984,7 +29255,7 @@ global.get $~lib/memory/__stack_pointer i32.const 10032 i32.store - block $__inlined_func$~lib/string/String#charAt$741 + block $__inlined_func$~lib/string/String#charAt$743 local.get $13 i32.const 10028 i32.load @@ -27998,7 +29269,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $3 - br $__inlined_func$~lib/string/String#charAt$741 + br $__inlined_func$~lib/string/String#charAt$743 end global.get $~lib/memory/__stack_pointer i32.const 2 @@ -28022,10 +29293,10 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $0 + local.get $1 local.get $3 call $~lib/string/String.__concat - local.tee $0 + local.tee $1 i32.store local.get $4 i32.const 1 @@ -28039,16 +29310,16 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 local.get $10 - local.get $2 local.get $0 + local.get $1 call $~lib/array/Array#__set - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|019 end end @@ -28068,7 +29339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28107,7 +29378,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28124,12 +29395,12 @@ i32.store local.get $0 i32.load offset=12 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $2 + local.set $0 i32.const 0 local.set $4 global.get $~lib/memory/__stack_pointer @@ -28137,14 +29408,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store block $__inlined_func$~lib/util/string/joinBooleanArray$12 - local.get $0 + local.get $1 i32.const 1 i32.sub local.tee $9 @@ -28156,7 +29427,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $0 + local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray$12 end block $folding-inner07 @@ -28168,7 +29439,7 @@ local.get $3 i32.load8_u select - local.set $0 + local.set $1 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -28191,7 +29462,7 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store offset=4 loop $for-loop|18 local.get $4 @@ -28207,8 +29478,8 @@ i32.const 4 i32.add local.set $13 + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add @@ -28220,14 +29491,14 @@ i32.const 1 i32.shl memory.copy - local.get $2 + local.get $0 local.get $13 i32.add - local.set $2 + local.set $0 local.get $10 if + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add @@ -28236,10 +29507,10 @@ i32.const 1 i32.shl memory.copy - local.get $2 + local.get $0 local.get $10 i32.add - local.set $2 + local.set $0 end local.get $4 i32.const 1 @@ -28257,8 +29528,8 @@ i32.const 4 i32.add local.set $4 + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add @@ -28270,20 +29541,20 @@ i32.const 1 i32.shl memory.copy - local.get $2 + local.get $0 local.get $4 i32.add - local.tee $2 + local.tee $0 local.get $11 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 local.get $0 - local.get $2 call $~lib/string/String#substring - local.set $0 + local.set $1 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -28302,9 +29573,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 11888 call $~lib/string/String.__eq i32.eqz @@ -28414,7 +29685,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28425,25 +29696,170 @@ i32.store local.get $0 i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=12 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12288 i32.store - call $~lib/util/string/joinFloatArray + i32.const 0 local.set $0 + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinFloatArray$13 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $1 + br $__inlined_func$~lib/util/string/joinFloatArray$13 + end + block $folding-inner09 + local.get $9 + i32.eqz + if + local.get $3 + f64.load + call $~lib/util/number/dtoa + local.set $1 + br $folding-inner09 + end + global.get $~lib/memory/__stack_pointer + i32.const 12288 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12284 + i32.load + i32.const 1 + i32.shr_u + local.tee $10 + i32.const 32 + i32.add + local.get $9 + i32.mul + i32.const 32 + i32.add + local.tee $11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|010 + local.get $4 + local.get $9 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $10 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 12288 + local.get $10 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $10 + i32.add + local.set $0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|010 + end + end + local.get $11 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner09 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$13 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 13456 + local.get $1 + i32.const 13680 call $~lib/string/String.__eq i32.eqz if @@ -28457,7 +29873,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 13600 + i32.const 13824 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28471,7 +29887,7 @@ local.get $0 i32.store local.get $0 - i32.const 13568 + i32.const 13792 call $~lib/string/String.__eq i32.eqz if @@ -28489,35 +29905,35 @@ i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=332 - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=336 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13696 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if @@ -28535,31 +29951,31 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=340 - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=344 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13792 + i32.const 14016 call $~lib/string/String.__eq i32.eqz if @@ -28574,7 +29990,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 13888 + i32.const 14112 call $~lib/rt/__newArray local.tee $0 i32.store offset=348 @@ -28582,15 +29998,15 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 13920 + i32.const 14144 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=352 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 4 - i32.const 13952 + i32.const 14176 call $~lib/rt/__newArray local.tee $3 i32.store offset=356 @@ -28598,7 +30014,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 13984 + i32.const 14208 call $~lib/rt/__newArray local.tee $4 i32.store offset=360 @@ -28624,16 +30040,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/array/Array#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13568 + i32.const 13792 call $~lib/string/String.__eq i32.eqz if @@ -28654,7 +30070,7 @@ local.get $0 i32.store local.get $0 - i32.const 14032 + i32.const 14256 call $~lib/string/String.__eq i32.eqz if @@ -28675,7 +30091,7 @@ local.get $0 i32.store local.get $0 - i32.const 14064 + i32.const 14288 call $~lib/string/String.__eq i32.eqz if @@ -28689,7 +30105,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 14112 + i32.const 14336 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28702,7 +30118,7 @@ local.get $0 i32.store local.get $0 - i32.const 14144 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if @@ -28716,7 +30132,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 14176 + i32.const 14400 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28729,7 +30145,7 @@ local.get $0 i32.store local.get $0 - i32.const 14208 + i32.const 14432 call $~lib/string/String.__eq i32.eqz if @@ -28743,7 +30159,7 @@ i32.const 3 i32.const 1 i32.const 11 - i32.const 14256 + i32.const 14480 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28754,7 +30170,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28768,7 +30184,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28779,7 +30195,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -28794,17 +30210,17 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$745 + block $__inlined_func$~lib/util/string/joinIntegerArray$747 local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $0 i32.const 0 i32.lt_s if @@ -28813,21 +30229,21 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$745 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray$747 end - local.get $3 + local.get $0 i32.eqz if - local.get $2 + local.get $3 i32.load16_u call $~lib/util/number/utoa32 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$745 + br $__inlined_func$~lib/util/string/joinIntegerArray$747 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -28840,7 +30256,7 @@ local.tee $4 i32.const 10 i32.add - local.get $3 + local.get $0 i32.mul i32.const 10 i32.add @@ -28849,32 +30265,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store offset=4 loop $for-loop|03 - local.get $3 + local.get $0 local.get $5 i32.gt_s if - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $1 + local.get $2 i32.add - local.set $1 + local.set $2 local.get $4 if - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add @@ -28883,10 +30299,10 @@ i32.const 1 i32.shl memory.copy - local.get $1 + local.get $2 local.get $4 i32.add - local.set $1 + local.set $2 end local.get $5 i32.const 1 @@ -28896,35 +30312,35 @@ end end local.get $9 - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 local.get $3 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $1 + local.get $2 i32.add - local.tee $1 + local.tee $0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$745 + br $__inlined_func$~lib/util/string/joinIntegerArray$747 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28940,10 +30356,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 14288 + local.get $1 + i32.const 14512 call $~lib/string/String.__eq i32.eqz if @@ -28957,14 +30373,14 @@ i32.const 2 i32.const 1 i32.const 39 - i32.const 14336 + i32.const 14560 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.set $5 global.get $~lib/memory/__stack_pointer @@ -28972,7 +30388,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28986,7 +30402,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28997,7 +30413,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -29012,17 +30428,17 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$746 + block $__inlined_func$~lib/util/string/joinIntegerArray$748 local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $0 i32.const 0 i32.lt_s if @@ -29031,21 +30447,21 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$746 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray$748 end - local.get $3 + local.get $0 i32.eqz if - local.get $2 + local.get $3 i32.load16_s call $~lib/util/number/itoa32 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$746 + br $__inlined_func$~lib/util/string/joinIntegerArray$748 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -29058,7 +30474,7 @@ local.tee $4 i32.const 11 i32.add - local.get $3 + local.get $0 i32.mul i32.const 11 i32.add @@ -29067,32 +30483,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store offset=4 loop $for-loop|05 - local.get $3 + local.get $0 local.get $5 i32.gt_s if - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $1 + local.get $2 i32.add - local.set $1 + local.set $2 local.get $4 if - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add @@ -29101,10 +30517,10 @@ i32.const 1 i32.shl memory.copy - local.get $1 + local.get $2 local.get $4 i32.add - local.set $1 + local.set $2 end local.get $5 i32.const 1 @@ -29114,35 +30530,35 @@ end end local.get $9 - local.get $0 local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 local.get $3 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $1 + local.get $2 i32.add - local.tee $1 + local.tee $0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$746 + br $__inlined_func$~lib/util/string/joinIntegerArray$748 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -29158,10 +30574,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 14368 + local.get $1 + i32.const 14592 call $~lib/string/String.__eq i32.eqz if @@ -29175,7 +30591,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14416 + i32.const 14640 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -29188,7 +30604,7 @@ local.get $0 i32.store local.get $0 - i32.const 14448 + i32.const 14672 call $~lib/string/String.__eq i32.eqz if @@ -29202,7 +30618,7 @@ i32.const 3 i32.const 3 i32.const 40 - i32.const 14512 + i32.const 14736 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -29213,7 +30629,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29227,7 +30643,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29260,7 +30676,7 @@ local.get $0 i32.store local.get $0 - i32.const 14560 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if @@ -29274,7 +30690,7 @@ i32.const 5 i32.const 3 i32.const 41 - i32.const 14640 + i32.const 14864 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -29285,7 +30701,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29299,7 +30715,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29310,18 +30726,18 @@ i32.store local.get $0 i32.load offset=4 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=12 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $2 + local.set $0 i32.const 0 local.set $4 global.get $~lib/memory/__stack_pointer @@ -29329,14 +30745,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$13 - local.get $0 + block $__inlined_func$~lib/util/string/joinIntegerArray$14 + local.get $1 i32.const 1 i32.sub local.tee $3 @@ -29348,15 +30764,15 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$13 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray$14 end - block $folding-inner09 + block $folding-inner011 local.get $3 i32.eqz if block $__inlined_func$~lib/util/number/itoa64$4 (result i32) - local.get $1 + local.get $2 i64.load i64.extend32_s local.set $6 @@ -29365,7 +30781,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29541,8 +30957,8 @@ global.set $~lib/memory/__stack_pointer local.get $3 end - local.set $0 - br $folding-inner09 + local.set $1 + br $folding-inner011 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -29564,32 +30980,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store offset=4 - loop $for-loop|010 + loop $for-loop|016 local.get $3 local.get $4 i32.gt_s if + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add - local.get $1 + local.get $2 local.get $4 i32.const 3 i32.shl i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 + local.set $0 local.get $5 if + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add @@ -29598,50 +31014,50 @@ i32.const 1 i32.shl memory.copy - local.get $2 + local.get $0 local.get $5 i32.add - local.set $2 + local.set $0 end local.get $4 i32.const 1 i32.add local.set $4 - br $for-loop|010 + br $for-loop|016 end end local.get $9 + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.shl i32.add - local.get $1 + local.get $2 local.get $3 i32.const 3 i32.shl i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $0 - br $folding-inner09 + local.set $1 + br $folding-inner011 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$13 + br $__inlined_func$~lib/util/string/joinIntegerArray$14 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -29657,10 +31073,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 14704 + local.get $1 + i32.const 14928 call $~lib/string/String.__eq i32.eqz if @@ -29675,7 +31091,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 14864 + i32.const 15088 call $~lib/rt/__newArray local.tee $0 i32.store offset=364 @@ -29689,7 +31105,7 @@ local.get $0 i32.store local.get $0 - i32.const 14912 + i32.const 15136 call $~lib/string/String.__eq i32.eqz if @@ -29703,7 +31119,7 @@ i32.const 4 i32.const 2 i32.const 34 - i32.const 15024 + i32.const 15248 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -29716,7 +31132,7 @@ local.get $0 i32.store local.get $0 - i32.const 15072 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if @@ -29741,7 +31157,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 15104 + i32.const 15328 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29749,7 +31165,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 15136 + i32.const 15360 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29762,7 +31178,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29776,7 +31192,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29804,14 +31220,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 local.get $1 i32.const 1 i32.sub @@ -29825,7 +31241,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $3 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end local.get $1 i32.eqz @@ -29850,7 +31266,7 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end i32.const 11568 local.set $3 @@ -29865,7 +31281,7 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|011 + loop $for-loop|017 local.get $1 local.get $4 i32.gt_s @@ -29919,7 +31335,7 @@ i32.const 1 i32.add local.set $4 - br $for-loop|011 + br $for-loop|017 end end global.get $~lib/memory/__stack_pointer @@ -29969,7 +31385,7 @@ local.get $3 i32.store local.get $3 - i32.const 15168 + i32.const 15392 call $~lib/string/String.__eq i32.eqz if @@ -29994,7 +31410,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 15216 + i32.const 15440 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30002,7 +31418,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 15248 + i32.const 15472 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30015,7 +31431,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30029,7 +31445,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30057,14 +31473,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$16 local.get $1 i32.const 1 i32.sub @@ -30078,7 +31494,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $3 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$16 end local.get $1 i32.eqz @@ -30103,7 +31519,7 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$16 end i32.const 11568 local.set $3 @@ -30118,7 +31534,7 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|016 + loop $for-loop|018 local.get $1 local.get $4 i32.gt_s @@ -30172,7 +31588,7 @@ i32.const 1 i32.add local.set $4 - br $for-loop|016 + br $for-loop|018 end end global.get $~lib/memory/__stack_pointer @@ -30222,7 +31638,7 @@ local.get $3 i32.store local.get $3 - i32.const 15168 + i32.const 15392 call $~lib/string/String.__eq i32.eqz if @@ -30255,7 +31671,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 15280 + i32.const 15504 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30272,7 +31688,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30286,7 +31702,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30314,14 +31730,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$17 local.get $1 i32.const 1 i32.sub @@ -30335,7 +31751,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $3 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$17 end local.get $1 i32.eqz @@ -30360,7 +31776,7 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$17 end i32.const 11568 local.set $3 @@ -30375,7 +31791,7 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|017 + loop $for-loop|020 local.get $1 local.get $4 i32.gt_s @@ -30429,7 +31845,7 @@ i32.const 1 i32.add local.set $4 - br $for-loop|017 + br $for-loop|020 end end global.get $~lib/memory/__stack_pointer @@ -30479,7 +31895,7 @@ local.get $3 i32.store local.get $3 - i32.const 13568 + i32.const 13792 call $~lib/string/String.__eq i32.eqz if @@ -30504,7 +31920,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15312 + i32.const 15536 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30512,7 +31928,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15344 + i32.const 15568 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30520,7 +31936,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15376 + i32.const 15600 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30528,7 +31944,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15408 + i32.const 15632 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30539,12 +31955,12 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $1 + local.tee $0 i32.store offset=404 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#get:length i32.const 10 i32.ne @@ -30557,19 +31973,19 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|7 - local.get $0 + local.get $1 i32.const 10 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 local.get $0 + local.get $1 call $~lib/array/Array#__get - local.get $0 + local.get $1 i32.ne if i32.const 0 @@ -30579,10 +31995,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|7 end end @@ -30600,7 +32016,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 15472 + i32.const 15696 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30608,7 +32024,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 15568 + i32.const 15792 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30616,7 +32032,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 15696 + i32.const 15920 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30624,7 +32040,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 15760 + i32.const 15984 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30638,7 +32054,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30652,31 +32068,31 @@ i32.store local.get $1 i32.load offset=4 - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $5 i32.const 0 local.set $4 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|023 - local.get $0 local.get $1 + local.get $5 i32.lt_s if - local.get $5 - local.get $0 + local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $0 if (result i32) - local.get $2 + local.get $0 i32.load offset=12 else i32.const 0 @@ -30684,10 +32100,10 @@ local.get $4 i32.add local.set $4 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|023 end end @@ -30723,23 +32139,23 @@ i32.const 0 call $~lib/rt/itcms/__link i32.const 0 - local.set $0 + local.set $1 i32.const 0 - local.set $2 + local.set $0 loop $for-loop|124 - local.get $1 - local.get $2 - i32.gt_s + local.get $0 + local.get $5 + i32.lt_s if - local.get $5 - local.get $2 + local.get $3 + local.get $0 i32.const 2 i32.shl i32.add i32.load local.tee $11 if - local.get $0 + local.get $1 local.get $9 i32.add local.get $11 @@ -30750,38 +32166,38 @@ i32.shl local.tee $11 memory.copy - local.get $0 + local.get $1 local.get $11 i32.add - local.set $0 + local.set $1 end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|124 end end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|225 - local.get $0 + local.get $1 local.get $4 i32.lt_s if local.get $9 local.get $9 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 1 call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|225 end end @@ -30795,9 +32211,9 @@ i32.const 8 i32.const 2 i32.const 34 - i32.const 15792 + i32.const 16016 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=420 global.get $~lib/memory/__stack_pointer local.get $10 @@ -30815,37 +32231,37 @@ unreachable end i32.const 0 - local.set $2 + local.set $0 loop $for-loop|8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length - local.get $2 + local.get $0 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=48 local.get $10 - local.get $2 + local.get $0 call $~lib/array/Array#__get - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=48 + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $1 + local.get $2 local.get $3 call $~lib/string/String.__eq i32.eqz @@ -30857,10 +32273,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|8 end end @@ -30878,7 +32294,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 15856 + i32.const 16080 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30886,7 +32302,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 15888 + i32.const 16112 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30924,7 +32340,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15920 + i32.const 16144 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30932,7 +32348,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15952 + i32.const 16176 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30942,14 +32358,14 @@ local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15984 + i32.const 16208 i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16416 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30976,12 +32392,12 @@ i32.load offset=4 local.set $5 i32.const 0 - local.set $2 + local.set $0 loop $for-loop|026 global.get $~lib/memory/__stack_pointer local.get $1 i32.store - local.get $2 + local.get $0 local.get $3 local.get $1 i32.load offset=12 @@ -30993,13 +32409,13 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 15984 + i32.const 16208 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.shl local.tee $9 @@ -31016,9 +32432,9 @@ global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $10 - local.get $2 + local.get $0 local.get $1 - i32.const 15984 + i32.const 16208 i32.load call_indirect (type $1) local.tee $10 @@ -31032,10 +32448,10 @@ local.get $10 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|026 end end @@ -31135,7 +32551,7 @@ global.set $std/array/inputStabArr i32.const 0 global.set $std/array/outputStabArr - i32.const 48960 + i32.const 49184 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -31176,8 +32592,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49216 + i32.const 49264 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/date.debug.wat b/tests/compiler/std/date.debug.wat index f0af4387e1..b609f5e91f 100644 --- a/tests/compiler/std/date.debug.wat +++ b/tests/compiler/std/date.debug.wat @@ -13722,7 +13722,7 @@ if i32.const 656 i32.const 784 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dtoa.debug.wat b/tests/compiler/std/dtoa.debug.wat new file mode 100644 index 0000000000..4993a1bf64 --- /dev/null +++ b/tests/compiler/std/dtoa.debug.wat @@ -0,0 +1,1088 @@ +(module + (type $0 (func)) + (type $1 (func (param i64) (result i64))) + (type $2 (func (param i64) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00t\00o\00a\00.\00t\00s\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + local.set $singles|5 + i32.const 70 + i64.extend_i32_s + local.get $singles|5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 8 + i64.div_u + i32.wrap_i64 + return + ) + (func $start:std/dtoa + (local $value i64) + (local $length i32) + (local $value|2 i64) + (local $length|3 i32) + (local $value|4 i64) + (local $length|5 i32) + (local $value|6 i64) + (local $length|7 i32) + (local $value|8 i64) + (local $length|9 i32) + (local $value|10 i64) + (local $value|11 i64) + (local $fixed16 i32) + (local $hi i64) + (local $lo i64) + (local $value|15 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|20 i64) + (local $quads|21 i64) + (local $pairs|22 i64) + (local $singles|23 i64) + (local $hiLen i32) + (local $hiBcd|25 i64) + (local $loLen i32) + (local $value|27 i64) + (local $value|28 i64) + (local $fixed16|29 i32) + (local $hi|30 i64) + (local $lo|31 i64) + (local $value|32 i64) + (local $quads|33 i64) + (local $pairs|34 i64) + (local $singles|35 i64) + (local $hiBcd|36 i64) + (local $value|37 i64) + (local $quads|38 i64) + (local $pairs|39 i64) + (local $singles|40 i64) + (local $hiLen|41 i32) + (local $hiBcd|42 i64) + (local $loLen|43 i32) + (local $value|44 i64) + (local $value|45 i64) + (local $fixed16|46 i32) + (local $hi|47 i64) + (local $lo|48 i64) + (local $value|49 i64) + (local $quads|50 i64) + (local $pairs|51 i64) + (local $singles|52 i64) + (local $hiBcd|53 i64) + (local $value|54 i64) + (local $quads|55 i64) + (local $pairs|56 i64) + (local $singles|57 i64) + (local $hiLen|58 i32) + (local $hiBcd|59 i64) + (local $loLen|60 i32) + (local $value|61 i64) + (local $value|62 i64) + (local $fixed16|63 i32) + (local $hi|64 i64) + (local $lo|65 i64) + (local $value|66 i64) + (local $quads|67 i64) + (local $pairs|68 i64) + (local $singles|69 i64) + (local $hiBcd|70 i64) + (local $value|71 i64) + (local $quads|72 i64) + (local $pairs|73 i64) + (local $singles|74 i64) + (local $hiLen|75 i32) + (local $hiBcd|76 i64) + (local $loLen|77 i32) + i64.const 1 + local.set $value + i32.const 0 + drop + local.get $value + call $~lib/util/dtoa/toBcd8 + local.set $length + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length + global.set $~lib/util/dtoa/gDigits + global.get $~lib/util/dtoa/gDigits + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 78 + local.set $value|2 + i32.const 0 + drop + local.get $value|2 + call $~lib/util/dtoa/toBcd8 + local.set $length|3 + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length|3 + global.set $~lib/util/dtoa/gDigits + global.get $~lib/util/dtoa/gDigits + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234 + local.set $value|4 + i32.const 0 + drop + local.get $value|4 + call $~lib/util/dtoa/toBcd8 + local.set $length|5 + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length|5 + global.set $~lib/util/dtoa/gDigits + global.get $~lib/util/dtoa/gDigits + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 10000 + local.set $value|6 + i32.const 0 + drop + local.get $value|6 + call $~lib/util/dtoa/toBcd8 + local.set $length|7 + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length|7 + global.set $~lib/util/dtoa/gDigits + global.get $~lib/util/dtoa/gDigits + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 10000000 + local.set $value|8 + i32.const 0 + drop + local.get $value|8 + call $~lib/util/dtoa/toBcd8 + local.set $length|9 + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length|9 + global.set $~lib/util/dtoa/gDigits + global.get $~lib/util/dtoa/gDigits + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 100000001 + local.set $value|10 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|10 + local.set $value|11 + i32.const 0 + local.set $fixed16 + local.get $value|11 + i64.const 100000000 + i64.div_u + local.set $hi + local.get $value|11 + local.get $hi + i64.const 100000000 + i64.mul + i64.sub + local.set $lo + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $hi + local.set $value|15 + local.get $value|15 + i64.const 4294957296 + local.get $value|15 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $lo + local.set $value|20 + local.get $value|20 + i64.const 4294957296 + local.get $value|20 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|21 + local.get $quads|21 + i64.const 65436 + local.get $quads|21 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|22 + local.get $pairs|22 + i64.const 246 + local.get $pairs|22 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|23 + local.get $singles|23 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|23 + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|25 + local.get $lo + i64.const 0 + i64.eq + if + local.get $hiBcd|25 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|25 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + global.get $~lib/util/dtoa/gDigits + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 100000000 + local.set $value|27 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.1 + local.get $value|27 + local.set $value|28 + i32.const 0 + local.set $fixed16|29 + local.get $value|28 + i64.const 100000000 + i64.div_u + local.set $hi|30 + local.get $value|28 + local.get $hi|30 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|31 + local.get $fixed16|29 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.3 (result i64) + local.get $hi|30 + local.set $value|32 + local.get $value|32 + i64.const 4294957296 + local.get $value|32 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|33 + local.get $quads|33 + i64.const 65436 + local.get $quads|33 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|34 + local.get $pairs|34 + i64.const 246 + local.get $pairs|34 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|35 + local.get $singles|35 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|35 + br $~lib/util/dtoa/toBcd8Digits|inlined.3 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|36 + block $~lib/util/dtoa/toBcd8Digits|inlined.4 (result i64) + local.get $lo|31 + local.set $value|37 + local.get $value|37 + i64.const 4294957296 + local.get $value|37 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|38 + local.get $quads|38 + i64.const 65436 + local.get $quads|38 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|39 + local.get $pairs|39 + i64.const 246 + local.get $pairs|39 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|40 + local.get $singles|40 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|40 + br $~lib/util/dtoa/toBcd8Digits|inlined.4 + end + drop + local.get $hiBcd|36 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.1 + end + local.get $hi|30 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen|41 + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|42 + local.get $lo|31 + i64.const 0 + i64.eq + if + local.get $hiBcd|42 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen|41 + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.1 + end + local.get $lo|31 + call $~lib/util/dtoa/toBcd8 + local.set $loLen|43 + local.get $hiBcd|42 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|30 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen|43 + else + local.get $hiLen|41 + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + global.get $~lib/util/dtoa/gDigits + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1000000000000000 + local.set $value|44 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.2 + local.get $value|44 + local.set $value|45 + i32.const 0 + local.set $fixed16|46 + local.get $value|45 + i64.const 100000000 + i64.div_u + local.set $hi|47 + local.get $value|45 + local.get $hi|47 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|48 + local.get $fixed16|46 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.5 (result i64) + local.get $hi|47 + local.set $value|49 + local.get $value|49 + i64.const 4294957296 + local.get $value|49 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|50 + local.get $quads|50 + i64.const 65436 + local.get $quads|50 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|51 + local.get $pairs|51 + i64.const 246 + local.get $pairs|51 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|52 + local.get $singles|52 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|52 + br $~lib/util/dtoa/toBcd8Digits|inlined.5 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|53 + block $~lib/util/dtoa/toBcd8Digits|inlined.6 (result i64) + local.get $lo|48 + local.set $value|54 + local.get $value|54 + i64.const 4294957296 + local.get $value|54 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|55 + local.get $quads|55 + i64.const 65436 + local.get $quads|55 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|56 + local.get $pairs|56 + i64.const 246 + local.get $pairs|56 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|57 + local.get $singles|57 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|57 + br $~lib/util/dtoa/toBcd8Digits|inlined.6 + end + drop + local.get $hiBcd|53 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.2 + end + local.get $hi|47 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen|58 + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|59 + local.get $lo|48 + i64.const 0 + i64.eq + if + local.get $hiBcd|59 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen|58 + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.2 + end + local.get $lo|48 + call $~lib/util/dtoa/toBcd8 + local.set $loLen|60 + local.get $hiBcd|59 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|47 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen|60 + else + local.get $hiLen|58 + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + global.get $~lib/util/dtoa/gDigits + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234567890123456 + local.set $value|61 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.3 + local.get $value|61 + local.set $value|62 + i32.const 0 + local.set $fixed16|63 + local.get $value|62 + i64.const 100000000 + i64.div_u + local.set $hi|64 + local.get $value|62 + local.get $hi|64 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|65 + local.get $fixed16|63 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.7 (result i64) + local.get $hi|64 + local.set $value|66 + local.get $value|66 + i64.const 4294957296 + local.get $value|66 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|67 + local.get $quads|67 + i64.const 65436 + local.get $quads|67 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|68 + local.get $pairs|68 + i64.const 246 + local.get $pairs|68 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|69 + local.get $singles|69 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|69 + br $~lib/util/dtoa/toBcd8Digits|inlined.7 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|70 + block $~lib/util/dtoa/toBcd8Digits|inlined.8 (result i64) + local.get $lo|65 + local.set $value|71 + local.get $value|71 + i64.const 4294957296 + local.get $value|71 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|72 + local.get $quads|72 + i64.const 65436 + local.get $quads|72 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|73 + local.get $pairs|73 + i64.const 246 + local.get $pairs|73 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|74 + local.get $singles|74 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|74 + br $~lib/util/dtoa/toBcd8Digits|inlined.8 + end + drop + local.get $hiBcd|70 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.3 + end + local.get $hi|64 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen|75 + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|76 + local.get $lo|65 + i64.const 0 + i64.eq + if + local.get $hiBcd|76 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen|75 + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.3 + end + local.get $lo|65 + call $~lib/util/dtoa/toBcd8 + local.set $loLen|77 + local.get $hiBcd|76 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|64 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen|77 + else + local.get $hiLen|75 + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + global.get $~lib/util/dtoa/gDigits + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/dtoa + ) +) diff --git a/tests/compiler/std/dtoa.release.wat b/tests/compiler/std/dtoa.release.wat new file mode 100644 index 0000000000..762700aa75 --- /dev/null +++ b/tests/compiler/std/dtoa.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00t\00o\00a\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/std/dtoa.ts b/tests/compiler/std/dtoa.ts new file mode 100644 index 0000000000..8fe8c78f4e --- /dev/null +++ b/tests/compiler/std/dtoa.ts @@ -0,0 +1,21 @@ +import { toDigits32, toDigits64, gDigits } from "~lib/util/dtoa"; + +toDigits32(1); +assert(gDigits == 1); +toDigits32(78); +assert(gDigits == 2); +toDigits32(1234); +assert(gDigits == 4); +toDigits32(10000); +assert(gDigits == 5); +toDigits32(10000000); +assert(gDigits == 8); + +toDigits64(100000001); +assert(gDigits == 9); +toDigits64(100000000); +assert(gDigits == 9); +toDigits64(1000000000000000); +assert(gDigits == 16); +toDigits64(1234567890123456); +assert(gDigits == 16); diff --git a/tests/compiler/std/string-casemapping.debug.wat b/tests/compiler/std/string-casemapping.debug.wat index 5e412bc990..b918d75860 100644 --- a/tests/compiler/std/string-casemapping.debug.wat +++ b/tests/compiler/std/string-casemapping.debug.wat @@ -6783,7 +6783,7 @@ if i32.const 17984 i32.const 18112 - i32.const 431 + i32.const 379 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.debug.wat b/tests/compiler/std/string.debug.wat index 738795005a..08c8aff55e 100644 --- a/tests/compiler/std/string.debug.wat +++ b/tests/compiler/std/string.debug.wat @@ -11,20 +11,22 @@ (type $9 (func (param i32) (result f64))) (type $10 (func (result i32))) (type $11 (func (param i32 i64 i32))) - (type $12 (func (param i32 i32) (result f64))) - (type $13 (func (param i32 i32) (result i64))) - (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $15 (func (param i32 i32 i64) (result i32))) - (type $16 (func (param f64 i32) (result f64))) - (type $17 (func (param f64 f64) (result i32))) - (type $18 (func (param i32 i64 i32 i32))) - (type $19 (func (param i64) (result i32))) - (type $20 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $21 (func (param i32 f64 i32) (result i32))) - (type $22 (func (param i32) (result f32))) - (type $23 (func (param i32 i32 i32 i32) (result i32))) - (type $24 (func (param f64) (result i32))) - (type $25 (func (param f32) (result i32))) + (type $12 (func (param i64) (result i32))) + (type $13 (func (param i32 i32) (result f64))) + (type $14 (func (param i32 i32) (result i64))) + (type $15 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $16 (func (param i32 i32 i64) (result i32))) + (type $17 (func (param f64 i32) (result f64))) + (type $18 (func (param f64 f64) (result i32))) + (type $19 (func (param i32 i64 i32 i32))) + (type $20 (func (param i32) (result i64))) + (type $21 (func (param i64) (result i64))) + (type $22 (func (param i32 f64) (result i32))) + (type $23 (func (param i32 f32) (result i32))) + (type $24 (func (param i32) (result f32))) + (type $25 (func (param i32 i32 i32 i32) (result i32))) + (type $26 (func (param f64) (result i32))) + (type $27 (func (param f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 32)) (global $std/string/nullStr (mut i32) (i32.const 0)) @@ -62,18 +64,33 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE i32 (i32.const 23)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK i32 (i32.const 8388607)) (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) - (global $~lib/rt/__rtti_base i32 (i32.const 25584)) - (global $~lib/memory/__data_end i32 (i32.const 25612)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 58380)) - (global $~lib/memory/__heap_base i32 (i32.const 58380)) + (global $~lib/rt/__rtti_base i32 (i32.const 26128)) + (global $~lib/memory/__data_end i32 (i32.const 26156)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 58924)) + (global $~lib/memory/__heap_base i32 (i32.const 58924)) (memory $0 1) (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00") @@ -499,58 +516,67 @@ (data $421 (i32.const 22188) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f\00\00\00") (data $422 (i32.const 22236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") (data $423 (i32.const 22268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $424 (i32.const 22320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $425 (i32.const 22376) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $427 (i32.const 23240) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $428 (i32.const 23324) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00-\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00") + (data $429 (i32.const 23388) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00-\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $430 (i32.const 23468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\001\00.\001\009\002\000\009\002\009\00e\00-\007\00\00\00\00\00") + (data $431 (i32.const 23516) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00-\001\00.\001\009\002\000\009\002\009\00e\00-\007\00\00\00") + (data $432 (i32.const 23564) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\00.\004\000\002\008\002\003\005\00e\00+\003\008\00\00\00") + (data $433 (i32.const 23612) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\003\00.\004\000\002\008\002\003\005\00e\00+\003\008\00") + (data $434 (i32.const 23660) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\004\00.\001\008\005\005\008\000\004\009\006\008\002\001\003\005\007\00e\00+\002\009\008\00") + (data $435 (i32.const 23724) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\002\00.\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\004\00e\00-\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $436 (i32.const 23804) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\004\00.\009\004\000\006\005\006\00e\00-\003\001\008\00\00\00") + (data $437 (i32.const 23852) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\009\000\006\000\008\000\001\001\005\003\004\003\003\006\000\000\00.\000\00\00\00\00\00\00\00\00\00") + (data $438 (i32.const 23916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\004\007\000\008\003\005\006\000\002\004\007\001\001\005\001\002\000\000\000\00.\000\00\00\00") + (data $439 (i32.const 23980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\009\004\000\009\003\004\000\000\001\002\005\006\008\002\004\008\000\000\000\00.\000\00\00\00") + (data $440 (i32.const 24044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\000\00\00\00\00\00\00\00") + (data $441 (i32.const 24076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\001\00.\000\00\00\00\00\00") + (data $442 (i32.const 24108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\000\00.\001\00\00\00\00\00") + (data $443 (i32.const 24140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\000\000\000\000\000\000\00.\000\00\00\00\00\00\00\00\00\00\00\00") + (data $444 (i32.const 24188) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\00.\000\000\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $445 (i32.const 24236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00-\001\000\000\000\000\000\000\00.\000\00\00\00\00\00\00\00\00\00") + (data $446 (i32.const 24284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\000\00.\000\000\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00") + (data $447 (i32.const 24332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\000\000\000\000\000\000\000\00.\000\00\00\00\00\00\00\00\00\00") + (data $448 (i32.const 24380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\007\00\00\00\00\00") + (data $449 (i32.const 24412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00e\00+\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $450 (i32.const 24460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00-\003\000\008\00") + (data $451 (i32.const 24492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00e\00-\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $452 (i32.const 24540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00-\003\002\003\00") + (data $453 (i32.const 24572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00e\00-\003\002\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $454 (i32.const 24620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\004\002\009\004\009\006\007\002\007\002\00.\000\00\00\00\00\00") + (data $455 (i32.const 24668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\001\00.\002\003\001\002\001\004\005\006\007\003\004\005\006\002\003\004\00e\00-\008\00\00\00") + (data $456 (i32.const 24732) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\005\005\005\005\005\005\005\005\005\00.\005\005\005\005\005\005\006\00\00\00\00\00\00\00\00\00\00\00") + (data $457 (i32.const 24796) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\000\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\00\00\00\00\00\00\00\00\00") + (data $458 (i32.const 24860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\002\00.\003\004\00\00\00") + (data $459 (i32.const 24892) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\000\00.\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00\00\00\00\00\00\00\00\00") + (data $460 (i32.const 24956) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\002\003\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00.\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $461 (i32.const 25036) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00.\002\003\004\00e\00+\002\001\00\00\00\00\00\00\00\00\00\00\00") + (data $462 (i32.const 25084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\002\00.\007\001\008\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $463 (i32.const 25132) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\000\00.\000\002\007\001\008\002\008\00\00\00\00\00\00\00\00\00\00\00") + (data $464 (i32.const 25180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\002\007\001\00.\008\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $465 (i32.const 25228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\001\00e\00+\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $466 (i32.const 25276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00.\001\00e\00-\006\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $467 (i32.const 25324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\00.\000\000\000\000\003\005\006\008\009\00\00\00\00\00\00\00") + (data $468 (i32.const 25372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\00.\002\003\004\005\00e\00+\002\001\00\00\00\00\00\00\00\00\00") + (data $469 (i32.const 25420) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\002\00.\009\008\000\002\003\002\002\003\008\007\006\009\005\003\001\002\00e\00-\008\00\00\00") + (data $470 (i32.const 25484) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00-\002\001\000\009\008\000\008\008\009\008\006\009\005\009\006\003\000\00.\000\00\00\00\00\00") + (data $471 (i32.const 25548) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00-\000\00.\000\000\000\000\000\001\000\004\007\001\009\007\005\005\001\001\009\006\005\009\007\006\00\00\00\00\00\00\00\00\00\00\00") + (data $472 (i32.const 25628) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\000\00.\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\00\00\00\00\00\00\00") + (data $473 (i32.const 25692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\000\00.\000\000\000\000\005\008\003\005\000\003\003\00") + (data $474 (i32.const 25740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\004\00.\002\000\003\000\008\009\00e\00+\002\007\00\00\00\00\00") + (data $475 (i32.const 25788) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\009\000\00.\005\007\006\007\009\00\00\00\00\00\00\00\00\00\00\00") + (data $476 (i32.const 25836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\007\004\001\001\004\006\009\000\00.\000\00\00\00\00\00\00\00\00\00") + (data $477 (i32.const 25884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00H\00e\00l\00l\00o\00 \00") + (data $478 (i32.const 25916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00o\00r\00l\00d\00\00\00") + (data $479 (i32.const 25948) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00H\00e\00l\00l\00o\00 \00W\00o\00r\00l\00d\00\00\00\00\00\00\00") + (data $480 (i32.const 25996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00b\00a\00r\00\00\00\00\00\00\00") + (data $481 (i32.const 26028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\c0\00\c8\00\00\00\00\00\00\00\00\00") + (data $482 (i32.const 26060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\d8S\cf\91\00\00\00\00\00\00\00\00") + (data $483 (i32.const 26092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\d8\0e\dfA\d81\df\00\00\00\00") + (data $484 (i32.const 26128) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "getString" (func $std/string/getString)) @@ -4095,1374 +4121,6831 @@ local.get $offset call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 22448 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 22872 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 23240 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 + i64.extend_i32_s + local.get $singles|5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 8 + i64.div_u + i32.wrap_i64 + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $neg + if + local.get $buf|8 + i32.const 45 + i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 + i32.sub + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 15196 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 15196 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $isNormal + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 22448 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 22448 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral + local.get $pow10Hi + i32.const 0 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|72 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 22448 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 22448 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u + i64.add + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 + end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 22448 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 22448 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 22448 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 22448 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 22448 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 22448 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end + end + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u + if + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.sub + local.set $scale + i32.const 3648 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 + i32.lt_s + if + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|289 + i32.const 17 + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 + i32.const 0 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s + if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 + i32.const 0 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|289 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end + i32.const 1 + i32.shl + i32.sub + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end + end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 + i32.const 1 + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 15196 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 15196 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|387 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotation|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + br $~lib/util/dtoa/formatDouble|inlined.0 + end + local.get $buffer + i32.sub + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/dtoa/ftoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $bits i32) + (local $binExp i32) + (local $binSig i64) + (local $buf i32) + (local $bits|6 i32) + (local $binExp|7 i32) + (local $binSig|8 i64) + (local $dotZero i32) + (local $neg i32) + (local $isNormal i32) + (local $buf|12 i32) + (local $buf|13 i32) + (local $neg|14 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|22 i32) + (local $binSig|23 i64) + (local $rawExp i32) + (local $regular i32) + (local $expBin i32) + (local $k i32) + (local $h i32) + (local $pow10Hi i64) + (local $lo|30 i64) + (local $t0 i64) + (local $t1 i64) + (local $mid i64) + (local $hi64 i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $mUp i64) + (local $one i32) + (local $upDown i32) + (local $decSig i64) + (local $decExp i32) + (local $q i64) + (local $last i32) + (local $q|44 i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) + (local $buf|49 i32) + (local $value|50 i64) + (local $v i64) + (local $v|52 i64) (local $len i32) + (local $p|54 i32) + (local $v|55 i64) + (local $q|56 i64) + (local $q|57 i64) + (local $q|58 i64) + (local $q|59 i64) + (local $q|60 i64) + (local $q|61 i64) + (local $q|62 i64) + (local $end|63 i32) + (local $dotZero|64 i32) + (local $binSig|65 i64) + (local $rawExp|66 i32) + (local $regular|67 i32) + (local $expBin|68 i32) + (local $k|69 i32) + (local $h|70 i32) + (local $pow10Hi|71 i64) + (local $lo|72 i64) + (local $t0|73 i64) + (local $t1|74 i64) + (local $mid|75 i64) + (local $hi64|76 i64) + (local $halfUlp|77 i64) + (local $dotOne|78 i64) + (local $mUp|79 i64) + (local $one|80 i32) + (local $upDown|81 i32) + (local $hasLastDigit i32) + (local $hasExtraDigit i32) + (local $decExp|84 i32) + (local $start i32) + (local $value|86 i64) + (local $length i32) + (local $buf|88 i32) + (local $start|89 i32) + (local $decExp|90 i32) + (local $hasLastDigit|91 i32) + (local $hasExtraDigit|92 i32) + (local $dotZero|93 i32) + (local $p|94 i32) + (local $ascii|95 i64) + (local $off|96 i32) + (local $base|97 i32) + (local $lo|98 i64) + (local $hi|99 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $p|103 i32) + (local $ascii|104 i64) + (local $off|105 i32) + (local $base|106 i32) + (local $lo|107 i64) + (local $hi|108 i64) + (local $sig i32) + (local $endByte i32) + (local $z i32) + (local $p|112 i32) + (local $ascii|113 i64) + (local $off|114 i32) + (local $base|115 i32) + (local $lo|116 i64) + (local $hi|117 i64) + (local $end|118 i32) + (local $dotZero|119 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|123 i32) + (local $ascii|124 i64) + (local $off|125 i32) + (local $base|126 i32) + (local $lo|127 i64) + (local $hi|128 i64) + (local $k|129 i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $p|133 i32) + (local $ascii|134 i64) + (local $off|135 i32) + (local $base|136 i32) + (local $lo|137 i64) + (local $hi|138 i64) + (local $end|139 i32) + (local $end|140 i32) + (local $dotZero|141 i32) + (local $buf|142 i32) + (local $start|143 i32) + (local $decExp|144 i32) + (local $hasLastDigit|145 i32) + (local $hasExtraDigit|146 i32) + (local $p|147 i32) + (local $ascii|148 i64) + (local $off|149 i32) + (local $base|150 i32) + (local $lo|151 i64) + (local $hi|152 i64) + (local $lead i32) + (local $buf|154 i32) + (local $decExp|155 i32) + (local $m i32) + (local $e i32) (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp - i32.sub - local.set $one_exp - i64.const 1 - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $one_frc - local.get $one_frc - i64.const 1 - i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa + local.get $value + i32.reinterpret_f32 + local.set $bits + local.get $bits + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK + i32.and + i64.extend_i32_u + local.set $binSig + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $bits + local.set $bits|6 + local.get $binExp + local.set $binExp|7 + local.get $binSig + local.set $binSig|8 + i32.const 1 + local.set $dotZero + local.get $bits|6 + i32.const 31 + i32.shr_u i32.const 0 - i32.gt_s + i32.ne + local.set $neg + local.get $binExp|7 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 + local.get $binExp|7 + i32.const 0 + i32.ne + if + local.get $binSig|8 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.1 (result i32) + local.get $buf + local.set $buf|12 + local.get $buf|12 + i32.const 78 + i32.store16 + local.get $buf|12 + i32.const 97 + i32.store16 offset=2 + local.get $buf|12 + i32.const 78 + i32.store16 offset=4 + local.get $buf|12 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.1 end - local.get $p1 - local.set $d + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.1 (result i32) + local.get $buf + local.set $buf|13 + local.get $neg + local.set $neg|14 + local.get $neg|14 + if + local.get $buf|13 + i32.const 45 + i32.store16 + local.get $buf|13 + i32.const 2 + i32.add + local.set $buf|13 + end + local.get $buf|13 + local.set $p + i64.const 8751735898823355977 + local.set $ascii i32.const 0 - local.set $p1 - br $break|1 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|13 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.1 end - i32.const 0 - local.set $d - br $break|1 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - local.get $d - local.get $len - i32.or + local.get $binSig|8 + i64.const 0 + i64.eq if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 + local.get $buf + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.4 (result i32) + local.get $buf + i32.const 2 + i32.add + local.set $end + local.get $dotZero + local.set $dotZero|22 + local.get $dotZero|22 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.4 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 i32.add - local.set $len - local.get $17 + local.set $buf + end + local.get $binSig|8 + local.set $binSig|23 + i32.const 1 + local.set $rawExp + i32.const 1 + local.set $regular + local.get $rawExp + i32.const 150 + i32.sub + local.set $expBin + local.get $regular + if + local.get $expBin + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + i32.const 0 + local.get $k + i32.sub i32.const 1 - i32.shl + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and + local.set $h + else + local.get $expBin + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin i32.add - i32.store16 + local.get $k + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h + end + local.get $k + i32.const -28 + i32.ge_s + if (result i32) + local.get $k + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 22448 + i32.const 28 + local.get $k + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi + else + i32.const 292 + local.get $k + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|30 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|30 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi end - local.get $kappa + local.get $pow10Hi + i64.const 4294967295 + i64.and + local.get $binSig|23 + i64.mul + local.set $t0 + local.get $pow10Hi + i64.const 32 + i64.shr_u + local.get $binSig|23 + i64.mul + local.get $t0 + i64.const 32 + i64.shr_u + i64.add + local.set $t1 + local.get $t1 + i64.const 8 + i64.shl + local.get $t0 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid + local.get $mid + i64.const 40 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64 + local.get $pow10Hi + i64.const 65 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|23 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp + local.get $hi64 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne + local.get $hi64 + local.get $halfUlp + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp + local.get $dotOne + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne + i64.const 32 + i64.shr_u + i64.add + i32.const 36 i32.const 1 i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp i64.extend_i32_s - i64.shl - local.get $p2 + i64.shr_u + i32.wrap_i64 + local.set $one + local.get $regular + if + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + else + local.get $expBin + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 67 + i32.eq + end + if + local.get $one + i32.const 1 + i32.add + local.set $one + end + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + end + local.get $mUp + global.set $~lib/util/dtoa/gSig + local.get $k + global.set $~lib/util/dtoa/gExp + local.get $one + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u + local.set $decSig + global.get $~lib/util/dtoa/gExp + local.set $decExp + local.get $decSig + i64.const 10000 + i64.lt_u if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 23248 - local.get $kappa + local.get $decSig + i64.const 10000 + i64.mul + local.set $decSig + local.get $decExp + i32.const 4 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 1000000 + i64.lt_u + if + local.get $decSig + i64.const 100 + i64.mul + local.set $decSig + local.get $decExp i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10000000 + i64.lt_u + if + local.get $decSig + i64.const 10 + i64.mul + local.set $decSig + local.get $decExp i32.const 1 - i32.shl + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10 + i64.div_u + local.set $q + local.get $decSig + local.get $q + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $last + local.get $q + global.set $~lib/util/dtoa/gSig + local.get $decExp + global.set $~lib/util/dtoa/gExp + local.get $last + global.set $~lib/util/dtoa/gLastDigit + local.get $last + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u - end - else - i32.const 0 + local.set $buf + end + local.get $binExp|7 + i32.const 150 + i32.sub + local.set $q|44 + local.get $q|44 + i32.const 0 + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE + i32.sub + i32.ge_s + if (result i32) + local.get $q|44 + i32.const 24 + i32.lt_s + else + i32.const 0 + end + if + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q|44 + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q|44 + i32.sub + local.set $shift + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue end + else + local.get $c + local.get $q|44 + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 16777216 + i64.gt_u if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 + i64.const 0 + local.set $intValue end end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.5 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.1 (result i32) + local.get $buf + local.set $buf|49 + local.get $intValue + local.set $value|50 + block $~lib/util/dtoa/decimalLen16|inlined.1 (result i32) + local.get $value|50 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $v + local.set $v|52 + local.get $v|52 + i64.const 100000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000 + i64.lt_u + if + local.get $v|52 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|52 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 3 + local.get $v|52 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|52 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|52 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 7 + local.get $v|52 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|52 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|52 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 11 + local.get $v|52 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|52 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|52 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.1 + end + local.set $len + i32.const 0 + drop + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|54 + local.get $value|50 + local.set $v|55 + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|56 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|56 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|56 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|57 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|57 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|57 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|58 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|58 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|58 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|59 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|59 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|59 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|60 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|60 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|60 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|61 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|61 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|61 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|62 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 15196 + local.get $v|55 + local.get $q|62 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|62 + local.set $v|55 + end + local.get $v|55 + i64.const 10 + i64.ge_u + if + local.get $buf|49 + i32.const 15196 + local.get $v|55 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|49 + i32.const 48 + local.get $v|55 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.1 + end + local.set $end|63 + local.get $dotZero + local.set $dotZero|64 + local.get $dotZero|64 + if + local.get $end|63 + i32.const 46 + i32.store16 + local.get $end|63 + i32.const 48 + i32.store16 offset=2 + local.get $end|63 + i32.const 4 + i32.add + local.set $end|63 + end + local.get $end|63 + br $~lib/util/dtoa/finishInteger|inlined.5 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $binSig|8 + i64.const 8388608 i64.or + local.set $binSig|65 + local.get $binExp|7 + local.set $rawExp|66 + local.get $binSig|8 i64.const 0 i64.ne + local.set $regular|67 + local.get $rawExp|66 + i32.const 150 + i32.sub + local.set $expBin|68 + local.get $regular|67 if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 i32.add - local.set $len - local.get $28 + i32.const 0 + local.get $k|69 + i32.sub i32.const 1 - i32.shl + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and + local.set $h|70 + else + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 i32.add - i32.store16 + local.get $k|69 + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + end + local.get $k|69 + i32.const -28 + i32.ge_s + if (result i32) + local.get $k|69 + i32.const 16 + i32.le_s + else + i32.const 0 end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u if - global.get $~lib/util/number/_K - local.get $kappa + i32.const 22448 + i32.const 28 + local.get $k|69 i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 23248 - i32.const 0 - local.get $kappa - i32.sub - i32.const 2 + i32.const 3 i32.shl i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 + i64.load + local.set $pow10Hi|71 + else + i32.const 292 + local.get $k|69 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w|34 - local.get $rest|32 - i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $digit|36 - i32.const 1 - i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 - end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return + call $~lib/util/dtoa/computePow10Compact + local.set $lo|72 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|72 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi|71 end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s + local.get $pow10Hi|71 + i64.const 4294967295 + i64.and + local.get $binSig|65 + i64.mul + local.set $t0|73 + local.get $pow10Hi|71 + i64.const 32 + i64.shr_u + local.get $binSig|65 + i64.mul + local.get $t0|73 + i64.const 32 + i64.shr_u + i64.add + local.set $t1|74 + local.get $t1|74 + i64.const 8 + i64.shl + local.get $t0|73 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid|75 + local.get $mid|75 + i64.const 40 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64|76 + local.get $pow10Hi|71 + i64.const 65 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|65 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|77 + local.get $hi64|76 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne|78 + local.get $hi64|76 + local.get $halfUlp|77 + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp|79 + local.get $dotOne|78 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne|78 + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one|80 + local.get $regular|67 if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + else + local.get $expBin|68 + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 67 + i32.eq + end + if + local.get $one|80 + i32.const 1 + i32.add + local.set $one|80 + end + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 end + local.get $mUp|79 + global.set $~lib/util/dtoa/gSig + local.get $k|69 + global.set $~lib/util/dtoa/gExp + local.get $one|80 + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown|81 + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.set $hasExtraDigit + global.get $~lib/util/dtoa/gExp + i32.const 9 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk i32.const 2 + i32.sub + local.get $hasExtraDigit i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end + local.set $decExp|84 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 - i32.add - local.get $ptr - i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length + i64.const 10 + global.get $~lib/util/dtoa/gSig + i64.mul + local.get $hasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $hasLastDigit + local.get $decExp|84 i32.const 1 - i32.add - return + i32.sub + local.set $decExp|84 + end + local.get $buf + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|86 + i32.const 0 + drop + local.get $value|86 + call $~lib/util/dtoa/toBcd8 + local.set $length + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length + global.set $~lib/util/dtoa/gDigits + local.get $decExp|84 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|84 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s else - i32.const -6 - local.get $kk - i32.lt_s - if (result i32) - local.get $kk - i32.const 0 - i32.le_s - else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|88 + local.get $start + local.set $start|89 + local.get $decExp|84 + local.set $decExp|90 + local.get $hasLastDigit + local.set $hasLastDigit|91 + local.get $hasExtraDigit + local.set $hasExtraDigit|92 + local.get $dotZero + local.set $dotZero|93 + local.get $decExp|90 i32.const 0 - end - if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer + i32.lt_s + if + local.get $start|89 + local.set $p|94 + i64.const 3472328296227680304 + local.set $ascii|95 + i32.const 0 + local.set $off|96 + local.get $p|94 + local.get $off|96 + i32.add + local.set $base|97 + i32.const 0 + drop + local.get $ascii|95 + i64.const 4294967295 + i64.and + local.set $lo|98 + local.get $ascii|95 + i64.const 32 + i64.shr_u + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|99 + local.get $base|97 + local.get $lo|98 + i64.store + local.get $base|97 + local.get $hi|99 + i64.store offset=8 + end i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset - i32.lt_s - if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 - i32.add - local.set $i|7 - br $for-loop|1 - end + local.get $hasLastDigit|91 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 end - local.get $length - local.get $offset i32.add - return - else - local.get $length - i32.const 1 - i32.eq + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|91 + if (result i32) + i32.const 8 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|92 + i32.sub + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + local.get $hasExtraDigit|92 + i32.eqz if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + local.get $dHi + i64.const 8 + i64.shr_u + local.get $lastDigitChar + i64.const 56 + i64.shl + i64.or + local.set $dHi + end + local.get $decExp|90 + i32.const 8 + i32.ge_s + if + local.get $buf|88 + local.set $p|103 + local.get $dHi + local.set $ascii|104 + i32.const 0 + local.set $off|105 + local.get $p|103 + local.get $off|105 + i32.add + local.set $base|106 + i32.const 0 + drop + local.get $ascii|104 + i64.const 4294967295 + i64.and + local.set $lo|107 + local.get $ascii|104 + i64.const 32 + i64.shr_u + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|108 + local.get $base|106 + local.get $lo|107 + i64.store + local.get $base|106 + local.get $hi|108 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 - i32.lt_s - local.set $sign - local.get $sign + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + i32.const 8 + local.get $hasExtraDigit|92 + i32.add + local.set $sig + local.get $buf|88 + local.get $decExp|90 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|88 + local.get $sig + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u if + local.get $z + local.set $p|112 + i64.const 3472328296227680304 + local.set $ascii|113 i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + local.set $off|114 + local.get $p|112 + local.get $off|114 + i32.add + local.set $base|115 + i32.const 0 + drop + local.get $ascii|113 + i64.const 4294967295 + i64.and + local.set $lo|116 + local.get $ascii|113 + i64.const 32 + i64.shr_u + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|117 + local.get $base|115 + local.get $lo|116 + i64.store + local.get $base|115 + local.get $hi|117 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.6 (result i32) + local.get $endByte + local.set $end|118 + local.get $dotZero|93 + local.set $dotZero|119 + local.get $dotZero|119 + if + local.get $end|118 + i32.const 46 + i32.store16 + local.get $end|118 + i32.const 48 + i32.store16 offset=2 + local.get $end|118 + i32.const 4 + i32.add + local.set $end|118 end - local.get $k|9 - call $~lib/util/number/decimalCount32 + local.get $end|118 + br $~lib/util/dtoa/finishInteger|inlined.6 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $numDigits + local.get $hasExtraDigit|92 + i32.add + local.set $n + local.get $n + local.set $endPos + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $n + local.get $decExp|90 + i32.const 1 + i32.add + i32.gt_s + if (result i32) + local.get $n i32.const 1 i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 + else + local.get $decExp|90 i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select - i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + i32.add end - local.set $length - local.get $length - i32.const 2 + local.set $endPos + end + i32.const 1 + local.get $decExp|90 + i32.sub + local.get $decExp|90 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|88 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|88 + local.get $buf|88 + local.set $p|123 + local.get $dHi + local.set $ascii|124 + i32.const 0 + local.set $off|125 + local.get $p|123 + local.get $off|125 + i32.add + local.set $base|126 + i32.const 0 + drop + local.get $ascii|124 + i64.const 4294967295 + i64.and + local.set $lo|127 + local.get $ascii|124 + i64.const 32 + i64.shr_u + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|128 + local.get $base|126 + local.get $lo|127 + i64.store + local.get $base|126 + local.get $hi|128 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 i32.add - return - else - local.get $length + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $decExp|90 i32.const 1 + i32.add + local.set $k|129 + local.get $hasExtraDigit|92 + if (result i64) + local.get $lastDigitChar + else + i64.const 0 + end + local.set $d16 + local.get $k|129 + i32.const 3 i32.shl - local.set $len - local.get $buffer - i32.const 4 + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if (result i64) + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + else + local.get $d16 + end + local.set $fHi + local.get $buf|88 + local.get $k|129 + i32.const 1 i32.add - local.get $buffer - i32.const 2 + i32.const 1 + i32.shl i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer + local.set $p|133 + local.get $fHi + local.set $ascii|134 + i32.const 0 + local.set $off|135 + local.get $p|133 + local.get $off|135 + i32.add + local.set $base|136 + i32.const 0 + drop + local.get $ascii|134 + i64.const 4294967295 + i64.and + local.set $lo|137 + local.get $ascii|134 + i64.const 32 + i64.shr_u + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|138 + local.get $base|136 + local.get $lo|137 + i64.store + local.get $base|136 + local.get $hi|138 + i64.store offset=8 + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|89 i32.const 46 i32.store16 offset=2 - local.get $buffer - local.get $len + end + local.get $buf|88 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|139 + local.get $decExp|90 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|90 + i32.const 1 i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 - i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 - i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.7 (result i32) + local.get $end|139 + local.set $end|140 + local.get $dotZero|93 + local.set $dotZero|141 + local.get $dotZero|141 if - i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 + local.get $end|140 + i32.const 46 + i32.store16 + local.get $end|140 + i32.const 48 + i32.store16 offset=2 + local.get $end|140 + i32.const 4 + i32.add + local.set $end|140 end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 + local.get $end|140 + br $~lib/util/dtoa/finishInteger|inlined.7 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $end|139 + local.get $start|89 + i32.const 2 + i32.add + i32.gt_u + if (result i32) + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select + end + if + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + br $while-continue|1 + end + end + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|93 + if + local.get $end|139 + i32.const 48 i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 + local.get $end|139 + i32.const 2 + i32.add + local.set $end|139 + else + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 end - i32.add - local.set $length - local.get $length - i32.const 2 - i32.add - return end - unreachable + local.get $end|139 + br $~lib/util/dtoa/writeFixedFloat|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 127 - i32.const 23 + block $~lib/util/dtoa/writeExpNotationFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|142 + local.get $start + local.set $start|143 + local.get $decExp|84 + local.set $decExp|144 + local.get $hasLastDigit + local.set $hasLastDigit|145 + local.get $hasExtraDigit + local.set $hasExtraDigit|146 + local.get $buf|142 + local.get $hasExtraDigit|146 + i32.const 1 + i32.shl i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp + local.set $buf|142 + local.get $buf|142 + local.set $p|147 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|148 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 1023 - i32.const 52 + local.set $off|149 + local.get $p|147 + local.get $off|149 i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 22376 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 23072 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v + local.set $base|150 + i32.const 0 + drop + local.get $ascii|148 i64.const 4294967295 i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l + local.set $lo|151 + local.get $ascii|148 i64.const 32 i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 + local.set $hi|152 + local.get $base|150 + local.get $lo|151 + i64.store + local.get $base|150 + local.get $hi|152 + i64.store offset=8 + local.get $buf|142 + i32.const 16 i32.add - i32.const 64 + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + i32.store16 + local.get $buf|142 + local.get $hasLastDigit|145 + if (result i32) + i32.const 9 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|146 + i32.eqz + i32.add + end + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + loop $while-continue|2 + local.get $buf|142 + local.get $start|143 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $buf|142 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $buf|142 + i32.const 2 + i32.sub + local.set $buf|142 + br $while-continue|2 + end + end + local.get $start|143 + i32.load16_u offset=2 + local.set $lead + local.get $start|143 + local.get $lead + i32.store16 + local.get $start|143 + i32.const 46 + i32.store16 offset=2 + local.get $buf|142 + local.get $buf|142 + i32.const 2 + i32.sub + local.get $start|143 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|142 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $buf|142 + local.set $buf|154 + local.get $decExp|144 + local.set $decExp|155 + local.get $decExp|155 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|154 + i32.const 101 + i32.store16 + local.get $buf|154 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|154 + i32.const 4 + i32.add + local.set $buf|154 + local.get $decExp|155 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|154 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|154 + i32.const 15196 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|154 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|154 + i32.const 15196 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|154 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $buf|154 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|154 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + br $~lib/util/dtoa/writeExpNotationFloat|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/rt/itcms/__collect @@ -5631,8 +11114,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 58400 - i32.const 58448 + i32.const 58944 + i32.const 58992 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23039,7 +28522,7 @@ local.get $52 i32.store local.get $52 - i32.const 23312 + i32.const 23344 call $~lib/string/String.__eq i32.eqz if @@ -23076,7 +28559,7 @@ local.get $52 i32.store local.get $52 - i32.const 23376 + i32.const 23408 call $~lib/string/String.__eq i32.eqz if @@ -23094,7 +28577,7 @@ local.get $52 i32.store local.get $52 - i32.const 23456 + i32.const 23488 call $~lib/string/String.__eq i32.eqz if @@ -23113,7 +28596,7 @@ local.get $52 i32.store local.get $52 - i32.const 23504 + i32.const 23536 call $~lib/string/String.__eq i32.eqz if @@ -23131,7 +28614,7 @@ local.get $52 i32.store local.get $52 - i32.const 23552 + i32.const 23584 call $~lib/string/String.__eq i32.eqz if @@ -23150,7 +28633,7 @@ local.get $52 i32.store local.get $52 - i32.const 23600 + i32.const 23632 call $~lib/string/String.__eq i32.eqz if @@ -23168,7 +28651,7 @@ local.get $52 i32.store local.get $52 - i32.const 23648 + i32.const 23680 call $~lib/string/String.__eq i32.eqz if @@ -23186,7 +28669,7 @@ local.get $52 i32.store local.get $52 - i32.const 23712 + i32.const 23744 call $~lib/string/String.__eq i32.eqz if @@ -23204,7 +28687,7 @@ local.get $52 i32.store local.get $52 - i32.const 23792 + i32.const 23824 call $~lib/string/String.__eq i32.eqz if @@ -23222,7 +28705,7 @@ local.get $52 i32.store local.get $52 - i32.const 23840 + i32.const 23872 call $~lib/string/String.__eq i32.eqz if @@ -23240,7 +28723,7 @@ local.get $52 i32.store local.get $52 - i32.const 23904 + i32.const 23936 call $~lib/string/String.__eq i32.eqz if @@ -23258,7 +28741,7 @@ local.get $52 i32.store local.get $52 - i32.const 23968 + i32.const 24000 call $~lib/string/String.__eq i32.eqz if @@ -23294,7 +28777,7 @@ local.get $52 i32.store local.get $52 - i32.const 24032 + i32.const 24064 call $~lib/string/String.__eq i32.eqz if @@ -23330,7 +28813,7 @@ local.get $52 i32.store local.get $52 - i32.const 24064 + i32.const 24096 call $~lib/string/String.__eq i32.eqz if @@ -23348,7 +28831,7 @@ local.get $52 i32.store local.get $52 - i32.const 24096 + i32.const 24128 call $~lib/string/String.__eq i32.eqz if @@ -23366,7 +28849,7 @@ local.get $52 i32.store local.get $52 - i32.const 24128 + i32.const 24160 call $~lib/string/String.__eq i32.eqz if @@ -23384,7 +28867,7 @@ local.get $52 i32.store local.get $52 - i32.const 24176 + i32.const 24208 call $~lib/string/String.__eq i32.eqz if @@ -23402,7 +28885,7 @@ local.get $52 i32.store local.get $52 - i32.const 24224 + i32.const 24256 call $~lib/string/String.__eq i32.eqz if @@ -23420,7 +28903,7 @@ local.get $52 i32.store local.get $52 - i32.const 24272 + i32.const 24304 call $~lib/string/String.__eq i32.eqz if @@ -23438,7 +28921,7 @@ local.get $52 i32.store local.get $52 - i32.const 24320 + i32.const 24352 call $~lib/string/String.__eq i32.eqz if @@ -23456,7 +28939,7 @@ local.get $52 i32.store local.get $52 - i32.const 24368 + i32.const 24400 call $~lib/string/String.__eq i32.eqz if @@ -23492,7 +28975,7 @@ local.get $52 i32.store local.get $52 - i32.const 24400 + i32.const 24432 call $~lib/string/String.__eq i32.eqz if @@ -23546,7 +29029,7 @@ local.get $52 i32.store local.get $52 - i32.const 24448 + i32.const 24480 call $~lib/string/String.__eq i32.eqz if @@ -23564,7 +29047,7 @@ local.get $52 i32.store local.get $52 - i32.const 24480 + i32.const 24512 call $~lib/string/String.__eq i32.eqz if @@ -23582,7 +29065,7 @@ local.get $52 i32.store local.get $52 - i32.const 24528 + i32.const 24560 call $~lib/string/String.__eq i32.eqz if @@ -23600,7 +29083,7 @@ local.get $52 i32.store local.get $52 - i32.const 24560 + i32.const 24592 call $~lib/string/String.__eq i32.eqz if @@ -23636,7 +29119,7 @@ local.get $52 i32.store local.get $52 - i32.const 24608 + i32.const 24640 call $~lib/string/String.__eq i32.eqz if @@ -23654,7 +29137,7 @@ local.get $52 i32.store local.get $52 - i32.const 24656 + i32.const 24688 call $~lib/string/String.__eq i32.eqz if @@ -23672,7 +29155,7 @@ local.get $52 i32.store local.get $52 - i32.const 24720 + i32.const 24752 call $~lib/string/String.__eq i32.eqz if @@ -23683,263 +29166,431 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 3 + f64.div + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.71828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 271.828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 24784 + i32.const 25248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 782 + i32.const 791 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 + f64.const 1.1e-64 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 24032 + i32.const 25296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 783 + i32.const 792 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 12.34 + f64.const 0.000035689 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 24848 + i32.const 25344 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 784 + i32.const 793 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 - f64.const 3 - f64.div + f64.const 1.2345e+21 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 24880 + i32.const 25392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 785 + i32.const 795 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e17 + f64.const 2.9802322387695312e-08 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 24944 + i32.const 25440 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 786 + i32.const 796 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e18 + f64.const -21098088986959632 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25024 + i32.const 25504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 787 + i32.const 797 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.71828 + f64.const -1.0471975511965976e-06 call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25072 + i32.const 25568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 788 + i32.const 798 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.0271828 + f64.const 0.1 + f64.const 0.2 + f64.add call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25120 + i32.const 25648 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 789 + i32.const 799 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 271.828 - call $~lib/util/number/dtoa + i32.const -1200308943 + f32.reinterpret_i32 + call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25168 + i32.const 25712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 790 + i32.const 802 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e+128 - call $~lib/util/number/dtoa + i32.const 1834568555 + f32.reinterpret_i32 + call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25216 + i32.const 25760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 791 + i32.const 803 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e-64 - call $~lib/util/number/dtoa + i32.const -1028315311 + f32.reinterpret_i32 + call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25264 + i32.const 25808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 792 + i32.const 804 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.000035689 - call $~lib/util/number/dtoa + i32.const 1284332752 + f32.reinterpret_i32 + call $~lib/util/number/dtoa local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25312 + i32.const 25856 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 793 + i32.const 805 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25360 - i32.const 25392 + i32.const 25904 + i32.const 25936 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25424 + i32.const 25968 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 820 + i32.const 810 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 688 - i32.const 25472 + i32.const 26016 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25472 + i32.const 26016 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 821 + i32.const 811 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25472 + i32.const 26016 i32.const 688 call $~lib/string/String#concat local.set $52 @@ -23947,13 +29598,13 @@ local.get $52 i32.store local.get $52 - i32.const 25472 + i32.const 26016 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 822 + i32.const 812 i32.const 1 call $~lib/builtins/abort unreachable @@ -23972,55 +29623,55 @@ if i32.const 0 i32.const 96 - i32.const 823 + i32.const 813 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25504 - i32.const 25504 + i32.const 26048 + i32.const 26048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 831 + i32.const 821 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25504 - i32.const 25504 + i32.const 26048 + i32.const 26048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 832 + i32.const 822 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25536 - i32.const 25536 + i32.const 26080 + i32.const 26080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 833 + i32.const 823 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25568 - i32.const 25568 + i32.const 26112 + i32.const 26112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 834 + i32.const 824 i32.const 1 call $~lib/builtins/abort unreachable @@ -24339,7 +29990,7 @@ if i32.const 15024 i32.const 15152 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -24519,7 +30170,7 @@ if i32.const 15024 i32.const 15152 - i32.const 350 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable @@ -24671,7 +30322,7 @@ if i32.const 15024 i32.const 15152 - i32.const 401 + i32.const 349 i32.const 5 call $~lib/builtins/abort unreachable @@ -24859,7 +30510,7 @@ if i32.const 15024 i32.const 15152 - i32.const 431 + i32.const 379 i32.const 5 call $~lib/builtins/abort unreachable @@ -24990,288 +30641,882 @@ local.tee $out i32.store local.get $out - local.get $sign - i32.add - local.set $buffer|14 - local.get $value - local.set $num|15 - local.get $decimals|13 - local.set $offset|16 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|14 - local.get $num|15 - local.get $offset|16 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|17 - global.get $~lib/memory/__stack_pointer - local.get $decimals|17 + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) + (local $result i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 22256 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value + local.get $value + f64.ne + if + i32.const 6672 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 7936 + i32.const 22288 + local.get $value + f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s + f64.eq + if + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 15196 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 15196 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $out + local.get $digits i32.const 1 i32.shl - local.get $sign i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or i32.store - local.get $out - local.get $sign + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $value - local.get $decimals|17 - local.get $radix - call $~lib/util/number/utoa64_any_core + global.set $~lib/memory/__stack_pointer + local.get $17 + return end end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $18 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 22320 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 22320 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $18 + local.get $17 return ) - (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $exactIntegerRange i32) + (local $bits i32) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f32.const 0 + f32.eq + if + i32.const 22256 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f32.ne if - i32.const 22256 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 6672 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + i32.const 7936 + i32.const 22288 + local.get $value + f32.const 0 + f32.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $bits + local.get $bits + i32.const 1065353216 + i32.ge_u + if (result i32) + local.get $bits + i32.const 1266679808 + i32.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f32_s + local.set $integer + local.get $value + local.get $integer + f32.convert_i32_s + f32.eq if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 6672 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 15196 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 15196 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 7936 - i32.const 22288 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 22320 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 22320 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.eq + drop + i32.const 22320 + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.1 (result i32) - local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 22256 - br $~lib/util/number/dtoa_impl|inlined.1 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|1 - local.get $value|1 - f64.ne - if - i32.const 6672 - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 7936 - i32.const 22288 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 22320 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 22320 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.1 - end - local.set $5 + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 22320 + local.get $size + memory.copy + local.get $result|16 + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/util/number/dtoa (param $value i32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $value i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.2 (result i32) + i32.eq + if + i32.const 22256 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + end + i32.const 1 + i32.eqz + drop + i32.const 0 + local.set $exactIntegerRange + i32.const 0 + drop + local.get $exactIntegerRange + if local.get $value - f64.convert_i32_u - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 22256 - br $~lib/util/number/dtoa_impl|inlined.2 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + local.set $integer + local.get $value + local.get $integer + i32.eq if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative if - i32.const 6672 - br $~lib/util/number/dtoa_impl|inlined.2 + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out end - i32.const 7936 - i32.const 22288 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.2 + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 15196 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 15196 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 15196 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return end - i32.const 22320 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 22320 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.2 end - local.set $5 + i32.const 0 + drop + i32.const 22320 + local.get $value + f64.convert_i32_u + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|15 + i32.store offset=4 + local.get $result|15 + i32.const 22320 + local.get $size + memory.copy + local.get $result|15 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $16 return ) ) diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index ed9cf71122..f48efc4ff5 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -8,19 +8,18 @@ (type $6 (func (result i32))) (type $7 (func (param i32) (result f64))) (type $8 (func (param i64 i32) (result i32))) - (type $9 (func (param i32 i32) (result f64))) - (type $10 (func (param i32 i32 i32))) - (type $11 (func (param i32 i32 i32 i32))) - (type $12 (func (param f64) (result i32))) - (type $13 (func (param i32 i32 i32 i32) (result i32))) - (type $14 (func (param i32 i64 i32 i32))) - (type $15 (func (param f32) (result i32))) - (type $16 (func (param f64 i32) (result i32))) + (type $9 (func (param f64) (result i32))) + (type $10 (func (param i32 i32) (result f64))) + (type $11 (func (param f32) (result i32))) + (type $12 (func (param i32 i32 i32))) + (type $13 (func (param i32 i32 i32 i32))) + (type $14 (func (param i32 i32 i32 i32) (result i32))) + (type $15 (func (param i32) (result i64))) + (type $16 (func (param i32 i64 i32 i32))) (type $17 (func (result i64))) (type $18 (func (param i32 i64 i32))) (type $19 (func (param i32 i32 i64))) (type $20 (func (param f64 i32) (result f64))) - (type $21 (func (param i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -35,13 +34,16 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/util/string/__fixmulShift (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 59404)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 59948)) (memory $0 1) (data $0 (i32.const 1036) "<") (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") @@ -883,104 +885,122 @@ (data $422.1 (i32.const 23272) "\02\00\00\00\06\00\00\000\00.\000") (data $423 (i32.const 23292) ",") (data $423.1 (i32.const 23304) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $425 (i32.const 23400) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $427 (i32.const 24264) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $428 (i32.const 24348) "<") + (data $428.1 (i32.const 24360) "\02\00\00\00,\00\00\00-\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") + (data $429 (i32.const 24412) "L") + (data $429.1 (i32.const 24424) "\02\00\00\000\00\00\00-\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") + (data $430 (i32.const 24492) ",") + (data $430.1 (i32.const 24504) "\02\00\00\00\18\00\00\001\00.\001\009\002\000\009\002\009\00e\00-\007") + (data $431 (i32.const 24540) ",") + (data $431.1 (i32.const 24552) "\02\00\00\00\1a\00\00\00-\001\00.\001\009\002\000\009\002\009\00e\00-\007") + (data $432 (i32.const 24588) ",") + (data $432.1 (i32.const 24600) "\02\00\00\00\1a\00\00\003\00.\004\000\002\008\002\003\005\00e\00+\003\008") + (data $433 (i32.const 24636) ",") + (data $433.1 (i32.const 24648) "\02\00\00\00\1c\00\00\00-\003\00.\004\000\002\008\002\003\005\00e\00+\003\008") + (data $434 (i32.const 24684) "<") + (data $434.1 (i32.const 24696) "\02\00\00\00,\00\00\004\00.\001\008\005\005\008\000\004\009\006\008\002\001\003\005\007\00e\00+\002\009\008") + (data $435 (i32.const 24748) "L") + (data $435.1 (i32.const 24760) "\02\00\00\00.\00\00\002\00.\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\004\00e\00-\003\000\008") + (data $436 (i32.const 24828) ",") + (data $436.1 (i32.const 24840) "\02\00\00\00\1a\00\00\004\00.\009\004\000\006\005\006\00e\00-\003\001\008") + (data $437 (i32.const 24876) "<") + (data $437.1 (i32.const 24888) "\02\00\00\00$\00\00\009\000\006\000\008\000\001\001\005\003\004\003\003\006\000\000\00.\000") + (data $438 (i32.const 24940) "<") + (data $438.1 (i32.const 24952) "\02\00\00\00*\00\00\004\007\000\008\003\005\006\000\002\004\007\001\001\005\001\002\000\000\000\00.\000") + (data $439 (i32.const 25004) "<") + (data $439.1 (i32.const 25016) "\02\00\00\00*\00\00\009\004\000\009\003\004\000\000\001\002\005\006\008\002\004\008\000\000\000\00.\000") + (data $440 (i32.const 25068) "\1c") + (data $440.1 (i32.const 25080) "\02\00\00\00\06\00\00\001\00.\000") + (data $441 (i32.const 25100) "\1c") + (data $441.1 (i32.const 25112) "\02\00\00\00\08\00\00\00-\001\00.\000") + (data $442 (i32.const 25132) "\1c") + (data $442.1 (i32.const 25144) "\02\00\00\00\08\00\00\00-\000\00.\001") + (data $443 (i32.const 25164) ",") + (data $443.1 (i32.const 25176) "\02\00\00\00\12\00\00\001\000\000\000\000\000\000\00.\000") + (data $444 (i32.const 25212) ",") + (data $444.1 (i32.const 25224) "\02\00\00\00\10\00\00\000\00.\000\000\000\000\000\001") + (data $445 (i32.const 25260) ",") + (data $445.1 (i32.const 25272) "\02\00\00\00\14\00\00\00-\001\000\000\000\000\000\000\00.\000") + (data $446 (i32.const 25308) ",") + (data $446.1 (i32.const 25320) "\02\00\00\00\12\00\00\00-\000\00.\000\000\000\000\000\001") + (data $447 (i32.const 25356) ",") + (data $447.1 (i32.const 25368) "\02\00\00\00\14\00\00\001\000\000\000\000\000\000\000\00.\000") + (data $448 (i32.const 25404) "\1c") + (data $448.1 (i32.const 25416) "\02\00\00\00\08\00\00\001\00e\00-\007") + (data $449 (i32.const 25436) ",") + (data $449.1 (i32.const 25448) "\02\00\00\00\0e\00\00\00-\001\00e\00+\003\000\008") + (data $450 (i32.const 25484) "\1c") + (data $450.1 (i32.const 25496) "\02\00\00\00\0c\00\00\001\00e\00-\003\000\008") + (data $451 (i32.const 25516) ",") + (data $451.1 (i32.const 25528) "\02\00\00\00\0e\00\00\00-\001\00e\00-\003\000\008") + (data $452 (i32.const 25564) "\1c") + (data $452.1 (i32.const 25576) "\02\00\00\00\0c\00\00\001\00e\00-\003\002\003") + (data $453 (i32.const 25596) ",") + (data $453.1 (i32.const 25608) "\02\00\00\00\0e\00\00\00-\001\00e\00-\003\002\003") + (data $454 (i32.const 25644) ",") + (data $454.1 (i32.const 25656) "\02\00\00\00\18\00\00\004\002\009\004\009\006\007\002\007\002\00.\000") + (data $455 (i32.const 25692) "<") + (data $455.1 (i32.const 25704) "\02\00\00\00*\00\00\001\00.\002\003\001\002\001\004\005\006\007\003\004\005\006\002\003\004\00e\00-\008") + (data $456 (i32.const 25756) "<") + (data $456.1 (i32.const 25768) "\02\00\00\00\"\00\00\005\005\005\005\005\005\005\005\005\00.\005\005\005\005\005\005\006") + (data $457 (i32.const 25820) "<") + (data $457.1 (i32.const 25832) "\02\00\00\00$\00\00\000\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") + (data $458 (i32.const 25884) "\1c") + (data $458.1 (i32.const 25896) "\02\00\00\00\n\00\00\001\002\00.\003\004") + (data $459 (i32.const 25916) "<") + (data $459.1 (i32.const 25928) "\02\00\00\00$\00\00\000\00.\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") + (data $460 (i32.const 25980) "L") + (data $460.1 (i32.const 25992) "\02\00\00\00.\00\00\001\002\003\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00.\000") + (data $461 (i32.const 26060) ",") + (data $461.1 (i32.const 26072) "\02\00\00\00\12\00\00\001\00.\002\003\004\00e\00+\002\001") + (data $462 (i32.const 26108) ",") + (data $462.1 (i32.const 26120) "\02\00\00\00\0e\00\00\002\00.\007\001\008\002\008") + (data $463 (i32.const 26156) ",") + (data $463.1 (i32.const 26168) "\02\00\00\00\12\00\00\000\00.\000\002\007\001\008\002\008") + (data $464 (i32.const 26204) ",") + (data $464.1 (i32.const 26216) "\02\00\00\00\0e\00\00\002\007\001\00.\008\002\008") + (data $465 (i32.const 26252) ",") + (data $465.1 (i32.const 26264) "\02\00\00\00\10\00\00\001\00.\001\00e\00+\001\002\008") + (data $466 (i32.const 26300) ",") + (data $466.1 (i32.const 26312) "\02\00\00\00\0e\00\00\001\00.\001\00e\00-\006\004") + (data $467 (i32.const 26348) ",") + (data $467.1 (i32.const 26360) "\02\00\00\00\16\00\00\000\00.\000\000\000\000\003\005\006\008\009") + (data $468 (i32.const 26396) ",") + (data $468.1 (i32.const 26408) "\02\00\00\00\14\00\00\001\00.\002\003\004\005\00e\00+\002\001") + (data $469 (i32.const 26444) "<") + (data $469.1 (i32.const 26456) "\02\00\00\00*\00\00\002\00.\009\008\000\002\003\002\002\003\008\007\006\009\005\003\001\002\00e\00-\008") + (data $470 (i32.const 26508) "<") + (data $470.1 (i32.const 26520) "\02\00\00\00(\00\00\00-\002\001\000\009\008\000\008\008\009\008\006\009\005\009\006\003\000\00.\000") + (data $471 (i32.const 26572) "L") + (data $471.1 (i32.const 26584) "\02\00\00\002\00\00\00-\000\00.\000\000\000\000\000\001\000\004\007\001\009\007\005\005\001\001\009\006\005\009\007\006") + (data $472 (i32.const 26652) "<") + (data $472.1 (i32.const 26664) "\02\00\00\00&\00\00\000\00.\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004") + (data $473 (i32.const 26716) ",") + (data $473.1 (i32.const 26728) "\02\00\00\00\1c\00\00\00-\000\00.\000\000\000\000\005\008\003\005\000\003\003") + (data $474 (i32.const 26764) ",") + (data $474.1 (i32.const 26776) "\02\00\00\00\18\00\00\004\00.\002\000\003\000\008\009\00e\00+\002\007") + (data $475 (i32.const 26812) ",") + (data $475.1 (i32.const 26824) "\02\00\00\00\12\00\00\00-\009\000\00.\005\007\006\007\009") + (data $476 (i32.const 26860) ",") + (data $476.1 (i32.const 26872) "\02\00\00\00\14\00\00\007\004\001\001\004\006\009\000\00.\000") + (data $477 (i32.const 26908) "\1c") + (data $477.1 (i32.const 26920) "\02\00\00\00\0c\00\00\00H\00e\00l\00l\00o\00 ") + (data $478 (i32.const 26940) "\1c") + (data $478.1 (i32.const 26952) "\02\00\00\00\n\00\00\00W\00o\00r\00l\00d") + (data $479 (i32.const 26972) ",") + (data $479.1 (i32.const 26984) "\02\00\00\00\16\00\00\00H\00e\00l\00l\00o\00 \00W\00o\00r\00l\00d") + (data $480 (i32.const 27020) "\1c") + (data $480.1 (i32.const 27032) "\02\00\00\00\06\00\00\00b\00a\00r") + (data $481 (i32.const 27052) "\1c") + (data $481.1 (i32.const 27064) "\02\00\00\00\04\00\00\00\c0\00\c8") + (data $482 (i32.const 27084) "\1c") + (data $482.1 (i32.const 27096) "\02\00\00\00\04\00\00\00\d8S\cf\91") + (data $483 (i32.const 27116) "\1c") + (data $483.1 (i32.const 27128) "\02\00\00\00\08\00\00\00A\d8\0e\dfA\d81\df") + (data $484 (i32.const 27152) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02A") (export "getString" (func $std/string/getString)) (export "memory" (memory $0)) (start $~start) @@ -991,11 +1011,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1075,11 +1095,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1109,11 +1129,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1132,7 +1152,7 @@ if i32.const 16048 i32.const 16176 - i32.const 401 + i32.const 349 i32.const 5 call $~lib/builtins/abort unreachable @@ -1349,7 +1369,7 @@ local.get $0 local.set $2 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$179 (result i32) local.get $1 i32.popcnt i32.const 1 @@ -1367,7 +1387,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$180 + br $__inlined_func$~lib/util/number/ulog_base$179 end local.get $1 i64.extend_i32_s @@ -1438,73 +1458,281 @@ (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 23280 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 + i64.const 0 + i64.store + local.get $0 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 23280 + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if local.get $0 local.get $0 - f64.sub - f64.const 0 f64.ne if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 7696 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 8960 - i32.const 23312 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 + return end global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8960 + i32.const 23312 local.get $0 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - call $~lib/rt/itcms/__new + f64.const 0 + f64.lt + select + return + end + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.const 4741671816366391296 + i64.le_u + local.get $4 + i64.const 4607182418800017408 + i64.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f64_s local.tee $1 - i32.store - local.get $1 - i32.const 23344 - local.get $2 - memory.copy + f64.convert_i32_s + f64.eq + if + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $6 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 100 + i32.lt_u + if (result i32) + local.get $6 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $6 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $6 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $6 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $6 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $6 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $6 + i32.const 10 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + else + local.get $6 + i32.const 100 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + else + local.get $6 + i32.const 10000 + i32.lt_u + if + local.get $6 + local.get $6 + i32.const 100 + i32.div_u + local.tee $7 + i32.const 100 + i32.mul + i32.sub + local.set $5 + local.get $6 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $7 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $6 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + call $~lib/util/dtoa/dtoa_buffered + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 23344 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1517,11 +1745,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1540,7 +1768,7 @@ if i32.const 16048 i32.const 16176 - i32.const 350 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable @@ -1690,7 +1918,7 @@ i64.extend_i32_u local.set $4 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$174 (result i32) local.get $1 i32.popcnt i32.const 1 @@ -1708,7 +1936,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$175 + br $__inlined_func$~lib/util/number/ulog_base$174 end local.get $1 i64.extend_i32_s @@ -2098,11 +2326,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2128,11 +2356,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2197,11 +2425,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2220,7 +2448,7 @@ if i32.const 16048 i32.const 16176 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -2392,7 +2620,7 @@ i64.extend_i32_u local.set $5 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$170 (result i32) local.get $1 i32.popcnt i32.const 1 @@ -2410,7 +2638,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$171 + br $__inlined_func$~lib/util/number/ulog_base$170 end local.get $1 i64.extend_i32_s @@ -2504,11 +2732,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2867,11 +3095,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2902,11 +3130,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2925,7 +3153,7 @@ if i32.const 16048 i32.const 16176 - i32.const 431 + i32.const 379 i32.const 5 call $~lib/builtins/abort unreachable @@ -3169,7 +3397,7 @@ local.get $0 local.set $2 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$184 (result i32) local.get $1 i32.popcnt i32.const 1 @@ -3187,7 +3415,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$185 + br $__inlined_func$~lib/util/number/ulog_base$184 end local.get $1 i64.extend_i32_s @@ -3273,11 +3501,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3387,11 +3615,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3477,11 +3705,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3637,11 +3865,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3729,11 +3957,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3788,11 +4016,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3839,11 +4067,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3933,11 +4161,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4126,19 +4354,23 @@ end i32.const 0 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4147,13 +4379,287 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 + f32.const 0 + f32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 23280 + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.ne + if + local.get $0 + local.get $0 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7696 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8960 + i32.const 23312 + local.get $0 + f32.const 0 + f32.lt + select + return + end + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1266679808 + i32.le_u + local.get $1 + i32.const 1065353216 + i32.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f32_s + local.tee $1 + f32.convert_i32_s + f32.eq + if + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $5 + i32.const 10 + i32.lt_u + if + local.get $2 + local.get $5 + i32.const 48 + i32.add + i32.store16 + else + local.get $5 + i32.const 100 + i32.lt_u + if + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + else + local.get $5 + i32.const 10000 + i32.lt_u + if + local.get $5 + local.get $5 + i32.const 100 + i32.div_u + local.tee $6 + i32.const 100 + i32.mul + i32.sub + local.set $4 + local.get $5 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $5 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/dtoa/ftoa_buffered + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 23344 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 27180 + i32.lt_s + if + i32.const 59968 + i32.const 60016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 i32.gt_s select local.tee $3 @@ -4251,11 +4757,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4348,11 +4854,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4474,11 +4980,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4606,11 +5112,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4670,11 +5176,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4699,7 +5205,7 @@ loop $while-continue|0 local.get $1 if (result i32) - block $__inlined_func$~lib/util/string/isSpace$4 (result i32) + block $__inlined_func$~lib/util/string/isSpace$5 (result i32) local.get $0 local.get $1 i32.add @@ -4721,7 +5227,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace$4 + br $__inlined_func$~lib/util/string/isSpace$5 end i32.const 1 local.get $3 @@ -4729,7 +5235,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$4 + br_if $__inlined_func$~lib/util/string/isSpace$5 drop block $break|0 block $case6|0 @@ -4764,7 +5270,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$4 + br $__inlined_func$~lib/util/string/isSpace$5 end i32.const 0 end @@ -4788,7 +5294,7 @@ local.get $2 i32.gt_u if (result i32) - block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + block $__inlined_func$~lib/util/string/isSpace$6 (result i32) local.get $0 local.get $2 i32.add @@ -4808,7 +5314,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace$5 + br $__inlined_func$~lib/util/string/isSpace$6 end i32.const 1 local.get $3 @@ -4816,7 +5322,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$5 + br_if $__inlined_func$~lib/util/string/isSpace$6 drop block $break|00 block $case6|01 @@ -4851,7 +5357,7 @@ br $break|00 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$5 + br $__inlined_func$~lib/util/string/isSpace$6 end i32.const 0 end @@ -5018,7 +5524,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5043,7 +5549,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5328,8 +5834,8 @@ end br $folding-inner4 end - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5363,11 +5869,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5435,11 +5941,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5469,11 +5975,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5503,11 +6009,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5552,11 +6058,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5665,19 +6171,192 @@ global.set $~lib/memory/__stack_pointer i32.const -1 ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) + (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + local.get $0 + i32.const 10 + i32.add + local.tee $2 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.tee $3 + i32.const 4 + i32.shl + i32.const 23896 + i32.add + local.tee $4 + i64.load + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 + i64.const 4294967295 + i64.and + local.set $10 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $6 + i32.const 0 + local.get $2 + local.get $3 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 + i32.shl + i32.const 23688 + i32.add + i64.load + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + local.get $1 + local.get $11 + i64.mul + local.set $8 + local.get $12 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + local.tee $5 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $6 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + local.get $9 + local.get $11 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 24264 + i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + ) + (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 27180 + i32.lt_s + if + i32.const 59968 + i32.const 60016 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable @@ -5783,11 +6462,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5917,11 +6596,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5987,11 +6666,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6022,7 +6701,7 @@ loop $while-continue|0 local.get $5 if (result i32) - block $__inlined_func$~lib/util/string/isSpace$7 (result i32) + block $__inlined_func$~lib/util/string/isSpace$8 (result i32) local.get $4 i32.const 128 i32.or @@ -6037,7 +6716,7 @@ local.get $4 i32.const 5760 i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$7 + br_if $__inlined_func$~lib/util/string/isSpace$8 drop i32.const 1 local.get $4 @@ -6045,7 +6724,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$7 + br_if $__inlined_func$~lib/util/string/isSpace$8 drop block $break|0 block $case6|0 @@ -6080,7 +6759,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$7 + br $__inlined_func$~lib/util/string/isSpace$8 end i32.const 0 end @@ -6887,80 +7566,6 @@ end end ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 23280 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - i32.const 7696 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 8960 - i32.const 23312 - local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.1 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 23344 - local.get $3 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) (local $1 i32) block $1of1 @@ -6986,11 +7591,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7025,11 +7630,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7135,7 +7740,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 59404 + i32.const 59948 i32.lt_u if local.get $0 @@ -7231,7 +7836,7 @@ unreachable end local.get $0 - i32.const 59404 + i32.const 59948 i32.lt_u if local.get $0 @@ -7254,7 +7859,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 59404 + i32.const 59948 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -7351,333 +7956,20 @@ memory.copy local.get $2 ) - (func $~lib/util/number/dtoa_core (param $0 f64) (param $1 i32) (result i32) - (local $2 i64) + (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 27180 + i32.lt_s if - i32.const 23344 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - local.set $0 - end - local.get $1 - if (result i32) - local.get $0 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $5 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $9 - local.get $5 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.set $2 - local.get $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - else - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.set $2 - local.get $5 - i32.const 1 - local.get $5 - select - i32.const 1075 - i32.sub - end - local.tee $9 - i32.const 1 - i32.sub - local.get $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 - local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 8388608 - i64.const 4503599627370496 - local.get $1 - select - i64.eq - i32.const 1 - i32.add - local.tee $1 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $1 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $5 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $1 - local.get $1 - f64.convert_i32_s - local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 3 - i32.shl - local.tee $5 - i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 23400 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $1 - i32.const 1 - i32.shl - i32.const 24096 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - i32.const 23344 - i32.add - local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $13 - i64.mul - local.get $8 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $15 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $3 - call $~lib/util/number/genDigits - local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $3 - i32.add - ) - (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7747,11 +8039,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7775,7 +8067,7 @@ local.get $2 i32.lt_u if (result i32) - block $__inlined_func$~lib/util/string/isSpace (result i32) + block $__inlined_func$~lib/util/string/isSpace$1 (result i32) local.get $0 local.get $1 i32.add @@ -7795,7 +8087,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace + br $__inlined_func$~lib/util/string/isSpace$1 end i32.const 1 local.get $3 @@ -7803,7 +8095,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace + br_if $__inlined_func$~lib/util/string/isSpace$1 drop block $break|0 block $case6|0 @@ -7838,7 +8130,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace + br $__inlined_func$~lib/util/string/isSpace$1 end i32.const 0 end @@ -7903,11 +8195,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7930,7 +8222,7 @@ loop $while-continue|0 local.get $1 if (result i32) - block $__inlined_func$~lib/util/string/isSpace$1 (result i32) + block $__inlined_func$~lib/util/string/isSpace$2 (result i32) local.get $0 local.get $1 i32.add @@ -7952,7 +8244,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace$1 + br $__inlined_func$~lib/util/string/isSpace$2 end i32.const 1 local.get $2 @@ -7960,7 +8252,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$1 + br_if $__inlined_func$~lib/util/string/isSpace$2 drop block $break|0 block $case6|0 @@ -7995,7 +8287,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$1 + br $__inlined_func$~lib/util/string/isSpace$2 end i32.const 0 end @@ -8057,11 +8349,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8086,7 +8378,7 @@ loop $while-continue|0 local.get $1 if (result i32) - block $__inlined_func$~lib/util/string/isSpace$2 (result i32) + block $__inlined_func$~lib/util/string/isSpace$3 (result i32) local.get $0 local.get $1 i32.add @@ -8108,7 +8400,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace$2 + br $__inlined_func$~lib/util/string/isSpace$3 end i32.const 1 local.get $4 @@ -8116,7 +8408,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$2 + br_if $__inlined_func$~lib/util/string/isSpace$3 drop block $break|0 block $case6|0 @@ -8151,7 +8443,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$2 + br $__inlined_func$~lib/util/string/isSpace$3 end i32.const 0 end @@ -8171,7 +8463,7 @@ local.get $2 i32.gt_u if (result i32) - block $__inlined_func$~lib/util/string/isSpace$3 (result i32) + block $__inlined_func$~lib/util/string/isSpace$4 (result i32) local.get $0 local.get $2 i32.add @@ -8191,7 +8483,7 @@ i32.const 4 i32.le_u i32.or - br $__inlined_func$~lib/util/string/isSpace$3 + br $__inlined_func$~lib/util/string/isSpace$4 end i32.const 1 local.get $4 @@ -8199,7 +8491,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$3 + br_if $__inlined_func$~lib/util/string/isSpace$4 drop block $break|00 block $case6|01 @@ -8234,7 +8526,7 @@ br $break|00 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$3 + br $__inlined_func$~lib/util/string/isSpace$4 end i32.const 0 end @@ -8304,11 +8596,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8349,11 +8641,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8394,11 +8686,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8439,11 +8731,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8912,7 +9204,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$287 + block $__inlined_func$~lib/rt/itcms/Object#unlink$289 local.get $0 i32.load offset=4 i32.const -4 @@ -8924,7 +9216,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 59404 + i32.const 59948 i32.lt_u i32.and i32.eqz @@ -8936,7 +9228,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$287 + br $__inlined_func$~lib/rt/itcms/Object#unlink$289 end local.get $0 i32.load offset=8 @@ -8973,7 +9265,7 @@ i32.const 1 else local.get $1 - i32.const 26608 + i32.const 27152 i32.load i32.gt_u if @@ -8987,7 +9279,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 26612 + i32.const 27156 i32.add i32.load i32.const 32 @@ -9056,7 +9348,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9069,7 +9361,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9114,8 +9406,8 @@ end unreachable end - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9148,11 +9440,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9176,7 +9468,7 @@ i32.load16_u local.set $1 loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$9 (result i32) + block $__inlined_func$~lib/util/string/isSpace$10 (result i32) local.get $1 i32.const 128 i32.or @@ -9191,7 +9483,7 @@ local.get $1 i32.const 5760 i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$9 + br_if $__inlined_func$~lib/util/string/isSpace$10 drop i32.const 1 local.get $1 @@ -9199,7 +9491,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$9 + br_if $__inlined_func$~lib/util/string/isSpace$10 drop block $break|0 block $case6|0 @@ -9234,7 +9526,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$9 + br $__inlined_func$~lib/util/string/isSpace$10 end i32.const 0 end @@ -9453,11 +9745,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9481,7 +9773,7 @@ i32.load16_u local.set $1 loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$8 (result i32) + block $__inlined_func$~lib/util/string/isSpace$9 (result i32) local.get $1 i32.const 128 i32.or @@ -9496,7 +9788,7 @@ local.get $1 i32.const 5760 i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$8 + br_if $__inlined_func$~lib/util/string/isSpace$9 drop i32.const 1 local.get $1 @@ -9504,7 +9796,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$8 + br_if $__inlined_func$~lib/util/string/isSpace$9 drop block $break|0 block $case6|0 @@ -9539,7 +9831,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$8 + br $__inlined_func$~lib/util/string/isSpace$9 end i32.const 0 end @@ -9828,329 +10120,2448 @@ local.get $2 call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/dtoa/dtoa_buffered (param $0 f64) (result i32) + (local $1 i64) + (local $2 i64) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $1 - i32.const 0 - i32.gt_s - local.tee $3 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i32.store16 - local.get $3 - if - local.get $2 - local.get $1 - i32.store16 offset=2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ge_u - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $5 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i64.const 4503599627370495 + i64.and + local.set $4 local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $3 + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $5 + i32.const 1 + i32.sub + i32.const 2046 i32.lt_u + local.tee $6 + i32.eqz if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz + local.get $5 if - i32.const 0 - i32.const 1648 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $4 + i64.const 0 + i64.ne + if + i32.const 23344 + i32.const 78 + i32.store16 + i32.const 23346 + i32.const 97 + i32.store16 + i32.const 23348 + i32.const 78 + i32.store16 + i32.const 23350 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + if (result i32) + i32.const 23344 + i32.const 45 + i32.store16 + i32.const 23346 + else + i32.const 23344 + end + local.tee $3 + i64.const 29555310648492105 + i64.store + local.get $3 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $4 + i64.eqz + if + i32.const 23344 + i32.const 48 + i32.store16 + i32.const 23346 + i32.const 46 + i32.store16 + i32.const 23348 + i32.const 48 + i32.store16 + i32.const 23350 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $3 + if (result i32) + i32.const 23344 + i32.const 45 + i32.store16 + i32.const 23346 else - i32.const 0 + i32.const 23344 end - end - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 59408 - i32.const 0 - i32.store - i32.const 60976 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.set $3 + local.get $6 if - local.get $0 - i32.const 2 - i32.shl - i32.const 59408 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 + local.get $4 + i64.const 4503599627370496 + i64.or local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u + local.get $5 + i32.const 1075 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if (result i64) + i32.const 0 + local.get $7 + i32.sub + local.tee $7 + i32.const 52 + i32.le_s + if (result i64) + local.get $1 + local.get $7 + i64.extend_i32_s + local.tee $2 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $2 + i64.shl + i64.const 1 + i64.sub + local.get $1 + i64.and + i64.eqz + select + else + i64.const 0 + end + else + local.get $7 + i32.const 11 + i32.lt_s + if (result i64) + local.get $1 + local.get $7 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 10000000000000000 + i64.ge_u + if (result i64) + i64.const 0 + else + local.get $1 + end + else + i64.const 0 + end + end + local.tee $2 + i64.const 0 + i64.ne + if + local.get $3 + local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $2 + i64.const 100000000 + i64.lt_u + if + local.get $2 + i64.const 10000 + i64.lt_u + if + local.get $2 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $2 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $2 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 1000000000000 + i64.lt_u + if + local.get $2 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $2 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $6 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + i64.const 100 + i64.ge_u if - local.get $0 + local.get $5 i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 i32.shl - local.get $1 + i32.const 16220 i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 i32.const 2 i32.shl - i32.const 59408 + i32.const 16220 i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 i32.add - local.set $1 - br $for-loop|1 + i32.load + i32.store end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 59408 - i32.const 60980 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 59408 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 10 + i64.ge_u + if + local.get $3 + local.get $2 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $2 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $6 + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $5 + i32.const 1075 + i32.sub + local.set $6 + local.get $4 + i64.eqz + if + local.get $6 + i32.const -1 + local.get $6 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + i32.const 20 + i32.shr_s + local.tee $5 + i32.sub + local.tee $6 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.set $7 + block $~lib/util/dtoa/computePow10|inlined.0 + local.get $6 + i32.const 293 + i32.add + local.tee $6 + i32.const 320 + i32.le_s + local.get $6 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $6 + i32.sub + local.tee $6 + i32.const 3 + i32.shl + i32.const 23336 + i32.add + i64.load + local.set $1 + local.get $6 + i32.const 44 + i32.le_s + if + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $6 + i32.const 3 + i32.shl + i32.const 23472 + i32.add + i64.load + drop + local.get $1 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $6 + call $~lib/util/dtoa/computePow10Compact + drop + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $1 + i64.const 11 + local.get $7 + i64.extend_i32_s + local.tee $2 + i64.sub + i64.shr_u + local.set $4 + local.get $1 + local.get $2 + i64.const 53 + i64.add + local.tee $8 + i64.shl + local.tee $9 + local.get $8 + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $2 + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $2 + i64.sub + i64.shr_u + local.set $2 + i64.const 10 + i64.const 2 + local.get $1 + i32.const 0 + local.get $7 + i32.sub + i64.extend_i32_s + i64.shr_u + local.tee $1 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + local.get $9 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + local.tee $8 + i64.const 511 + i64.and + i64.lt_u + if (result i64) + local.get $8 + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $2 + end + local.get $9 + i64.const 4611686018427387904 + i64.eq + select + i64.const 0 + local.get $1 + i64.const 1 + i64.shr_u + local.get $9 + i64.le_u + select + local.get $1 + i64.const -1 + local.get $9 + i64.sub + i64.gt_u + select + local.tee $1 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $1 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $1 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $5 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $4 + i64.const 4503599627370496 + i64.or + local.set $1 + local.get $6 + i32.const -1 + local.get $5 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.tee $5 + i32.sub + local.tee $6 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.tee $7 + i32.const 7 + i32.add + local.set $10 + block $~lib/util/dtoa/computePow10|inlined.1 + local.get $6 + i32.const 293 + i32.add + local.tee $11 + i32.const 320 + i32.le_s + local.get $11 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $11 + i32.sub + local.tee $11 + i32.const 3 + i32.shl + i32.const 23336 + i32.add + i64.load + local.set $4 + local.get $11 + i32.const 44 + i32.le_s + if + local.get $4 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + local.set $2 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $11 + i32.const 3 + i32.shl + i32.const 23472 + i32.add + i64.load + local.set $2 + local.get $4 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $11 + call $~lib/util/dtoa/computePow10Compact + local.set $2 + end + local.get $1 + local.get $10 + i64.extend_i32_s + i64.shl + local.tee $4 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $8 + i64.mul + local.tee $9 + local.get $2 + local.get $6 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.tee $2 + i64.const 32 + i64.shr_u + local.tee $12 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $13 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $12 + i64.mul + local.get $4 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.set $2 + local.get $4 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $12 + i64.mul + local.get $4 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $2 + local.get $9 + i64.lt_u + i64.extend_i32_u + local.get $12 + local.get $13 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $13 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $4 + i64.const 58 + i64.shl + local.get $2 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.set $9 + local.get $4 + i64.const 6 + i64.shr_u + local.set $4 + i64.const 10 + local.get $9 + local.get $9 + i64.const -9223372036854775802 + i64.const 0 + local.get $2 + i64.const 4611686018427387904 + i64.ne + select + i64.add + i64.gt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + local.get $2 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i64.sub + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.add + local.tee $1 + i64.ge_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $1 + i64.lt_u + select + local.tee $1 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $1 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $1 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $5 + global.set $~lib/util/dtoa/gExp + end + else + i32.const 616 + call $~lib/util/dtoa/computePow10Compact + local.set $1 + local.get $4 + i64.const 5 + i64.shl + local.tee $8 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $9 + i64.mul + local.set $12 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + local.get $2 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $2 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $2 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $16 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $2 + i64.const 10 + local.get $12 + local.get $12 + local.get $13 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $8 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $8 + local.get $14 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $12 + i64.gt_u + i64.extend_i32_u + local.get $1 + local.get $8 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u + i64.add + local.get $8 + local.get $16 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 58 + i64.shl + local.get $12 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.tee $8 + local.get $8 + i64.const 9223372036854775802 + i64.sub + i64.gt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + local.get $2 + i64.const 1 + local.get $4 + i64.const 1 + i64.and + i64.sub + local.get $9 + i64.const 2 + i64.shr_u + i64.add + local.tee $4 + i64.ge_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $4 + i64.lt_u + select + local.set $2 + local.get $1 + i64.const 6 + i64.shr_u + local.set $1 + local.get $2 + i64.const 10 + i64.eq + if + local.get $1 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $1 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $1 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + i32.const -324 + global.set $~lib/util/dtoa/gExp + end + global.get $~lib/util/dtoa/gSig + i64.const 1000000000000000 + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $1 + i64.const 1000000000000000 + i64.ge_u + if + local.get $1 + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $1 + i64.const 100000000 + i64.lt_u + if + local.get $1 + i64.const 10000 + i64.lt_u + if + local.get $1 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $1 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $1 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $1 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $1 + i64.const 1000000000000 + i64.lt_u + if + local.get $1 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $1 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + i32.const 15 + end + i32.sub + local.tee $5 + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + i64.trunc_sat_f64_u + local.get $1 + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $5 + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + end + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $6 + global.get $~lib/util/dtoa/gSig + local.tee $1 + i64.const 100000000 + i64.div_u + local.tee $2 + local.get $2 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + i64.add + local.tee $4 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + local.get $4 + i64.add + local.tee $4 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + local.get $4 + i64.add + local.tee $4 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $4 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $4 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $4 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + local.get $1 + local.get $2 + i64.const 100000000 + i64.mul + i64.sub + local.tee $1 + local.get $1 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + i64.add + local.tee $1 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.tee $7 + i32.const 20 + i32.le_s + local.get $7 + i32.const -6 + i32.ge_s + i32.and + if + local.get $7 + i32.const 0 + i32.lt_s + if + local.get $3 + i64.const 13511005043687472 + i64.store + local.get $3 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $6 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $2 + i32.const 16 + i32.const 15 + local.get $6 + select + local.set $5 + global.get $~lib/util/dtoa/gDigHi + local.set $8 + global.get $~lib/util/dtoa/gDigLo + local.set $4 + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $7 + i32.const 16 + i32.ge_s + if + local.get $3 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $3 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $3 + local.get $2 + i64.store16 offset=32 + local.get $3 + local.get $7 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $3 + i32.const 34 + i32.add + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_u + if + local.get $5 + i64.const 13511005043687472 + i64.store + local.get $5 + i64.const 13511005043687472 + i64.store offset=8 + local.get $5 + i32.const 16 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + i32.const 46 + i32.store16 + local.get $6 + i32.const 48 + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.add + local.get $5 + local.get $7 + i32.const 0 + i32.ge_s + local.tee $5 + select + local.set $10 + local.get $3 + i32.const 1 + local.get $7 + i32.sub + local.get $7 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $11 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $11 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $11 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $11 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $11 + local.get $2 + i64.store16 offset=32 + local.get $5 + if + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + local.tee $5 + i32.const 64 + i32.lt_s + if + local.get $4 + i64.const 64 + local.get $5 + i64.extend_i32_s + local.tee $9 + i64.sub + local.tee $12 + i64.shl + local.get $8 + local.get $9 + i64.shr_u + i64.or + local.set $1 + local.get $2 + local.get $12 + i64.shl + local.get $4 + local.get $9 + i64.shr_u + i64.or + local.set $2 + else + local.get $5 + i32.const 64 + i32.eq + if + local.get $4 + local.set $1 + else + local.get $5 + i32.const 128 + i32.lt_s + if (result i64) + local.get $5 + i32.const -64 + i32.add + i64.extend_i32_s + local.tee $1 + local.set $9 + local.get $2 + i64.const 64 + local.get $1 + i64.sub + i64.shl + local.get $4 + local.get $1 + i64.shr_u + i64.or + local.set $1 + local.get $2 + local.get $9 + i64.shr_u + else + local.get $2 + local.set $1 + i64.const 0 + end + local.set $2 + end + end + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $11 + i32.add + local.tee $5 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $9 + i64.const 16 + i64.shl + local.get $9 + i64.or + i64.const 281470681808895 + i64.and + local.tee $9 + i64.const 8 + i64.shl + local.get $9 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $10 + local.get $3 + i32.const 9 + i32.add + local.tee $5 + i32.gt_s + if + local.get $5 + i32.const 1 + i32.shl + local.get $11 + i32.add + local.tee $5 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + end + local.get $11 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $3 + i32.const 46 + i32.store16 offset=2 + end + local.get $11 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $10 + local.get $7 + i32.const 1 + i32.add + i32.eq + local.get $7 + i32.const 0 + i32.ge_s + i32.and + if + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $6 + i32.eqz + if + local.get $3 + local.get $4 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 8 + i32.eq + if (result i32) + local.get $3 + local.get $8 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $3 + end + i32.const 1 + i32.shl + i32.sub + local.set $3 + end + local.get $3 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $3 + i32.const 48 + i32.store16 + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + end + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + i32.const 2 + i32.add + local.tee $5 + global.get $~lib/util/dtoa/gDigHi + local.tee $1 + i64.const 4294967295 + i64.and + local.tee $2 + i64.const 16 + i64.shl + local.get $2 + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + i64.const 8 + i64.shl + local.get $2 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $5 + global.get $~lib/util/dtoa/gDigLo + local.tee $1 + i64.const 4294967295 + i64.and + local.tee $2 + i64.const 16 + i64.shl + local.get $2 + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + i64.const 8 + i64.shl + local.get $2 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $5 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $5 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=32 + local.get $5 + local.get $6 + i32.const 16 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $6 + i32.eqz + if + global.get $~lib/util/dtoa/gDigHi + local.set $1 + local.get $5 + global.get $~lib/util/dtoa/gDigLo + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 8 + i32.eq + if (result i32) + local.get $5 + local.get $1 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $5 + end + i32.const 1 + i32.shl + i32.sub + local.set $5 + end + local.get $5 + local.get $5 + local.get $3 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $3 + i32.const 101 + i32.store16 + local.get $3 + local.get $7 + i32.const 31 + i32.shr_s + local.tee $5 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $5 + local.get $7 + i32.xor + local.get $5 + i32.sub + local.tee $5 + i32.const 100 + i32.ge_s + if + local.get $3 + local.get $5 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $6 + i32.const 48 + i32.add + i32.store16 + local.get $3 + local.get $5 + local.get $6 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=2 + local.get $3 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $5 + i32.const 10 + i32.ge_s + if + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $3 + local.get $5 + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 2 + i32.add + end + end + i32.const 23344 + i32.sub + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 27180 + i32.lt_s + if + i32.const 59968 + i32.const 60016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store16 + local.get $3 + if + local.get $2 + local.get $1 + i32.store16 offset=2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 27180 + i32.lt_s + if + i32.const 59968 + i32.const 60016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 59952 + i32.const 0 + i32.store + i32.const 61520 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 59952 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 59952 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 59952 + i32.const 61524 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 59952 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 i32.const 1648 i32.const 382 @@ -10554,11 +12965,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10659,11 +13070,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10689,7 +13100,7 @@ i32.load16_u local.set $3 loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$6 (result i32) + block $__inlined_func$~lib/util/string/isSpace$7 (result i32) local.get $3 i32.const 128 i32.or @@ -10704,7 +13115,7 @@ local.get $3 i32.const 5760 i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$6 + br_if $__inlined_func$~lib/util/string/isSpace$7 drop i32.const 1 local.get $3 @@ -10712,7 +13123,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$6 + br_if $__inlined_func$~lib/util/string/isSpace$7 drop block $break|0 block $case6|0 @@ -10747,7 +13158,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$6 + br $__inlined_func$~lib/util/string/isSpace$7 end i32.const 0 end @@ -10954,797 +13365,1505 @@ local.set $3 end local.get $1 - local.get $3 - i32.le_u + local.get $3 + i32.le_u + if + local.get $2 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $3 + f64.convert_i32_u + f64.add + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + f64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + ) + (func $~lib/util/dtoa/ftoa_buffered (param $0 f32) (result i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $4 + local.get $2 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.set $11 + local.get $2 + i32.const 31 + i32.shr_u + local.set $2 + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $4 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + if + local.get $2 + if (result i32) + i32.const 23344 + i32.const 45 + i32.store16 + i32.const 23346 + else + i32.const 23344 + end + local.set $2 + local.get $4 + i32.const 150 + i32.sub + local.tee $3 + i32.const 24 + i32.lt_s + local.get $3 + i32.const -23 + i32.ge_s + i32.and + if + local.get $11 + i64.const 8388608 + i64.or + local.set $5 + local.get $3 + i32.const 0 + i32.lt_s + if (result i64) + local.get $5 + i32.const 0 + local.get $3 + i32.sub + i64.extend_i32_s + local.tee $1 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $1 + i64.shl + i64.const 1 + i64.sub + local.get $5 + i64.and + i64.eqz + select + else + local.get $5 + local.get $3 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 16777216 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $1 + end + end + local.tee $1 + i64.const 0 + i64.ne + if + local.get $2 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $1 + i64.const 100000000 + i64.lt_u + if + local.get $1 + i64.const 10000 + i64.lt_u + if + local.get $1 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $1 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $1 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $1 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $1 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $1 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $1 + i64.const 1000000000000 + i64.lt_u + if + local.get $1 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $1 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + end + local.get $1 + i64.const 100 + i64.ge_u if - local.get $2 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store end - local.get $5 local.get $1 - f64.convert_i32_s - f64.mul - local.get $3 - f64.convert_i32_u - f64.add - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - f64.mul - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - f64.const nan:0x8000000000000 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s + i64.const 100 + i64.ge_u if - local.get $0 - local.get $2 - i32.const 1 + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 i32.shl + i32.const 16220 i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.load + i32.store end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 + local.get $1 + i64.const 100 + i64.ge_u if - i32.const 0 - local.get $0 + local.get $4 + i32.const 4 i32.sub - local.set $0 + local.get $1 + local.get $1 + i64.const 100 + i64.div_u + local.tee $1 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + local.get $1 + i64.const 10 + i64.ge_u + if + local.get $2 + local.get $1 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + local.get $2 + local.get $1 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut local.get $2 - i32.const 45 - i32.const 43 local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 i32.const 1 i32.shl + i32.add local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 i32.const 46 - i32.store16 offset=2 - local.get $0 + i32.store16 local.get $2 - i32.add - local.tee $0 - i32.const 101 + i32.const 48 i32.store16 offset=2 - local.get $0 + local.get $2 i32.const 4 i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $11 + i64.const 8388608 + i64.or + local.set $10 + local.get $4 + i32.const 150 + i32.sub + local.set $6 + local.get $11 + i64.const 0 + i64.ne + local.tee $4 + if (result i32) + local.get $6 + i32.const 37 + i32.add + i32.const -1 + local.get $6 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.tee $7 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + else + local.get $6 + i32.const 37 + i32.add + local.get $6 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.tee $7 + i32.const -1701 + i32.mul + i32.const 1701 + i32.sub + i32.const 9 + i32.shr_s + i32.add + end + local.set $3 + local.get $7 + i32.const 16 + i32.le_s + local.get $7 + i32.const -28 + i32.ge_s + i32.and + if (result i64) + local.get $7 + i32.const 3 + i32.shl + i32.const 23696 + i32.add + i64.load + else + i32.const 292 + local.get $7 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $1 + global.get $~lib/util/dtoa/gPow10Hi + local.get $1 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + end + local.tee $5 + i64.const 32 + i64.shr_u + local.get $10 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + local.get $10 + i64.mul + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $1 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 40 + local.get $3 + i64.extend_i32_s + local.tee $1 + i64.sub + i64.shr_u + local.tee $9 + i64.const 68719476735 + i64.and + local.set $11 + i64.const 1 + local.get $10 + i64.const 1 + i64.and + i64.sub + local.get $5 + i64.const 65 + local.get $1 + i64.sub + i64.shr_u + i64.add + local.tee $5 + local.get $9 + i64.add + i64.const 36 + i64.shr_u + local.set $1 + local.get $11 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $11 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + local.set $8 + local.get $4 + if (result i32) + local.get $1 + local.get $9 + local.get $5 + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + else + local.get $8 + i32.const 1 + i32.add + local.get $8 + local.get $6 + i32.const 64 + i32.eq + local.get $6 + i32.const -119 + i32.eq + i32.or + local.get $6 + i32.const 67 + i32.eq + i32.or + select + local.set $8 + local.get $1 + local.get $9 + local.get $5 + i64.const 1 + i64.shr_u + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + end + local.get $1 + global.set $~lib/util/dtoa/gSig + local.get $7 + global.set $~lib/util/dtoa/gExp + local.get $8 + global.set $~lib/util/dtoa/gLastDigit + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + if + local.get $11 + i64.const 0 + i64.ne + if + i32.const 23344 + i32.const 78 + i32.store16 + i32.const 23346 + i32.const 97 + i32.store16 + i32.const 23348 + i32.const 78 + i32.store16 + i32.const 23350 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $2 + if (result i32) + i32.const 23344 i32.const 45 - i32.const 43 - local.get $2 - select i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 + i32.const 23346 + else + i32.const 23344 end + local.tee $2 + i64.const 29555310648492105 + i64.store + local.get $2 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $11 + i64.eqz + if + i32.const 23344 + i32.const 48 + i32.store16 + i32.const 23346 + i32.const 46 + i32.store16 + i32.const 23348 + i32.const 48 + i32.store16 + i32.const 23350 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $2 + if (result i32) + i32.const 23344 + i32.const 45 + i32.store16 + i32.const 23346 + else + i32.const 23344 + end + local.set $2 + i32.const 337 + call $~lib/util/dtoa/computePow10Compact + local.set $1 + global.get $~lib/util/dtoa/gPow10Hi + local.get $1 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.tee $5 + i64.const 4294967295 + i64.and + local.get $11 + i64.mul + local.set $1 + local.get $5 + i64.const 32 + i64.shr_u + local.get $11 + i64.mul + local.get $1 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $1 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 6 + i64.shr_u + local.tee $10 + i64.const 68719476735 + i64.and + local.set $9 + local.get $10 + i64.const 1 + local.get $11 + i64.const 1 + i64.and + i64.sub + local.get $5 + i64.const 31 + i64.shr_u + i64.add + local.tee $5 + i64.add + i64.const 36 + i64.shr_u + local.tee $1 + global.set $~lib/util/dtoa/gSig + i32.const -45 + global.set $~lib/util/dtoa/gExp + local.get $9 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $9 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + local.get $10 + local.get $5 + i64.sub + i64.const 36 + i64.shr_u + local.get $1 + i64.ge_u + global.set $~lib/util/dtoa/gHasLastDigit + i32.const -45 + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $1 + i64.const 10000 + i64.lt_u + if + i32.const -49 + local.set $4 local.get $1 + i64.const 10000 + i64.mul + local.set $1 + end + local.get $1 + i64.const 1000000 + i64.lt_u + if + local.get $4 i32.const 2 - i32.add + i32.sub + local.set $4 + local.get $1 + i64.const 100 + i64.mul + local.set $1 end + local.get $1 + i64.const 10000000 + i64.lt_u + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + end + local.get $1 + local.get $1 + i64.const 10 + i64.div_u + local.tee $1 + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $3 + local.get $1 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $3 + global.set $~lib/util/dtoa/gLastDigit + local.get $3 + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u + global.get $~lib/util/dtoa/gHasLastDigit + local.set $8 + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.tee $7 + global.get $~lib/util/dtoa/gExp + i32.const 7 + i32.add + i32.add + local.set $6 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + local.get $8 + select + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $8 + local.get $6 i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add + i32.sub + local.set $6 end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 + global.get $~lib/util/dtoa/gSig + local.tee $1 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $1 + i64.add + local.tee $1 + local.get $1 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $1 + local.get $1 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $5 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $5 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 70 + local.get $5 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 3 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gDigits + local.get $6 + i32.const 20 + i32.le_s + local.get $6 + i32.const -6 + i32.ge_s + i32.and + if + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $8 + select + i32.const 48 i32.add - else + i64.extend_i32_s + local.set $9 + global.get $~lib/util/dtoa/gDigHi + local.set $5 + local.get $7 + i32.eqz + if + local.get $9 + i64.const 56 + i64.shl + local.get $5 + i64.const 8 + i64.shr_u + i64.or + local.set $5 + end local.get $2 - i32.const 1000000000 - i32.ge_u + local.set $4 i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end + global.get $~lib/util/dtoa/gDigits + local.get $7 + i32.sub + local.get $8 + select + local.set $3 + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $6 + i32.const 8 + i32.ge_s + if + local.get $2 + local.get $5 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $7 + if + local.get $2 + local.get $9 + i64.store16 offset=16 + end + local.get $4 + local.get $6 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $4 + local.get $7 + i32.const 8 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 - i32.const 100 - i32.div_u - local.set $5 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 local.get $2 - i32.const 100 - i32.rem_u + i32.const 16 + i32.add local.set $2 - br $break|1 + br $for-loop|0 end - local.get $2 - i32.const 10 - i32.div_u - local.set $5 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 end - local.get $2 - local.set $5 - i32.const 0 - local.set $2 - br $break|1 + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 end + local.get $3 + local.get $7 + i32.add + local.set $3 + local.get $6 i32.const 0 - local.set $5 - end - local.get $4 - local.get $5 - i32.or - if + i32.ge_s + if + local.get $3 + i32.const 1 + i32.add + local.get $6 + i32.const 1 + i32.add + local.tee $2 + local.get $2 + local.get $3 + i32.lt_s + select + local.set $3 + end local.get $4 - local.tee $6 i32.const 1 - i32.add - local.set $4 local.get $6 + i32.sub + local.get $6 + i32.const 31 + i32.shr_s + i32.and i32.const 1 i32.shl - i32.const 23344 i32.add + local.tee $8 local.get $5 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 i64.shl - local.set $1 - local.get $4 + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $8 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $7 + if + local.get $8 + local.get $9 + i64.store16 offset=16 + end + local.get $6 + i32.const 0 + i32.ge_s + if + local.get $9 + i64.const 0 + local.get $7 + select + local.set $1 + local.get $6 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.shl + local.tee $2 + i32.const 64 + i32.lt_s + if + local.get $1 + i64.const 64 + local.get $2 + i64.extend_i32_s + local.tee $1 + i64.sub + i64.shl + local.get $5 + local.get $1 + i64.shr_u + i64.or + local.set $1 + end + local.get $7 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $8 + i32.add + local.tee $2 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $5 + i64.const 16 + i64.shl + local.get $5 + i64.or + i64.const 281470681808895 + i64.and + local.tee $5 + i64.const 8 + i64.shl + local.get $5 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $8 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $4 + i32.const 46 + i32.store16 offset=2 + end + local.get $8 + local.get $3 i32.const 1 i32.shl - i32.const 23342 i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $0 - local.get $9 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and + local.set $2 + local.get $3 + local.get $6 + i32.const 1 + i32.add + i32.eq + local.get $6 + i32.const 0 + i32.ge_s + i32.and + if + local.get $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $2 + local.get $4 + i32.const 2 + i32.add + i32.gt_u if (result i32) - local.get $9 - local.get $0 - local.get $1 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $0 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq else i32.const 0 end if - local.get $7 - i32.const 1 + local.get $2 + i32.const 2 i32.sub - local.set $7 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 + local.set $2 + br $while-continue|1 end end local.get $2 - local.get $7 - i32.store16 - local.get $4 - return + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + end end - br $while-continue|0 + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s + local.get $2 + local.tee $3 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $2 + global.get $~lib/util/dtoa/gDigHi + local.tee $5 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $5 + i64.const 32 i64.shr_u local.tee $1 - local.get $4 - i64.extend_i32_s + i64.const 16 + i64.shl + local.get $1 i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=16 + local.get $2 + i32.const 9 + global.get $~lib/util/dtoa/gDigits + local.get $7 + i32.eqz + i32.add + local.get $8 + select + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $while-continue|2 local.get $2 - i32.const 1 - i32.shl - i32.const 23344 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + local.get $3 + i32.const 4 i32.add - i32.store16 + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|2 + end end - local.get $7 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $2 + local.get $2 + local.get $3 + i32.const 4 + i32.add + i32.eq i32.const 1 + i32.shl i32.sub - local.set $7 - local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 23342 - i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $0 - local.get $8 - i64.gt_u + local.tee $3 + i32.const 101 + i32.store16 local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u + local.get $6 + i32.const 31 + i32.shr_s + local.tee $2 + i32.const 2 i32.and - if (result i32) - local.get $0 - local.get $8 - local.get $10 - i64.add - local.tee $1 - i64.gt_u - local.get $0 - local.get $8 - i64.sub - local.get $1 - local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $4 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $2 + local.get $6 + i32.xor + local.get $2 i32.sub - local.set $7 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 + local.tee $3 + i32.const 100 + i32.ge_s + if + local.get $4 + local.get $3 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $2 + i32.const 48 + i32.add + i32.store16 + local.get $4 + local.get $3 + local.get $2 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store offset=2 + local.get $4 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $3 + i32.const 10 + i32.ge_s + if + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $4 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $4 + local.get $3 + i32.const 48 + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add end end - local.get $2 - local.get $7 - i32.store16 - local.get $4 + i32.const 23344 + i32.sub + i32.const 1 + i32.shr_u ) (func $std/string/getString (result i32) global.get $std/string/str @@ -11761,11 +14880,11 @@ i32.const 76 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 76 @@ -11846,16 +14965,16 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/string/String#charCodeAt$294 + block $__inlined_func$~lib/string/String#charCodeAt$296 local.get $0 i32.const 20 i32.sub @@ -11870,7 +14989,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/string/String#charCodeAt$294 + br $__inlined_func$~lib/string/String#charCodeAt$296 end local.get $0 i32.load16_u @@ -11900,16 +15019,16 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.store - block $__inlined_func$~lib/string/String#codePointAt$295 + block $__inlined_func$~lib/string/String#codePointAt$297 local.get $4 i32.const 20 i32.sub @@ -11926,7 +15045,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$297 end local.get $0 i32.const 2 @@ -11944,7 +15063,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$297 end local.get $4 i32.load16_u offset=4 @@ -11958,7 +15077,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$297 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -11987,7 +15106,7 @@ memory.size i32.const 16 i32.shl - i32.const 59404 + i32.const 59948 i32.sub i32.const 1 i32.shr_u @@ -12400,9 +15519,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -12419,7 +15538,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2176 i32.store - block $__inlined_func$~lib/string/String#startsWith$296 + block $__inlined_func$~lib/string/String#startsWith$298 local.get $4 i32.const 2172 i32.load @@ -12434,7 +15553,7 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - br $__inlined_func$~lib/string/String#startsWith$296 + br $__inlined_func$~lib/string/String#startsWith$298 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -12475,9 +15594,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -12492,9 +15611,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -12511,7 +15630,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2208 i32.store - block $__inlined_func$~lib/string/String#endsWith$297 + block $__inlined_func$~lib/string/String#endsWith$299 i32.const 536870910 local.get $4 local.get $4 @@ -12534,7 +15653,7 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - br $__inlined_func$~lib/string/String#endsWith$297 + br $__inlined_func$~lib/string/String#endsWith$299 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -12577,9 +15696,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -14288,9 +17407,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -14373,9 +17492,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -14419,9 +17538,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22351,7 +25470,7 @@ local.get $0 i32.store local.get $0 - i32.const 24336 + i32.const 24368 call $~lib/string/String.__eq i32.eqz if @@ -22387,7 +25506,7 @@ local.get $0 i32.store local.get $0 - i32.const 24400 + i32.const 24432 call $~lib/string/String.__eq i32.eqz if @@ -22405,7 +25524,7 @@ local.get $0 i32.store local.get $0 - i32.const 24480 + i32.const 24512 call $~lib/string/String.__eq i32.eqz if @@ -22423,7 +25542,7 @@ local.get $0 i32.store local.get $0 - i32.const 24528 + i32.const 24560 call $~lib/string/String.__eq i32.eqz if @@ -22441,7 +25560,7 @@ local.get $0 i32.store local.get $0 - i32.const 24576 + i32.const 24608 call $~lib/string/String.__eq i32.eqz if @@ -22459,7 +25578,7 @@ local.get $0 i32.store local.get $0 - i32.const 24624 + i32.const 24656 call $~lib/string/String.__eq i32.eqz if @@ -22477,7 +25596,7 @@ local.get $0 i32.store local.get $0 - i32.const 24672 + i32.const 24704 call $~lib/string/String.__eq i32.eqz if @@ -22495,7 +25614,7 @@ local.get $0 i32.store local.get $0 - i32.const 24736 + i32.const 24768 call $~lib/string/String.__eq i32.eqz if @@ -22513,7 +25632,7 @@ local.get $0 i32.store local.get $0 - i32.const 24816 + i32.const 24848 call $~lib/string/String.__eq i32.eqz if @@ -22531,7 +25650,7 @@ local.get $0 i32.store local.get $0 - i32.const 24864 + i32.const 24896 call $~lib/string/String.__eq i32.eqz if @@ -22549,7 +25668,7 @@ local.get $0 i32.store local.get $0 - i32.const 24928 + i32.const 24960 call $~lib/string/String.__eq i32.eqz if @@ -22567,7 +25686,7 @@ local.get $0 i32.store local.get $0 - i32.const 24992 + i32.const 25024 call $~lib/string/String.__eq i32.eqz if @@ -22603,7 +25722,7 @@ local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 25088 call $~lib/string/String.__eq i32.eqz if @@ -22639,7 +25758,7 @@ local.get $0 i32.store local.get $0 - i32.const 25088 + i32.const 25120 call $~lib/string/String.__eq i32.eqz if @@ -22657,7 +25776,7 @@ local.get $0 i32.store local.get $0 - i32.const 25120 + i32.const 25152 call $~lib/string/String.__eq i32.eqz if @@ -22675,7 +25794,7 @@ local.get $0 i32.store local.get $0 - i32.const 25152 + i32.const 25184 call $~lib/string/String.__eq i32.eqz if @@ -22693,7 +25812,7 @@ local.get $0 i32.store local.get $0 - i32.const 25200 + i32.const 25232 call $~lib/string/String.__eq i32.eqz if @@ -22711,7 +25830,7 @@ local.get $0 i32.store local.get $0 - i32.const 25248 + i32.const 25280 call $~lib/string/String.__eq i32.eqz if @@ -22729,7 +25848,7 @@ local.get $0 i32.store local.get $0 - i32.const 25296 + i32.const 25328 call $~lib/string/String.__eq i32.eqz if @@ -22747,7 +25866,7 @@ local.get $0 i32.store local.get $0 - i32.const 25344 + i32.const 25376 call $~lib/string/String.__eq i32.eqz if @@ -22765,7 +25884,7 @@ local.get $0 i32.store local.get $0 - i32.const 25392 + i32.const 25424 call $~lib/string/String.__eq i32.eqz if @@ -22801,7 +25920,7 @@ local.get $0 i32.store local.get $0 - i32.const 25424 + i32.const 25456 call $~lib/string/String.__eq i32.eqz if @@ -22855,7 +25974,7 @@ local.get $0 i32.store local.get $0 - i32.const 25472 + i32.const 25504 call $~lib/string/String.__eq i32.eqz if @@ -22873,7 +25992,7 @@ local.get $0 i32.store local.get $0 - i32.const 25504 + i32.const 25536 call $~lib/string/String.__eq i32.eqz if @@ -22891,7 +26010,7 @@ local.get $0 i32.store local.get $0 - i32.const 25552 + i32.const 25584 call $~lib/string/String.__eq i32.eqz if @@ -22909,7 +26028,7 @@ local.get $0 i32.store local.get $0 - i32.const 25584 + i32.const 25616 call $~lib/string/String.__eq i32.eqz if @@ -22939,40 +26058,39 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 27180 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer f64.const 4294967272 - i32.const 0 - call $~lib/util/number/dtoa_core + call $~lib/util/dtoa/dtoa_buffered i32.const 1 i32.shl local.tee $0 i32.const 2 call $~lib/rt/itcms/__new local.tee $4 - i32.store + i32.store offset=4 local.get $4 i32.const 23344 local.get $0 memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $4 i32.store local.get $4 - i32.const 25632 + i32.const 25664 call $~lib/string/String.__eq i32.eqz if @@ -22990,7 +26108,7 @@ local.get $0 i32.store local.get $0 - i32.const 25680 + i32.const 25712 call $~lib/string/String.__eq i32.eqz if @@ -23008,7 +26126,7 @@ local.get $0 i32.store local.get $0 - i32.const 25744 + i32.const 25776 call $~lib/string/String.__eq i32.eqz if @@ -23026,7 +26144,7 @@ local.get $0 i32.store local.get $0 - i32.const 25808 + i32.const 25840 call $~lib/string/String.__eq i32.eqz if @@ -23044,7 +26162,7 @@ local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 25088 call $~lib/string/String.__eq i32.eqz if @@ -23062,7 +26180,7 @@ local.get $0 i32.store local.get $0 - i32.const 25872 + i32.const 25904 call $~lib/string/String.__eq i32.eqz if @@ -23080,7 +26198,7 @@ local.get $0 i32.store local.get $0 - i32.const 25904 + i32.const 25936 call $~lib/string/String.__eq i32.eqz if @@ -23098,7 +26216,7 @@ local.get $0 i32.store local.get $0 - i32.const 25968 + i32.const 26000 call $~lib/string/String.__eq i32.eqz if @@ -23116,7 +26234,7 @@ local.get $0 i32.store local.get $0 - i32.const 26048 + i32.const 26080 call $~lib/string/String.__eq i32.eqz if @@ -23134,7 +26252,7 @@ local.get $0 i32.store local.get $0 - i32.const 26096 + i32.const 26128 call $~lib/string/String.__eq i32.eqz if @@ -23152,7 +26270,7 @@ local.get $0 i32.store local.get $0 - i32.const 26144 + i32.const 26176 call $~lib/string/String.__eq i32.eqz if @@ -23170,7 +26288,7 @@ local.get $0 i32.store local.get $0 - i32.const 26192 + i32.const 26224 call $~lib/string/String.__eq i32.eqz if @@ -23188,7 +26306,7 @@ local.get $0 i32.store local.get $0 - i32.const 26240 + i32.const 26272 call $~lib/string/String.__eq i32.eqz if @@ -23206,7 +26324,7 @@ local.get $0 i32.store local.get $0 - i32.const 26288 + i32.const 26320 call $~lib/string/String.__eq i32.eqz if @@ -23224,7 +26342,7 @@ local.get $0 i32.store local.get $0 - i32.const 26336 + i32.const 26368 call $~lib/string/String.__eq i32.eqz if @@ -23235,45 +26353,207 @@ call $~lib/builtins/abort unreachable end - i32.const 26384 + f64.const 1.2345e+21 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 26416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 795 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.9802322387695312e-08 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -21098088986959632 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0471975511965976e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.30000000000000004 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.835033152834512e-05 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4203088866307290259588644e3 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -90.57678985595703 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 74114688 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26928 + i32.const 26960 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26448 + i32.const 26992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 820 + i32.const 810 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 26496 + i32.const 27040 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 27040 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 821 + i32.const 811 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26496 + i32.const 27040 i32.const 1712 call $~lib/string/String#concat local.set $0 @@ -23281,13 +26561,13 @@ local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 27040 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 822 + i32.const 812 i32.const 1 call $~lib/builtins/abort unreachable @@ -23306,62 +26586,62 @@ if i32.const 0 i32.const 1120 - i32.const 823 + i32.const 813 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + i32.const 27072 + i32.const 27072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 831 + i32.const 821 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + i32.const 27072 + i32.const 27072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 832 + i32.const 822 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26560 - i32.const 26560 + i32.const 27104 + i32.const 27104 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 833 + i32.const 823 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26592 - i32.const 26592 + i32.const 27136 + i32.const 27136 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 834 + i32.const 824 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 global.set $std/string/str - i32.const 59404 + i32.const 59948 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -23402,8 +26682,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 59424 - i32.const 59472 + i32.const 59968 + i32.const 60016 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index df5b2d5443..996e95cd5f 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -792,27 +792,17 @@ assert(dtoa(1.1e+128) == "1.1e+128"); assert(dtoa(1.1e-64) == "1.1e-64"); assert(dtoa(0.000035689) == "0.000035689"); -// FIXME: The following are imprecise rounding issues for Grisu algorithm. Need workaround. - -// Expected: 1.2345e+21 -// Actual: 1.2344999999999999e+21 -// assert(dtoa(1.2345e+21) == "1.2345e+21"); - -// Expected: 2.98023223876953125e-8 -// Actual: 2.9802322387695315e-8 -// assert(dtoa(2.98023223876953125e-8) == "2.9802322387695312e-8"); - -// Expected: -2.109808898695963e+16 -// Actual: -21098088986959633.0 -// assert(dtoa(-2.109808898695963e+16) == "-21098088986959630.0"); - -// Expected: -0.0000010471975511965976 -// Actual: -0.0000010471975511965977 -// assert(dtoa(-0.0000010471975511965976) == "-0.0000010471975511965976"); - -// Expected: 0.30000000000000004 -// Actual: 0.30000000000000007 -// assert(dtoa(0.1 + 0.2) == "0.30000000000000004"); +assert(dtoa(1.2345e+21) == "1.2345e+21"); +assert(dtoa(2.98023223876953125e-8) == "2.9802322387695312e-8"); +assert(dtoa(-2.109808898695963e+16) == "-21098088986959630.0"); +assert(dtoa(-0.0000010471975511965976) == "-0.0000010471975511965976"); +assert(dtoa(0.1 + 0.2) == "0.30000000000000004"); + +// f32 significands with a leading zero in the eight-digit formatter block. +assert(dtoa(reinterpret(0xb874bd31)) == "-0.00005835033"); +assert(dtoa(reinterpret(0x6d594b6b)) == "4.203089e+27"); +assert(dtoa(reinterpret(0xc2b52751)) == "-90.57679"); +assert(dtoa(reinterpret(0x4c8d5cd0)) == "74114690.0"); // concat diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat index c2e2f9861b..d9367b8b67 100644 --- a/tests/compiler/std/typedarray.debug.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -18,37 +18,37 @@ (type $16 (func (param i64 i64 i32 i32) (result i64))) (type $17 (func (param i32 i32) (result i64))) (type $18 (func (param i32 i64 i32) (result i32))) - (type $19 (func (param i32 f64 i32) (result i32))) - (type $20 (func (param f32 f32 i32 i32) (result f32))) - (type $21 (func (param f64 f64 i32 i32) (result f64))) - (type $22 (func (param i64 i32 i32) (result i64))) - (type $23 (func (param i32 i32) (result f64))) - (type $24 (func (param i32 i32 i64) (result i64))) - (type $25 (func (param i32 i32) (result f32))) - (type $26 (func (param i64 i32 i32))) - (type $27 (func (param i32 f32 i32) (result i32))) + (type $19 (func (param f32 f32 i32 i32) (result f32))) + (type $20 (func (param f64 f64 i32 i32) (result f64))) + (type $21 (func (param i64 i32 i32) (result i64))) + (type $22 (func (param i32 i32) (result f64))) + (type $23 (func (param i32 i32 i64) (result i64))) + (type $24 (func (param i32 i32) (result f32))) + (type $25 (func (param i64 i32 i32))) + (type $26 (func (param i32 f32 i32) (result i32))) + (type $27 (func (param i32 f64 i32) (result i32))) (type $28 (func (param i64 i32) (result i32))) (type $29 (func (param i32 i32 i32 i32 i32) (result i32))) (type $30 (func (param f32 i32 i32) (result f32))) (type $31 (func (param f64 i32 i32) (result f64))) (type $32 (func (param i32 i64 i32))) - (type $33 (func (param i32 i64) (result i32))) - (type $34 (func (param i32 i32 i64))) - (type $35 (func (param i32 i32 f32) (result f32))) - (type $36 (func (param i32 i32 f64) (result f64))) - (type $37 (func (param f32 i32 i32))) - (type $38 (func (param f64 i32 i32))) - (type $39 (func (param i32 i32 i32 i32))) - (type $40 (func (param i32 i32 i64) (result i32))) - (type $41 (func (result i32))) - (type $42 (func (param f32 f32) (result f32))) - (type $43 (func (param f64 f64) (result f64))) - (type $44 (func (param i64) (result i64))) - (type $45 (func (param i32 i64 i32 i32))) - (type $46 (func (param i64) (result i32))) - (type $47 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $48 (func (param i32 f32) (result i32))) - (type $49 (func (param i32 f64) (result i32))) + (type $33 (func (param i64) (result i32))) + (type $34 (func (param i32 i64) (result i32))) + (type $35 (func (param i32 f32) (result i32))) + (type $36 (func (param i32 f64) (result i32))) + (type $37 (func (param i32 i32 i64))) + (type $38 (func (param i32 i32 f32) (result f32))) + (type $39 (func (param i32 i32 f64) (result f64))) + (type $40 (func (param f32 i32 i32))) + (type $41 (func (param f64 i32 i32))) + (type $42 (func (param i32 i32 i32 i32))) + (type $43 (func (param i32 i32 i64) (result i32))) + (type $44 (func (result i32))) + (type $45 (func (param f32 f32) (result f32))) + (type $46 (func (param f64 f64) (result f64))) + (type $47 (func (param i64) (result i64))) + (type $48 (func (param i32 i64 i32 i32))) + (type $49 (func (param i32) (result i64))) (type $50 (func (param i32 i32 f64 f64 f64 f64 f64))) (type $51 (func (param i32 i32 f64))) (type $52 (func (param i32 i32 f32))) @@ -91,21 +91,37 @@ (global $std/typedarray/forEachValues i32 (i32.const 6128)) (global $std/typedarray/testArrayReverseValues i32 (i32.const 6592)) (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 6704)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 9904)) - (global $std/typedarray/setSource1 (mut i32) (i32.const 9984)) - (global $std/typedarray/setSource2 (mut i32) (i32.const 10064)) - (global $std/typedarray/setSource3 (mut i32) (i32.const 10160)) - (global $std/typedarray/setSource7 (mut i32) (i32.const 10240)) - (global $~lib/rt/__rtti_base i32 (i32.const 14976)) - (global $~lib/memory/__data_end i32 (i32.const 15296)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48064)) - (global $~lib/memory/__heap_base i32 (i32.const 48064)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE i32 (i32.const 23)) + (global $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK i32 (i32.const 8388607)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 10128)) + (global $std/typedarray/setSource1 (mut i32) (i32.const 10208)) + (global $std/typedarray/setSource2 (mut i32) (i32.const 10288)) + (global $std/typedarray/setSource3 (mut i32) (i32.const 10384)) + (global $std/typedarray/setSource7 (mut i32) (i32.const 10464)) + (global $~lib/rt/__rtti_base i32 (i32.const 15200)) + (global $~lib/memory/__data_end i32 (i32.const 15520)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48288)) + (global $~lib/memory/__heap_base i32 (i32.const 48288)) (memory $0 1) (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") @@ -309,109 +325,110 @@ (data $199 (i32.const 8652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $200 (i32.const 8684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $201 (i32.const 8732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $202 (i32.const 8784) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $203 (i32.const 8840) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000\'\00\000\'\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $213 (i32.const 10092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00") - (data $214 (i32.const 10140) ",\00\00\00\00\00\00\00\00\00\00\00?\00\00\00\10\00\00\00\80\'\00\00\80\'\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $215 (i32.const 10188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") - (data $216 (i32.const 10220) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\e0\'\00\00\e0\'\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $217 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $218 (i32.const 10300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $219 (i32.const 10348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $220 (i32.const 10380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $221 (i32.const 10412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $222 (i32.const 10444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data $223 (i32.const 10476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $224 (i32.const 10508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $225 (i32.const 10556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $226 (i32.const 10588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $227 (i32.const 10620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $228 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data $229 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $230 (i32.const 10716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $231 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $232 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $233 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $234 (i32.const 10876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") - (data $235 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $236 (i32.const 10956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $237 (i32.const 11004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $238 (i32.const 11052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $239 (i32.const 11100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $240 (i32.const 11148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") - (data $241 (i32.const 11196) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $242 (i32.const 11244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $243 (i32.const 11292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $244 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $245 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $246 (i32.const 11436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") - (data $247 (i32.const 11484) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $248 (i32.const 11548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $249 (i32.const 11596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $250 (i32.const 11660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $251 (i32.const 11724) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $252 (i32.const 11788) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") - (data $253 (i32.const 11852) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $254 (i32.const 11916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $255 (i32.const 11964) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $256 (i32.const 12028) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $257 (i32.const 12092) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $258 (i32.const 12156) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") - (data $259 (i32.const 12220) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $260 (i32.const 12332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $261 (i32.const 12380) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $262 (i32.const 12492) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $263 (i32.const 12604) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $264 (i32.const 12716) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $265 (i32.const 12828) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $266 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $267 (i32.const 12988) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $268 (i32.const 13100) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $269 (i32.const 13212) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $270 (i32.const 13324) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $271 (i32.const 13436) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $272 (i32.const 13500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00") - (data $273 (i32.const 13548) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $274 (i32.const 13612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00\00\00\00\00") - (data $275 (i32.const 13676) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2\00\00\00\00") - (data $276 (i32.const 13740) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $277 (i32.const 13852) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00") - (data $278 (i32.const 13900) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $279 (i32.const 14012) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $280 (i32.const 14124) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0\00\00\00\00\00\00\00\00\00\00\00\00") - (data $281 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") - (data $282 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") - (data $283 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\91\00\00\00\00\00\00\00\00\00\00\00") - (data $284 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\92\00\00\00\00\00\00\00\00\00\00\00") - (data $285 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\93\00\00\00\00\00\00\00\00\00\00\00") - (data $286 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\94\00\00\00\00\00\00\00\00\00\00\00") - (data $287 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\95\00\00\00\00\00\00\00\00\00\00\00") - (data $288 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\96\00\00\00\00\00\00\00\00\00\00\00") - (data $289 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\97\00\00\00\00\00\00\00\00\00\00\00") - (data $290 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00") - (data $291 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\99\00\00\00\00\00\00\00\00\00\00\00") - (data $292 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9a\00\00\00\00\00\00\00\00\00\00\00") - (data $293 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9b\00\00\00\00\00\00\00\00\00\00\00") - (data $294 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9c\00\00\00\00\00\00\00\00\00\00\00") - (data $295 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9d\00\00\00\00\00\00\00\00\00\00\00") - (data $296 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9e\00\00\00\00\00\00\00\00\00\00\00") - (data $297 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\9f\00\00\00\00\00\00\00\00\00\00\00") - (data $298 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00") - (data $299 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a1\00\00\00\00\00\00\00\00\00\00\00") - (data $300 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a2\00\00\00\00\00\00\00\00\00\00\00") - (data $301 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00") - (data $302 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a4\00\00\00\00\00\00\00\00\00\00\00") - (data $303 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\a5\00\00\00\00\00\00\00\00\00\00\00") - (data $304 (i32.const 14976) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $202 (i32.const 8784) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $203 (i32.const 8912) ":\0f \f4\'\8f\cb\ce\c8\a5\19\90\b9\a5o\a5\a0\84\14@aQY\84\00\a1\ed\cc\ce\1b\c2\d3\00\b4W\n?\16h\a9\00\90\acn2x\86\87\00\80z\17\b7&\d7\d8\00\00b\ac\c5\ebx\ad\00\00\e8\89\04#\c7\8a\00\00@v:k\0b\de\00\00\00\c5.\bc\a2\b1\00\00\00\04\bf\c9\1b\8e\00\00\00\a01\a9_\e3\00\00\00\80\f4 \e6\b5\00\00\00\00*\e7\84\91\00\00\00\00\10\a5\d4\e8\00\00\00\00@\b7C\ba\00\00\00\00\00\f9\02\95\00\00\00\00\00(k\ee\00\00\00\00\00 \bc\be\00\00\00\00\00\80\96\98\00\00\00\00\00\00$\f4\00\00\00\00\00\00P\c3\00\00\00\00\00\00@\9c\00\00\00\00\00\00\00\fa\00\00\00\00\00\00\00\c8\00\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\80\cd\cc\cc\cc\cc\cc\cc\cc\0b\d7\a3p=\n\d7\a3<\dfO\8d\97n\12\83,e\19\e2X\17\b7\d1$\84G\1bG\ac\c5\a7\b6il\af\05\bd7\86\bdBz\e5\d5\94\bf\d6\fd\cea\84\11w\cc\ab\98\a5\b46A_p\89\bf\d5\ed\bd\ce\fe\e6\db\ff\aa$\cb\0b\ff\eb\af\cc\88Po\t\cc\bc\8c\14\0e\b4KB\13.\e1\10\d8\\\t5\dc$\b4\da\ac\b0:\f7|\1d\90\\\e1M\c4\be\94\95\e6J\b4\a462\aaw\b8\cc\cc\cc\cc\cc\cc\cc\cc\a3p=\n\d7\a3p=\e9&1\08\ac\1cZd\a8\a4N@\13a\c3\d3S\1dr3\dc\80\cf\0f\0f\b1\c1\c2I\9a?\a6L\1bi\04v\902==|\ba6+\r\c2\fd") + (data $204 (i32.const 9336) "o\1b\8e(\10T\8e\af\daM\e4^\ae\f0\ec\07J\fb\9f\f4\98\'D\b1\9dwA\df\cf\11\cd\99\07\ef\99\85\0b?\fe\b2\15\aa\b4\dc\e6\a7\1f\86c\beZ\06\0b\a5\bc\b4\aaSkuz\07\ed\0f\08\bf,)Ud\7f\b6C\d5\b1\17L\c8;\1a\fb;\efi\c2\87F\b8B\a7\ee@OQ]=\eb\dd\e4PF\1a\12\ba\13\e4labM\f3\92\ea\af(\b6\ef&\e2\bb\8c6U\n\f7\89\04\89\0f`\cb\05\e9\b8\b6\bd!\c9\c1\bb\87\e9\00T\96_\9a\84x\db\8f\bf4\d0\bdr\04R\98\de\'\8a\92\95\00\9am\c1\94\82\17\0f<\05\b7u\00\00\00\00\00\00P\c3\00\00\00\00\00\00\00\00\05\e3L6\12\197\c5\00\00\00\00\00\00(l\d6\aa\80\9d\ef\f0\"\c7\f6~\b9\b7\d2:MBL\c8q\d5m\93\13\c9\ea8\1e\cd\19:\bc\03\1cU\ab\01\80\0c\t\cb\c6,\07\d3\bf\f5\ad\\\a1\90\08\137h\03\cd\10\8cz\c3\87\a8\db6.\ef\07\12\c2\b2\02\cf\bc\f4\03^\e4g\f9\94\c7\85\d7in\f8\06\d1R\ba\be\01\d763\e1|\a0\1c4\a8E\10\d3Q\a0\t\12\11H\de\1e1Vx\85\fa\a6\1e\d5f\a5>\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $205 (i32.const 9704) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $206 (i32.const 9788) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\00.\000\00,\002\00.\000\00,\003\00.\000\00,\004\00.\000\00,\005\00.\000\00\00\00\00\00\00\00") + (data $207 (i32.const 9856) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $208 (i32.const 10044) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data $209 (i32.const 10108) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00P\'\00\00P\'\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $210 (i32.const 10156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $211 (i32.const 10188) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\c0\'\00\00\c0\'\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $212 (i32.const 10236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80@\00\00\a0@\00\00\c0@") + (data $213 (i32.const 10268) ",\00\00\00\00\00\00\00\00\00\00\00>\00\00\00\10\00\00\00\10(\00\00\10(\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $214 (i32.const 10316) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00") + (data $215 (i32.const 10364) ",\00\00\00\00\00\00\00\00\00\00\00?\00\00\00\10\00\00\00`(\00\00`(\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $216 (i32.const 10412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") + (data $217 (i32.const 10444) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\c0(\00\00\c0(\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $218 (i32.const 10492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $219 (i32.const 10524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $220 (i32.const 10572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $221 (i32.const 10604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $222 (i32.const 10636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $223 (i32.const 10668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $224 (i32.const 10700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $225 (i32.const 10732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $226 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $227 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $228 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $229 (i32.const 10876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $230 (i32.const 10908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $231 (i32.const 10940) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $232 (i32.const 11004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $233 (i32.const 11036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $234 (i32.const 11068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $235 (i32.const 11100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") + (data $236 (i32.const 11132) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $237 (i32.const 11180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $238 (i32.const 11228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $239 (i32.const 11276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $240 (i32.const 11324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $241 (i32.const 11372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $242 (i32.const 11420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $243 (i32.const 11468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $244 (i32.const 11516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $245 (i32.const 11564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $246 (i32.const 11612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $247 (i32.const 11660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $248 (i32.const 11708) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $249 (i32.const 11772) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $250 (i32.const 11820) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $251 (i32.const 11884) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $252 (i32.const 11948) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $253 (i32.const 12012) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $254 (i32.const 12076) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $255 (i32.const 12140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $256 (i32.const 12188) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $257 (i32.const 12252) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 12316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $259 (i32.const 12380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $260 (i32.const 12444) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $261 (i32.const 12556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $262 (i32.const 12604) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $263 (i32.const 12716) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $264 (i32.const 12828) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $265 (i32.const 12940) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $266 (i32.const 13052) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $267 (i32.const 13164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $268 (i32.const 13212) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $269 (i32.const 13324) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $270 (i32.const 13436) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $271 (i32.const 13548) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 13660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $273 (i32.const 13724) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $274 (i32.const 13772) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $275 (i32.const 13836) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00\00\00\00\00") + (data $276 (i32.const 13900) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2\00\00\00\00") + (data $277 (i32.const 13964) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $278 (i32.const 14076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $279 (i32.const 14124) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $280 (i32.const 14236) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14348) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0\00\00\00\00\00\00\00\00\00\00\00\00") + (data $282 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") + (data $283 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") + (data $284 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\91\00\00\00\00\00\00\00\00\00\00\00") + (data $285 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\92\00\00\00\00\00\00\00\00\00\00\00") + (data $286 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\93\00\00\00\00\00\00\00\00\00\00\00") + (data $287 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\94\00\00\00\00\00\00\00\00\00\00\00") + (data $288 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\95\00\00\00\00\00\00\00\00\00\00\00") + (data $289 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\96\00\00\00\00\00\00\00\00\00\00\00") + (data $290 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\97\00\00\00\00\00\00\00\00\00\00\00") + (data $291 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00") + (data $292 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\99\00\00\00\00\00\00\00\00\00\00\00") + (data $293 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9a\00\00\00\00\00\00\00\00\00\00\00") + (data $294 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9b\00\00\00\00\00\00\00\00\00\00\00") + (data $295 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9c\00\00\00\00\00\00\00\00\00\00\00") + (data $296 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9d\00\00\00\00\00\00\00\00\00\00\00") + (data $297 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9e\00\00\00\00\00\00\00\00\00\00\00") + (data $298 (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\9f\00\00\00\00\00\00\00\00\00\00\00") + (data $299 (i32.const 15004) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 15036) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a1\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 15068) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a2\00\00\00\00\00\00\00\00\00\00\00") + (data $302 (i32.const 15100) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00") + (data $303 (i32.const 15132) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a4\00\00\00\00\00\00\00\00\00\00\00") + (data $304 (i32.const 15164) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\a5\00\00\00\00\00\00\00\00\00\00\00") + (data $305 (i32.const 15200) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 166 166 funcref) (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|1 $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") (export "memory" (memory $0)) @@ -6741,1547 +6758,6800 @@ i32.add return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp - i32.sub - local.set $one_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul + i32.sub + local.set $minor + i32.const 8912 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 9336 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 9704 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa + return + ) + (func $~lib/util/dtoa/ftoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $bits i32) + (local $binExp i32) + (local $binSig i64) + (local $buf i32) + (local $bits|6 i32) + (local $binExp|7 i32) + (local $binSig|8 i64) + (local $dotZero i32) + (local $neg i32) + (local $isNormal i32) + (local $buf|12 i32) + (local $buf|13 i32) + (local $neg|14 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|22 i32) + (local $binSig|23 i64) + (local $rawExp i32) + (local $regular i32) + (local $expBin i32) + (local $k i32) + (local $h i32) + (local $pow10Hi i64) + (local $lo|30 i64) + (local $t0 i64) + (local $t1 i64) + (local $mid i64) + (local $hi64 i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $mUp i64) + (local $one i32) + (local $upDown i32) + (local $decSig i64) + (local $decExp i32) + (local $q i64) + (local $last i32) + (local $q|44 i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|49 i32) + (local $value|50 i64) + (local $v i64) + (local $v|52 i64) + (local $len i32) + (local $p|54 i32) + (local $v|55 i64) + (local $q|56 i64) + (local $q|57 i64) + (local $q|58 i64) + (local $q|59 i64) + (local $q|60 i64) + (local $q|61 i64) + (local $q|62 i64) + (local $end|63 i32) + (local $dotZero|64 i32) + (local $binSig|65 i64) + (local $rawExp|66 i32) + (local $regular|67 i32) + (local $expBin|68 i32) + (local $k|69 i32) + (local $h|70 i32) + (local $pow10Hi|71 i64) + (local $lo|72 i64) + (local $t0|73 i64) + (local $t1|74 i64) + (local $mid|75 i64) + (local $hi64|76 i64) + (local $halfUlp|77 i64) + (local $dotOne|78 i64) + (local $mUp|79 i64) + (local $one|80 i32) + (local $upDown|81 i32) + (local $hasLastDigit i32) + (local $hasExtraDigit i32) + (local $decExp|84 i32) + (local $start i32) + (local $value|86 i64) + (local $length i32) + (local $buf|88 i32) + (local $start|89 i32) + (local $decExp|90 i32) + (local $hasLastDigit|91 i32) + (local $hasExtraDigit|92 i32) + (local $dotZero|93 i32) + (local $p|94 i32) + (local $ascii|95 i64) + (local $off|96 i32) + (local $base|97 i32) + (local $lo|98 i64) + (local $hi|99 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $p|103 i32) + (local $ascii|104 i64) + (local $off|105 i32) + (local $base|106 i32) + (local $lo|107 i64) + (local $hi|108 i64) + (local $sig i32) + (local $endByte i32) + (local $z i32) + (local $p|112 i32) + (local $ascii|113 i64) + (local $off|114 i32) + (local $base|115 i32) + (local $lo|116 i64) + (local $hi|117 i64) + (local $end|118 i32) + (local $dotZero|119 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|123 i32) + (local $ascii|124 i64) + (local $off|125 i32) + (local $base|126 i32) + (local $lo|127 i64) + (local $hi|128 i64) + (local $k|129 i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $p|133 i32) + (local $ascii|134 i64) + (local $off|135 i32) + (local $base|136 i32) + (local $lo|137 i64) + (local $hi|138 i64) + (local $end|139 i32) + (local $end|140 i32) + (local $dotZero|141 i32) + (local $buf|142 i32) + (local $start|143 i32) + (local $decExp|144 i32) + (local $hasLastDigit|145 i32) + (local $hasExtraDigit|146 i32) + (local $p|147 i32) + (local $ascii|148 i64) + (local $off|149 i32) + (local $base|150 i32) + (local $lo|151 i64) + (local $hi|152 i64) + (local $lead i32) + (local $buf|154 i32) + (local $decExp|155 i32) + (local $m i32) + (local $e i32) + (local $d i32) + local.get $value + i32.reinterpret_f32 + local.set $bits + local.get $bits + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK + i32.and + i64.extend_i32_u + local.set $binSig + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $bits + local.set $bits|6 + local.get $binExp + local.set $binExp|7 + local.get $binSig + local.set $binSig|8 + i32.const 1 + local.set $dotZero + local.get $bits|6 + i32.const 31 + i32.shr_u i32.const 0 - i32.gt_s + i32.ne + local.set $neg + local.get $binExp|7 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 + local.get $binExp|7 + i32.const 0 + i32.ne + if + local.get $binSig|8 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf + local.set $buf|12 + local.get $buf|12 + i32.const 78 + i32.store16 + local.get $buf|12 + i32.const 97 + i32.store16 offset=2 + local.get $buf|12 + i32.const 78 + i32.store16 offset=4 + local.get $buf|12 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf + local.set $buf|13 + local.get $neg + local.set $neg|14 + local.get $neg|14 + if + local.get $buf|13 + i32.const 45 + i32.store16 + local.get $buf|13 + i32.const 2 + i32.add + local.set $buf|13 + end + local.get $buf|13 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|13 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $binSig|8 + i64.const 0 + i64.eq + if + local.get $buf + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf + i32.const 2 + i32.add + local.set $end + local.get $dotZero + local.set $dotZero|22 + local.get $dotZero|22 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binSig|8 + local.set $binSig|23 + i32.const 1 + local.set $rawExp + i32.const 1 + local.set $regular + local.get $rawExp + i32.const 150 + i32.sub + local.set $expBin + local.get $regular + if + local.get $expBin + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h + else + local.get $expBin + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k + i32.const 37 + local.get $expBin + i32.add + local.get $k + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h + end + local.get $k + i32.const -28 + i32.ge_s + if (result i32) + local.get $k + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 8912 + i32.const 28 + local.get $k + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi + else + i32.const 292 + local.get $k + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|30 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|30 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi + end + local.get $pow10Hi + i64.const 4294967295 + i64.and + local.get $binSig|23 + i64.mul + local.set $t0 + local.get $pow10Hi + i64.const 32 + i64.shr_u + local.get $binSig|23 + i64.mul + local.get $t0 + i64.const 32 + i64.shr_u + i64.add + local.set $t1 + local.get $t1 + i64.const 8 + i64.shl + local.get $t0 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid + local.get $mid + i64.const 40 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64 + local.get $pow10Hi + i64.const 65 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|23 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp + local.get $hi64 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne + local.get $hi64 + local.get $halfUlp + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp + local.get $dotOne + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one + local.get $regular + if + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + else + local.get $expBin + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin + i32.const 67 + i32.eq + end + if + local.get $one + i32.const 1 + i32.add + local.set $one + end + local.get $mUp + local.get $hi64 + local.get $halfUlp + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown + end + local.get $mUp + global.set $~lib/util/dtoa/gSig + local.get $k + global.set $~lib/util/dtoa/gExp + local.get $one + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $decSig + global.get $~lib/util/dtoa/gExp + local.set $decExp + local.get $decSig + i64.const 10000 + i64.lt_u + if + local.get $decSig + i64.const 10000 + i64.mul + local.set $decSig + local.get $decExp + i32.const 4 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 1000000 + i64.lt_u + if + local.get $decSig + i64.const 100 + i64.mul + local.set $decSig + local.get $decExp + i32.const 2 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10000000 + i64.lt_u + if + local.get $decSig + i64.const 10 + i64.mul + local.set $decSig + local.get $decExp + i32.const 1 + i32.sub + local.set $decExp + end + local.get $decSig + i64.const 10 + i64.div_u + local.set $q + local.get $decSig + local.get $q + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $last + local.get $q + global.set $~lib/util/dtoa/gSig + local.get $decExp + global.set $~lib/util/dtoa/gExp + local.get $last + global.set $~lib/util/dtoa/gLastDigit + local.get $last + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $neg + if + local.get $buf + i32.const 45 + i32.store16 + local.get $buf + i32.const 2 + i32.add + local.set $buf + end + local.get $binExp|7 + i32.const 150 + i32.sub + local.set $q|44 + local.get $q|44 + i32.const 0 + global.get $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE + i32.sub + i32.ge_s + if (result i32) + local.get $q|44 + i32.const 24 + i32.lt_s + else + i32.const 0 + end + if + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q|44 + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q|44 + i32.sub + local.set $shift + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + else + local.get $c + local.get $q|44 + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 16777216 + i64.gt_u + if + i64.const 0 + local.set $intValue + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf + local.set $buf|49 + local.get $intValue + local.set $value|50 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|50 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|52 + local.get $v|52 + i64.const 100000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000 + i64.lt_u + if + local.get $v|52 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|52 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 3 + local.get $v|52 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 + local.get $v|52 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|52 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|52 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|52 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|52 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|52 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|52 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|52 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 + else + i32.const 16 end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|54 + local.get $value|50 + local.set $v|55 + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|56 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|56 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|56 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|57 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|57 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|57 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|58 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|58 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|58 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|59 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|59 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|59 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|60 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|60 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|60 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|61 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|61 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|61 + local.set $v|55 + end + local.get $v|55 + i64.const 100 + i64.ge_u + if + local.get $v|55 + i64.const 100 + i64.div_u + local.set $q|62 + local.get $p|54 + i32.const 4 + i32.sub + local.set $p|54 + local.get $p|54 + i32.const 6988 + local.get $v|55 + local.get $q|62 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|62 + local.set $v|55 + end + local.get $v|55 + i64.const 10 + i64.ge_u + if + local.get $buf|49 + i32.const 6988 + local.get $v|55 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|49 + i32.const 48 + local.get $v|55 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|49 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|63 + local.get $dotZero + local.set $dotZero|64 + local.get $dotZero|64 + if + local.get $end|63 + i32.const 46 + i32.store16 + local.get $end|63 + i32.const 48 + i32.store16 offset=2 + local.get $end|63 + i32.const 4 + i32.add + local.set $end|63 + end + local.get $end|63 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $binSig|8 + i64.const 8388608 + i64.or + local.set $binSig|65 + local.get $binExp|7 + local.set $rawExp|66 + local.get $binSig|8 + i64.const 0 + i64.ne + local.set $regular|67 + local.get $rawExp|66 + i32.const 150 + i32.sub + local.set $expBin|68 + local.get $regular|67 + if + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add + i32.const 0 + local.get $k|69 + i32.sub + i32.const 1 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + else + local.get $expBin|68 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.set $k|69 + i32.const 37 + local.get $expBin|68 + i32.add + local.get $k|69 + i32.const -1701 + i32.mul + i32.const -1701 + i32.add + i32.const 9 + i32.shr_s + i32.add + local.set $h|70 + end + local.get $k|69 + i32.const -28 + i32.ge_s + if (result i32) + local.get $k|69 + i32.const 16 + i32.le_s + else + i32.const 0 + end + if + i32.const 8912 + i32.const 28 + local.get $k|69 + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $pow10Hi|71 + else + i32.const 292 + local.get $k|69 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $lo|72 + global.get $~lib/util/dtoa/gPow10Hi + local.get $lo|72 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.set $pow10Hi|71 + end + local.get $pow10Hi|71 + i64.const 4294967295 + i64.and + local.get $binSig|65 + i64.mul + local.set $t0|73 + local.get $pow10Hi|71 + i64.const 32 + i64.shr_u + local.get $binSig|65 + i64.mul + local.get $t0|73 + i64.const 32 + i64.shr_u + i64.add + local.set $t1|74 + local.get $t1|74 + i64.const 8 + i64.shl + local.get $t0|73 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + local.set $mid|75 + local.get $mid|75 + i64.const 40 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $hi64|76 + local.get $pow10Hi|71 + i64.const 65 + local.get $h|70 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.const 1 + local.get $binSig|65 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|77 + local.get $hi64|76 + i64.const 1 + i32.const 36 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + i64.and + local.set $dotOne|78 + local.get $hi64|76 + local.get $halfUlp|77 + i64.add + i32.const 36 + i64.extend_i32_s + i64.shr_u + local.set $mUp|79 + local.get $dotOne|78 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $dotOne|78 + i64.const 32 + i64.shr_u + i64.add + i32.const 36 + i32.const 1 + i32.sub + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $one|80 + local.get $regular|67 + if + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + else + local.get $expBin|68 + i32.const -119 + i32.eq + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 64 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $expBin|68 + i32.const 67 + i32.eq + end + if + local.get $one|80 + i32.const 1 + i32.add + local.set $one|80 + end + local.get $mUp|79 + local.get $hi64|76 + local.get $halfUlp|77 + i64.const 1 + i64.shr_u + i64.sub + i32.const 36 + i64.extend_i32_s + i64.shr_u + i64.gt_u + local.set $upDown|81 + end + local.get $mUp|79 + global.set $~lib/util/dtoa/gSig + local.get $k|69 + global.set $~lib/util/dtoa/gExp + local.get $one|80 + global.set $~lib/util/dtoa/gLastDigit + local.get $upDown|81 + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.set $hasExtraDigit + global.get $~lib/util/dtoa/gExp + i32.const 9 + i32.add + i32.const 2 + i32.sub + local.get $hasExtraDigit + i32.add + local.set $decExp|84 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + i64.const 10 + global.get $~lib/util/dtoa/gSig + i64.mul + local.get $hasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $hasLastDigit + local.get $decExp|84 + i32.const 1 + i32.sub + local.set $decExp|84 + end + local.get $buf + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|86 + i32.const 0 + drop + local.get $value|86 + call $~lib/util/dtoa/toBcd8 + local.set $length + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + local.get $length + global.set $~lib/util/dtoa/gDigits + local.get $decExp|84 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|84 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else + i32.const 0 + end + if + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|88 + local.get $start + local.set $start|89 + local.get $decExp|84 + local.set $decExp|90 + local.get $hasLastDigit + local.set $hasLastDigit|91 + local.get $hasExtraDigit + local.set $hasExtraDigit|92 + local.get $dotZero + local.set $dotZero|93 + local.get $decExp|90 + i32.const 0 + i32.lt_s + if + local.get $start|89 + local.set $p|94 + i64.const 3472328296227680304 + local.set $ascii|95 + i32.const 0 + local.set $off|96 + local.get $p|94 + local.get $off|96 + i32.add + local.set $base|97 + i32.const 0 + drop + local.get $ascii|95 + i64.const 4294967295 + i64.and + local.set $lo|98 + local.get $ascii|95 + i64.const 32 + i64.shr_u + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|99 + local.get $lo|98 + local.get $lo|98 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|98 + local.get $hi|99 + local.get $hi|99 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|99 + local.get $base|97 + local.get $lo|98 + i64.store + local.get $base|97 + local.get $hi|99 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|91 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|91 + if (result i32) + i32.const 8 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|92 + i32.sub + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + local.get $hasExtraDigit|92 + i32.eqz + if + local.get $dHi + i64.const 8 + i64.shr_u + local.get $lastDigitChar + i64.const 56 + i64.shl + i64.or + local.set $dHi + end + local.get $decExp|90 + i32.const 8 + i32.ge_s + if + local.get $buf|88 + local.set $p|103 + local.get $dHi + local.set $ascii|104 + i32.const 0 + local.set $off|105 + local.get $p|103 + local.get $off|105 + i32.add + local.set $base|106 + i32.const 0 + drop + local.get $ascii|104 + i64.const 4294967295 + i64.and + local.set $lo|107 + local.get $ascii|104 + i64.const 32 + i64.shr_u + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|108 + local.get $lo|107 + local.get $lo|107 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|107 + local.get $hi|108 + local.get $hi|108 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|108 + local.get $base|106 + local.get $lo|107 + i64.store + local.get $base|106 + local.get $hi|108 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + i32.const 8 + local.get $hasExtraDigit|92 + i32.add + local.set $sig + local.get $buf|88 + local.get $decExp|90 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|88 + local.get $sig + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|112 + i64.const 3472328296227680304 + local.set $ascii|113 + i32.const 0 + local.set $off|114 + local.get $p|112 + local.get $off|114 + i32.add + local.set $base|115 + i32.const 0 + drop + local.get $ascii|113 + i64.const 4294967295 + i64.and + local.set $lo|116 + local.get $ascii|113 + i64.const 32 + i64.shr_u + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|117 + local.get $lo|116 + local.get $lo|116 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|116 + local.get $hi|117 + local.get $hi|117 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|117 + local.get $base|115 + local.get $lo|116 + i64.store + local.get $base|115 + local.get $hi|117 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|118 + local.get $dotZero|93 + local.set $dotZero|119 + local.get $dotZero|119 + if + local.get $end|118 + i32.const 46 + i32.store16 + local.get $end|118 + i32.const 48 + i32.store16 offset=2 + local.get $end|118 + i32.const 4 + i32.add + local.set $end|118 + end + local.get $end|118 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $numDigits + local.get $hasExtraDigit|92 + i32.add + local.set $n + local.get $n + local.set $endPos + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $n + local.get $decExp|90 + i32.const 1 + i32.add + i32.gt_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $decExp|90 + i32.const 1 + i32.add + end + local.set $endPos + end + i32.const 1 + local.get $decExp|90 + i32.sub + local.get $decExp|90 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|88 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|88 + local.get $buf|88 + local.set $p|123 + local.get $dHi + local.set $ascii|124 + i32.const 0 + local.set $off|125 + local.get $p|123 + local.get $off|125 + i32.add + local.set $base|126 + i32.const 0 + drop + local.get $ascii|124 + i64.const 4294967295 + i64.and + local.set $lo|127 + local.get $ascii|124 + i64.const 32 + i64.shr_u + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|128 + local.get $lo|127 + local.get $lo|127 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|127 + local.get $hi|128 + local.get $hi|128 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|128 + local.get $base|126 + local.get $lo|127 + i64.store + local.get $base|126 + local.get $hi|128 + i64.store offset=8 + local.get $hasExtraDigit|92 + if + local.get $buf|88 + i32.const 16 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + end + local.get $decExp|90 + i32.const 0 + i32.ge_s + if + local.get $decExp|90 + i32.const 1 + i32.add + local.set $k|129 + local.get $hasExtraDigit|92 + if (result i64) + local.get $lastDigitChar + else + i64.const 0 + end + local.set $d16 + local.get $k|129 + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if (result i64) + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + else + local.get $d16 + end + local.set $fHi + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|133 + local.get $fHi + local.set $ascii|134 + i32.const 0 + local.set $off|135 + local.get $p|133 + local.get $off|135 + i32.add + local.set $base|136 + i32.const 0 + drop + local.get $ascii|134 + i64.const 4294967295 + i64.and + local.set $lo|137 + local.get $ascii|134 + i64.const 32 + i64.shr_u + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|138 + local.get $lo|137 + local.get $lo|137 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|137 + local.get $hi|138 + local.get $hi|138 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|138 + local.get $base|136 + local.get $lo|137 + i64.store + local.get $base|136 + local.get $hi|138 + i64.store offset=8 + local.get $buf|88 + local.get $k|129 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|89 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|88 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|139 + local.get $decExp|90 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|90 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|139 + local.set $end|140 + local.get $dotZero|93 + local.set $dotZero|141 + local.get $dotZero|141 + if + local.get $end|140 + i32.const 46 + i32.store16 + local.get $end|140 + i32.const 48 + i32.store16 offset=2 + local.get $end|140 + i32.const 4 + i32.add + local.set $end|140 + end + local.get $end|140 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $end|139 + local.get $start|89 + i32.const 2 + i32.add + i32.gt_u + if (result i32) + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + br $while-continue|1 + end + end + local.get $end|139 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|93 + if + local.get $end|139 + i32.const 48 + i32.store16 + local.get $end|139 + i32.const 2 + i32.add + local.set $end|139 + else + local.get $end|139 + i32.const 2 + i32.sub + local.set $end|139 + end + end + local.get $end|139 + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + block $~lib/util/dtoa/writeExpNotationFloat|inlined.0 (result i32) + local.get $buf + local.set $buf|142 + local.get $start + local.set $start|143 + local.get $decExp|84 + local.set $decExp|144 + local.get $hasLastDigit + local.set $hasLastDigit|145 + local.get $hasExtraDigit + local.set $hasExtraDigit|146 + local.get $buf|142 + local.get $hasExtraDigit|146 + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + local.get $buf|142 + local.set $p|147 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|148 + i32.const 0 + local.set $off|149 + local.get $p|147 + local.get $off|149 + i32.add + local.set $base|150 + i32.const 0 + drop + local.get $ascii|148 + i64.const 4294967295 + i64.and + local.set $lo|151 + local.get $ascii|148 + i64.const 32 + i64.shr_u + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|152 + local.get $lo|151 + local.get $lo|151 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|151 + local.get $hi|152 + local.get $hi|152 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|152 + local.get $base|150 + local.get $lo|151 + i64.store + local.get $base|150 + local.get $hi|152 + i64.store offset=8 + local.get $buf|142 + i32.const 16 + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|142 + local.get $hasLastDigit|145 + if (result i32) + i32.const 9 + else + global.get $~lib/util/dtoa/gDigits + local.get $hasExtraDigit|146 + i32.eqz + i32.add + end + i32.const 1 + i32.shl + i32.add + local.set $buf|142 + loop $while-continue|2 + local.get $buf|142 + local.get $start|143 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $buf|142 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $buf|142 + i32.const 2 + i32.sub + local.set $buf|142 + br $while-continue|2 + end + end + local.get $start|143 + i32.load16_u offset=2 + local.set $lead + local.get $start|143 + local.get $lead + i32.store16 + local.get $start|143 + i32.const 46 + i32.store16 offset=2 + local.get $buf|142 + local.get $buf|142 + i32.const 2 + i32.sub + local.get $start|143 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|142 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|142 + local.set $buf|154 + local.get $decExp|144 + local.set $decExp|155 + local.get $decExp|155 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|154 + i32.const 101 + i32.store16 + local.get $buf|154 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|154 + i32.const 4 + i32.add + local.set $buf|154 + local.get $decExp|155 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|154 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|154 + i32.const 6988 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|154 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|154 + i32.const 6988 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|154 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|154 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|154 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotationFloat|inlined.0 + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $buffer + i32.sub + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $len i32) + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $buffer + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz + if + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + block $~lib/util/dtoa/writeInfinity|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 + end + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base + i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.4 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.4 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $neg + if + local.get $buf|8 + i32.const 45 + i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 + end + local.get $isNormal + if + local.get $binExp|10 + i32.const 1075 + i32.sub + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 + i64.ge_u + if + i64.const 0 + local.set $intValue + end + end + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.5 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.1 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.1 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.1 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 6988 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 6988 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.1 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.5 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $isNormal + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 8912 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 8912 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral + local.get $pow10Hi + i32.const 0 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|72 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 8912 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 8912 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u + i64.add + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 + end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 8912 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 8912 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 8912 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 8912 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 + i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 + i32.sub + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 8912 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 + i32.const 8912 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 end - local.get $p1 - local.set $d + local.get $powExp|211 i32.const 0 - local.set $p1 - br $break|1 - end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 9712 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 + i64.add + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 + end + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 else - i32.const 0 + local.get $one|261 end - if (result i32) - local.get $rest - local.get $ten_kappa + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end + end + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s else - i32.const 0 + i64.const 0 end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u if - local.get $digit + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp i32.const 1 i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.2 end + i32.sub + local.set $scale + i32.const 9856 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 + i32.const 0 + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 9712 + local.get $decExp|270 + i32.const -6 + i32.ge_s + if (result i32) + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP + i32.le_s + else i32.const 0 - local.get $kappa - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u + end + if + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 + i32.lt_s + if + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 + i32.add + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 + end + i32.const 48 + local.get $hasLastDigit|292 if (result i32) - local.get $delta|31 - local.get $rest|32 - i64.sub - local.get $ten_kappa|33 - i64.ge_u + global.get $~lib/util/dtoa/gLastDigit else i32.const 0 end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w|34 - local.get $rest|32 + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 + i32.add + local.set $base|307 + i32.const 0 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 + i32.add + local.set $base|313 + i32.const 0 + drop + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|289 + i32.const 17 + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.6 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.6 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos + i32.const 1 + i32.shl + i32.add + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 + i32.add + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 + i32.add + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 + i32.add + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s i64.sub - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.get $wp_w|34 + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s i64.sub - i64.gt_u + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 + i32.const 0 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s + if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 + i32.const 0 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 end + local.get $buf|289 + local.get $k + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 + end + local.get $buf|289 + local.get $endPos + i32.const 1 + i32.shl + i32.add + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq else i32.const 0 end if - local.get $digit|36 + block $~lib/util/dtoa/finishInteger|inlined.7 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.7 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end i32.const 1 + i32.shl i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 + local.set $end|359 + end + local.get $end|359 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s - if - local.get $buffer - local.get $i + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit i32.const 1 + i32.shl i32.add - local.set $i - br $for-loop|0 - end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 - i32.add - local.get $ptr - i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $kk - i32.lt_s - if (result i32) - local.get $kk + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 i32.const 0 - i32.le_s - else + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 i32.const 0 - end - if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize i32.const 1 i32.shl i32.add - local.get $buffer - local.get $length + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add i32.const 1 i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset - i32.lt_s - if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 - i32.add - local.set $i|7 - br $for-loop|1 - end - end - local.get $length - local.get $offset i32.add - return - else - local.get $length - i32.const 1 - i32.eq + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 - i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 - i32.const 0 - i32.lt_s - local.set $sign - local.get $sign + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq if - i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 end - local.get $k|9 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select - i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 - i32.add - local.get $buffer + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m i32.const 2 + i32.and i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 i32.store16 offset=2 - local.get $buffer - local.get $len + local.get $buf|387 + i32.const 4 i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len - i32.add - i32.const 4 + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d i32.add - local.set $buffer|16 - local.get $kk - i32.const 1 + i32.store16 + local.get $buf|387 + i32.const 6988 + local.get $e + local.get $d + i32.const 100 + i32.mul i32.sub - local.set $k|17 - local.get $k|17 - i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 - if - i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 - end - local.get $k|17 - call $~lib/util/number/decimalCount32 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select - i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 6988 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 end + local.get $buf|387 + i32.const 48 + local.get $e i32.add - local.set $length - local.get $length + i32.store16 + local.get $buf|387 i32.const 2 i32.add - return + br $~lib/util/dtoa/writeExponent|inlined.1 end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else - i32.const 1 + br $~lib/util/dtoa/writeExpNotation|inlined.0 end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 8840 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 9536 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add - return - ) - (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) - (local $buffer|2 i32) - (local $value|3 f64) - (local $isSingle i32) - (local $sign i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $buffer - local.set $buffer|2 - local.get $value - f64.promote_f32 - local.set $value|3 - i32.const 1 - local.set $isSingle - local.get $value|3 - f64.const 0 - f64.eq - if - local.get $buffer|2 - i32.const 48 - i32.store16 - local.get $buffer|2 - i32.const 46 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $value|3 - local.get $value|3 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|3 - local.get $value|3 - f64.ne - if - local.get $buffer|2 - i32.const 78 - i32.store16 - local.get $buffer|2 - i32.const 97 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $value|3 - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $buffer|2 - i32.const 45 - i32.store16 - local.get $buffer|2 - i32.const 2 - i32.add - local.set $buffer|2 - end - local.get $buffer|2 - i64.const 29555310648492105 - i64.store - local.get $buffer|2 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $sign - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - unreachable - end - local.get $buffer|2 - local.get $value|3 - local.get $isSingle - call $~lib/util/number/dtoa_core - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end + i32.const 1 + i32.shr_u return ) (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) - (local $buffer|2 i32) - (local $value|3 f64) - (local $isSingle i32) - (local $sign i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $buffer - local.set $buffer|2 - local.get $value - local.set $value|3 - i32.const 0 - local.set $isSingle - local.get $value|3 - f64.const 0 - f64.eq - if - local.get $buffer|2 - i32.const 48 - i32.store16 - local.get $buffer|2 - i32.const 46 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $value|3 - local.get $value|3 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|3 - local.get $value|3 - f64.ne - if - local.get $buffer|2 - i32.const 78 - i32.store16 - local.get $buffer|2 - i32.const 97 - i32.store16 offset=2 - local.get $buffer|2 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $value|3 - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $buffer|2 - i32.const 45 - i32.store16 - local.get $buffer|2 - i32.const 2 - i32.add - local.set $buffer|2 - end - local.get $buffer|2 - i64.const 29555310648492105 - i64.store - local.get $buffer|2 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $sign - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - unreachable - end - local.get $buffer|2 - local.get $value|3 - local.get $isSingle - call $~lib/util/number/dtoa_core - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end + (local $len i32) + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $buffer + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len return ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) @@ -12926,8 +18196,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 48096 - i32.const 48144 + i32.const 48320 + i32.const 48368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18854,7 +24124,7 @@ global.set $~argumentsLength local.get $9 i32.load - call_indirect (type $20) + call_indirect (type $19) local.set $initialValue|5 local.get $i i32.const 1 @@ -19031,7 +24301,7 @@ global.set $~argumentsLength local.get $9 i32.load - call_indirect (type $21) + call_indirect (type $20) local.set $initialValue|5 local.get $i i32.const 1 @@ -22621,7 +27891,7 @@ global.set $~argumentsLength local.get $8 i32.load - call_indirect (type $20) + call_indirect (type $19) local.set $initialValue|5 local.get $i i32.const 1 @@ -22797,7 +28067,7 @@ global.set $~argumentsLength local.get $8 i32.load - call_indirect (type $21) + call_indirect (type $20) local.set $initialValue|5 local.get $i i32.const 1 @@ -24954,7 +30224,7 @@ global.set $~argumentsLength local.get $10 i32.load - call_indirect (type $22) + call_indirect (type $21) i64.store local.get $i i32.const 1 @@ -25257,7 +30527,7 @@ global.set $~argumentsLength local.get $10 i32.load - call_indirect (type $22) + call_indirect (type $21) i64.store local.get $i i32.const 1 @@ -40364,7 +45634,7 @@ global.set $~argumentsLength local.get $7 i32.load - call_indirect (type $26) + call_indirect (type $25) local.get $i i32.const 1 i32.add @@ -40619,7 +45889,7 @@ global.set $~argumentsLength local.get $7 i32.load - call_indirect (type $26) + call_indirect (type $25) local.get $i i32.const 1 i32.add @@ -40874,7 +46144,7 @@ global.set $~argumentsLength local.get $7 i32.load - call_indirect (type $37) + call_indirect (type $40) local.get $i i32.const 1 i32.add @@ -41129,7 +46399,7 @@ global.set $~argumentsLength local.get $7 i32.load - call_indirect (type $38) + call_indirect (type $41) local.get $i i32.const 1 i32.add @@ -59047,12 +64317,12 @@ local.get $10 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 + i32.const 32 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 28 + i32.const 32 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -59305,7 +64575,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9808 call $~lib/string/String.__eq i32.eqz if @@ -59328,7 +64598,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9808 call $~lib/string/String.__eq i32.eqz if @@ -59400,12 +64670,12 @@ local.get $10 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 + i32.const 32 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 28 + i32.const 32 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -59658,7 +64928,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9808 call $~lib/string/String.__eq i32.eqz if @@ -59681,7 +64951,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9808 call $~lib/string/String.__eq i32.eqz if @@ -63941,7 +69211,7 @@ local.get $valb i32.ne if - i32.const 10320 + i32.const 10544 i32.const 3 local.get $i f64.convert_i32_s @@ -64927,7 +70197,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10288 + i32.const 10512 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -64958,7 +70228,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10368 + i32.const 10592 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -64989,7 +70259,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10400 + i32.const 10624 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -65022,7 +70292,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10432 + i32.const 10656 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -65083,7 +70353,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10464 + i32.const 10688 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -65379,7 +70649,7 @@ local.get $valb i32.ne if - i32.const 10528 + i32.const 10752 i32.const 3 local.get $i f64.convert_i32_s @@ -66315,7 +71585,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10496 + i32.const 10720 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66346,7 +71616,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10576 + i32.const 10800 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66377,7 +71647,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10608 + i32.const 10832 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66410,7 +71680,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10640 + i32.const 10864 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66471,7 +71741,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10672 + i32.const 10896 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66731,7 +72001,7 @@ local.get $valb i32.ne if - i32.const 10736 + i32.const 10960 i32.const 3 local.get $i f64.convert_i32_s @@ -67764,7 +73034,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10704 + i32.const 10928 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67795,7 +73065,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10800 + i32.const 11024 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67826,7 +73096,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10832 + i32.const 11056 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67859,7 +73129,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10864 + i32.const 11088 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67920,7 +73190,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10896 + i32.const 11120 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -68218,7 +73488,7 @@ local.get $valb i32.ne if - i32.const 10976 + i32.const 11200 i32.const 3 local.get $i f64.convert_i32_s @@ -69186,7 +74456,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10928 + i32.const 11152 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69217,7 +74487,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11024 + i32.const 11248 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69248,7 +74518,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11072 + i32.const 11296 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69281,7 +74551,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11120 + i32.const 11344 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69342,7 +74612,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11168 + i32.const 11392 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69640,7 +74910,7 @@ local.get $valb i32.ne if - i32.const 11264 + i32.const 11488 i32.const 3 local.get $i f64.convert_i32_s @@ -70608,7 +75878,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11216 + i32.const 11440 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70639,7 +75909,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11312 + i32.const 11536 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70670,7 +75940,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11360 + i32.const 11584 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70703,7 +75973,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11408 + i32.const 11632 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70764,7 +76034,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11456 + i32.const 11680 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71005,7 +76275,7 @@ local.get $valb i32.ne if - i32.const 11568 + i32.const 11792 i32.const 3 local.get $i f64.convert_i32_s @@ -72005,7 +77275,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11504 + i32.const 11728 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -72036,7 +77306,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11616 + i32.const 11840 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -72067,7 +77337,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11680 + i32.const 11904 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -72100,7 +77370,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11744 + i32.const 11968 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -72161,7 +77431,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11808 + i32.const 12032 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -72427,7 +77697,7 @@ local.get $valb i32.ne if - i32.const 11936 + i32.const 12160 i32.const 3 local.get $i f64.convert_i32_s @@ -73427,7 +78697,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 11872 + i32.const 12096 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73458,7 +78728,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 11984 + i32.const 12208 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73489,7 +78759,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12048 + i32.const 12272 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73522,7 +78792,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12112 + i32.const 12336 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73583,7 +78853,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12176 + i32.const 12400 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73884,7 +79154,7 @@ local.get $valb i64.ne if - i32.const 12352 + i32.const 12576 i32.const 3 local.get $i f64.convert_i32_s @@ -74854,7 +80124,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12240 + i32.const 12464 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74885,7 +80155,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12400 + i32.const 12624 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74916,7 +80186,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12512 + i32.const 12736 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74949,7 +80219,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12624 + i32.const 12848 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -75010,7 +80280,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12736 + i32.const 12960 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -75311,7 +80581,7 @@ local.get $valb i64.ne if - i32.const 12960 + i32.const 13184 i32.const 3 local.get $i f64.convert_i32_s @@ -76281,7 +81551,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 12848 + i32.const 13072 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76312,7 +81582,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13008 + i32.const 13232 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76343,7 +81613,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13120 + i32.const 13344 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76376,7 +81646,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13232 + i32.const 13456 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76437,7 +81707,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13344 + i32.const 13568 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76713,7 +81983,7 @@ local.get $valb f32.ne if - i32.const 13520 + i32.const 13744 i32.const 3 local.get $i f64.convert_i32_s @@ -77530,7 +82800,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13456 + i32.const 13680 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -77561,7 +82831,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13568 + i32.const 13792 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -77592,7 +82862,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13632 + i32.const 13856 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -77655,7 +82925,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13696 + i32.const 13920 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -77931,7 +83201,7 @@ local.get $valb f64.ne if - i32.const 13872 + i32.const 14096 i32.const 3 local.get $i f64.convert_i32_s @@ -78780,7 +84050,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 13760 + i32.const 13984 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78811,7 +84081,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 13920 + i32.const 14144 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78842,7 +84112,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14032 + i32.const 14256 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78905,7 +84175,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14144 + i32.const 14368 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -79899,7 +85169,7 @@ i32.const 4 i32.le_u drop - i32.const 14320 + i32.const 14544 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -80049,7 +85319,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14352 + i32.const 14576 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -80660,7 +85930,7 @@ drop i32.const 0 drop - i32.const 14384 + i32.const 14608 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -80810,7 +86080,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14416 + i32.const 14640 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -80947,7 +86217,7 @@ drop i32.const 0 drop - i32.const 14448 + i32.const 14672 br $~lib/util/sort/COMPARATOR|inlined.1 end local.tee $comparator @@ -81097,7 +86367,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14480 + i32.const 14704 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -81710,7 +86980,7 @@ i32.const 4 i32.le_u drop - i32.const 14512 + i32.const 14736 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -81860,7 +87130,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14544 + i32.const 14768 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -82471,7 +87741,7 @@ drop i32.const 0 drop - i32.const 14576 + i32.const 14800 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -82621,7 +87891,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14608 + i32.const 14832 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -83234,7 +88504,7 @@ i32.const 4 i32.le_u drop - i32.const 14640 + i32.const 14864 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -83384,7 +88654,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14672 + i32.const 14896 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -83995,7 +89265,7 @@ drop i32.const 0 drop - i32.const 14704 + i32.const 14928 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -84145,7 +89415,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14736 + i32.const 14960 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -84758,7 +90028,7 @@ i32.const 4 i32.le_u drop - i32.const 14768 + i32.const 14992 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -84908,7 +90178,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14800 + i32.const 15024 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -85519,7 +90789,7 @@ drop i32.const 0 drop - i32.const 14832 + i32.const 15056 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -85669,7 +90939,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14864 + i32.const 15088 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -86284,7 +91554,7 @@ i32.const 4 i32.eq drop - i32.const 14896 + i32.const 15120 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -86434,7 +91704,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14928 + i32.const 15152 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -86628,7 +91898,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14960 + i32.const 15184 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -90010,7 +95280,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 14256 + i32.const 14480 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -90139,7 +95409,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 14288 + i32.const 14512 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -92004,7 +97274,7 @@ if i32.const 6784 i32.const 6912 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -92184,7 +97454,7 @@ if i32.const 6784 i32.const 6912 - i32.const 350 + i32.const 298 i32.const 5 call $~lib/builtins/abort unreachable @@ -92337,7 +97607,7 @@ if i32.const 6784 i32.const 6912 - i32.const 431 + i32.const 379 i32.const 5 call $~lib/builtins/abort unreachable @@ -92560,7 +97830,7 @@ if i32.const 6784 i32.const 6912 - i32.const 401 + i32.const 349 i32.const 5 call $~lib/builtins/abort unreachable @@ -92710,156 +97980,589 @@ return ) (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i32) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f32.const 0 + f32.eq + if + i32.const 8640 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + i32.eqz + if local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f32.ne if - i32.const 8640 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8672 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + i32.const 8704 + i32.const 8752 + local.get $value + f32.const 0 + f32.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $bits + local.get $bits + i32.const 1065353216 + i32.ge_u + if (result i32) + local.get $bits + i32.const 1266679808 + i32.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f32_s + local.set $integer + local.get $value + local.get $integer + f32.convert_i32_s + f32.eq if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 8672 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 6988 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 6988 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 6988 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 6988 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 8704 - i32.const 8752 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 8784 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 8784 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8784 + local.get $value + call $~lib/util/dtoa/ftoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 8784 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.1 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 8640 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 8640 - br $~lib/util/number/dtoa_impl|inlined.1 + i32.const 8672 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 8704 + i32.const 8752 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative + if + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u if - i32.const 8672 - br $~lib/util/number/dtoa_impl|inlined.1 + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 6988 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 6988 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 6988 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 6988 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 8704 - i32.const 8752 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.1 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 8784 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 8784 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.1 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 8784 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 8784 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index c05cdc426a..30b33ca00e 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -23,11 +23,11 @@ (type $21 (func (param i32 i32 i64))) (type $22 (func (param i32 i32) (result f64))) (type $23 (func (param i32 i32) (result f32))) - (type $24 (func (param i32 f64 i32) (result i32))) - (type $25 (func (param f64 f64 i32 i32) (result f64))) - (type $26 (func (param f32 f32 i32 i32) (result f32))) - (type $27 (func (param i64 i32 i32) (result i64))) - (type $28 (func (param i64 i32 i32))) + (type $24 (func (param f64 f64 i32 i32) (result f64))) + (type $25 (func (param f32 f32 i32 i32) (result f32))) + (type $26 (func (param i64 i32 i32) (result i64))) + (type $27 (func (param i64 i32 i32))) + (type $28 (func (param i32 f64 i32) (result i32))) (type $29 (func (param i32 f32 i32) (result i32))) (type $30 (func (param i32 f64) (result i32))) (type $31 (func (param i32 f32) (result i32))) @@ -38,9 +38,11 @@ (type $36 (func (param i32 i32 f64))) (type $37 (func (param i32 i32 f32))) (type $38 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $39 (func (param i32 i64 i32))) - (type $40 (func (result i32))) - (type $41 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $39 (func (param i32) (result i64))) + (type $40 (func (param i32 i64 i32))) + (type $41 (func (result i32))) + (type $42 (func (param f64) (result i32))) + (type $43 (func (param f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -56,13 +58,16 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49088)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49312)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") @@ -462,216 +467,217 @@ (data $200.1 (i32.const 9720) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $201 (i32.const 9756) ",") (data $201.1 (i32.const 9768) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $203 (i32.const 9864) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000+\00\000+\00\00\0c\00\00\00\03") - (data $213 (i32.const 11116) ",") - (data $213.1 (i32.const 11128) "\01\00\00\00\18") - (data $213.2 (i32.const 11142) "\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") - (data $214 (i32.const 11164) ",") - (data $214.1 (i32.const 11176) "?\00\00\00\10\00\00\00\80+\00\00\80+\00\00\18\00\00\00\03") - (data $215 (i32.const 11212) "\1c") - (data $215.1 (i32.const 11224) "\01\00\00\00\03\00\00\00\92\91\90") - (data $216 (i32.const 11244) ",") - (data $216.1 (i32.const 11256) "\10\00\00\00\10\00\00\00\e0+\00\00\e0+\00\00\03\00\00\00\03") - (data $217 (i32.const 11292) "\1c") - (data $217.1 (i32.const 11304) "\01\00\00\00\n\00\00\00\01\02\03") - (data $218 (i32.const 11324) ",") - (data $218.1 (i32.const 11336) "\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") - (data $219 (i32.const 11372) "\1c") - (data $219.1 (i32.const 11384) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data $220 (i32.const 11404) "\1c") - (data $220.1 (i32.const 11416) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data $221 (i32.const 11436) "\1c") - (data $221.1 (i32.const 11448) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $222 (i32.const 11468) "\1c") - (data $222.1 (i32.const 11480) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data $223 (i32.const 11500) "\1c") - (data $223.1 (i32.const 11512) "\01\00\00\00\n\00\00\00\01\02\03") - (data $224 (i32.const 11532) ",") - (data $224.1 (i32.const 11544) "\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data $225 (i32.const 11580) "\1c") - (data $225.1 (i32.const 11592) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data $226 (i32.const 11612) "\1c") - (data $226.1 (i32.const 11624) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data $227 (i32.const 11644) "\1c") - (data $227.1 (i32.const 11656) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $228 (i32.const 11676) "\1c") - (data $228.1 (i32.const 11688) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data $229 (i32.const 11708) "\1c") - (data $229.1 (i32.const 11720) "\01\00\00\00\n\00\00\00\01\02\03") - (data $230 (i32.const 11740) "<") - (data $230.1 (i32.const 11752) "\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") - (data $231 (i32.const 11804) "\1c") - (data $231.1 (i32.const 11816) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data $232 (i32.const 11836) "\1c") - (data $232.1 (i32.const 11848) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data $233 (i32.const 11868) "\1c") - (data $233.1 (i32.const 11880) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $234 (i32.const 11900) "\1c") - (data $234.1 (i32.const 11912) "\01\00\00\00\n\00\00\00defg\ff\ff\ff") - (data $235 (i32.const 11932) ",") - (data $235.1 (i32.const 11944) "\01\00\00\00\14\00\00\00\01\00\02\00\03") - (data $236 (i32.const 11980) ",") - (data $236.1 (i32.const 11992) "\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data $237 (i32.const 12028) ",") - (data $237.1 (i32.const 12040) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data $238 (i32.const 12076) ",") - (data $238.1 (i32.const 12088) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data $239 (i32.const 12124) ",") - (data $239.1 (i32.const 12136) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data $240 (i32.const 12172) ",") - (data $240.1 (i32.const 12184) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data $241 (i32.const 12220) ",") - (data $241.1 (i32.const 12232) "\01\00\00\00\14\00\00\00\01\00\02\00\03") - (data $242 (i32.const 12268) ",") - (data $242.1 (i32.const 12280) "\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data $243 (i32.const 12316) ",") - (data $243.1 (i32.const 12328) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data $244 (i32.const 12364) ",") - (data $244.1 (i32.const 12376) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data $245 (i32.const 12412) ",") - (data $245.1 (i32.const 12424) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data $246 (i32.const 12460) ",") - (data $246.1 (i32.const 12472) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data $247 (i32.const 12508) "<") - (data $247.1 (i32.const 12520) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data $248 (i32.const 12572) ",") - (data $248.1 (i32.const 12584) "\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") - (data $249 (i32.const 12620) "<") - (data $249.1 (i32.const 12632) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data $250 (i32.const 12684) "<") - (data $250.1 (i32.const 12696) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $251 (i32.const 12748) "<") - (data $251.1 (i32.const 12760) "\01\00\00\00(\00\00\00\01\00\00\00\02") - (data $251.2 (i32.const 12788) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $252 (i32.const 12812) "<") - (data $252.1 (i32.const 12824) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data $253 (i32.const 12876) "<") - (data $253.1 (i32.const 12888) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data $254 (i32.const 12940) ",") - (data $254.1 (i32.const 12952) "\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") - (data $255 (i32.const 12988) "<") - (data $255.1 (i32.const 13000) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data $256 (i32.const 13052) "<") - (data $256.1 (i32.const 13064) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $257 (i32.const 13116) "<") - (data $257.1 (i32.const 13128) "\01\00\00\00(\00\00\00\01\00\00\00\02") - (data $257.2 (i32.const 13156) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $258 (i32.const 13180) "<") - (data $258.1 (i32.const 13192) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data $259 (i32.const 13244) "l") - (data $259.1 (i32.const 13256) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data $260 (i32.const 13356) ",") - (data $260.1 (i32.const 13368) "\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") - (data $261 (i32.const 13404) "l") - (data $261.1 (i32.const 13416) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data $262 (i32.const 13516) "l") - (data $262.1 (i32.const 13528) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $263 (i32.const 13628) "l") - (data $263.1 (i32.const 13640) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data $263.2 (i32.const 13688) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $264 (i32.const 13740) "l") - (data $264.1 (i32.const 13752) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data $265 (i32.const 13852) "l") - (data $265.1 (i32.const 13864) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data $266 (i32.const 13964) ",") - (data $266.1 (i32.const 13976) "\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") - (data $267 (i32.const 14012) "l") - (data $267.1 (i32.const 14024) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data $268 (i32.const 14124) "l") - (data $268.1 (i32.const 14136) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $269 (i32.const 14236) "l") - (data $269.1 (i32.const 14248) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data $269.2 (i32.const 14296) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $270 (i32.const 14348) "l") - (data $270.1 (i32.const 14360) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data $271 (i32.const 14460) "<") - (data $271.1 (i32.const 14472) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $272 (i32.const 14524) ",") - (data $272.1 (i32.const 14536) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") - (data $273 (i32.const 14572) "<") - (data $273.1 (i32.const 14584) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data $274 (i32.const 14636) "<") - (data $274.1 (i32.const 14648) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data $275 (i32.const 14700) "<") - (data $275.1 (i32.const 14712) "\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data $276 (i32.const 14764) "l") - (data $276.1 (i32.const 14776) "\01\00\00\00P") - (data $276.2 (i32.const 14790) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data $277 (i32.const 14876) ",") - (data $277.1 (i32.const 14888) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data $278 (i32.const 14924) "l") - (data $278.1 (i32.const 14936) "\01\00\00\00P") - (data $278.2 (i32.const 14950) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") - (data $279 (i32.const 15036) "l") - (data $279.1 (i32.const 15048) "\01\00\00\00P") - (data $279.2 (i32.const 15062) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") - (data $280 (i32.const 15148) "l") - (data $280.1 (i32.const 15160) "\01\00\00\00P") - (data $280.2 (i32.const 15174) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data $281 (i32.const 15260) "\1c") - (data $281.1 (i32.const 15272) "\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data $282 (i32.const 15292) "\1c") - (data $282.1 (i32.const 15304) "\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") - (data $283 (i32.const 15324) "\1c") - (data $283.1 (i32.const 15336) "F\00\00\00\08\00\00\00\91") - (data $284 (i32.const 15356) "\1c") - (data $284.1 (i32.const 15368) "F\00\00\00\08\00\00\00\92") - (data $285 (i32.const 15388) "\1c") - (data $285.1 (i32.const 15400) "G\00\00\00\08\00\00\00\93") - (data $286 (i32.const 15420) "\1c") - (data $286.1 (i32.const 15432) "G\00\00\00\08\00\00\00\94") - (data $287 (i32.const 15452) "\1c") - (data $287.1 (i32.const 15464) "G\00\00\00\08\00\00\00\95") - (data $288 (i32.const 15484) "\1c") - (data $288.1 (i32.const 15496) "G\00\00\00\08\00\00\00\96") - (data $289 (i32.const 15516) "\1c") - (data $289.1 (i32.const 15528) "H\00\00\00\08\00\00\00\97") - (data $290 (i32.const 15548) "\1c") - (data $290.1 (i32.const 15560) "H\00\00\00\08\00\00\00\98") - (data $291 (i32.const 15580) "\1c") - (data $291.1 (i32.const 15592) "I\00\00\00\08\00\00\00\99") - (data $292 (i32.const 15612) "\1c") - (data $292.1 (i32.const 15624) "I\00\00\00\08\00\00\00\9a") - (data $293 (i32.const 15644) "\1c") - (data $293.1 (i32.const 15656) "J\00\00\00\08\00\00\00\9b") - (data $294 (i32.const 15676) "\1c") - (data $294.1 (i32.const 15688) "J\00\00\00\08\00\00\00\9c") - (data $295 (i32.const 15708) "\1c") - (data $295.1 (i32.const 15720) "K\00\00\00\08\00\00\00\9d") - (data $296 (i32.const 15740) "\1c") - (data $296.1 (i32.const 15752) "K\00\00\00\08\00\00\00\9e") - (data $297 (i32.const 15772) "\1c") - (data $297.1 (i32.const 15784) "L\00\00\00\08\00\00\00\9f") - (data $298 (i32.const 15804) "\1c") - (data $298.1 (i32.const 15816) "L\00\00\00\08\00\00\00\a0") - (data $299 (i32.const 15836) "\1c") - (data $299.1 (i32.const 15848) "M\00\00\00\08\00\00\00\a1") - (data $300 (i32.const 15868) "\1c") - (data $300.1 (i32.const 15880) "M\00\00\00\08\00\00\00\a2") - (data $301 (i32.const 15900) "\1c") - (data $301.1 (i32.const 15912) "N\00\00\00\08\00\00\00\a3") - (data $302 (i32.const 15932) "\1c") - (data $302.1 (i32.const 15944) "N\00\00\00\08\00\00\00\a4") - (data $303 (i32.const 15964) "\1c") - (data $303.1 (i32.const 15976) "\0f\00\00\00\08\00\00\00\a5") - (data $304 (i32.const 16000) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") - (data $304.1 (i32.const 16252) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") + (data $203 (i32.const 9936) ":\0f \f4\'\8f\cb\ce\c8\a5\19\90\b9\a5o\a5\a0\84\14@aQY\84\00\a1\ed\cc\ce\1b\c2\d3\00\b4W\n?\16h\a9\00\90\acn2x\86\87\00\80z\17\b7&\d7\d8\00\00b\ac\c5\ebx\ad\00\00\e8\89\04#\c7\8a\00\00@v:k\0b\de\00\00\00\c5.\bc\a2\b1\00\00\00\04\bf\c9\1b\8e\00\00\00\a01\a9_\e3\00\00\00\80\f4 \e6\b5\00\00\00\00*\e7\84\91\00\00\00\00\10\a5\d4\e8\00\00\00\00@\b7C\ba\00\00\00\00\00\f9\02\95\00\00\00\00\00(k\ee\00\00\00\00\00 \bc\be\00\00\00\00\00\80\96\98\00\00\00\00\00\00$\f4\00\00\00\00\00\00P\c3\00\00\00\00\00\00@\9c\00\00\00\00\00\00\00\fa\00\00\00\00\00\00\00\c8\00\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\80\cd\cc\cc\cc\cc\cc\cc\cc\0b\d7\a3p=\n\d7\a3<\dfO\8d\97n\12\83,e\19\e2X\17\b7\d1$\84G\1bG\ac\c5\a7\b6il\af\05\bd7\86\bdBz\e5\d5\94\bf\d6\fd\cea\84\11w\cc\ab\98\a5\b46A_p\89\bf\d5\ed\bd\ce\fe\e6\db\ff\aa$\cb\0b\ff\eb\af\cc\88Po\t\cc\bc\8c\14\0e\b4KB\13.\e1\10\d8\\\t5\dc$\b4\da\ac\b0:\f7|\1d\90\\\e1M\c4\be\94\95\e6J\b4\a462\aaw\b8\cc\cc\cc\cc\cc\cc\cc\cc\a3p=\n\d7\a3p=\e9&1\08\ac\1cZd\a8\a4N@\13a\c3\d3S\1dr3\dc\80\cf\0f\0f\b1\c1\c2I\9a?\a6L\1bi\04v\902==|\ba6+\r\c2\fd") + (data $204 (i32.const 10360) "o\1b\8e(\10T\8e\af\daM\e4^\ae\f0\ec\07J\fb\9f\f4\98\'D\b1\9dwA\df\cf\11\cd\99\07\ef\99\85\0b?\fe\b2\15\aa\b4\dc\e6\a7\1f\86c\beZ\06\0b\a5\bc\b4\aaSkuz\07\ed\0f\08\bf,)Ud\7f\b6C\d5\b1\17L\c8;\1a\fb;\efi\c2\87F\b8B\a7\ee@OQ]=\eb\dd\e4PF\1a\12\ba\13\e4labM\f3\92\ea\af(\b6\ef&\e2\bb\8c6U\n\f7\89\04\89\0f`\cb\05\e9\b8\b6\bd!\c9\c1\bb\87\e9\00T\96_\9a\84x\db\8f\bf4\d0\bdr\04R\98\de\'\8a\92\95\00\9am\c1\94\82\17\0f<\05\b7u\00\00\00\00\00\00P\c3\00\00\00\00\00\00\00\00\05\e3L6\12\197\c5\00\00\00\00\00\00(l\d6\aa\80\9d\ef\f0\"\c7\f6~\b9\b7\d2:MBL\c8q\d5m\93\13\c9\ea8\1e\cd\19:\bc\03\1cU\ab\01\80\0c\t\cb\c6,\07\d3\bf\f5\ad\\\a1\90\08\137h\03\cd\10\8cz\c3\87\a8\db6.\ef\07\12\c2\b2\02\cf\bc\f4\03^\e4g\f9\94\c7\85\d7in\f8\06\d1R\ba\be\01\d763\e1|\a0\1c4\a8E\10\d3Q\a0\t\12\11H\de\1e1Vx\85\fa\a6\1e\d5f\a5>\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $205 (i32.const 10728) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $206 (i32.const 10812) "<") + (data $206.1 (i32.const 10824) "\02\00\00\00&\00\00\001\00.\000\00,\002\00.\000\00,\003\00.\000\00,\004\00.\000\00,\005\00.\000") + (data $207 (i32.const 10886) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $208 (i32.const 11068) "<") + (data $208.1 (i32.const 11080) "\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data $209 (i32.const 11132) ",") + (data $209.1 (i32.const 11144) "\11\00\00\00\10\00\00\00P+\00\00P+\00\00,\00\00\00\0b") + (data $210 (i32.const 11180) "\1c") + (data $210.1 (i32.const 11192) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $211 (i32.const 11212) ",") + (data $211.1 (i32.const 11224) "\11\00\00\00\10\00\00\00\c0+\00\00\c0+\00\00\0c\00\00\00\03") + (data $212 (i32.const 11260) "\1c") + (data $212.1 (i32.const 11272) "\01\00\00\00\0c\00\00\00\00\00\80@\00\00\a0@\00\00\c0@") + (data $213 (i32.const 11292) ",") + (data $213.1 (i32.const 11304) ">\00\00\00\10\00\00\00\10,\00\00\10,\00\00\0c\00\00\00\03") + (data $214 (i32.const 11340) ",") + (data $214.1 (i32.const 11352) "\01\00\00\00\18") + (data $214.2 (i32.const 11366) "\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") + (data $215 (i32.const 11388) ",") + (data $215.1 (i32.const 11400) "?\00\00\00\10\00\00\00`,\00\00`,\00\00\18\00\00\00\03") + (data $216 (i32.const 11436) "\1c") + (data $216.1 (i32.const 11448) "\01\00\00\00\03\00\00\00\92\91\90") + (data $217 (i32.const 11468) ",") + (data $217.1 (i32.const 11480) "\10\00\00\00\10\00\00\00\c0,\00\00\c0,\00\00\03\00\00\00\03") + (data $218 (i32.const 11516) "\1c") + (data $218.1 (i32.const 11528) "\01\00\00\00\n\00\00\00\01\02\03") + (data $219 (i32.const 11548) ",") + (data $219.1 (i32.const 11560) "\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data $220 (i32.const 11596) "\1c") + (data $220.1 (i32.const 11608) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $221 (i32.const 11628) "\1c") + (data $221.1 (i32.const 11640) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $222 (i32.const 11660) "\1c") + (data $222.1 (i32.const 11672) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $223 (i32.const 11692) "\1c") + (data $223.1 (i32.const 11704) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data $224 (i32.const 11724) "\1c") + (data $224.1 (i32.const 11736) "\01\00\00\00\n\00\00\00\01\02\03") + (data $225 (i32.const 11756) ",") + (data $225.1 (i32.const 11768) "\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data $226 (i32.const 11804) "\1c") + (data $226.1 (i32.const 11816) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $227 (i32.const 11836) "\1c") + (data $227.1 (i32.const 11848) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $228 (i32.const 11868) "\1c") + (data $228.1 (i32.const 11880) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $229 (i32.const 11900) "\1c") + (data $229.1 (i32.const 11912) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data $230 (i32.const 11932) "\1c") + (data $230.1 (i32.const 11944) "\01\00\00\00\n\00\00\00\01\02\03") + (data $231 (i32.const 11964) "<") + (data $231.1 (i32.const 11976) "\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data $232 (i32.const 12028) "\1c") + (data $232.1 (i32.const 12040) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $233 (i32.const 12060) "\1c") + (data $233.1 (i32.const 12072) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $234 (i32.const 12092) "\1c") + (data $234.1 (i32.const 12104) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $235 (i32.const 12124) "\1c") + (data $235.1 (i32.const 12136) "\01\00\00\00\n\00\00\00defg\ff\ff\ff") + (data $236 (i32.const 12156) ",") + (data $236.1 (i32.const 12168) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $237 (i32.const 12204) ",") + (data $237.1 (i32.const 12216) "\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $238 (i32.const 12252) ",") + (data $238.1 (i32.const 12264) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $239 (i32.const 12300) ",") + (data $239.1 (i32.const 12312) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $240 (i32.const 12348) ",") + (data $240.1 (i32.const 12360) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $241 (i32.const 12396) ",") + (data $241.1 (i32.const 12408) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $242 (i32.const 12444) ",") + (data $242.1 (i32.const 12456) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $243 (i32.const 12492) ",") + (data $243.1 (i32.const 12504) "\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $244 (i32.const 12540) ",") + (data $244.1 (i32.const 12552) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $245 (i32.const 12588) ",") + (data $245.1 (i32.const 12600) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $246 (i32.const 12636) ",") + (data $246.1 (i32.const 12648) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $247 (i32.const 12684) ",") + (data $247.1 (i32.const 12696) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $248 (i32.const 12732) "<") + (data $248.1 (i32.const 12744) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $249 (i32.const 12796) ",") + (data $249.1 (i32.const 12808) "\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $250 (i32.const 12844) "<") + (data $250.1 (i32.const 12856) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $251 (i32.const 12908) "<") + (data $251.1 (i32.const 12920) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $252 (i32.const 12972) "<") + (data $252.1 (i32.const 12984) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $252.2 (i32.const 13012) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $253 (i32.const 13036) "<") + (data $253.1 (i32.const 13048) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $254 (i32.const 13100) "<") + (data $254.1 (i32.const 13112) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $255 (i32.const 13164) ",") + (data $255.1 (i32.const 13176) "\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $256 (i32.const 13212) "<") + (data $256.1 (i32.const 13224) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $257 (i32.const 13276) "<") + (data $257.1 (i32.const 13288) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $258 (i32.const 13340) "<") + (data $258.1 (i32.const 13352) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $258.2 (i32.const 13380) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $259 (i32.const 13404) "<") + (data $259.1 (i32.const 13416) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $260 (i32.const 13468) "l") + (data $260.1 (i32.const 13480) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $261 (i32.const 13580) ",") + (data $261.1 (i32.const 13592) "\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $262 (i32.const 13628) "l") + (data $262.1 (i32.const 13640) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $263 (i32.const 13740) "l") + (data $263.1 (i32.const 13752) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $264 (i32.const 13852) "l") + (data $264.1 (i32.const 13864) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $264.2 (i32.const 13912) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $265 (i32.const 13964) "l") + (data $265.1 (i32.const 13976) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $266 (i32.const 14076) "l") + (data $266.1 (i32.const 14088) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $267 (i32.const 14188) ",") + (data $267.1 (i32.const 14200) "\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $268 (i32.const 14236) "l") + (data $268.1 (i32.const 14248) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $269 (i32.const 14348) "l") + (data $269.1 (i32.const 14360) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $270 (i32.const 14460) "l") + (data $270.1 (i32.const 14472) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $270.2 (i32.const 14520) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $271 (i32.const 14572) "l") + (data $271.1 (i32.const 14584) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $272 (i32.const 14684) "<") + (data $272.1 (i32.const 14696) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $273 (i32.const 14748) ",") + (data $273.1 (i32.const 14760) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data $274 (i32.const 14796) "<") + (data $274.1 (i32.const 14808) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data $275 (i32.const 14860) "<") + (data $275.1 (i32.const 14872) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data $276 (i32.const 14924) "<") + (data $276.1 (i32.const 14936) "\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data $277 (i32.const 14988) "l") + (data $277.1 (i32.const 15000) "\01\00\00\00P") + (data $277.2 (i32.const 15014) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $278 (i32.const 15100) ",") + (data $278.1 (i32.const 15112) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data $279 (i32.const 15148) "l") + (data $279.1 (i32.const 15160) "\01\00\00\00P") + (data $279.2 (i32.const 15174) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") + (data $280 (i32.const 15260) "l") + (data $280.1 (i32.const 15272) "\01\00\00\00P") + (data $280.2 (i32.const 15286) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") + (data $281 (i32.const 15372) "l") + (data $281.1 (i32.const 15384) "\01\00\00\00P") + (data $281.2 (i32.const 15398) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data $282 (i32.const 15484) "\1c") + (data $282.1 (i32.const 15496) "\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data $283 (i32.const 15516) "\1c") + (data $283.1 (i32.const 15528) "\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data $284 (i32.const 15548) "\1c") + (data $284.1 (i32.const 15560) "F\00\00\00\08\00\00\00\91") + (data $285 (i32.const 15580) "\1c") + (data $285.1 (i32.const 15592) "F\00\00\00\08\00\00\00\92") + (data $286 (i32.const 15612) "\1c") + (data $286.1 (i32.const 15624) "G\00\00\00\08\00\00\00\93") + (data $287 (i32.const 15644) "\1c") + (data $287.1 (i32.const 15656) "G\00\00\00\08\00\00\00\94") + (data $288 (i32.const 15676) "\1c") + (data $288.1 (i32.const 15688) "G\00\00\00\08\00\00\00\95") + (data $289 (i32.const 15708) "\1c") + (data $289.1 (i32.const 15720) "G\00\00\00\08\00\00\00\96") + (data $290 (i32.const 15740) "\1c") + (data $290.1 (i32.const 15752) "H\00\00\00\08\00\00\00\97") + (data $291 (i32.const 15772) "\1c") + (data $291.1 (i32.const 15784) "H\00\00\00\08\00\00\00\98") + (data $292 (i32.const 15804) "\1c") + (data $292.1 (i32.const 15816) "I\00\00\00\08\00\00\00\99") + (data $293 (i32.const 15836) "\1c") + (data $293.1 (i32.const 15848) "I\00\00\00\08\00\00\00\9a") + (data $294 (i32.const 15868) "\1c") + (data $294.1 (i32.const 15880) "J\00\00\00\08\00\00\00\9b") + (data $295 (i32.const 15900) "\1c") + (data $295.1 (i32.const 15912) "J\00\00\00\08\00\00\00\9c") + (data $296 (i32.const 15932) "\1c") + (data $296.1 (i32.const 15944) "K\00\00\00\08\00\00\00\9d") + (data $297 (i32.const 15964) "\1c") + (data $297.1 (i32.const 15976) "K\00\00\00\08\00\00\00\9e") + (data $298 (i32.const 15996) "\1c") + (data $298.1 (i32.const 16008) "L\00\00\00\08\00\00\00\9f") + (data $299 (i32.const 16028) "\1c") + (data $299.1 (i32.const 16040) "L\00\00\00\08\00\00\00\a0") + (data $300 (i32.const 16060) "\1c") + (data $300.1 (i32.const 16072) "M\00\00\00\08\00\00\00\a1") + (data $301 (i32.const 16092) "\1c") + (data $301.1 (i32.const 16104) "M\00\00\00\08\00\00\00\a2") + (data $302 (i32.const 16124) "\1c") + (data $302.1 (i32.const 16136) "N\00\00\00\08\00\00\00\a3") + (data $303 (i32.const 16156) "\1c") + (data $303.1 (i32.const 16168) "N\00\00\00\08\00\00\00\a4") + (data $304 (i32.const 16188) "\1c") + (data $304.1 (i32.const 16200) "\0f\00\00\00\08\00\00\00\a5") + (data $305 (i32.const 16224) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") + (data $305.1 (i32.const 16476) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") (table $0 166 166 funcref) (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") (export "memory" (memory $0)) @@ -793,11 +799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -842,11 +848,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -890,11 +896,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -921,11 +927,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -973,11 +979,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1027,11 +1033,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1087,11 +1093,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1118,11 +1124,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1147,11 +1153,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1176,11 +1182,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1229,11 +1235,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1264,11 +1270,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1312,11 +1318,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1343,11 +1349,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1395,11 +1401,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1447,11 +1453,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1499,11 +1505,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1613,11 +1619,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1665,11 +1671,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1718,11 +1724,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1807,11 +1813,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1849,11 +1855,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1891,11 +1897,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1932,11 +1938,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1984,11 +1990,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2025,11 +2031,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2073,11 +2079,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2124,11 +2130,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2175,11 +2181,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2347,10 +2353,10 @@ if unreachable end - i32.const 49088 + i32.const 49312 i32.const 0 i32.store - i32.const 50656 + i32.const 50880 i32.const 0 i32.store loop $for-loop|0 @@ -2361,7 +2367,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 49088 + i32.const 49312 i32.add i32.const 0 i32.store offset=4 @@ -2379,7 +2385,7 @@ i32.add i32.const 2 i32.shl - i32.const 49088 + i32.const 49312 i32.add i32.const 0 i32.store offset=96 @@ -2397,14 +2403,14 @@ br $for-loop|0 end end - i32.const 49088 - i32.const 50660 + i32.const 49312 + i32.const 50884 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 49088 + i32.const 49312 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) @@ -2617,7 +2623,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 49088 + i32.const 49312 i32.lt_u if return @@ -2670,11 +2676,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2712,11 +2718,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2754,11 +2760,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2796,11 +2802,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2837,11 +2843,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2885,11 +2891,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2937,11 +2943,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2978,11 +2984,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3029,11 +3035,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3081,11 +3087,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3132,11 +3138,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3184,11 +3190,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3238,11 +3244,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3320,11 +3326,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3362,11 +3368,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3404,11 +3410,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3493,11 +3499,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3582,11 +3588,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3671,11 +3677,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3760,11 +3766,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3851,11 +3857,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3940,11 +3946,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4162,11 +4168,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4248,11 +4254,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4328,11 +4334,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4434,11 +4440,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4533,11 +4539,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4638,11 +4644,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4704,11 +4710,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4790,11 +4796,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4876,11 +4882,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4964,11 +4970,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5050,11 +5056,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5137,11 +5143,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5271,11 +5277,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5357,11 +5363,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5446,11 +5452,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5502,7 +5508,7 @@ local.get $4 i32.ne if - i32.const 11760 + i32.const 11984 i32.const 3 local.get $2 f64.convert_i32_s @@ -5549,7 +5555,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5595,7 +5601,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5645,8 +5651,8 @@ i32.const 1 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5667,11 +5673,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5790,11 +5796,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5953,11 +5959,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5992,6 +5998,179 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + local.get $0 + i32.const 10 + i32.add + local.tee $2 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.tee $3 + i32.const 4 + i32.shl + i32.const 10360 + i32.add + local.tee $4 + i64.load + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 + i64.const 4294967295 + i64.and + local.set $10 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $6 + i32.const 0 + local.get $2 + local.get $3 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 + i32.shl + i32.const 10152 + i32.add + i64.load + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + local.get $1 + local.get $11 + i64.mul + local.set $8 + local.get $12 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + local.tee $5 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $6 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + local.get $9 + local.get $11 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 10728 + i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + ) (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -6001,11 +6180,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6124,11 +6303,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6180,7 +6359,7 @@ local.get $4 i32.ne if - i32.const 11552 + i32.const 11776 i32.const 3 local.get $2 f64.convert_i32_s @@ -6220,11 +6399,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6276,7 +6455,7 @@ local.get $4 i64.ne if - i32.const 13984 + i32.const 14208 i32.const 3 local.get $2 f64.convert_i32_s @@ -6316,11 +6495,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6372,7 +6551,7 @@ local.get $4 i32.ne if - i32.const 12960 + i32.const 13184 i32.const 3 local.get $2 f64.convert_i32_s @@ -6412,11 +6591,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6468,7 +6647,7 @@ local.get $4 i32.ne if - i32.const 12288 + i32.const 12512 i32.const 3 local.get $2 f64.convert_i32_s @@ -6509,7 +6688,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6549,7 +6728,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6576,7 +6755,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6599,7 +6778,7 @@ local.get $5 i32.ne if - i32.const 11344 + i32.const 11568 i32.const 3 local.get $2 f64.convert_i32_s @@ -6630,8 +6809,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6647,11 +6826,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6703,7 +6882,7 @@ local.get $4 i64.ne if - i32.const 13376 + i32.const 13600 i32.const 3 local.get $2 f64.convert_i32_s @@ -6743,11 +6922,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6799,7 +6978,7 @@ local.get $4 i32.ne if - i32.const 12592 + i32.const 12816 i32.const 3 local.get $2 f64.convert_i32_s @@ -6839,11 +7018,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6895,7 +7074,7 @@ local.get $4 i32.ne if - i32.const 12000 + i32.const 12224 i32.const 3 local.get $2 f64.convert_i32_s @@ -7013,320 +7192,6 @@ local.get $2 call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $4 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 - end - local.get $2 - if (result i64) - local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - else - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.set $5 - local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - end - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.get $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $6 - i64.clz - i32.wrap_i64 - local.tee $8 - i32.sub - local.set $9 - local.get $6 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $3 - local.get $3 - i64.const 8388608 - i64.const 4503599627370496 - local.get $2 - select - i64.eq - i32.const 1 - i32.add - local.tee $2 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $5 - local.get $2 - i32.sub - local.get $9 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $9 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_sat_f64_s - local.tee $2 - local.get $2 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $2 - i32.const 3 - i32.shl - local.tee $5 - i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 9864 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $2 - i32.const 1 - i32.shl - i32.const 10560 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $3 - local.get $3 - i64.clz - i64.shl - local.tee $3 - i64.const 4294967295 - i64.and - local.set $10 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - i64.mul - local.get $10 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $13 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $14 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 - local.get $12 - i64.mul - local.get $12 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $15 - global.get $~lib/util/number/_frc_minus - local.tee $16 - i64.const 4294967295 - i64.and - local.set $3 - local.get $12 - local.get $16 - i64.const 32 - i64.shr_u - local.tee $16 - i64.mul - local.get $3 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $7 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $15 - i64.const 32 - i64.shr_u - i64.add - local.get $7 - local.get $14 - i64.mul - local.get $15 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $11 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $7 - i64.mul - local.get $13 - i64.const 32 - i64.shr_u - i64.add - local.get $7 - local.get $10 - i64.mul - local.get $13 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $11 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $11 - local.get $7 - local.get $16 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $7 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $4 - call $~lib/util/number/genDigits - local.get $4 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $4 - i32.add - ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -7335,11 +7200,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7379,11 +7244,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7464,11 +7329,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7550,11 +7415,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7634,11 +7499,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7718,11 +7583,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7767,11 +7632,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7816,11 +7681,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7865,11 +7730,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7945,11 +7810,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8029,11 +7894,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8083,11 +7948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8167,11 +8032,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8216,11 +8081,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8333,11 +8198,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8461,11 +8326,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8510,11 +8375,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8634,7 +8499,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 49088 + i32.const 49312 i32.lt_u if local.get $0 @@ -8730,7 +8595,7 @@ unreachable end local.get $0 - i32.const 49088 + i32.const 49312 i32.lt_u if local.get $0 @@ -8778,11 +8643,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8834,7 +8699,7 @@ local.get $4 f64.ne if - i32.const 14896 + i32.const 15120 i32.const 3 local.get $2 f64.convert_i32_s @@ -8872,11 +8737,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8928,7 +8793,7 @@ local.get $4 f32.ne if - i32.const 14544 + i32.const 14768 i32.const 3 local.get $2 f64.convert_i32_s @@ -10525,11 +10390,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10621,11 +10486,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10729,6 +10594,3609 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) + (func $~lib/util/dtoa/ftoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i32) + local.get $0 + local.set $2 + local.get $1 + i32.reinterpret_f32 + local.tee $4 + i32.const 1 + i32.shl + i32.const 24 + i32.shr_u + local.set $5 + local.get $4 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.set $7 + local.get $4 + i32.const 31 + i32.shr_u + local.set $4 + block $~lib/util/dtoa/formatDecodedFloat|inlined.0 (result i32) + local.get $5 + i32.const 1 + i32.sub + i32.const 254 + i32.lt_u + if + local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 + end + local.get $5 + i32.const 150 + i32.sub + local.tee $4 + i32.const 24 + i32.lt_s + local.get $4 + i32.const -23 + i32.ge_s + i32.and + if + local.get $7 + i64.const 8388608 + i64.or + local.set $3 + local.get $4 + i32.const 0 + i32.lt_s + if (result i64) + i64.const 1 + i32.const 0 + local.get $4 + i32.sub + i64.extend_i32_s + local.tee $8 + i64.shl + i64.const 1 + i64.sub + local.get $3 + i64.and + i64.eqz + if (result i64) + local.get $3 + local.get $8 + i64.shr_u + else + i64.const 0 + end + else + local.get $3 + local.get $4 + i64.extend_i32_s + i64.shl + local.tee $3 + i64.const 0 + local.get $3 + i64.const 16777216 + i64.le_u + select + end + local.tee $3 + i64.const 0 + i64.ne + if + local.get $2 + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $3 + i64.const 100000000 + i64.lt_u + if + local.get $3 + i64.const 10000 + i64.lt_u + if + local.get $3 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $3 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $3 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 1000000000000 + i64.lt_u + if + local.get $3 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $3 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $5 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.tee $4 + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 100 + i64.ge_u + if + local.get $4 + i32.const 4 + i32.sub + local.get $3 + local.get $3 + i64.const 100 + i64.div_u + local.tee $3 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $3 + i64.const 10 + i64.ge_u + if + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + else + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + end + local.get $7 + i64.const 8388608 + i64.or + local.set $8 + local.get $5 + i32.const 150 + i32.sub + local.set $5 + local.get $7 + i64.const 0 + i64.ne + local.tee $9 + if (result i32) + local.get $5 + i32.const 37 + i32.add + i32.const -1 + local.get $5 + i32.const 1233 + i32.mul + i32.const 12 + i32.shr_s + local.tee $4 + i32.sub + i32.const 1701 + i32.mul + i32.const 9 + i32.shr_s + i32.add + else + local.get $5 + i32.const 37 + i32.add + local.get $5 + i32.const 1233 + i32.mul + i32.const 512 + i32.sub + i32.const 12 + i32.shr_s + local.tee $4 + i32.const -1701 + i32.mul + i32.const 1701 + i32.sub + i32.const 9 + i32.shr_s + i32.add + end + local.set $6 + local.get $4 + i32.const 16 + i32.le_s + local.get $4 + i32.const -28 + i32.ge_s + i32.and + if (result i64) + local.get $4 + i32.const 3 + i32.shl + i32.const 10160 + i32.add + i64.load + else + i32.const 292 + local.get $4 + i32.sub + call $~lib/util/dtoa/computePow10Compact + local.set $3 + global.get $~lib/util/dtoa/gPow10Hi + local.get $3 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + end + local.tee $7 + i64.const 32 + i64.shr_u + local.get $8 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + local.get $8 + i64.mul + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $3 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 40 + local.get $6 + i64.extend_i32_s + local.tee $10 + i64.sub + i64.shr_u + local.tee $11 + i64.const 68719476735 + i64.and + local.set $3 + local.get $11 + i64.const 1 + local.get $8 + i64.const 1 + i64.and + i64.sub + local.get $7 + i64.const 65 + local.get $10 + i64.sub + i64.shr_u + i64.add + local.tee $7 + i64.add + i64.const 36 + i64.shr_u + local.set $8 + local.get $3 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $3 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + local.set $6 + local.get $9 + if (result i32) + local.get $8 + local.get $11 + local.get $7 + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + else + local.get $6 + i32.const 1 + i32.add + local.get $6 + local.get $5 + i32.const 64 + i32.eq + local.get $5 + i32.const -119 + i32.eq + i32.or + local.get $5 + i32.const 67 + i32.eq + i32.or + select + local.set $6 + local.get $8 + local.get $11 + local.get $7 + i64.const 1 + i64.shr_u + i64.sub + i64.const 36 + i64.shr_u + i64.gt_u + end + local.get $8 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $6 + global.set $~lib/util/dtoa/gLastDigit + i32.eqz + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $5 + if + local.get $7 + i64.const 0 + i64.ne + if + local.get $2 + i32.const 78 + i32.store16 + local.get $2 + i32.const 97 + i32.store16 offset=2 + local.get $2 + i32.const 78 + i32.store16 offset=4 + local.get $2 + i32.const 6 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 + end + local.get $2 + i64.const 29555310648492105 + i64.store + local.get $2 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $7 + i64.eqz + if + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + local.get $2 + i32.const 2 + i32.add + local.set $2 + end + i32.const 337 + call $~lib/util/dtoa/computePow10Compact + local.set $3 + global.get $~lib/util/dtoa/gPow10Hi + local.get $3 + i64.const 0 + i64.ne + i64.extend_i32_u + i64.add + local.tee $3 + i64.const 4294967295 + i64.and + local.get $7 + i64.mul + local.set $8 + local.get $3 + i64.const 32 + i64.shr_u + local.get $7 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + i64.const 8 + i64.shl + local.get $8 + i64.const 4294967295 + i64.and + i64.const 24 + i64.shr_u + i64.or + i64.const 6 + i64.shr_u + local.tee $8 + i64.const 68719476735 + i64.and + local.set $10 + local.get $8 + i64.const 1 + local.get $7 + i64.const 1 + i64.and + i64.sub + local.get $3 + i64.const 31 + i64.shr_u + i64.add + local.tee $3 + i64.add + i64.const 36 + i64.shr_u + local.tee $7 + global.set $~lib/util/dtoa/gSig + i32.const -45 + global.set $~lib/util/dtoa/gExp + local.get $10 + i64.const 5 + i64.mul + i64.const 17179869177 + i64.add + local.get $10 + i64.const 32 + i64.shr_u + i64.add + i64.const 35 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + local.get $8 + local.get $3 + i64.sub + i64.const 36 + i64.shr_u + local.get $7 + i64.ge_u + global.set $~lib/util/dtoa/gHasLastDigit + i32.const -45 + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $3 + i64.const 10000 + i64.lt_u + if + i32.const -49 + local.set $4 + local.get $3 + i64.const 10000 + i64.mul + local.set $3 + end + local.get $3 + i64.const 1000000 + i64.lt_u + if + local.get $4 + i32.const 2 + i32.sub + local.set $4 + local.get $3 + i64.const 100 + i64.mul + local.set $3 + end + local.get $3 + i64.const 10000000 + i64.lt_u + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + end + local.get $3 + local.get $3 + i64.const 10 + i64.div_u + local.tee $3 + i64.const 10 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $3 + global.set $~lib/util/dtoa/gSig + local.get $4 + global.set $~lib/util/dtoa/gExp + local.get $5 + global.set $~lib/util/dtoa/gLastDigit + local.get $5 + i32.const 0 + i32.ne + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $6 + global.get $~lib/util/dtoa/gSig + i64.const 10000000 + i64.ge_u + local.tee $9 + global.get $~lib/util/dtoa/gExp + i32.const 7 + i32.add + i32.add + local.set $4 + global.get $~lib/util/dtoa/gSig + i64.const 1000000 + i64.lt_u + if + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + local.get $6 + select + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + local.set $6 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + global.get $~lib/util/dtoa/gSig + local.tee $3 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $3 + i64.add + local.tee $3 + local.get $3 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $3 + local.get $3 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $7 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $7 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 70 + local.get $3 + i64.const 1 + i64.shl + i64.const 1 + i64.or + i64.clz + i64.sub + i64.const 3 + i64.shr_u + i32.wrap_i64 + global.set $~lib/util/dtoa/gDigits + local.get $4 + i32.const 20 + i32.le_s + local.get $4 + i32.const -6 + i32.ge_s + i32.and + if + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $6 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $7 + global.get $~lib/util/dtoa/gDigHi + local.set $3 + local.get $9 + i32.eqz + if + local.get $7 + i64.const 56 + i64.shl + local.get $3 + i64.const 8 + i64.shr_u + i64.or + local.set $3 + end + local.get $2 + local.set $5 + i32.const 8 + global.get $~lib/util/dtoa/gDigits + local.get $9 + i32.sub + local.get $6 + select + local.set $6 + block $~lib/util/dtoa/writeFixedFloat|inlined.0 (result i32) + local.get $4 + i32.const 8 + i32.ge_s + if + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $9 + if + local.get $2 + local.get $7 + i64.store16 offset=16 + end + local.get $5 + local.get $4 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $5 + local.get $9 + i32.const 8 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_u + if + local.get $2 + i64.const 13511005043687472 + i64.store + local.get $2 + i64.const 13511005043687472 + i64.store offset=8 + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $4 + i32.const 46 + i32.store16 + local.get $4 + i32.const 48 + i32.store16 offset=2 + local.get $4 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + local.get $6 + local.get $9 + i32.add + local.set $2 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $2 + local.get $6 + i32.gt_s + select + else + local.get $2 + end + local.set $6 + local.get $5 + i32.const 1 + local.get $4 + i32.sub + local.get $4 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $8 + local.get $8 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $8 + local.get $8 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $9 + if + local.get $2 + local.get $7 + i64.store16 offset=16 + end + local.get $4 + i32.const 0 + i32.ge_s + if + local.get $7 + i64.const 0 + local.get $9 + select + local.set $7 + local.get $4 + i32.const 1 + i32.add + local.tee $9 + i32.const 3 + i32.shl + local.tee $12 + i32.const 64 + i32.lt_s + if + local.get $7 + i64.const 64 + local.get $12 + i64.extend_i32_s + local.tee $7 + i64.sub + i64.shl + local.get $3 + local.get $7 + i64.shr_u + i64.or + local.set $7 + end + local.get $9 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $12 + local.get $7 + i64.const 4294967295 + i64.and + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $12 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $5 + i32.const 46 + i32.store16 offset=2 + end + local.get $2 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.set $2 + local.get $6 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $4 + i32.const 0 + i32.ge_s + i32.and + if + local.get $2 + i32.const 46 + i32.store16 + local.get $2 + i32.const 48 + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixedFloat|inlined.0 + end + loop $while-continue|1 + local.get $2 + local.get $5 + i32.const 2 + i32.add + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $2 + i32.const 48 + i32.store16 + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + end + end + br $~lib/util/dtoa/formatDecodedFloat|inlined.0 + end + local.get $2 + local.tee $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.tee $2 + global.get $~lib/util/dtoa/gDigHi + local.tee $3 + i64.const 4294967295 + i64.and + local.tee $7 + local.get $7 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $7 + local.get $7 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $3 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $3 + local.get $3 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $2 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=16 + local.get $2 + i32.const 9 + global.get $~lib/util/dtoa/gDigits + local.get $9 + i32.eqz + i32.add + local.get $6 + select + i32.const 1 + i32.shl + i32.add + local.set $2 + loop $while-continue|2 + local.get $2 + local.get $5 + i32.const 4 + i32.add + i32.gt_u + if (result i32) + local.get $2 + i32.const 2 + i32.sub + i32.load16_u + i32.const 48 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|2 + end + end + local.get $5 + local.get $5 + i32.load16_u offset=2 + i32.store16 + local.get $5 + i32.const 46 + i32.store16 offset=2 + local.get $2 + local.get $2 + local.get $5 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $2 + i32.const 101 + i32.store16 + local.get $2 + local.get $4 + i32.const 31 + i32.shr_s + local.tee $5 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $2 + i32.const 4 + i32.add + local.set $2 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $4 + local.get $5 + i32.xor + local.get $5 + i32.sub + local.tee $4 + i32.const 100 + i32.ge_s + if + local.get $2 + local.get $4 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $5 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + local.get $5 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store offset=2 + local.get $2 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $4 + i32.const 10 + i32.ge_s + if + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + local.get $2 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $2 + local.get $4 + i32.const 48 + i32.add + i32.store16 + local.get $2 + i32.const 2 + i32.add + end + end + local.get $0 + i32.sub + i32.const 1 + i32.shr_u + ) + (func $~lib/util/dtoa/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $6 + local.get $2 + i64.const 4503599627370495 + i64.and + local.set $5 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $3 + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $6 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.tee $7 + i32.eqz + if + local.get $6 + if + local.get $5 + i64.const 0 + i64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + local.get $0 + i32.const 6 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.tee $3 + i64.const 29555310648492105 + i64.store + local.get $3 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $3 + if (result i32) + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + end + local.set $3 + local.get $7 + if + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $6 + i32.const 1075 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if (result i64) + i32.const 0 + local.get $8 + i32.sub + local.tee $8 + i32.const 52 + i32.le_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $4 + i64.shl + i64.const 1 + i64.sub + local.get $2 + i64.and + i64.eqz + select + else + i64.const 0 + end + else + local.get $8 + i32.const 11 + i32.lt_s + if (result i64) + local.get $2 + local.get $8 + i64.extend_i32_s + i64.shl + local.tee $2 + i64.const 0 + local.get $2 + i64.const 10000000000000000 + i64.lt_u + select + else + i64.const 0 + end + end + local.tee $4 + i64.const 0 + i64.ne + if + local.get $3 + local.get $4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $4 + i64.const 100000000 + i64.lt_u + if + local.get $4 + i64.const 10000 + i64.lt_u + if + local.get $4 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $4 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $4 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 1000000000000 + i64.lt_u + if + local.get $4 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $4 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $4 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $4 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $4 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $7 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.tee $6 + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 100 + i64.ge_u + if + local.get $6 + i32.const 4 + i32.sub + local.get $4 + local.get $4 + i64.const 100 + i64.div_u + local.tee $4 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + end + local.get $4 + i64.const 10 + i64.ge_u + if + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $4 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $7 + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $6 + i32.const 1075 + i32.sub + local.set $7 + local.get $5 + i64.eqz + if + local.get $7 + i32.const -1 + local.get $7 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + i32.const 20 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.set $8 + block $~lib/util/dtoa/computePow10|inlined.0 + local.get $7 + i32.const 293 + i32.add + local.tee $7 + i32.const 320 + i32.le_s + local.get $7 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $7 + i32.sub + local.tee $7 + i32.const 3 + i32.shl + i32.const 9800 + i32.add + i64.load + local.set $2 + local.get $7 + i32.const 44 + i32.le_s + if + local.get $2 + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + i32.const 3 + i32.shl + i32.const 9936 + i32.add + i64.load + drop + local.get $2 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $7 + call $~lib/util/dtoa/computePow10Compact + drop + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $2 + i64.const 11 + local.get $8 + i64.extend_i32_s + local.tee $4 + i64.sub + i64.shr_u + local.set $5 + i64.const 10 + i64.const 2 + local.get $2 + local.get $4 + i64.const 53 + i64.add + local.tee $9 + i64.shl + local.tee $10 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + local.tee $11 + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + local.get $10 + local.get $9 + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $4 + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $4 + i64.sub + i64.shr_u + local.get $2 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + local.tee $2 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + local.get $11 + i64.const 511 + i64.and + i64.lt_u + select + local.get $10 + i64.const 4611686018427387904 + i64.eq + select + i64.const 0 + local.get $2 + i64.const 1 + i64.shr_u + local.get $10 + i64.le_u + select + local.get $2 + i64.const -1 + local.get $10 + i64.sub + i64.gt_u + select + local.tee $2 + i64.const 10 + i64.eq + if + local.get $5 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $5 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $5 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $5 + i64.const 4503599627370496 + i64.or + local.set $2 + local.get $7 + i32.const -1 + local.get $6 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.tee $6 + i32.sub + local.tee $7 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.tee $8 + i32.const 7 + i32.add + local.set $12 + block $~lib/util/dtoa/computePow10|inlined.1 + local.get $7 + i32.const 293 + i32.add + local.tee $13 + i32.const 320 + i32.le_s + local.get $13 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $13 + i32.sub + local.tee $13 + i32.const 3 + i32.shl + i32.const 9800 + i32.add + i64.load + local.set $5 + local.get $13 + i32.const 44 + i32.le_s + if + local.get $5 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + local.set $4 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + i32.const 3 + i32.shl + i32.const 9936 + i32.add + i64.load + local.set $4 + local.get $5 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $13 + call $~lib/util/dtoa/computePow10Compact + local.set $4 + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $5 + local.get $2 + local.get $12 + i64.extend_i32_s + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $4 + local.get $7 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + local.tee $11 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $14 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $14 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + i64.const 10 + local.get $10 + local.get $11 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $4 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $4 + i64.const 6 + i64.shr_u + i64.or + local.tee $4 + i64.const 10 + i64.mul + local.tee $10 + local.get $10 + i64.const -9223372036854775802 + i64.const 0 + local.get $4 + i64.const 4611686018427387904 + i64.ne + select + i64.add + i64.gt_u + i64.extend_i32_u + local.get $4 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $2 + i64.const 1 + i64.and + i64.sub + local.get $5 + i32.const 0 + local.get $8 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.add + local.tee $2 + local.get $4 + i64.le_u + select + i64.const -1 + local.get $4 + i64.sub + local.get $2 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $6 + global.set $~lib/util/dtoa/gExp + end + else + i32.const 616 + call $~lib/util/dtoa/computePow10Compact + local.set $2 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $4 + local.get $5 + i64.const 5 + i64.shl + local.tee $9 + i64.mul + local.set $10 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $14 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $16 + local.get $11 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $17 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + i64.const 10 + local.get $10 + local.get $14 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $9 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $2 + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $9 + local.get $16 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $9 + local.get $17 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $9 + i64.const 58 + i64.shl + local.get $2 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.tee $10 + i64.const 9223372036854775802 + i64.sub + local.get $10 + i64.lt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + i64.const 1 + local.get $5 + i64.const 1 + i64.and + i64.sub + local.get $4 + i64.const 2 + i64.shr_u + i64.add + local.tee $4 + local.get $2 + i64.le_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $4 + i64.lt_u + select + local.set $2 + local.get $9 + i64.const 6 + i64.shr_u + local.set $4 + local.get $2 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $2 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + i32.const -324 + global.set $~lib/util/dtoa/gExp + end + global.get $~lib/util/dtoa/gSig + i64.const 1000000000000000 + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $2 + i64.const 1000000000000000 + i64.ge_u + if + local.get $2 + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.2 (result i32) + local.get $2 + i64.const 100000000 + i64.lt_u + if + local.get $2 + i64.const 10000 + i64.lt_u + if + local.get $2 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $2 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $2 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 1000000000000 + i64.lt_u + if + local.get $2 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $2 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.2 + end + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.2 + drop + i32.const 15 + end + i32.sub + local.tee $6 + i32.const 3 + i32.shl + i32.const 10880 + i32.add + f64.load + i64.trunc_sat_f64_u + local.get $2 + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $6 + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + end + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end + global.get $~lib/util/dtoa/gHasLastDigit + local.set $7 + global.get $~lib/util/dtoa/gSig + local.tee $2 + i64.const 100000000 + i64.div_u + local.tee $4 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $4 + i64.add + local.tee $5 + local.get $5 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $5 + local.get $5 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $5 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $5 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $5 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $5 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + local.get $2 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + local.tee $2 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + local.get $2 + i64.add + local.tee $2 + local.get $2 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + i64.add + local.tee $2 + local.get $2 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + i64.add + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.tee $8 + i32.const 20 + i32.le_s + local.get $8 + i32.const -6 + i32.ge_s + i32.and + if + local.get $8 + i32.const 0 + i32.lt_s + if + local.get $3 + i64.const 13511005043687472 + i64.store + local.get $3 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $7 + select + i32.const 48 + i32.add + i64.extend_i32_s + local.set $4 + i32.const 16 + i32.const 15 + local.get $7 + select + local.set $6 + global.get $~lib/util/dtoa/gDigHi + local.set $9 + global.get $~lib/util/dtoa/gDigLo + local.set $5 + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $8 + i32.const 16 + i32.ge_s + if + local.get $3 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $3 + local.get $4 + i64.store16 offset=32 + local.get $3 + local.get $8 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $3 + i32.const 34 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_u + if + local.get $6 + i64.const 13511005043687472 + i64.store + local.get $6 + i64.const 13511005043687472 + i64.store offset=8 + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + i32.const 46 + i32.store16 + local.get $7 + i32.const 48 + i32.store16 offset=2 + local.get $7 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.tee $6 + i32.const 1 + i32.add + local.get $6 + local.get $8 + i32.const 0 + i32.ge_s + local.tee $6 + select + local.set $12 + local.get $3 + i32.const 1 + local.get $8 + i32.sub + local.get $8 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 + i32.shl + i32.add + local.tee $13 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $13 + i32.const 16 + i32.add + local.get $5 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $13 + local.get $5 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $13 + local.get $4 + i64.store16 offset=32 + local.get $6 + if + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + local.tee $6 + i32.const 64 + i32.lt_s + if + local.get $5 + i64.const 64 + local.get $6 + i64.extend_i32_s + local.tee $10 + i64.sub + local.tee $11 + i64.shl + local.get $9 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $11 + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $4 + else + local.get $6 + i32.const 64 + i32.eq + if + local.get $5 + local.set $2 + else + local.get $6 + i32.const 128 + i32.lt_s + if (result i64) + local.get $6 + i32.const -64 + i32.add + i64.extend_i32_s + local.tee $2 + local.set $10 + local.get $4 + i64.const 64 + local.get $2 + i64.sub + i64.shl + local.get $5 + local.get $10 + i64.shr_u + i64.or + local.set $2 + local.get $4 + local.get $10 + i64.shr_u + else + local.get $4 + local.set $2 + i64.const 0 + end + local.set $4 + end + end + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $10 + local.get $10 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $10 + local.get $10 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + i32.const 9 + i32.add + local.tee $6 + local.get $12 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.shl + local.get $13 + i32.add + local.tee $6 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + end + local.get $13 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $3 + i32.const 46 + i32.store16 offset=2 + end + local.get $13 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $12 + local.get $8 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.const 0 + i32.ge_s + i32.and + if + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $7 + i32.eqz + if + local.get $3 + local.get $5 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 8 + i32.eq + if (result i32) + local.get $3 + local.get $9 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $3 + end + i32.const 1 + i32.shl + i32.sub + local.set $3 + end + local.get $3 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $3 + i32.const 48 + i32.store16 + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + end + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + i32.const 2 + i32.add + local.tee $6 + global.get $~lib/util/dtoa/gDigHi + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $6 + i32.const 16 + i32.add + global.get $~lib/util/dtoa/gDigLo + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $4 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $4 + local.get $4 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $6 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $2 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + local.get $2 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $6 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=32 + local.get $6 + local.get $7 + i32.const 16 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $7 + i32.eqz + if + global.get $~lib/util/dtoa/gDigHi + local.set $2 + local.get $6 + global.get $~lib/util/dtoa/gDigLo + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $6 + i32.const 8 + i32.eq + if (result i32) + local.get $6 + local.get $2 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $6 + end + i32.const 1 + i32.shl + i32.sub + local.set $6 + end + local.get $6 + local.get $6 + local.get $3 + i32.const 4 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.tee $3 + i32.const 101 + i32.store16 + local.get $3 + local.get $8 + i32.const 31 + i32.shr_s + local.tee $6 + i32.const 2 + i32.and + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + block $~lib/util/dtoa/writeExponent|inlined.1 (result i32) + local.get $6 + local.get $8 + i32.xor + local.get $6 + i32.sub + local.tee $6 + i32.const 100 + i32.ge_s + if + local.get $3 + local.get $6 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $7 + i32.const 48 + i32.add + i32.store16 + local.get $3 + local.get $6 + local.get $7 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store offset=2 + local.get $3 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $6 + i32.const 10 + i32.ge_s + if + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.1 + end + local.get $3 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 2 + i32.add + end + end + local.get $0 + i32.sub + i32.const 1 + i32.shr_u + ) (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -10736,11 +14204,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10795,7 +14263,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10826,7 +14294,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10922,8 +14390,8 @@ local.get $3 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10942,7 +14410,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10968,13 +14436,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1419 + block $__inlined_func$~lib/util/string/joinIntegerArray$1423 local.get $0 i32.const 1 i32.sub @@ -10988,7 +14456,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1419 + br $__inlined_func$~lib/util/string/joinIntegerArray$1423 end local.get $6 i32.eqz @@ -11001,7 +14469,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1419 + br $__inlined_func$~lib/util/string/joinIntegerArray$1423 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -11094,7 +14562,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1419 + br $__inlined_func$~lib/util/string/joinIntegerArray$1423 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -11108,8 +14576,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11122,11 +14590,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11180,11 +14648,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11241,11 +14709,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11302,11 +14770,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11363,11 +14831,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11430,11 +14898,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11480,11 +14948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11538,11 +15006,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11600,11 +15068,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11712,11 +15180,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11794,11 +15262,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11844,11 +15312,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11905,11 +15373,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11968,11 +15436,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12089,11 +15557,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12151,11 +15619,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12620,7 +16088,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1413 + block $__inlined_func$~lib/rt/itcms/Object#unlink$1417 local.get $0 i32.load offset=4 i32.const -4 @@ -12632,7 +16100,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 49088 + i32.const 49312 i32.lt_u i32.and i32.eqz @@ -12644,7 +16112,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1413 + br $__inlined_func$~lib/rt/itcms/Object#unlink$1417 end local.get $0 i32.load offset=8 @@ -12681,7 +16149,7 @@ i32.const 1 else local.get $1 - i32.const 16000 + i32.const 16224 i32.load i32.gt_u if @@ -12695,7 +16163,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 16004 + i32.const 16228 i32.add i32.load i32.const 32 @@ -12757,7 +16225,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -12780,7 +16248,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -12803,8 +16271,8 @@ call $~lib/rt/itcms/__visit return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14037,11 +17505,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14204,11 +17672,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14382,11 +17850,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14560,11 +18028,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14738,11 +18206,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14905,11 +18373,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15083,11 +18551,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15261,11 +18729,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15440,11 +18908,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15619,11 +19087,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16430,270 +19898,121 @@ i32.add end end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - local.get $2 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $3 - i32.const -32768 - i32.eq - if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend16_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 + local.tee $0 call $~lib/util/number/utoa32_dec_lut + local.get $0 local.get $2 - local.get $3 i32.add ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $1 - f64.const 0 - f64.eq + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq if local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 + i64.const 15481338470793261 + i64.store local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - unreachable + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return end local.get $0 - local.get $1 + i32.const 45 + i32.store16 i32.const 0 - call $~lib/util/number/dtoa_core + local.get $1 + i32.sub + local.set $1 end - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) - (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - local.get $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 - local.get $2 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $3 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - unreachable + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end - local.get $0 - local.get $2 - i32.const 1 - call $~lib/util/number/dtoa_core end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -16704,11 +20023,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16807,11 +20126,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16927,11 +20246,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17041,11 +20360,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17073,11 +20392,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17177,11 +20496,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17263,11 +20582,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17346,11 +20665,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17420,11 +20739,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17455,11 +20774,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17561,11 +20880,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17605,11 +20924,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17690,11 +21009,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17731,11 +21050,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17819,11 +21138,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17905,11 +21224,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17991,11 +21310,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18028,11 +21347,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18134,11 +21453,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18178,11 +21497,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18269,7 +21588,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18295,13 +21614,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1423 + block $__inlined_func$~lib/util/string/joinIntegerArray$1427 local.get $0 i32.const 1 i32.sub @@ -18315,7 +21634,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1423 + br $__inlined_func$~lib/util/string/joinIntegerArray$1427 end local.get $6 i32.eqz @@ -18328,7 +21647,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1423 + br $__inlined_func$~lib/util/string/joinIntegerArray$1427 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -18425,7 +21744,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1423 + br $__inlined_func$~lib/util/string/joinIntegerArray$1427 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -18439,8 +21758,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18455,11 +21774,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18543,11 +21862,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18629,11 +21948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18714,11 +22033,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18751,11 +22070,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18857,11 +22176,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18901,11 +22220,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18992,7 +22311,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19018,13 +22337,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1421 + block $__inlined_func$~lib/util/string/joinIntegerArray$1425 local.get $0 i32.const 1 i32.sub @@ -19038,7 +22357,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1421 + br $__inlined_func$~lib/util/string/joinIntegerArray$1425 end local.get $6 i32.eqz @@ -19051,7 +22370,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1421 + br $__inlined_func$~lib/util/string/joinIntegerArray$1425 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -19148,7 +22467,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1421 + br $__inlined_func$~lib/util/string/joinIntegerArray$1425 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -19162,8 +22481,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19178,11 +22497,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19266,11 +22585,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19352,11 +22671,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19437,11 +22756,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19473,11 +22792,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19517,11 +22836,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19601,11 +22920,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19697,11 +23016,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19792,11 +23111,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19812,12 +23131,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -19845,9 +23164,9 @@ i32.const 7 i32.add global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.get $1 memory.copy @@ -19865,11 +23184,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19885,12 +23204,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -19915,9 +23234,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $3 i32.const 0 @@ -19962,7 +23281,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19988,13 +23307,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1418 + block $__inlined_func$~lib/util/string/joinIntegerArray$1422 local.get $0 i32.const 1 i32.sub @@ -20008,7 +23327,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1418 + br $__inlined_func$~lib/util/string/joinIntegerArray$1422 end local.get $6 i32.eqz @@ -20021,7 +23340,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1418 + br $__inlined_func$~lib/util/string/joinIntegerArray$1422 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -20114,7 +23433,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1418 + br $__inlined_func$~lib/util/string/joinIntegerArray$1422 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -20128,8 +23447,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20144,11 +23463,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20230,11 +23549,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20314,11 +23633,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20400,11 +23719,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20506,11 +23825,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20550,11 +23869,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20636,11 +23955,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20727,11 +24046,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20801,11 +24120,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20900,11 +24219,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20920,12 +24239,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -20954,9 +24273,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $3 i32.const 0 @@ -20997,11 +24316,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21017,12 +24336,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -21047,9 +24366,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $3 i32.const 0 @@ -21097,7 +24416,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21123,13 +24442,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$5 + block $__inlined_func$~lib/util/string/joinIntegerArray$6 local.get $0 i32.const 1 i32.sub @@ -21143,7 +24462,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + br $__inlined_func$~lib/util/string/joinIntegerArray$6 end block $folding-inner0 local.get $6 @@ -21159,7 +24478,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21435,7 +24754,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + br $__inlined_func$~lib/util/string/joinIntegerArray$6 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -21449,8 +24768,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21465,11 +24784,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21553,11 +24872,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21639,11 +24958,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21725,11 +25044,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21761,11 +25080,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21805,11 +25124,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21891,11 +25210,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21983,11 +25302,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22081,11 +25400,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22180,11 +25499,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22200,12 +25519,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -22234,9 +25553,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $3 i32.const 0 @@ -22281,7 +25600,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -22307,13 +25626,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1422 + block $__inlined_func$~lib/util/string/joinIntegerArray$1426 local.get $0 i32.const 1 i32.sub @@ -22327,7 +25646,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1422 + br $__inlined_func$~lib/util/string/joinIntegerArray$1426 end local.get $6 i32.eqz @@ -22340,7 +25659,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1422 + br $__inlined_func$~lib/util/string/joinIntegerArray$1426 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -22437,7 +25756,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1422 + br $__inlined_func$~lib/util/string/joinIntegerArray$1426 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -22451,8 +25770,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22467,11 +25786,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22555,11 +25874,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22641,11 +25960,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22726,11 +26045,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22763,11 +26082,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22869,11 +26188,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22913,11 +26232,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22999,11 +26318,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23091,11 +26410,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23188,11 +26507,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23263,11 +26582,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23283,12 +26602,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -23317,9 +26636,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $3 i32.const 0 @@ -23360,11 +26679,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23380,12 +26699,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -23410,9 +26729,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $3 i32.const 0 @@ -23459,7 +26778,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -23485,13 +26804,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1420 + block $__inlined_func$~lib/util/string/joinIntegerArray$1424 local.get $0 i32.const 1 i32.sub @@ -23505,7 +26824,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1420 + br $__inlined_func$~lib/util/string/joinIntegerArray$1424 end local.get $6 i32.eqz @@ -23518,7 +26837,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1420 + br $__inlined_func$~lib/util/string/joinIntegerArray$1424 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -23615,7 +26934,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1420 + br $__inlined_func$~lib/util/string/joinIntegerArray$1424 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23629,8 +26948,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23645,11 +26964,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23733,11 +27052,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23819,11 +27138,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23904,11 +27223,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23939,11 +27258,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23991,11 +27310,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24035,11 +27354,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24125,11 +27444,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24204,42 +27523,192 @@ ) (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray$8 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + br $__inlined_func$~lib/util/string/joinFloatArray$8 + end + block $folding-inner0 + local.get $6 + i32.eqz + if + local.get $4 + f64.load + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.const 32 + i32.add + local.get $6 + i32.mul + i32.const 32 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $0 + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $0 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $3 + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/dtoa/dtoa_buffered + local.get $1 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + br $__inlined_func$~lib/util/string/joinFloatArray$8 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49344 + i32.const 49392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24250,11 +27719,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24338,11 +27807,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24424,11 +27893,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24510,11 +27979,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24547,11 +28016,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24653,11 +28122,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24697,11 +28166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24787,11 +28256,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24866,42 +28335,192 @@ ) (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray$7 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + br $__inlined_func$~lib/util/string/joinFloatArray$7 + end + block $folding-inner0 + local.get $6 + i32.eqz + if + local.get $4 + f32.load + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.const 32 + i32.add + local.get $6 + i32.mul + i32.const 32 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/dtoa/ftoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $0 + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $0 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $3 + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/dtoa/ftoa_buffered + local.get $1 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + br $__inlined_func$~lib/util/string/joinFloatArray$7 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49344 + i32.const 49392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/typedarray/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24912,11 +28531,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25000,11 +28619,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25086,11 +28705,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25172,11 +28791,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25451,15 +29070,15 @@ call $~lib/rt/itcms/__visit i32.const 7728 call $~lib/rt/itcms/__visit - i32.const 10928 + i32.const 11152 call $~lib/rt/itcms/__visit - i32.const 11008 + i32.const 11232 call $~lib/rt/itcms/__visit - i32.const 11088 + i32.const 11312 call $~lib/rt/itcms/__visit - i32.const 11184 + i32.const 11408 call $~lib/rt/itcms/__visit - i32.const 11264 + i32.const 11488 call $~lib/rt/itcms/__visit i32.const 1360 call $~lib/rt/itcms/__visit @@ -25515,11 +29134,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25568,11 +29187,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26171,11 +29790,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26241,11 +29860,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26308,11 +29927,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26415,7 +30034,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -26446,7 +30065,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -26676,223 +30295,8 @@ i32.const 3 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $7 - i32.eqz - if - local.get $0 - f64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.1 - end - global.get $~lib/memory/__stack_pointer - i32.const 9808 - local.get $3 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 - local.get $1 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $7 - i32.mul - i32.const 28 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered + i64.load + call $~lib/util/number/itoa_buffered local.get $2 i32.add local.tee $0 @@ -26904,7 +30308,7 @@ local.get $6 local.get $0 call $~lib/string/String#substring - local.set $0 + local.set $1 br $folding-inner1 end global.get $~lib/memory/__stack_pointer @@ -26914,226 +30318,8 @@ local.get $6 return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $8 - i32.eqz - if - local.get $0 - f32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $5 - f64.promote_f32 - local.tee $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - global.get $~lib/memory/__stack_pointer - i32.const 9808 - local.get $3 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 - local.get $1 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $8 - i32.mul - i32.const 28 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $1 - if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $6 - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27143,7 +30329,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -27164,11 +30350,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27597,11 +30783,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28030,11 +31216,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28463,11 +31649,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28896,11 +32082,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29329,11 +32515,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29762,11 +32948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30195,11 +33381,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30631,11 +33817,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31067,11 +34253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31600,758 +34786,564 @@ i32.lt_s i32.sub ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 49344 + i32.const 49392 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + global.set $~lib/memory/__stack_pointer + i32.const 9664 + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9696 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9728 + i32.const 9776 + local.get $0 + f64.const 0 + f64.lt + select return end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.const 4741671816366391296 + i64.le_u + local.get $4 + i64.const 4607182418800017408 + i64.ge_u i32.and - if (result i32) - loop $for-loop|0 + if + local.get $0 + local.get $0 + i32.trunc_sat_f64_s + local.tee $1 + f64.convert_i32_s + f64.eq + if + i32.const 0 local.get $1 - local.get $3 + i32.sub + local.get $1 + local.get $1 + i32.const 0 i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.tee $2 + select + local.tee $6 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 100 + i32.lt_u + if (result i32) + local.get $6 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $6 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $6 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $6 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $6 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $6 + i32.const 100000000 + i32.ge_u + i32.add + end end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $3 - i32.const 1 - i32.shl i32.add - local.tee $0 i32.const 2 i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub i32.const 1 i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end + i32.const 45 + i32.store16 local.get $1 - local.get $3 + i32.const 2 i32.add else local.get $1 - i32.const 1 - i32.eq + end + local.set $2 + local.get $6 + i32.const 10 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + else + local.get $6 + i32.const 100 + i32.lt_u if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 + local.get $6 i32.const 2 - i32.add - local.get $1 - i32.const 1 i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 + i32.const 8012 i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 + i32.load + i32.store + else + local.get $6 + i32.const 10000 i32.lt_u - if (result i32) - local.get $0 + if + local.get $6 + local.get $6 + i32.const 100 + i32.div_u + local.tee $7 i32.const 100 + i32.mul + i32.sub + local.set $5 + local.get $6 + i32.const 1000 i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u + if + local.get $2 + local.get $7 + i32.const 48 i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 + i32.store16 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 8012 i32.add + i32.load + i32.store offset=2 else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.const 8012 i32.add - local.get $0 - i32.const 100000000 - i32.ge_u + i32.load + i32.store + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 8012 i32.add + i32.load + i32.store offset=4 end + else + local.get $2 + local.get $6 + local.get $3 + call $~lib/util/number/utoa32_dec_lut end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 end - local.get $1 - i32.const 2 - i32.add end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end end - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 - local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s + global.get $~lib/memory/__stack_pointer + i32.const 9808 + local.get $0 + call $~lib/util/dtoa/dtoa_buffered + i32.const 1 + i32.shl local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 local.get $2 + i32.const 9808 local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.lt_s + if + i32.const 49344 + i32.const 49392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + f32.const 0 + f32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9664 + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.ne + if + local.get $0 + local.get $0 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9696 + return end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9728 + i32.const 9776 + local.get $0 + f32.const 0 + f32.lt + select + return + end + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1266679808 + i32.le_u + local.get $1 + i32.const 1065353216 + i32.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f32_s + local.tee $1 + f32.convert_i32_s + f32.eq + if + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + select + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 i32.add - local.get $3 - i32.const 100000000 - i32.ge_u + i32.const 2 i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 - end - i32.const 0 - local.set $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 end + local.set $2 local.get $5 - local.get $6 - i32.or + i32.const 10 + i32.lt_u if - local.get $0 + local.get $2 local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 65535 - i32.and i32.const 48 i32.add i32.store16 + else local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub + i32.const 100 + i32.lt_u + if local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end + local.get $5 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + else + local.get $5 + i32.const 10000 + i32.lt_u if - local.get $7 - i32.const 1 + local.get $5 + local.get $5 + i32.const 100 + i32.div_u + local.tee $6 + i32.const 100 + i32.mul i32.sub - local.set $7 - local.get $1 + local.set $4 + local.get $5 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store offset=4 + end + else local.get $2 - i64.add - local.set $1 - br $while-continue|3 + local.get $5 + local.get $3 + call $~lib/util/number/utoa32_dec_lut end end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.const 1 i32.shl i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $5 + global.set $~lib/memory/__stack_pointer + local.get $1 + return end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - i64.mul - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9808 local.get $0 - local.get $5 - i32.const 1 - i32.sub + call $~lib/util/dtoa/ftoa_buffered i32.const 1 i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 9808 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) @@ -32372,7 +35364,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32473,14 +35465,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32493,12 +35485,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -32516,9 +35508,9 @@ i32.load offset=4 local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $10 loop $for-loop|0 @@ -32566,7 +35558,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11728 + i32.const 11952 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -32579,14 +35571,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32599,12 +35591,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -32626,9 +35618,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 i32.const 0 @@ -32680,7 +35672,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11824 + i32.const 12048 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -32705,7 +35697,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11856 + i32.const 12080 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -32718,14 +35710,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32738,12 +35730,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -32765,9 +35757,9 @@ i32.add local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -32819,7 +35811,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11888 + i32.const 12112 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -32851,14 +35843,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32871,12 +35863,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -32898,9 +35890,9 @@ i32.add local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $6 i32.const 0 @@ -32948,7 +35940,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11920 + i32.const 12144 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -32963,8 +35955,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32995,7 +35987,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33096,7 +36088,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -33106,7 +36098,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11520 + i32.const 11744 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -33119,14 +36111,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33139,12 +36131,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -33166,9 +36158,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -33212,7 +36204,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11600 + i32.const 11824 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33236,7 +36228,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11632 + i32.const 11856 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33249,14 +36241,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33269,12 +36261,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -33296,9 +36288,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -33344,7 +36336,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11664 + i32.const 11888 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33375,7 +36367,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -33385,7 +36377,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11696 + i32.const 11920 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33400,8 +36392,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33432,7 +36424,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33533,7 +36525,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -33543,7 +36535,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13872 + i32.const 14096 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -33556,14 +36548,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33576,12 +36568,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $7 global.get $~lib/memory/__stack_pointer @@ -33603,9 +36595,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -33651,7 +36643,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14032 + i32.const 14256 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33675,7 +36667,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14144 + i32.const 14368 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33688,14 +36680,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33708,12 +36700,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -33735,9 +36727,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -33785,7 +36777,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14256 + i32.const 14480 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33816,7 +36808,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -33826,7 +36818,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14368 + i32.const 14592 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -33841,8 +36833,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33874,7 +36866,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33975,10 +36967,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 - i32.const 11008 + i32.const 11232 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -33987,7 +36979,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12896 + i32.const 13120 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -34000,14 +36992,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34020,12 +37012,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -34047,9 +37039,9 @@ i32.add local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $10 loop $for-loop|0 @@ -34095,7 +37087,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13008 + i32.const 13232 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34119,7 +37111,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13072 + i32.const 13296 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34132,14 +37124,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34152,12 +37144,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -34179,9 +37171,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -34229,7 +37221,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13136 + i32.const 13360 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34260,7 +37252,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -34270,7 +37262,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13200 + i32.const 13424 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34285,8 +37277,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34317,7 +37309,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34418,7 +37410,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -34428,7 +37420,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12240 + i32.const 12464 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -34441,14 +37433,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34461,12 +37453,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -34488,9 +37480,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -34536,7 +37528,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12336 + i32.const 12560 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34560,7 +37552,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12384 + i32.const 12608 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34573,14 +37565,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34593,12 +37585,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -34620,9 +37612,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -34670,7 +37662,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12432 + i32.const 12656 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34701,7 +37693,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -34711,7 +37703,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12480 + i32.const 12704 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34726,8 +37718,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34758,7 +37750,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34859,7 +37851,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -34869,7 +37861,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11312 + i32.const 11536 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -34882,14 +37874,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34902,12 +37894,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -34929,9 +37921,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -34975,7 +37967,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11392 + i32.const 11616 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -34999,7 +37991,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11424 + i32.const 11648 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35012,14 +38004,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35032,12 +38024,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -35059,9 +38051,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -35107,7 +38099,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11456 + i32.const 11680 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35138,7 +38130,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -35148,7 +38140,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11488 + i32.const 11712 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35163,8 +38155,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35195,7 +38187,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35296,7 +38288,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -35306,7 +38298,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13264 + i32.const 13488 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -35319,14 +38311,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35339,12 +38331,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $7 global.get $~lib/memory/__stack_pointer @@ -35366,9 +38358,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -35414,7 +38406,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13424 + i32.const 13648 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35438,7 +38430,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13536 + i32.const 13760 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35451,14 +38443,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35471,12 +38463,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -35498,9 +38490,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -35548,7 +38540,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13648 + i32.const 13872 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35579,7 +38571,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -35589,7 +38581,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13760 + i32.const 13984 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35604,8 +38596,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35637,7 +38629,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35738,10 +38730,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 - i32.const 11008 + i32.const 11232 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -35750,7 +38742,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12528 + i32.const 12752 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -35763,14 +38755,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35783,12 +38775,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -35810,9 +38802,9 @@ i32.add local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $10 loop $for-loop|0 @@ -35858,7 +38850,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12640 + i32.const 12864 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35882,7 +38874,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12704 + i32.const 12928 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -35895,14 +38887,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35915,12 +38907,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -35942,9 +38934,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -35992,7 +38984,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12768 + i32.const 12992 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36023,7 +39015,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -36033,7 +39025,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12832 + i32.const 13056 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36048,8 +39040,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36080,7 +39072,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36181,7 +39173,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -36191,7 +39183,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11952 + i32.const 12176 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -36204,14 +39196,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36224,12 +39216,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -36251,9 +39243,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $9 loop $for-loop|0 @@ -36299,7 +39291,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12048 + i32.const 12272 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36323,7 +39315,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12096 + i32.const 12320 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36336,14 +39328,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36356,12 +39348,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11184 + i32.const 11408 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -36383,9 +39375,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11408 i32.store offset=8 - i32.const 11188 + i32.const 11412 i32.load local.set $8 i32.const 0 @@ -36433,7 +39425,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12144 + i32.const 12368 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36464,7 +39456,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -36474,7 +39466,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12192 + i32.const 12416 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36489,8 +39481,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36519,7 +39511,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36620,14 +39612,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36640,12 +39632,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $5 global.get $~lib/memory/__stack_pointer @@ -36663,9 +39655,9 @@ i32.load offset=4 local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $7 loop $for-loop|0 @@ -36703,7 +39695,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14784 + i32.const 15008 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36716,14 +39708,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36736,12 +39728,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11088 + i32.const 11312 call $~lib/array/Array#get:length local.set $5 global.get $~lib/memory/__stack_pointer @@ -36763,9 +39755,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=8 - i32.const 11092 + i32.const 11316 i32.load local.set $7 i32.const 0 @@ -36805,7 +39797,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14944 + i32.const 15168 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36825,7 +39817,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36906,7 +39898,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 15056 + i32.const 15280 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -36926,7 +39918,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37007,7 +39999,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37087,14 +40079,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37107,12 +40099,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -37134,9 +40126,9 @@ i32.add local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $4 i32.const 0 @@ -37174,7 +40166,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 15168 + i32.const 15392 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -37189,8 +40181,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37220,7 +40212,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37321,14 +40313,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37341,12 +40333,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11008 + i32.const 11232 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -37364,9 +40356,9 @@ i32.load offset=4 local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11232 i32.store offset=8 - i32.const 11012 + i32.const 11236 i32.load local.set $8 loop $for-loop|0 @@ -37403,7 +40395,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14480 + i32.const 14704 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -37416,10 +40408,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11312 i32.store offset=20 local.get $0 - i32.const 11088 + i32.const 11312 i32.const 3 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -37428,7 +40420,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14592 + i32.const 14816 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -37448,7 +40440,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37530,7 +40522,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14656 + i32.const 14880 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -37550,7 +40542,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37631,7 +40623,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37711,14 +40703,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37731,12 +40723,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11264 + i32.const 11488 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -37758,9 +40750,9 @@ i32.add local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11488 i32.store offset=8 - i32.const 11268 + i32.const 11492 i32.load local.set $4 i32.const 0 @@ -37798,7 +40790,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14720 + i32.const 14944 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -37813,8 +40805,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37840,7 +40832,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37848,12 +40840,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -37870,11 +40862,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $2 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -37931,7 +40923,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37945,7 +40937,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38036,8 +41028,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38057,7 +41049,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38065,12 +41057,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38087,11 +41079,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -38147,7 +41139,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38161,7 +41153,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38262,8 +41254,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38282,7 +41274,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38290,12 +41282,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38312,11 +41304,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -38371,7 +41363,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38385,7 +41377,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38486,8 +41478,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38506,7 +41498,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38514,12 +41506,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38536,11 +41528,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -38597,7 +41589,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38611,7 +41603,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38712,8 +41704,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38732,7 +41724,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38740,12 +41732,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -38762,11 +41754,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $2 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i32.extend8_s @@ -38822,7 +41814,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38836,7 +41828,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38927,8 +41919,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38948,7 +41940,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38956,12 +41948,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38978,11 +41970,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -39038,7 +42030,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39052,7 +42044,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39153,8 +42145,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39173,7 +42165,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39181,12 +42173,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39203,11 +42195,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -39262,7 +42254,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39276,7 +42268,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39377,8 +42369,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39397,7 +42389,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39405,12 +42397,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39427,11 +42419,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get i32.extend16_s @@ -39487,7 +42479,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39501,7 +42493,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39602,8 +42594,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39623,7 +42615,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39631,12 +42623,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39653,11 +42645,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -39713,7 +42705,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39727,7 +42719,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39828,8 +42820,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39849,7 +42841,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39857,12 +42849,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39879,11 +42871,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11152 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -39939,7 +42931,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39953,7 +42945,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40054,8 +43046,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40183,11 +43175,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40398,11 +43390,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40613,11 +43605,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40825,11 +43817,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41036,11 +44028,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41251,11 +44243,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41464,11 +44456,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41676,11 +44668,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41888,11 +44880,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42100,11 +45092,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42313,11 +45305,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42529,7 +45521,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42576,7 +45568,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42720,8 +45712,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42742,7 +45734,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42789,7 +45781,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42933,8 +45925,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42957,7 +45949,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43004,7 +45996,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43073,7 +46065,7 @@ local.get $0 i32.const 3856 i32.load - call_indirect (type $27) + call_indirect (type $26) i64.store local.get $3 i32.const 1 @@ -43154,8 +46146,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43178,7 +46170,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43225,7 +46217,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43375,8 +46367,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43399,7 +46391,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43446,7 +46438,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43596,8 +46588,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43618,7 +46610,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43665,7 +46657,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43809,8 +46801,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43833,7 +46825,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43880,7 +46872,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43949,7 +46941,7 @@ local.get $0 i32.const 3824 i32.load - call_indirect (type $27) + call_indirect (type $26) i64.store local.get $3 i32.const 1 @@ -44030,8 +47022,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44054,7 +47046,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44101,7 +47093,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44251,8 +47243,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44275,7 +47267,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44322,7 +47314,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44472,8 +47464,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44501,7 +47493,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44548,7 +47540,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44698,8 +47690,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44727,7 +47719,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44774,7 +47766,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44924,8 +47916,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44940,11 +47932,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -45474,11 +48466,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46008,11 +49000,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46541,11 +49533,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47073,11 +50065,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47607,11 +50599,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48141,11 +51133,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48674,11 +51666,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -49207,11 +52199,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -49740,11 +52732,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50274,11 +53266,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50804,11 +53796,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50874,11 +53866,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50941,11 +53933,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51018,7 +54010,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51079,7 +54071,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51258,8 +54250,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51281,7 +54273,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51342,7 +54334,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51521,8 +54513,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51549,7 +54541,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51610,7 +54602,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51798,8 +54790,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51826,7 +54818,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -51887,7 +54879,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52075,8 +55067,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52105,7 +55097,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52166,7 +55158,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52354,8 +55346,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52383,7 +55375,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52444,7 +55436,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52623,8 +55615,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52651,7 +55643,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52712,7 +55704,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52900,8 +55892,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52928,7 +55920,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -52989,7 +55981,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53177,8 +56169,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53206,7 +56198,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53267,7 +56259,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53455,8 +56447,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53483,7 +56475,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53544,7 +56536,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53732,8 +56724,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53760,7 +56752,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -53821,7 +56813,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -54009,8 +57001,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -54380,7 +57372,7 @@ block $folding-inner3 block $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -54390,7 +57382,7 @@ memory.size i32.const 16 i32.shl - i32.const 49088 + i32.const 49312 i32.sub i32.const 1 i32.shr_u @@ -56646,7 +59638,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56692,7 +59684,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56771,7 +59763,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56829,7 +59821,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56889,7 +59881,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56935,7 +59927,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57020,7 +60012,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57066,7 +60058,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57151,7 +60143,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57197,7 +60189,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57280,7 +60272,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57326,7 +60318,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57409,7 +60401,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57455,7 +60447,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57538,7 +60530,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57584,7 +60576,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57665,7 +60657,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57711,7 +60703,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57764,7 +60756,7 @@ local.get $1 i32.const 3184 i32.load - call_indirect (type $26) + call_indirect (type $25) local.set $4 local.get $0 i32.const 1 @@ -57792,7 +60784,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57838,7 +60830,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57891,7 +60883,7 @@ local.get $1 i32.const 3216 i32.load - call_indirect (type $25) + call_indirect (type $24) local.set $5 local.get $0 i32.const 1 @@ -57917,7 +60909,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57985,7 +60977,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58053,7 +61045,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58121,7 +61113,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58189,7 +61181,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58257,7 +61249,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58325,7 +61317,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58393,7 +61385,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58461,7 +61453,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58529,7 +61521,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58597,7 +61589,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58665,7 +61657,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58711,7 +61703,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58794,7 +61786,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58852,7 +61844,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58910,7 +61902,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58956,7 +61948,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59041,7 +62033,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59087,7 +62079,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59172,7 +62164,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59218,7 +62210,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59301,7 +62293,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59347,7 +62339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59432,7 +62424,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59478,7 +62470,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59561,7 +62553,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59607,7 +62599,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59690,7 +62682,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59736,7 +62728,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59791,7 +62783,7 @@ local.get $1 i32.const 3536 i32.load - call_indirect (type $26) + call_indirect (type $25) local.set $4 local.get $0 i32.const 1 @@ -59819,7 +62811,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59865,7 +62857,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59920,7 +62912,7 @@ local.get $1 i32.const 3568 i32.load - call_indirect (type $25) + call_indirect (type $24) local.set $5 local.get $0 i32.const 1 @@ -59968,7 +62960,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60033,7 +63025,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60098,7 +63090,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60163,7 +63155,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60228,7 +63220,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60293,7 +63285,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60358,7 +63350,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60423,7 +63415,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60488,7 +63480,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60553,7 +63545,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60618,7 +63610,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60683,7 +63675,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60751,7 +63743,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60819,7 +63811,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60887,7 +63879,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60955,7 +63947,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61023,7 +64015,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61091,7 +64083,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61159,7 +64151,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61227,7 +64219,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61295,7 +64287,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61363,7 +64355,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61431,7 +64423,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61499,7 +64491,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61567,7 +64559,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61635,7 +64627,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61703,7 +64695,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61771,7 +64763,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61839,7 +64831,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61907,7 +64899,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61975,7 +64967,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62043,7 +65035,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62111,7 +65103,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62179,7 +65171,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62244,7 +65236,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62309,7 +65301,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62374,7 +65366,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62439,7 +65431,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62504,7 +65496,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62569,7 +65561,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62634,7 +65626,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62699,7 +65691,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62764,7 +65756,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62829,7 +65821,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62896,7 +65888,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62964,7 +65956,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63037,7 +66029,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63119,7 +66111,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63203,7 +66195,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63271,7 +66263,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63348,7 +66340,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63419,7 +66411,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63496,7 +66488,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63561,7 +66553,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63638,7 +66630,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63703,7 +66695,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63780,7 +66772,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63848,7 +66840,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63898,7 +66890,7 @@ local.get $1 i32.const 7424 i32.load - call_indirect (type $28) + call_indirect (type $27) local.get $0 i32.const 1 i32.add @@ -63925,7 +66917,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63993,7 +66985,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64043,7 +67035,7 @@ local.get $1 i32.const 7456 i32.load - call_indirect (type $28) + call_indirect (type $27) local.get $0 i32.const 1 i32.add @@ -64070,7 +67062,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64138,7 +67130,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64215,7 +67207,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64283,7 +67275,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64414,7 +67406,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64522,7 +67514,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64596,7 +67588,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64667,7 +67659,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64700,7 +67692,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64786,7 +67778,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64872,7 +67864,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64943,7 +67935,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64976,7 +67968,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65047,7 +68039,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65080,7 +68072,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65151,7 +68143,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65184,7 +68176,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65255,7 +68247,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65288,7 +68280,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65359,7 +68351,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65392,7 +68384,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65463,7 +68455,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65496,7 +68488,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65555,7 +68547,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 10800 + i32.const 10832 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -65567,7 +68559,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65587,7 +68579,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 10800 + i32.const 10832 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -65600,7 +68592,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65659,7 +68651,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 10800 + i32.const 10832 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -65671,7 +68663,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65691,7 +68683,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 10800 + i32.const 10832 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -65763,7 +68755,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65771,12 +68763,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=4 - i32.const 10928 + i32.const 11152 call $~lib/array/Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer @@ -65793,11 +68785,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11152 i32.store offset=12 local.get $1 local.get $2 - i32.const 10928 + i32.const 11152 local.get $2 call $~lib/array/Array#__get i32.const 255 @@ -66009,7 +69001,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -66118,7 +69110,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -66210,7 +69202,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 15280 + i32.const 15504 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -66296,7 +69288,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -66387,7 +69379,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 15312 + i32.const 15536 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -66403,7 +69395,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" block $folding-inner02 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner02 global.get $~lib/memory/__stack_pointer @@ -66449,7 +69441,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner02 global.get $~lib/memory/__stack_pointer @@ -66459,16 +69451,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15344 + i32.const 15568 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15344 + i32.const 15568 i32.store offset=8 local.get $1 - i32.const 15344 + i32.const 15568 call $~lib/typedarray/Int8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66529,10 +69521,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15376 + i32.const 15600 i32.store offset=12 local.get $1 - i32.const 15376 + i32.const 15600 call $~lib/typedarray/Int8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66589,8 +69581,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66603,7 +69595,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" block $folding-inner04 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner04 global.get $~lib/memory/__stack_pointer @@ -66649,7 +69641,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner04 global.get $~lib/memory/__stack_pointer @@ -66659,16 +69651,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15408 + i32.const 15632 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15408 + i32.const 15632 i32.store offset=8 local.get $1 - i32.const 15408 + i32.const 15632 call $~lib/typedarray/Uint8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66729,10 +69721,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15440 + i32.const 15664 i32.store offset=12 local.get $1 - i32.const 15440 + i32.const 15664 call $~lib/typedarray/Uint8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66789,8 +69781,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66803,7 +69795,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" block $folding-inner06 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner06 global.get $~lib/memory/__stack_pointer @@ -66849,7 +69841,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner06 global.get $~lib/memory/__stack_pointer @@ -66859,16 +69851,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15472 + i32.const 15696 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15472 + i32.const 15696 i32.store offset=8 local.get $1 - i32.const 15472 + i32.const 15696 call $~lib/typedarray/Uint8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66929,10 +69921,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15504 + i32.const 15728 i32.store offset=12 local.get $1 - i32.const 15504 + i32.const 15728 call $~lib/typedarray/Uint8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66989,8 +69981,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67003,7 +69995,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" block $folding-inner08 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner08 global.get $~lib/memory/__stack_pointer @@ -67049,7 +70041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner08 global.get $~lib/memory/__stack_pointer @@ -67059,16 +70051,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15536 + i32.const 15760 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15536 + i32.const 15760 i32.store offset=8 local.get $1 - i32.const 15536 + i32.const 15760 call $~lib/typedarray/Int16Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67129,10 +70121,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15568 + i32.const 15792 i32.store offset=12 local.get $1 - i32.const 15568 + i32.const 15792 call $~lib/typedarray/Int16Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67189,8 +70181,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67203,7 +70195,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" block $folding-inner010 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner010 global.get $~lib/memory/__stack_pointer @@ -67249,7 +70241,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner010 global.get $~lib/memory/__stack_pointer @@ -67259,16 +70251,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15600 + i32.const 15824 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15600 + i32.const 15824 i32.store offset=8 local.get $1 - i32.const 15600 + i32.const 15824 call $~lib/typedarray/Uint16Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67329,10 +70321,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15632 + i32.const 15856 i32.store offset=12 local.get $1 - i32.const 15632 + i32.const 15856 call $~lib/typedarray/Uint16Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67389,8 +70381,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67403,7 +70395,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" block $folding-inner012 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner012 global.get $~lib/memory/__stack_pointer @@ -67449,7 +70441,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner012 global.get $~lib/memory/__stack_pointer @@ -67459,16 +70451,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15664 + i32.const 15888 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15664 + i32.const 15888 i32.store offset=8 local.get $1 - i32.const 15664 + i32.const 15888 call $~lib/typedarray/Int32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67529,10 +70521,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15696 + i32.const 15920 i32.store offset=12 local.get $1 - i32.const 15696 + i32.const 15920 call $~lib/typedarray/Int32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67589,8 +70581,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67603,7 +70595,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" block $folding-inner014 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner014 global.get $~lib/memory/__stack_pointer @@ -67649,7 +70641,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner014 global.get $~lib/memory/__stack_pointer @@ -67659,16 +70651,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15728 + i32.const 15952 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15728 + i32.const 15952 i32.store offset=8 local.get $1 - i32.const 15728 + i32.const 15952 call $~lib/typedarray/Uint32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67729,10 +70721,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15760 + i32.const 15984 i32.store offset=12 local.get $1 - i32.const 15760 + i32.const 15984 call $~lib/typedarray/Uint32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67789,8 +70781,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67803,7 +70795,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" block $folding-inner016 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner016 global.get $~lib/memory/__stack_pointer @@ -67849,7 +70841,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner016 global.get $~lib/memory/__stack_pointer @@ -67859,16 +70851,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15792 + i32.const 16016 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15792 + i32.const 16016 i32.store offset=8 local.get $1 - i32.const 15792 + i32.const 16016 call $~lib/typedarray/Int64Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67929,10 +70921,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15824 + i32.const 16048 i32.store offset=12 local.get $1 - i32.const 15824 + i32.const 16048 call $~lib/typedarray/Int64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67989,8 +70981,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -68003,7 +70995,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" block $folding-inner018 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner018 global.get $~lib/memory/__stack_pointer @@ -68049,7 +71041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner018 global.get $~lib/memory/__stack_pointer @@ -68059,16 +71051,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15856 + i32.const 16080 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15856 + i32.const 16080 i32.store offset=8 local.get $1 - i32.const 15856 + i32.const 16080 call $~lib/typedarray/Uint64Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -68129,10 +71121,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15888 + i32.const 16112 i32.store offset=12 local.get $1 - i32.const 15888 + i32.const 16112 call $~lib/typedarray/Uint64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -68189,8 +71181,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -68203,7 +71195,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" block $folding-inner020 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner020 global.get $~lib/memory/__stack_pointer @@ -68249,7 +71241,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner020 global.get $~lib/memory/__stack_pointer @@ -68259,16 +71251,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15920 + i32.const 16144 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15920 + i32.const 16144 i32.store offset=8 local.get $1 - i32.const 15920 + i32.const 16144 call $~lib/typedarray/Float32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -68329,10 +71321,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15952 + i32.const 16176 i32.store offset=12 local.get $1 - i32.const 15952 + i32.const 16176 call $~lib/typedarray/Float32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -68389,8 +71381,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -68401,7 +71393,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16544 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -68498,10 +71490,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15984 + i32.const 16208 i32.store offset=12 local.get $0 - i32.const 15984 + i32.const 16208 call $~lib/typedarray/Float64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -68556,7 +71548,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 49088 + i32.const 49312 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -68716,8 +71708,8 @@ call $~lib/builtins/abort unreachable end - i32.const 49120 - i32.const 49168 + i32.const 49344 + i32.const 49392 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/templateliteral.debug.wat b/tests/compiler/templateliteral.debug.wat index ace4b98b35..989c655804 100644 --- a/tests/compiler/templateliteral.debug.wat +++ b/tests/compiler/templateliteral.debug.wat @@ -13,10 +13,12 @@ (type $11 (func (param i32 i64 i32))) (type $12 (func (param i64 i32) (result i32))) (type $13 (func (param i32 i64 i32 i32))) - (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $15 (func (param i32 f64 i32) (result i32))) - (type $16 (func (param f64 i32) (result i32))) - (type $17 (func (param f64) (result i32))) + (type $14 (func (param i32) (result i64))) + (type $15 (func (param i64) (result i64))) + (type $16 (func (param i64) (result i32))) + (type $17 (func (param i32 f64) (result i32))) + (type $18 (func (param f64 i32) (result i32))) + (type $19 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) @@ -33,16 +35,30 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 4848)) - (global $~lib/memory/__data_end i32 (i32.const 4880)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37648)) - (global $~lib/memory/__heap_base i32 (i32.const 37648)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52)) + (global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20)) + (global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802)) + (global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163)) + (global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243)) + (global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20)) + (global $~lib/rt/__rtti_base i32 (i32.const 5072)) + (global $~lib/memory/__data_end i32 (i32.const 5104)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37872)) + (global $~lib/memory/__heap_base i32 (i32.const 37872)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") @@ -77,37 +93,38 @@ (data $29 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") (data $30 (i32.const 2796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") (data $31 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 2896) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 2952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $35 (i32.const 3816) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11\00\00\00\00") + (data $36 (i32.const 3896) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $37 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\000\00\00\00\00\00\00\00") + (data $38 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00.\000\002\00.\000\00") + (data $39 (i32.const 4156) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00(\00A\00=\001\00.\000\00,\00 \00B\00=\002\00.\000\00)\00") + (data $41 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00p\00r\00e\00f\00\00\00\00\00") + (data $43 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00p\00r\00e\00f\002\00\00\00") + (data $44 (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00p\00r\00e\00f\00b\00\00\00") + (data $45 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00s\00u\00f\00f\00\00\00\00\00") + (data $46 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\002\00s\00u\00f\00f\00\00\00") + (data $47 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00b\00s\00u\00f\00f\00\00\00") + (data $48 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\002\00b\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00r\00e\00f\00#\00\00\00\00\00") + (data $50 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00r\00e\00f\00#\001\00\00\00") + (data $51 (i32.const 4572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00r\00e\00f\00#\001\00r\00e\00f\00#\002\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 4620) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 4668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00(\00A\00=\00r\00e\00f\00#\001\00,\00 \00B\00=\00r\00e\00f\00#\002\00)\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00c\00:\00 \00\00\00\00\00\00\00") + (data $55 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00;\00 \00d\00:\00 \00\00\00") + (data $56 (i32.const 4796) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\90\12\00\00\00\00\00\00\b0\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00n\00u\00l\00l\00\00\00\00\00") + (data $58 (i32.const 4876) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00:\00 \00r\00e\00f\00#\003\00;\00 \00d\00:\00 \00n\00u\00l\00l\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 5004) "\1c\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\00\00\00\00\80\13\00\00\00\00\00\00") + (data $62 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00:\00b\00:\00c\00\00\00") + (data $63 (i32.const 5072) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\04A\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -2940,1374 +2957,4615 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) - (local $one_exp i32) - (local $one_frc i64) - (local $mask i64) - (local $wp_w_frc i64) - (local $p1 i32) - (local $p2 i64) - (local $kappa i32) - (local $len i32) - (local $d i32) - (local $16 i32) - (local $17 i32) - (local $tmp i64) - (local $buffer|19 i32) - (local $len|20 i32) - (local $delta|21 i64) - (local $rest i64) - (local $ten_kappa i64) - (local $wp_w i64) - (local $lastp i32) - (local $digit i32) - (local $d|27 i64) - (local $28 i32) - (local $buffer|29 i32) - (local $len|30 i32) - (local $delta|31 i64) - (local $rest|32 i64) - (local $ten_kappa|33 i64) - (local $wp_w|34 i64) - (local $lastp|35 i32) - (local $digit|36 i32) - i32.const 0 - local.get $mp_exp + (func $~lib/util/dtoa/computePow10Compact (param $i i32) (result i64) + (local $j i32) + (local $major i32) + (local $minor i32) + (local $m i64) + (local $hoff i32) + (local $hHi i64) + (local $hLo i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t i64) + (local $w1 i64) + (local $w2 i64) + (local $h1 i64) + (local $c0 i64) + (local $c1 i64) + (local $a|21 i64) + (local $b|22 i64) + (local $a0|23 i64) + (local $a1|24 i64) + (local $b0|25 i64) + (local $b1|26 i64) + (local $w0|27 i64) + (local $t|28 i64) + (local $w1|29 i64) + (local $w2|30 i64) + (local $c2 i64) + (local $hi i64) + (local $lo i64) + local.get $i + i32.const 10 + i32.add + local.set $j + local.get $j + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u + local.set $major + local.get $j + local.get $major + i32.const 28 + i32.mul i32.sub - local.set $one_exp + local.set $minor + i32.const 3024 + i32.const 27 + local.get $minor + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $m + i32.const 3448 + local.get $major + i32.const 4 + i32.shl + i32.add + local.set $hoff + local.get $hoff + i64.load + local.set $hHi + local.get $hoff + i64.load offset=8 + local.set $hLo + block $~lib/util/dtoa/umul64hi|inlined.0 (result i64) + local.get $hLo + local.set $a + local.get $m + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.0 + end + local.set $h1 + local.get $hLo + local.get $m + i64.mul + local.set $c0 + local.get $h1 + local.get $hHi + local.get $m + i64.mul + i64.add + local.set $c1 + local.get $c1 + local.get $h1 + i64.lt_u + i64.extend_i32_u + block $~lib/util/dtoa/umul64hi|inlined.1 (result i64) + local.get $hHi + local.set $a|21 + local.get $m + local.set $b|22 + local.get $a|21 + i64.const 4294967295 + i64.and + local.set $a0|23 + local.get $a|21 + i64.const 32 + i64.shr_u + local.set $a1|24 + local.get $b|22 + i64.const 4294967295 + i64.and + local.set $b0|25 + local.get $b|22 + i64.const 32 + i64.shr_u + local.set $b1|26 + local.get $a0|23 + local.get $b0|25 + i64.mul + local.set $w0|27 + local.get $a1|24 + local.get $b0|25 + i64.mul + local.get $w0|27 + i64.const 32 + i64.shr_u + i64.add + local.set $t|28 + local.get $t|28 + i64.const 4294967295 + i64.and + local.set $w1|29 + local.get $t|28 + i64.const 32 + i64.shr_u + local.set $w2|30 + local.get $a0|23 + local.get $b1|26 + i64.mul + local.get $w1|29 + i64.add + local.set $w1|29 + local.get $a1|24 + local.get $b1|26 + i64.mul + local.get $w2|30 + i64.add + local.get $w1|29 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.1 + end + i64.add + local.set $c2 + local.get $c2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + if + local.get $c1 + local.set $lo + local.get $c2 + local.set $hi + else + local.get $c1 + i64.const 1 + i64.shl + local.get $c0 + i64.const 63 + i64.shr_u + i64.or + local.set $lo + local.get $c2 + i64.const 1 + i64.shl + local.get $c1 + i64.const 63 + i64.shr_u + i64.or + local.set $hi + end + local.get $lo + i32.const 3816 + local.get $i + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $i + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u i64.const 1 - local.get $one_exp + i64.and + i64.sub + local.set $lo + local.get $hi + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/dtoa/toBcd8 (param $value i64) (result i32) + (local $value|1 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $singles|5 i64) + block $~lib/util/dtoa/toBcd8Digits|inlined.2 (result i64) + local.get $value + local.set $value|1 + local.get $value|1 + i64.const 4294957296 + local.get $value|1 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.2 + end + local.set $singles|5 + i32.const 70 i64.extend_i32_s + local.get $singles|5 + i64.const 1 i64.shl - local.set $one_frc - local.get $one_frc i64.const 1 + i64.or + i64.clz i64.sub - local.set $mask - local.get $mp_frc - local.get $w_frc - i64.sub - local.set $wp_w_frc - local.get $mp_frc - local.get $one_exp - i64.extend_i32_s - i64.shr_u + i64.const 8 + i64.div_u i32.wrap_i64 - local.set $p1 - local.get $mp_frc - local.get $mask - i64.and - local.set $p2 - local.get $p1 - call $~lib/util/number/decimalCount32 - local.set $kappa - local.get $sign - local.set $len - loop $while-continue|0 - local.get $kappa - i32.const 0 - i32.gt_s - if - block $break|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 $kappa - local.set $16 - local.get $16 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $16 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $16 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $16 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $16 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $16 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $16 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $16 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $16 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $16 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $p1 - i32.const 1000000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100000 - i32.div_u - local.set $d - local.get $p1 - i32.const 100000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10000 - i32.div_u - local.set $d - local.get $p1 - i32.const 10000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 1000 - i32.div_u - local.set $d - local.get $p1 - i32.const 1000 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 100 - i32.div_u - local.set $d - local.get $p1 - i32.const 100 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - i32.const 10 - i32.div_u - local.set $d - local.get $p1 - i32.const 10 - i32.rem_u - local.set $p1 - br $break|1 - end - local.get $p1 - local.set $d - i32.const 0 - local.set $p1 - br $break|1 - end - i32.const 0 - local.set $d - br $break|1 - end - local.get $d - local.get $len - i32.or - if - local.get $buffer - local.get $len - local.tee $17 - i32.const 1 - i32.add - local.set $len - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $kappa + return + ) + (func $~lib/util/dtoa/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buf i32) + (local $value|3 f64) + (local $dotZero i32) + (local $bits i64) + (local $binExp i32) + (local $binSig i64) + (local $buf|8 i32) + (local $bits|9 i64) + (local $binExp|10 i32) + (local $binSig|11 i64) + (local $dotZero|12 i32) + (local $neg i32) + (local $threshold i64) + (local $isNormal i32) + (local $buf|16 i32) + (local $buf|17 i32) + (local $neg|18 i32) + (local $p i32) + (local $ascii i64) + (local $off i32) + (local $base i32) + (local $lo i64) + (local $hi i64) + (local $end i32) + (local $dotZero|26 i32) + (local $q i32) + (local $c i64) + (local $intValue i64) + (local $shift i32) + (local $mask i64) + (local $buf|32 i32) + (local $value|33 i64) + (local $v i64) + (local $v|35 i64) + (local $len i32) + (local $p|37 i32) + (local $v|38 i64) + (local $q|39 i64) + (local $q|40 i64) + (local $q|41 i64) + (local $q|42 i64) + (local $q|43 i64) + (local $q|44 i64) + (local $q|45 i64) + (local $end|46 i32) + (local $dotZero|47 i32) + (local $binSig|48 i64) + (local $rawExp i32) + (local $regular i32) + (local $c|51 i64) + (local $q|52 i32) + (local $decExp i32) + (local $powExp i32) + (local $h i32) + (local $i i32) + (local $t i32) + (local $hi|58 i64) + (local $lo|59 i64) + (local $pow10Hi i64) + (local $integral i64) + (local $halfUlp i64) + (local $dotOne i64) + (local $one i64) + (local $integral|65 i64) + (local $one|66 i64) + (local $decExp|67 i32) + (local $decExp|68 i32) + (local $powExp|69 i32) + (local $h|70 i32) + (local $shift|71 i32) + (local $i|72 i32) + (local $t|73 i32) + (local $hi|74 i64) + (local $lo|75 i64) + (local $pLo i64) + (local $pHi i64) + (local $y i64) + (local $a i64) + (local $b i64) + (local $a0 i64) + (local $a1 i64) + (local $b0 i64) + (local $b1 i64) + (local $w0 i64) + (local $t|86 i64) + (local $w1 i64) + (local $w2 i64) + (local $a|89 i64) + (local $pLo64 i64) + (local $a|91 i64) + (local $b|92 i64) + (local $a0|93 i64) + (local $a1|94 i64) + (local $b0|95 i64) + (local $b1|96 i64) + (local $w0|97 i64) + (local $t|98 i64) + (local $w1|99 i64) + (local $w2|100 i64) + (local $lo|101 i64) + (local $pHi64 i64) + (local $integral|103 i64) + (local $dotOne|104 i64) + (local $halfUlp|105 i64) + (local $a|106 i64) + (local $b|107 i64) + (local $carry i64) + (local $lo|109 i64) + (local $a|110 i64) + (local $b|111 i64) + (local $a0|112 i64) + (local $a1|113 i64) + (local $b0|114 i64) + (local $b1|115 i64) + (local $w0|116 i64) + (local $t|117 i64) + (local $w1|118 i64) + (local $w2|119 i64) + (local $hi|120 i64) + (local $one|121 i64) + (local $integral|122 i64) + (local $one|123 i64) + (local $decExp|124 i32) + (local $binSig|125 i64) + (local $rawExp|126 i32) + (local $regular|127 i32) + (local $binSig|128 i64) + (local $rawExp|129 i32) + (local $regular|130 i32) + (local $c|131 i64) + (local $q|132 i32) + (local $decExp|133 i32) + (local $powExp|134 i32) + (local $h|135 i32) + (local $i|136 i32) + (local $t|137 i32) + (local $hi|138 i64) + (local $lo|139 i64) + (local $pow10Hi|140 i64) + (local $integral|141 i64) + (local $halfUlp|142 i64) + (local $dotOne|143 i64) + (local $one|144 i64) + (local $integral|145 i64) + (local $one|146 i64) + (local $decExp|147 i32) + (local $decExp|148 i32) + (local $powExp|149 i32) + (local $h|150 i32) + (local $shift|151 i32) + (local $i|152 i32) + (local $t|153 i32) + (local $hi|154 i64) + (local $lo|155 i64) + (local $pLo|156 i64) + (local $pHi|157 i64) + (local $y|158 i64) + (local $a|159 i64) + (local $b|160 i64) + (local $a0|161 i64) + (local $a1|162 i64) + (local $b0|163 i64) + (local $b1|164 i64) + (local $w0|165 i64) + (local $t|166 i64) + (local $w1|167 i64) + (local $w2|168 i64) + (local $a|169 i64) + (local $pLo64|170 i64) + (local $a|171 i64) + (local $b|172 i64) + (local $a0|173 i64) + (local $a1|174 i64) + (local $b0|175 i64) + (local $b1|176 i64) + (local $w0|177 i64) + (local $t|178 i64) + (local $w1|179 i64) + (local $w2|180 i64) + (local $lo|181 i64) + (local $pHi64|182 i64) + (local $integral|183 i64) + (local $dotOne|184 i64) + (local $halfUlp|185 i64) + (local $a|186 i64) + (local $b|187 i64) + (local $carry|188 i64) + (local $lo|189 i64) + (local $a|190 i64) + (local $b|191 i64) + (local $a0|192 i64) + (local $a1|193 i64) + (local $b0|194 i64) + (local $b1|195 i64) + (local $w0|196 i64) + (local $t|197 i64) + (local $w1|198 i64) + (local $w2|199 i64) + (local $hi|200 i64) + (local $one|201 i64) + (local $integral|202 i64) + (local $one|203 i64) + (local $decExp|204 i32) + (local $binExp|205 i32) + (local $decExp|206 i32) + (local $binExp|207 i32) + (local $decExp|208 i32) + (local $pow10BinExp i32) + (local $shift|210 i32) + (local $powExp|211 i32) + (local $i|212 i32) + (local $t|213 i32) + (local $hi|214 i64) + (local $lo|215 i64) + (local $pLo|216 i64) + (local $pHi|217 i64) + (local $y|218 i64) + (local $a|219 i64) + (local $b|220 i64) + (local $a0|221 i64) + (local $a1|222 i64) + (local $b0|223 i64) + (local $b1|224 i64) + (local $w0|225 i64) + (local $t|226 i64) + (local $w1|227 i64) + (local $w2|228 i64) + (local $a|229 i64) + (local $pLo64|230 i64) + (local $a|231 i64) + (local $b|232 i64) + (local $a0|233 i64) + (local $a1|234 i64) + (local $b0|235 i64) + (local $b1|236 i64) + (local $w0|237 i64) + (local $t|238 i64) + (local $w1|239 i64) + (local $w2|240 i64) + (local $lo|241 i64) + (local $pHi64|242 i64) + (local $integral|243 i64) + (local $dotOne|244 i64) + (local $halfUlp|245 i64) + (local $a|246 i64) + (local $b|247 i64) + (local $carry|248 i64) + (local $lo|249 i64) + (local $a|250 i64) + (local $b|251 i64) + (local $a0|252 i64) + (local $a1|253 i64) + (local $b0|254 i64) + (local $b1|255 i64) + (local $w0|256 i64) + (local $t|257 i64) + (local $w1|258 i64) + (local $w2|259 i64) + (local $hi|260 i64) + (local $one|261 i64) + (local $integral|262 i64) + (local $one|263 i64) + (local $decExp|264 i32) + (local $full i64) + (local $v|266 i64) + (local $scale i32) + (local $mul i64) + (local $hasLastDigit i32) + (local $decExp|270 i32) + (local $start i32) + (local $value|272 i64) + (local $value|273 i64) + (local $fixed16 i32) + (local $hi|275 i64) + (local $lo|276 i64) + (local $value|277 i64) + (local $quads i64) + (local $pairs i64) + (local $singles i64) + (local $hiBcd i64) + (local $value|282 i64) + (local $quads|283 i64) + (local $pairs|284 i64) + (local $singles|285 i64) + (local $hiLen i32) + (local $hiBcd|287 i64) + (local $loLen i32) + (local $buf|289 i32) + (local $start|290 i32) + (local $decExp|291 i32) + (local $hasLastDigit|292 i32) + (local $dotZero|293 i32) + (local $p|294 i32) + (local $ascii|295 i64) + (local $off|296 i32) + (local $base|297 i32) + (local $lo|298 i64) + (local $hi|299 i64) + (local $lastDigitChar i64) + (local $numDigits i32) + (local $dHi i64) + (local $dLo i64) + (local $p|304 i32) + (local $ascii|305 i64) + (local $off|306 i32) + (local $base|307 i32) + (local $lo|308 i64) + (local $hi|309 i64) + (local $p|310 i32) + (local $ascii|311 i64) + (local $off|312 i32) + (local $base|313 i32) + (local $lo|314 i64) + (local $hi|315 i64) + (local $endByte i32) + (local $z i32) + (local $p|318 i32) + (local $ascii|319 i64) + (local $off|320 i32) + (local $base|321 i32) + (local $lo|322 i64) + (local $hi|323 i64) + (local $end|324 i32) + (local $dotZero|325 i32) + (local $n i32) + (local $endPos i32) + (local $startPos i32) + (local $p|329 i32) + (local $ascii|330 i64) + (local $off|331 i32) + (local $base|332 i32) + (local $lo|333 i64) + (local $hi|334 i64) + (local $p|335 i32) + (local $ascii|336 i64) + (local $off|337 i32) + (local $base|338 i32) + (local $lo|339 i64) + (local $hi|340 i64) + (local $k i32) + (local $d16 i64) + (local $s i32) + (local $fHi i64) + (local $fLo i64) + (local $s2 i32) + (local $p|347 i32) + (local $ascii|348 i64) + (local $off|349 i32) + (local $base|350 i32) + (local $lo|351 i64) + (local $hi|352 i64) + (local $p|353 i32) + (local $ascii|354 i64) + (local $off|355 i32) + (local $base|356 i32) + (local $lo|357 i64) + (local $hi|358 i64) + (local $end|359 i32) + (local $end|360 i32) + (local $dotZero|361 i32) + (local $high i64) + (local $low i64) + (local $count i32) + (local $buf|365 i32) + (local $start|366 i32) + (local $decExp|367 i32) + (local $hasLastDigit|368 i32) + (local $hasExtraDigit i32) + (local $bcdSize i32) + (local $p|371 i32) + (local $ascii|372 i64) + (local $off|373 i32) + (local $base|374 i32) + (local $lo|375 i64) + (local $hi|376 i64) + (local $p|377 i32) + (local $ascii|378 i64) + (local $off|379 i32) + (local $base|380 i32) + (local $lo|381 i64) + (local $hi|382 i64) + (local $high|383 i64) + (local $low|384 i64) + (local $count|385 i32) + (local $lead i32) + (local $buf|387 i32) + (local $decExp|388 i32) + (local $m i32) + (local $e i32) + (local $d i32) + block $~lib/util/dtoa/formatDouble|inlined.0 (result i32) + local.get $buffer + local.set $buf + local.get $value + local.set $value|3 + i32.const 1 + local.set $dotZero + local.get $value|3 + i64.reinterpret_f64 + local.set $bits + local.get $bits + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $binExp + local.get $bits + global.get $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK + i64.and + local.set $binSig + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $buf + local.set $buf|8 + local.get $bits + local.set $bits|9 + local.get $binExp + local.set $binExp|10 + local.get $binSig + local.set $binSig|11 + local.get $dotZero + local.set $dotZero|12 + local.get $bits|9 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + local.set $neg + i64.const 1000000000000000 + local.set $threshold + local.get $binExp|10 i32.const 1 i32.sub - local.set $kappa - local.get $p1 - i64.extend_i32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.get $p2 - i64.add - local.set $tmp - local.get $tmp - local.get $delta - i64.le_u + i32.const 2046 + i32.lt_u + local.set $isNormal + local.get $isNormal + i32.eqz if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $buffer - local.set $buffer|19 - local.get $len - local.set $len|20 - local.get $delta - local.set $delta|21 - local.get $tmp - local.set $rest - i32.const 3824 - local.get $kappa - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $one_exp - i64.extend_i32_s - i64.shl - local.set $ten_kappa - local.get $wp_w_frc - local.set $wp_w - local.get $buffer|19 - local.get $len|20 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp - local.get $lastp - i32.load16_u - local.set $digit - loop $while-continue|3 - local.get $rest - local.get $wp_w - i64.lt_u - if (result i32) - local.get $delta|21 - local.get $rest - i64.sub - local.get $ten_kappa - i64.ge_u - else - i32.const 0 + local.get $binExp|10 + i32.const 0 + i32.ne + if + local.get $binSig|11 + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/writeNaN|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|16 + local.get $buf|16 + i32.const 78 + i32.store16 + local.get $buf|16 + i32.const 97 + i32.store16 offset=2 + local.get $buf|16 + i32.const 78 + i32.store16 offset=4 + local.get $buf|16 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeNaN|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - if (result i32) - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $wp_w - local.get $rest - i64.sub - local.get $rest - local.get $ten_kappa - i64.add - local.get $wp_w - i64.sub - i64.gt_u + block $~lib/util/dtoa/writeInfinity|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|17 + local.get $neg + local.set $neg|18 + local.get $neg|18 + if + local.get $buf|17 + i32.const 45 + i32.store16 + local.get $buf|17 + i32.const 2 + i32.add + local.set $buf|17 end - else + local.get $buf|17 + local.set $p + i64.const 8751735898823355977 + local.set $ascii + i32.const 0 + local.set $off + local.get $p + local.get $off + i32.add + local.set $base i32.const 0 + drop + local.get $ascii + i64.const 4294967295 + i64.and + local.set $lo + local.get $ascii + i64.const 32 + i64.shr_u + local.set $hi + local.get $lo + local.get $lo + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi + local.get $lo + local.get $lo + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo + local.get $hi + local.get $hi + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi + local.get $base + local.get $lo + i64.store + local.get $base + local.get $hi + i64.store offset=8 + local.get $buf|17 + i32.const 16 + i32.add + br $~lib/util/dtoa/writeInfinity|inlined.0 end - if - local.get $digit - i32.const 1 - i32.sub - local.set $digit - local.get $rest - local.get $ten_kappa - i64.add - local.set $rest - br $while-continue|3 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $binSig|11 + i64.const 0 + i64.eq + if + local.get $buf|8 + i32.const 48 + i32.store16 + block $~lib/util/dtoa/finishInteger|inlined.0 (result i32) + local.get $buf|8 + i32.const 2 + i32.add + local.set $end + local.get $dotZero|12 + local.set $dotZero|26 + local.get $dotZero|26 + if + local.get $end + i32.const 46 + i32.store16 + local.get $end + i32.const 48 + i32.store16 offset=2 + local.get $end + i32.const 4 + i32.add + local.set $end + end + local.get $end + br $~lib/util/dtoa/finishInteger|inlined.0 end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - local.get $lastp - local.get $digit - i32.store16 - local.get $len - return end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - if - local.get $p2 - i64.const 10 - i64.mul - local.set $p2 - local.get $delta - i64.const 10 - i64.mul - local.set $delta - local.get $p2 - local.get $one_exp - i64.extend_i32_s - i64.shr_u - local.set $d|27 - local.get $d|27 - local.get $len - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + local.get $neg if - local.get $buffer - local.get $len - local.tee $28 - i32.const 1 - i32.add - local.set $len - local.get $28 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $d|27 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add + local.get $buf|8 + i32.const 45 i32.store16 + local.get $buf|8 + i32.const 2 + i32.add + local.set $buf|8 end - local.get $p2 - local.get $mask - i64.and - local.set $p2 - local.get $kappa - i32.const 1 - i32.sub - local.set $kappa - local.get $p2 - local.get $delta - i64.lt_u + local.get $isNormal if - global.get $~lib/util/number/_K - local.get $kappa - i32.add - global.set $~lib/util/number/_K - local.get $wp_w_frc - i32.const 3824 - i32.const 0 - local.get $kappa + local.get $binExp|10 + i32.const 1075 i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $wp_w_frc - local.get $buffer - local.set $buffer|29 - local.get $len - local.set $len|30 - local.get $delta - local.set $delta|31 - local.get $p2 - local.set $rest|32 - local.get $one_frc - local.set $ten_kappa|33 - local.get $wp_w_frc - local.set $wp_w|34 - local.get $buffer|29 - local.get $len|30 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $lastp|35 - local.get $lastp|35 - i32.load16_u - local.set $digit|36 - loop $while-continue|6 - local.get $rest|32 - local.get $wp_w|34 - i64.lt_u - if (result i32) - local.get $delta|31 - local.get $rest|32 + local.set $q + local.get $binSig|11 + i64.const 4503599627370496 + i64.or + local.set $c + i64.const 0 + local.set $intValue + local.get $q + i32.const 0 + i32.lt_s + if + i32.const 0 + local.get $q + i32.sub + local.set $shift + local.get $shift + i32.const 52 + i32.le_s + if + i64.const 1 + local.get $shift + i64.extend_i32_s + i64.shl + i64.const 1 i64.sub - local.get $ten_kappa|33 + local.set $mask + local.get $c + local.get $mask + i64.and + i64.const 0 + i64.eq + if + local.get $c + local.get $shift + i64.extend_i32_s + i64.shr_u + local.set $intValue + end + end + else + local.get $q + i32.const 11 + i32.lt_s + if + local.get $c + local.get $q + i64.extend_i32_s + i64.shl + local.set $intValue + local.get $intValue + i64.const 10000000000000000 i64.ge_u - else - i32.const 0 + if + i64.const 0 + local.set $intValue + end end - if (result i32) - local.get $rest|32 - local.get $ten_kappa|33 + end + local.get $intValue + i64.const 0 + i64.ne + if + block $~lib/util/dtoa/finishInteger|inlined.1 (result i32) + block $~lib/util/dtoa/writeUInt16|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|32 + local.get $intValue + local.set $value|33 + block $~lib/util/dtoa/decimalLen16|inlined.0 (result i32) + local.get $value|33 + local.set $v + local.get $v + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $v + local.set $v|35 + local.get $v|35 + i64.const 100000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000 + i64.lt_u + if + local.get $v|35 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|35 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 3 + local.get $v|35 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|35 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 7 + local.get $v|35 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|35 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|35 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 11 + local.get $v|35 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $v|35 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|35 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + else + i32.const 16 + end + br $~lib/util/dtoa/decimalLen16|inlined.0 + end + local.set $len + i32.const 0 + drop + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $p|37 + local.get $value|33 + local.set $v|38 + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|39 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|39 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|39 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|40 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|40 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|40 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|41 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|41 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|41 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|42 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|42 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|42 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|43 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|43 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|43 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|44 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|44 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|44 + local.set $v|38 + end + local.get $v|38 + i64.const 100 + i64.ge_u + if + local.get $v|38 + i64.const 100 + i64.div_u + local.set $q|45 + local.get $p|37 + i32.const 4 + i32.sub + local.set $p|37 + local.get $p|37 + i32.const 1020 + local.get $v|38 + local.get $q|45 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $q|45 + local.set $v|38 + end + local.get $v|38 + i64.const 10 + i64.ge_u + if + local.get $buf|32 + i32.const 1020 + local.get $v|38 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $buf|32 + i32.const 48 + local.get $v|38 + i32.wrap_i64 + i32.add + i32.store16 + end + local.get $buf|32 + local.get $len + i32.const 1 + i32.shl + i32.add + br $~lib/util/dtoa/writeUInt16|inlined.0 + end + local.set $end|46 + local.get $dotZero|12 + local.set $dotZero|47 + local.get $dotZero|47 + if + local.get $end|46 + i32.const 46 + i32.store16 + local.get $end|46 + i32.const 48 + i32.store16 offset=2 + local.get $end|46 + i32.const 4 + i32.add + local.set $end|46 + end + local.get $end|46 + br $~lib/util/dtoa/finishInteger|inlined.1 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $isNormal + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $binSig|11 + local.set $binSig|48 + local.get $binExp|10 + local.set $rawExp + local.get $binSig|11 + i64.const 0 + i64.ne + local.set $regular + local.get $binSig|48 + i64.const 4503599627370496 + i64.or + local.set $c|51 + local.get $rawExp + i32.const 1075 + i32.sub + local.set $q|52 + local.get $regular + i32.eqz + if + local.get $q|52 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp + i32.const 0 + local.get $decExp + i32.sub + i32.const 1 + i32.sub + local.set $powExp + local.get $q|52 + local.get $powExp + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h + block $~lib/util/dtoa/computePow10|inlined.0 (result i64) + local.get $powExp + i32.const 293 + i32.add + local.set $i + local.get $i + i32.const 285 + i32.ge_s + if (result i32) + local.get $i + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i + i32.sub + local.set $t + i32.const 3024 + local.get $t + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|58 + local.get $t + i32.const 44 + i32.le_s + if + local.get $hi|58 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.0 + end + i32.const 3024 + local.get $t + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|59 + local.get $hi|58 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|59 + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $i + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.0 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi + local.get $pow10Hi + i64.const 11 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral + local.get $pow10Hi + i32.const 0 + local.get $h + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp + local.get $pow10Hi + i64.const 53 + local.get $h + i64.extend_i32_s i64.add - local.get $wp_w|34 - i64.lt_u + i64.shl + local.set $dotOne + local.get $dotOne + i64.const 53 + local.get $h + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one + end + local.set $one + local.get $dotOne + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one + end + local.set $one + local.get $halfUlp + i64.const 1 + i64.shr_u + local.get $dotOne + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one + end + local.set $one + local.get $halfUlp + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one + end + local.set $one + local.get $integral + local.set $integral|65 + local.get $one + local.set $one|66 + local.get $decExp + local.set $decExp|67 + local.get $one|66 + i64.const 10 + i64.eq + if + local.get $integral|65 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|66 + i64.const 0 + i64.eq + if + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|65 + global.set $~lib/util/dtoa/gSig + local.get $one|66 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|67 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $rawExp + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|68 + i32.const 0 + local.get $decExp|68 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|69 + local.get $q|52 + local.get $powExp|69 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|70 + local.get $h|70 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|71 + block $~lib/util/dtoa/computePow10|inlined.1 (result i64) + local.get $powExp|69 + i32.const 293 + i32.add + local.set $i|72 + local.get $i|72 + i32.const 285 + i32.ge_s if (result i32) - i32.const 1 + local.get $i|72 + i32.const 320 + i32.le_s else - local.get $wp_w|34 - local.get $rest|32 + i32.const 0 + end + if + i32.const 337 + local.get $i|72 + i32.sub + local.set $t|73 + i32.const 3024 + local.get $t|73 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|74 + local.get $t|73 + i32.const 44 + i32.le_s + if + local.get $hi|74 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.1 + end + i32.const 3024 + local.get $t|73 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|75 + local.get $hi|74 + i64.const 1 i64.sub - local.get $rest|32 - local.get $ten_kappa|33 + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|75 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $i|72 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $powExp|69 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi + local.get $c|51 + local.get $shift|71 + i64.extend_i32_s + i64.shl + local.set $y + block $~lib/util/dtoa/umul64hi|inlined.2 (result i64) + local.get $pHi + local.set $a + local.get $y + local.set $b + local.get $a + i64.const 4294967295 + i64.and + local.set $a0 + local.get $a + i64.const 32 + i64.shr_u + local.set $a1 + local.get $b + i64.const 4294967295 + i64.and + local.set $b0 + local.get $b + i64.const 32 + i64.shr_u + local.set $b1 + local.get $a0 + local.get $b0 + i64.mul + local.set $w0 + local.get $a1 + local.get $b0 + i64.mul + local.get $w0 + i64.const 32 + i64.shr_u + i64.add + local.set $t|86 + local.get $t|86 + i64.const 4294967295 + i64.and + local.set $w1 + local.get $t|86 + i64.const 32 + i64.shr_u + local.set $w2 + local.get $a0 + local.get $b1 + i64.mul + local.get $w1 + i64.add + local.set $w1 + local.get $a1 + local.get $b1 + i64.mul + local.get $w2 + i64.add + local.get $w1 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.2 + end + local.set $a|89 + local.get $pHi + local.get $y + i64.mul + local.set $pLo64 + local.get $pLo64 + block $~lib/util/dtoa/umul64hi|inlined.3 (result i64) + local.get $pLo + local.set $a|91 + local.get $y + local.set $b|92 + local.get $a|91 + i64.const 4294967295 + i64.and + local.set $a0|93 + local.get $a|91 + i64.const 32 + i64.shr_u + local.set $a1|94 + local.get $b|92 + i64.const 4294967295 + i64.and + local.set $b0|95 + local.get $b|92 + i64.const 32 + i64.shr_u + local.set $b1|96 + local.get $a0|93 + local.get $b0|95 + i64.mul + local.set $w0|97 + local.get $a1|94 + local.get $b0|95 + i64.mul + local.get $w0|97 + i64.const 32 + i64.shr_u + i64.add + local.set $t|98 + local.get $t|98 + i64.const 4294967295 + i64.and + local.set $w1|99 + local.get $t|98 + i64.const 32 + i64.shr_u + local.set $w2|100 + local.get $a0|93 + local.get $b1|96 + i64.mul + local.get $w1|99 + i64.add + local.set $w1|99 + local.get $a1|94 + local.get $b1|96 + i64.mul + local.get $w2|100 + i64.add + local.get $w1|99 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.3 + end + i64.add + local.set $lo|101 + local.get $a|89 + local.get $lo|101 + local.get $pLo64 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64 + local.get $pHi64 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|103 + local.get $pHi64 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|101 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|104 + local.get $pHi + i32.const 0 + local.get $h|70 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|51 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|105 + block $~lib/util/dtoa/umul64hiCarry|inlined.0 (result i64) + local.get $dotOne|104 + local.set $a|106 + i64.const 10 + local.set $b|107 + local.get $dotOne|104 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry + local.get $a|106 + local.get $b|107 + i64.mul + local.set $lo|109 + block $~lib/util/dtoa/umul64hi|inlined.4 (result i64) + local.get $a|106 + local.set $a|110 + local.get $b|107 + local.set $b|111 + local.get $a|110 + i64.const 4294967295 + i64.and + local.set $a0|112 + local.get $a|110 + i64.const 32 + i64.shr_u + local.set $a1|113 + local.get $b|111 + i64.const 4294967295 + i64.and + local.set $b0|114 + local.get $b|111 + i64.const 32 + i64.shr_u + local.set $b1|115 + local.get $a0|112 + local.get $b0|114 + i64.mul + local.set $w0|116 + local.get $a1|113 + local.get $b0|114 + i64.mul + local.get $w0|116 + i64.const 32 + i64.shr_u i64.add - local.get $wp_w|34 - i64.sub - i64.gt_u + local.set $t|117 + local.get $t|117 + i64.const 4294967295 + i64.and + local.set $w1|118 + local.get $t|117 + i64.const 32 + i64.shr_u + local.set $w2|119 + local.get $a0|112 + local.get $b1|115 + i64.mul + local.get $w1|118 + i64.add + local.set $w1|118 + local.get $a1|113 + local.get $b1|115 + i64.mul + local.get $w2|119 + i64.add + local.get $w1|118 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.4 end + local.set $hi|120 + local.get $hi|120 + local.get $lo|109 + local.get $carry + i64.add + local.get $lo|109 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.0 + end + local.set $one|121 + local.get $dotOne|104 + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 0 else + local.get $one|121 + end + local.set $one|121 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|104 + i64.sub + local.get $halfUlp|105 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|121 + end + local.set $one|121 + local.get $integral|103 + local.set $integral|122 + local.get $one|121 + local.set $one|123 + local.get $decExp|68 + local.set $decExp|124 + local.get $one|123 + i64.const 10 + i64.eq + if + local.get $integral|122 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|123 + i64.const 0 + i64.eq + if + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|122 + global.set $~lib/util/dtoa/gSig + local.get $one|123 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end end + local.get $decExp|124 + global.set $~lib/util/dtoa/gExp + end + else + block $~lib/util/dtoa/toDecimalDouble|inlined.0 + local.get $binSig|11 + local.set $binSig|125 + i32.const 0 + local.set $rawExp|126 + i32.const 1 + local.set $regular|127 + local.get $rawExp|126 + i32.const 0 + i32.ne if - local.get $digit|36 + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + local.get $binSig|125 + local.set $binSig|128 + local.get $rawExp|126 + local.set $rawExp|129 + local.get $regular|127 + local.set $regular|130 + local.get $binSig|128 + i64.const 4503599627370496 + i64.or + local.set $c|131 + local.get $rawExp|129 + i32.const 1075 + i32.sub + local.set $q|132 + local.get $regular|130 + i32.eqz + if + local.get $q|132 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + local.set $decExp|133 + i32.const 0 + local.get $decExp|133 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|134 + local.get $q|132 + local.get $powExp|134 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|135 + block $~lib/util/dtoa/computePow10|inlined.2 (result i64) + local.get $powExp|134 + i32.const 293 + i32.add + local.set $i|136 + local.get $i|136 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|136 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|136 + i32.sub + local.set $t|137 + i32.const 3024 + local.get $t|137 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|138 + local.get $t|137 + i32.const 44 + i32.le_s + if + local.get $hi|138 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.2 + end + i32.const 3024 + local.get $t|137 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|139 + local.get $hi|138 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|139 + br $~lib/util/dtoa/computePow10|inlined.2 + end + local.get $i|136 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.2 + end + drop + global.get $~lib/util/dtoa/gPow10Hi + local.set $pow10Hi|140 + local.get $pow10Hi|140 + i64.const 11 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $integral|141 + local.get $pow10Hi|140 + i32.const 0 + local.get $h|135 + i32.sub + i64.extend_i32_s + i64.shr_u + local.set $halfUlp|142 + local.get $pow10Hi|140 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shl + local.set $dotOne|143 + local.get $dotOne|143 + i64.const 53 + local.get $h|135 + i64.extend_i32_s + i64.add + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $h|135 + i64.extend_i32_s + i64.sub + i64.shr_u + local.set $one|144 + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 511 + i64.and + local.get $halfUlp|142 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + i64.gt_u + if (result i64) + local.get $dotOne|143 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $one|144 + end + local.set $one|144 + local.get $dotOne|143 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 2 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + i64.const 1 + i64.shr_u + local.get $dotOne|143 + i64.gt_u + if (result i64) + i64.const 0 + else + local.get $one|144 + end + local.set $one|144 + local.get $halfUlp|142 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|143 + i64.sub + i64.gt_u + if (result i64) + i64.const 10 + else + local.get $one|144 + end + local.set $one|144 + local.get $integral|141 + local.set $integral|145 + local.get $one|144 + local.set $one|146 + local.get $decExp|133 + local.set $decExp|147 + local.get $one|146 + i64.const 10 + i64.eq + if + local.get $integral|145 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|146 + i64.const 0 + i64.eq + if + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|145 + global.set $~lib/util/dtoa/gSig + local.get $one|146 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|147 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.1 + end + local.get $rawExp|129 + i32.const 1075 + i32.sub + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.set $decExp|148 + i32.const 0 + local.get $decExp|148 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|149 + local.get $q|132 + local.get $powExp|149 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + i32.add + local.set $h|150 + local.get $h|150 + i32.const 1 + i32.add + i32.const 6 + i32.add + local.set $shift|151 + block $~lib/util/dtoa/computePow10|inlined.3 (result i64) + local.get $powExp|149 + i32.const 293 + i32.add + local.set $i|152 + local.get $i|152 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|152 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|152 + i32.sub + local.set $t|153 + i32.const 3024 + local.get $t|153 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|154 + local.get $t|153 + i32.const 44 + i32.le_s + if + local.get $hi|154 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.3 + end + i32.const 3024 + local.get $t|153 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|155 + local.get $hi|154 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|155 + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $i|152 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.3 + end + local.get $powExp|149 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|156 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|157 + local.get $c|131 + local.get $shift|151 + i64.extend_i32_s + i64.shl + local.set $y|158 + block $~lib/util/dtoa/umul64hi|inlined.5 (result i64) + local.get $pHi|157 + local.set $a|159 + local.get $y|158 + local.set $b|160 + local.get $a|159 + i64.const 4294967295 + i64.and + local.set $a0|161 + local.get $a|159 + i64.const 32 + i64.shr_u + local.set $a1|162 + local.get $b|160 + i64.const 4294967295 + i64.and + local.set $b0|163 + local.get $b|160 + i64.const 32 + i64.shr_u + local.set $b1|164 + local.get $a0|161 + local.get $b0|163 + i64.mul + local.set $w0|165 + local.get $a1|162 + local.get $b0|163 + i64.mul + local.get $w0|165 + i64.const 32 + i64.shr_u + i64.add + local.set $t|166 + local.get $t|166 + i64.const 4294967295 + i64.and + local.set $w1|167 + local.get $t|166 + i64.const 32 + i64.shr_u + local.set $w2|168 + local.get $a0|161 + local.get $b1|164 + i64.mul + local.get $w1|167 + i64.add + local.set $w1|167 + local.get $a1|162 + local.get $b1|164 + i64.mul + local.get $w2|168 + i64.add + local.get $w1|167 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.5 + end + local.set $a|169 + local.get $pHi|157 + local.get $y|158 + i64.mul + local.set $pLo64|170 + local.get $pLo64|170 + block $~lib/util/dtoa/umul64hi|inlined.6 (result i64) + local.get $pLo|156 + local.set $a|171 + local.get $y|158 + local.set $b|172 + local.get $a|171 + i64.const 4294967295 + i64.and + local.set $a0|173 + local.get $a|171 + i64.const 32 + i64.shr_u + local.set $a1|174 + local.get $b|172 + i64.const 4294967295 + i64.and + local.set $b0|175 + local.get $b|172 + i64.const 32 + i64.shr_u + local.set $b1|176 + local.get $a0|173 + local.get $b0|175 + i64.mul + local.set $w0|177 + local.get $a1|174 + local.get $b0|175 + i64.mul + local.get $w0|177 + i64.const 32 + i64.shr_u + i64.add + local.set $t|178 + local.get $t|178 + i64.const 4294967295 + i64.and + local.set $w1|179 + local.get $t|178 + i64.const 32 + i64.shr_u + local.set $w2|180 + local.get $a0|173 + local.get $b1|176 + i64.mul + local.get $w1|179 + i64.add + local.set $w1|179 + local.get $a1|174 + local.get $b1|176 + i64.mul + local.get $w2|180 + i64.add + local.get $w1|179 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.6 + end + i64.add + local.set $lo|181 + local.get $a|169 + local.get $lo|181 + local.get $pLo64|170 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|182 + local.get $pHi64|182 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|183 + local.get $pHi64|182 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|181 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|184 + local.get $pHi|157 + i32.const 0 + local.get $h|150 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $c|131 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|185 + block $~lib/util/dtoa/umul64hiCarry|inlined.1 (result i64) + local.get $dotOne|184 + local.set $a|186 + i64.const 10 + local.set $b|187 + local.get $dotOne|184 + i64.const 1 + i64.const 62 + i64.shl + i64.eq + if (result i64) + i64.const 0 + else + global.get $~lib/util/dtoa/BIASED_HALF + end + local.set $carry|188 + local.get $a|186 + local.get $b|187 + i64.mul + local.set $lo|189 + block $~lib/util/dtoa/umul64hi|inlined.7 (result i64) + local.get $a|186 + local.set $a|190 + local.get $b|187 + local.set $b|191 + local.get $a|190 + i64.const 4294967295 + i64.and + local.set $a0|192 + local.get $a|190 + i64.const 32 + i64.shr_u + local.set $a1|193 + local.get $b|191 + i64.const 4294967295 + i64.and + local.set $b0|194 + local.get $b|191 + i64.const 32 + i64.shr_u + local.set $b1|195 + local.get $a0|192 + local.get $b0|194 + i64.mul + local.set $w0|196 + local.get $a1|193 + local.get $b0|194 + i64.mul + local.get $w0|196 + i64.const 32 + i64.shr_u + i64.add + local.set $t|197 + local.get $t|197 + i64.const 4294967295 + i64.and + local.set $w1|198 + local.get $t|197 + i64.const 32 + i64.shr_u + local.set $w2|199 + local.get $a0|192 + local.get $b1|195 + i64.mul + local.get $w1|198 + i64.add + local.set $w1|198 + local.get $a1|193 + local.get $b1|195 + i64.mul + local.get $w2|199 + i64.add + local.get $w1|198 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.7 + end + local.set $hi|200 + local.get $hi|200 + local.get $lo|189 + local.get $carry|188 + i64.add + local.get $lo|189 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.1 + end + local.set $one|201 + local.get $dotOne|184 + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|201 + end + local.set $one|201 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|184 + i64.sub + local.get $halfUlp|185 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|201 + end + local.set $one|201 + local.get $integral|183 + local.set $integral|202 + local.get $one|201 + local.set $one|203 + local.get $decExp|148 + local.set $decExp|204 + local.get $one|203 + i64.const 10 + i64.eq + if + local.get $integral|202 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|203 + i64.const 0 + i64.eq + if + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|202 + global.set $~lib/util/dtoa/gSig + local.get $one|203 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|204 + global.set $~lib/util/dtoa/gExp + end + br $~lib/util/dtoa/toDecimalDouble|inlined.0 + end + block $~lib/util/dtoa/toDecExponent|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|205 + local.get $binExp|205 + i32.const 315653 + i32.mul + global.get $~lib/util/dtoa/LOG10_2_EXP + i32.shr_s + br $~lib/util/dtoa/toDecExponent|inlined.0 + end + local.set $decExp|206 + block $~lib/util/dtoa/exponentShift|inlined.0 (result i32) + i32.const -1074 + local.set $binExp|207 + local.get $decExp|206 i32.const 1 + i32.add + local.set $decExp|208 + i32.const 0 + local.get $decExp|208 i32.sub - local.set $digit|36 - local.get $rest|32 - local.get $ten_kappa|33 + i32.const 217707 + i32.mul + global.get $~lib/util/dtoa/LOG2_POW10_EXP + i32.shr_s + local.set $pow10BinExp + local.get $binExp|207 + local.get $pow10BinExp + i32.add + i32.const 1 + i32.add + br $~lib/util/dtoa/exponentShift|inlined.0 + end + i32.const 6 + i32.add + local.set $shift|210 + i32.const 0 + local.get $decExp|206 + i32.sub + i32.const 1 + i32.sub + local.set $powExp|211 + block $~lib/util/dtoa/computePow10|inlined.4 (result i64) + local.get $powExp|211 + i32.const 293 + i32.add + local.set $i|212 + local.get $i|212 + i32.const 285 + i32.ge_s + if (result i32) + local.get $i|212 + i32.const 320 + i32.le_s + else + i32.const 0 + end + if + i32.const 337 + local.get $i|212 + i32.sub + local.set $t|213 + i32.const 3024 + local.get $t|213 + i32.const 17 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + local.set $hi|214 + local.get $t|213 + i32.const 44 + i32.le_s + if + local.get $hi|214 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + br $~lib/util/dtoa/computePow10|inlined.4 + end + i32.const 3024 + local.get $t|213 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $lo|215 + local.get $hi|214 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + local.get $lo|215 + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $i|212 + call $~lib/util/dtoa/computePow10Compact + br $~lib/util/dtoa/computePow10|inlined.4 + end + local.get $powExp|211 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.set $pLo|216 + global.get $~lib/util/dtoa/gPow10Hi + local.set $pHi|217 + local.get $binSig|125 + local.get $shift|210 + i64.extend_i32_s + i64.shl + local.set $y|218 + block $~lib/util/dtoa/umul64hi|inlined.8 (result i64) + local.get $pHi|217 + local.set $a|219 + local.get $y|218 + local.set $b|220 + local.get $a|219 + i64.const 4294967295 + i64.and + local.set $a0|221 + local.get $a|219 + i64.const 32 + i64.shr_u + local.set $a1|222 + local.get $b|220 + i64.const 4294967295 + i64.and + local.set $b0|223 + local.get $b|220 + i64.const 32 + i64.shr_u + local.set $b1|224 + local.get $a0|221 + local.get $b0|223 + i64.mul + local.set $w0|225 + local.get $a1|222 + local.get $b0|223 + i64.mul + local.get $w0|225 + i64.const 32 + i64.shr_u + i64.add + local.set $t|226 + local.get $t|226 + i64.const 4294967295 + i64.and + local.set $w1|227 + local.get $t|226 + i64.const 32 + i64.shr_u + local.set $w2|228 + local.get $a0|221 + local.get $b1|224 + i64.mul + local.get $w1|227 i64.add - local.set $rest|32 - br $while-continue|6 + local.set $w1|227 + local.get $a1|222 + local.get $b1|224 + i64.mul + local.get $w2|228 + i64.add + local.get $w1|227 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.8 end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return + local.set $a|229 + local.get $pHi|217 + local.get $y|218 + i64.mul + local.set $pLo64|230 + local.get $pLo64|230 + block $~lib/util/dtoa/umul64hi|inlined.9 (result i64) + local.get $pLo|216 + local.set $a|231 + local.get $y|218 + local.set $b|232 + local.get $a|231 + i64.const 4294967295 + i64.and + local.set $a0|233 + local.get $a|231 + i64.const 32 + i64.shr_u + local.set $a1|234 + local.get $b|232 + i64.const 4294967295 + i64.and + local.set $b0|235 + local.get $b|232 + i64.const 32 + i64.shr_u + local.set $b1|236 + local.get $a0|233 + local.get $b0|235 + i64.mul + local.set $w0|237 + local.get $a1|234 + local.get $b0|235 + i64.mul + local.get $w0|237 + i64.const 32 + i64.shr_u + i64.add + local.set $t|238 + local.get $t|238 + i64.const 4294967295 + i64.and + local.set $w1|239 + local.get $t|238 + i64.const 32 + i64.shr_u + local.set $w2|240 + local.get $a0|233 + local.get $b1|236 + i64.mul + local.get $w1|239 + i64.add + local.set $w1|239 + local.get $a1|234 + local.get $b1|236 + i64.mul + local.get $w2|240 + i64.add + local.get $w1|239 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.9 + end + i64.add + local.set $lo|241 + local.get $a|229 + local.get $lo|241 + local.get $pLo64|230 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $pHi64|242 + local.get $pHi64|242 + i32.const 6 + i64.extend_i32_s + i64.shr_u + local.set $integral|243 + local.get $pHi64|242 + i64.const 64 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shl + local.get $lo|241 + i32.const 6 + i64.extend_i32_s + i64.shr_u + i64.or + local.set $dotOne|244 + local.get $pHi|217 + i32.const 6 + i32.const 1 + i32.add + local.get $shift|210 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.const 1 + local.get $binSig|125 + i64.const 1 + i64.and + i64.sub + i64.add + local.set $halfUlp|245 + block $~lib/util/dtoa/umul64hiCarry|inlined.2 (result i64) + local.get $dotOne|244 + local.set $a|246 + i64.const 10 + local.set $b|247 + global.get $~lib/util/dtoa/BIASED_HALF + local.set $carry|248 + local.get $a|246 + local.get $b|247 + i64.mul + local.set $lo|249 + block $~lib/util/dtoa/umul64hi|inlined.10 (result i64) + local.get $a|246 + local.set $a|250 + local.get $b|247 + local.set $b|251 + local.get $a|250 + i64.const 4294967295 + i64.and + local.set $a0|252 + local.get $a|250 + i64.const 32 + i64.shr_u + local.set $a1|253 + local.get $b|251 + i64.const 4294967295 + i64.and + local.set $b0|254 + local.get $b|251 + i64.const 32 + i64.shr_u + local.set $b1|255 + local.get $a0|252 + local.get $b0|254 + i64.mul + local.set $w0|256 + local.get $a1|253 + local.get $b0|254 + i64.mul + local.get $w0|256 + i64.const 32 + i64.shr_u + i64.add + local.set $t|257 + local.get $t|257 + i64.const 4294967295 + i64.and + local.set $w1|258 + local.get $t|257 + i64.const 32 + i64.shr_u + local.set $w2|259 + local.get $a0|252 + local.get $b1|255 + i64.mul + local.get $w1|258 + i64.add + local.set $w1|258 + local.get $a1|253 + local.get $b1|255 + i64.mul + local.get $w2|259 + i64.add + local.get $w1|258 + i64.const 32 + i64.shr_u + i64.add + br $~lib/util/dtoa/umul64hi|inlined.10 + end + local.set $hi|260 + local.get $hi|260 + local.get $lo|249 + local.get $carry|248 + i64.add + local.get $lo|249 + i64.lt_u + i64.extend_i32_u + i64.add + br $~lib/util/dtoa/umul64hiCarry|inlined.2 + end + local.set $one|261 + local.get $dotOne|244 + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 0 + else + local.get $one|261 + end + local.set $one|261 + global.get $~lib/builtins/u64.MAX_VALUE + local.get $dotOne|244 + i64.sub + local.get $halfUlp|245 + i64.lt_u + if (result i64) + i64.const 10 + else + local.get $one|261 + end + local.set $one|261 + local.get $integral|243 + local.set $integral|262 + local.get $one|261 + local.set $one|263 + local.get $decExp|206 + local.set $decExp|264 + local.get $one|263 + i64.const 10 + i64.eq + if + local.get $integral|262 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $one|263 + i64.const 0 + i64.eq + if + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $integral|262 + global.set $~lib/util/dtoa/gSig + local.get $one|263 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $decExp|264 + global.set $~lib/util/dtoa/gExp + end end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) - (local $kk i32) - (local $i i32) - (local $ptr i32) - (local $offset i32) - (local $i|7 i32) - (local $buffer|8 i32) - (local $k|9 i32) - (local $sign i32) - (local $decimals i32) - (local $buffer|12 i32) - (local $num i32) - (local $offset|14 i32) - (local $len i32) - (local $buffer|16 i32) - (local $k|17 i32) - (local $sign|18 i32) - (local $decimals|19 i32) - (local $buffer|20 i32) - (local $num|21 i32) - (local $offset|22 i32) - local.get $k - i32.eqz - if - local.get $buffer - local.get $length - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $length - i32.const 2 - i32.add - return - end - local.get $length - local.get $k - i32.add - local.set $kk - local.get $length - local.get $kk - i32.le_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $length - local.set $i - loop $for-loop|0 - local.get $i - local.get $kk - i32.lt_s + global.get $~lib/util/dtoa/gSig + local.get $threshold + i64.lt_u if - local.get $buffer - local.get $i - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gHasLastDigit + if (result i64) + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + else + i64.const 0 + end + i64.add + local.set $full + local.get $full + i64.const 1000000000000000 + i64.ge_u + if + local.get $full + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + i32.const 1 + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $full + local.set $v|266 + local.get $v|266 + i64.const 100000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000 + i64.lt_u + if + local.get $v|266 + i64.const 100 + i64.lt_u + if + i32.const 1 + local.get $v|266 + i64.const 10 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 3 + local.get $v|266 + i64.const 1000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000 + i64.lt_u + if + i32.const 5 + local.get $v|266 + i64.const 100000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 7 + local.get $v|266 + i64.const 10000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 1000000000000 + i64.lt_u + if + local.get $v|266 + i64.const 10000000000 + i64.lt_u + if + i32.const 9 + local.get $v|266 + i64.const 1000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 11 + local.get $v|266 + i64.const 100000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $v|266 + i64.const 100000000000000 + i64.lt_u + if + i32.const 13 + local.get $v|266 + i64.const 10000000000000 + i64.ge_u + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.const 15 + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + i32.sub + local.set $scale + i32.const 3896 + local.get $scale + i32.const 3 + i32.shl + i32.add + f64.load + i64.trunc_sat_f64_u + local.set $mul + local.get $full + local.get $mul + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $scale + i32.const 1 + i32.add + i32.sub + global.set $~lib/util/dtoa/gExp + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + end end - end - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $kk - i32.const 2 - i32.add - return - else - local.get $kk - i32.const 0 - i32.gt_s - if (result i32) - local.get $kk - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - local.set $ptr - local.get $ptr - i32.const 2 + global.get $~lib/util/dtoa/gHasLastDigit + local.set $hasLastDigit + global.get $~lib/util/dtoa/gExp + i32.const 16 i32.add - local.get $ptr + local.set $decExp|270 + local.get $buf|8 + local.set $start + global.get $~lib/util/dtoa/gSig + local.set $value|272 i32.const 0 - local.get $k - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $buffer - local.get $kk - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $length - i32.const 1 - i32.add - return - else + drop + block $~lib/util/dtoa/toDigits64Swar|inlined.0 + local.get $value|272 + local.set $value|273 + i32.const 1 + local.set $fixed16 + local.get $value|273 + i64.const 100000000 + i64.div_u + local.set $hi|275 + local.get $value|273 + local.get $hi|275 + i64.const 100000000 + i64.mul + i64.sub + local.set $lo|276 + local.get $fixed16 + if + block $~lib/util/dtoa/toBcd8Digits|inlined.0 (result i64) + local.get $hi|275 + local.set $value|277 + local.get $value|277 + i64.const 4294957296 + local.get $value|277 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads + local.get $quads + i64.const 65436 + local.get $quads + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs + local.get $pairs + i64.const 246 + local.get $pairs + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles + local.get $singles + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles + br $~lib/util/dtoa/toBcd8Digits|inlined.0 + end + drop + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd + block $~lib/util/dtoa/toBcd8Digits|inlined.1 (result i64) + local.get $lo|276 + local.set $value|282 + local.get $value|282 + i64.const 4294957296 + local.get $value|282 + global.get $~lib/util/dtoa/DIV10K_SIG + i64.mul + i32.const 40 + i64.extend_i32_s + i64.shr_u + i64.mul + i64.add + local.set $quads|283 + local.get $quads|283 + i64.const 65436 + local.get $quads|283 + global.get $~lib/util/dtoa/DIV100_SIG + i64.mul + i32.const 19 + i64.extend_i32_s + i64.shr_u + i64.const 545460846719 + i64.and + i64.mul + i64.add + local.set $pairs|284 + local.get $pairs|284 + i64.const 246 + local.get $pairs|284 + global.get $~lib/util/dtoa/DIV10_SIG + i64.mul + i32.const 10 + i64.extend_i32_s + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.mul + i64.add + local.set $singles|285 + local.get $singles|285 + call $~lib/polyfills/bswap + global.set $~lib/util/dtoa/gBcdValue + local.get $singles|285 + br $~lib/util/dtoa/toBcd8Digits|inlined.1 + end + drop + local.get $hiBcd + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $hi|275 + call $~lib/util/dtoa/toBcd8 + local.set $hiLen + global.get $~lib/util/dtoa/gBcdValue + local.set $hiBcd|287 + local.get $lo|276 + i64.const 0 + i64.eq + if + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + i64.const 3472328296227680304 + global.set $~lib/util/dtoa/gDigLo + local.get $hiLen + i32.const 8 + i32.add + global.set $~lib/util/dtoa/gDigits + br $~lib/util/dtoa/toDigits64Swar|inlined.0 + end + local.get $lo|276 + call $~lib/util/dtoa/toBcd8 + local.set $loLen + local.get $hiBcd|287 + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + local.get $hi|275 + i64.const 0 + i64.eq + if (result i32) + local.get $loLen + else + local.get $hiLen + i32.const 8 + i32.add + end + global.set $~lib/util/dtoa/gDigits + end + local.get $decExp|270 i32.const -6 - local.get $kk - i32.lt_s + i32.ge_s if (result i32) - local.get $kk - i32.const 0 + local.get $decExp|270 + global.get $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32.le_s else i32.const 0 end if - i32.const 2 - local.get $kk - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $buffer - local.get $length - i32.const 1 - i32.shl - memory.copy - local.get $buffer - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $i|7 - loop $for-loop|1 - local.get $i|7 - local.get $offset + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|289 + local.get $start + local.set $start|290 + local.get $decExp|270 + local.set $decExp|291 + local.get $hasLastDigit + local.set $hasLastDigit|292 + local.get $dotZero|12 + local.set $dotZero|293 + local.get $decExp|291 + i32.const 0 i32.lt_s if - local.get $buffer - local.get $i|7 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $i|7 - i32.const 1 + local.get $start|290 + local.set $p|294 + i64.const 3472328296227680304 + local.set $ascii|295 + i32.const 0 + local.set $off|296 + local.get $p|294 + local.get $off|296 i32.add - local.set $i|7 - br $for-loop|1 + local.set $base|297 + i32.const 0 + drop + local.get $ascii|295 + i64.const 4294967295 + i64.and + local.set $lo|298 + local.get $ascii|295 + i64.const 32 + i64.shr_u + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|299 + local.get $lo|298 + local.get $lo|298 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|298 + local.get $hi|299 + local.get $hi|299 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|299 + local.get $base|297 + local.get $lo|298 + i64.store + local.get $base|297 + local.get $hi|299 + i64.store offset=8 end - end - local.get $length - local.get $offset - i32.add - return - else - local.get $length - i32.const 1 - i32.eq - if - local.get $buffer - i32.const 101 - i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $buffer - i32.const 4 + i32.const 48 + local.get $hasLastDigit|292 + if (result i32) + global.get $~lib/util/dtoa/gLastDigit + else + i32.const 0 + end + i32.add + i64.extend_i32_s + local.set $lastDigitChar + local.get $hasLastDigit|292 + if (result i32) + i32.const 16 + else + i32.const 15 + end + local.set $numDigits + global.get $~lib/util/dtoa/gDigHi + local.set $dHi + global.get $~lib/util/dtoa/gDigLo + local.set $dLo + local.get $decExp|291 + i32.const 16 + i32.ge_s + if + local.get $buf|289 + local.set $p|304 + local.get $dHi + local.set $ascii|305 + i32.const 0 + local.set $off|306 + local.get $p|304 + local.get $off|306 i32.add - local.set $buffer|8 - local.get $kk - i32.const 1 - i32.sub - local.set $k|9 - local.get $k|9 + local.set $base|307 i32.const 0 - i32.lt_s - local.set $sign - local.get $sign - if - i32.const 0 - local.get $k|9 - i32.sub - local.set $k|9 - end - local.get $k|9 - call $~lib/util/number/decimalCount32 - i32.const 1 + drop + local.get $ascii|305 + i64.const 4294967295 + i64.and + local.set $lo|308 + local.get $ascii|305 + i64.const 32 + i64.shr_u + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|309 + local.get $lo|308 + local.get $lo|308 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|308 + local.get $hi|309 + local.get $hi|309 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|309 + local.get $base|307 + local.get $lo|308 + i64.store + local.get $base|307 + local.get $hi|309 + i64.store offset=8 + local.get $buf|289 + local.set $p|310 + local.get $dLo + local.set $ascii|311 + i32.const 16 + local.set $off|312 + local.get $p|310 + local.get $off|312 i32.add - local.set $decimals - local.get $buffer|8 - local.set $buffer|12 - local.get $k|9 - local.set $num - local.get $decimals - local.set $offset|14 + local.set $base|313 i32.const 0 - i32.const 1 - i32.ge_s drop - local.get $buffer|12 - local.get $num - local.get $offset|14 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|8 - i32.const 45 - i32.const 43 - local.get $sign - select + local.get $ascii|311 + i64.const 4294967295 + i64.and + local.set $lo|314 + local.get $ascii|311 + i64.const 32 + i64.shr_u + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|315 + local.get $lo|314 + local.get $lo|314 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|314 + local.get $hi|315 + local.get $hi|315 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|315 + local.get $base|313 + local.get $lo|314 + i64.store + local.get $base|313 + local.get $hi|315 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 i32.store16 - local.get $decimals - br $~lib/util/number/genExponent|inlined.0 - end - local.set $length - local.get $length - i32.const 2 - i32.add - return - else - local.get $length + local.get $buf|289 + local.get $decExp|291 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $endByte + local.get $buf|289 + i32.const 17 + i32.const 1 + i32.shl + i32.add + local.set $z + loop $for-loop|0 + local.get $z + local.get $endByte + i32.lt_u + if + local.get $z + local.set $p|318 + i64.const 3472328296227680304 + local.set $ascii|319 + i32.const 0 + local.set $off|320 + local.get $p|318 + local.get $off|320 + i32.add + local.set $base|321 + i32.const 0 + drop + local.get $ascii|319 + i64.const 4294967295 + i64.and + local.set $lo|322 + local.get $ascii|319 + i64.const 32 + i64.shr_u + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|323 + local.get $lo|322 + local.get $lo|322 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|322 + local.get $hi|323 + local.get $hi|323 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|323 + local.get $base|321 + local.get $lo|322 + i64.store + local.get $base|321 + local.get $hi|323 + i64.store offset=8 + local.get $z + i32.const 16 + i32.add + local.set $z + br $for-loop|0 + end + end + block $~lib/util/dtoa/finishInteger|inlined.2 (result i32) + local.get $endByte + local.set $end|324 + local.get $dotZero|293 + local.set $dotZero|325 + local.get $dotZero|325 + if + local.get $end|324 + i32.const 46 + i32.store16 + local.get $end|324 + i32.const 48 + i32.store16 offset=2 + local.get $end|324 + i32.const 4 + i32.add + local.set $end|324 + end + local.get $end|324 + br $~lib/util/dtoa/finishInteger|inlined.2 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $numDigits + i32.const 1 + i32.add + local.set $n + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $n + i32.const 1 + i32.add + else + local.get $n + end + local.set $endPos + i32.const 1 + local.get $decExp|291 + i32.sub + local.get $decExp|291 + i32.const 31 + i32.shr_s + i32.and + local.set $startPos + local.get $buf|289 + local.get $startPos i32.const 1 i32.shl - local.set $len - local.get $buffer - i32.const 4 i32.add - local.get $buffer - i32.const 2 + local.set $buf|289 + local.get $buf|289 + local.set $p|329 + local.get $dHi + local.set $ascii|330 + i32.const 0 + local.set $off|331 + local.get $p|329 + local.get $off|331 i32.add - local.get $len - i32.const 2 - i32.sub - memory.copy - local.get $buffer - i32.const 46 - i32.store16 offset=2 - local.get $buffer - local.get $len + local.set $base|332 + i32.const 0 + drop + local.get $ascii|330 + i64.const 4294967295 + i64.and + local.set $lo|333 + local.get $ascii|330 + i64.const 32 + i64.shr_u + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|334 + local.get $lo|333 + local.get $lo|333 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|333 + local.get $hi|334 + local.get $hi|334 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|334 + local.get $base|332 + local.get $lo|333 + i64.store + local.get $base|332 + local.get $hi|334 + i64.store offset=8 + local.get $buf|289 + local.set $p|335 + local.get $dLo + local.set $ascii|336 + i32.const 16 + local.set $off|337 + local.get $p|335 + local.get $off|337 i32.add - i32.const 101 - i32.store16 offset=2 - local.get $length - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $buffer - local.get $len + local.set $base|338 + i32.const 0 + drop + local.get $ascii|336 + i64.const 4294967295 + i64.and + local.set $lo|339 + local.get $ascii|336 + i64.const 32 + i64.shr_u + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|340 + local.get $lo|339 + local.get $lo|339 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|339 + local.get $hi|340 + local.get $hi|340 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|340 + local.get $base|338 + local.get $lo|339 + i64.store + local.get $base|338 + local.get $hi|340 + i64.store offset=8 + local.get $buf|289 + i32.const 32 + i32.add + local.get $lastDigitChar + i32.wrap_i64 + i32.store16 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if + local.get $decExp|291 + i32.const 1 i32.add - i32.const 4 + local.set $k + local.get $lastDigitChar + local.set $d16 + local.get $k + i32.const 3 + i32.shl + local.set $s + local.get $s + i32.const 64 + i32.lt_s + if + local.get $dHi + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $dLo + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $dLo + local.get $s + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fLo + else + local.get $s + i32.const 64 + i32.eq + if + local.get $dLo + local.set $fHi + local.get $d16 + local.set $fLo + else + local.get $s + i32.const 128 + i32.lt_s + if + local.get $s + i32.const 64 + i32.sub + local.set $s2 + local.get $dLo + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.get $d16 + i64.const 64 + local.get $s2 + i64.extend_i32_s + i64.sub + i64.shl + i64.or + local.set $fHi + local.get $d16 + local.get $s2 + i64.extend_i32_s + i64.shr_u + local.set $fLo + else + local.get $d16 + local.set $fHi + i64.const 0 + local.set $fLo + end + end + end + local.get $buf|289 + local.get $k + i32.const 1 i32.add - local.set $buffer|16 - local.get $kk i32.const 1 - i32.sub - local.set $k|17 - local.get $k|17 + i32.shl + i32.add + local.set $p|347 + local.get $fHi + local.set $ascii|348 i32.const 0 - i32.lt_s - local.set $sign|18 - local.get $sign|18 + local.set $off|349 + local.get $p|347 + local.get $off|349 + i32.add + local.set $base|350 + i32.const 0 + drop + local.get $ascii|348 + i64.const 4294967295 + i64.and + local.set $lo|351 + local.get $ascii|348 + i64.const 32 + i64.shr_u + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|352 + local.get $lo|351 + local.get $lo|351 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|351 + local.get $hi|352 + local.get $hi|352 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|352 + local.get $base|350 + local.get $lo|351 + i64.store + local.get $base|350 + local.get $hi|352 + i64.store offset=8 + local.get $endPos + local.get $k + i32.const 9 + i32.add + i32.gt_s if + local.get $buf|289 + local.get $k + i32.const 9 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $p|353 + local.get $fLo + local.set $ascii|354 i32.const 0 - local.get $k|17 - i32.sub - local.set $k|17 + local.set $off|355 + local.get $p|353 + local.get $off|355 + i32.add + local.set $base|356 + i32.const 0 + drop + local.get $ascii|354 + i64.const 4294967295 + i64.and + local.set $lo|357 + local.get $ascii|354 + i64.const 32 + i64.shr_u + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|358 + local.get $lo|357 + local.get $lo|357 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|357 + local.get $hi|358 + local.get $hi|358 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|358 + local.get $base|356 + local.get $lo|357 + i64.store + local.get $base|356 + local.get $hi|358 + i64.store offset=8 end - local.get $k|17 - call $~lib/util/number/decimalCount32 + local.get $buf|289 + local.get $k i32.const 1 + i32.shl i32.add - local.set $decimals|19 - local.get $buffer|16 - local.set $buffer|20 - local.get $k|17 - local.set $num|21 - local.get $decimals|19 - local.set $offset|22 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|20 - local.get $num|21 - local.get $offset|22 - call $~lib/util/number/utoa32_dec_lut - local.get $buffer|16 - i32.const 45 - i32.const 43 - local.get $sign|18 - select + i32.const 46 i32.store16 - local.get $decimals|19 - br $~lib/util/number/genExponent|inlined.1 + else + local.get $start|290 + i32.const 46 + i32.store16 offset=2 end + local.get $buf|289 + local.get $endPos + i32.const 1 + i32.shl i32.add - local.set $length - local.get $length + local.set $end|359 + local.get $decExp|291 + i32.const 0 + i32.ge_s + if (result i32) + local.get $endPos + local.get $decExp|291 + i32.const 1 + i32.add + i32.eq + else + i32.const 0 + end + if + block $~lib/util/dtoa/finishInteger|inlined.3 (result i32) + local.get $end|359 + local.set $end|360 + local.get $dotZero|293 + local.set $dotZero|361 + local.get $dotZero|361 + if + local.get $end|360 + i32.const 46 + i32.store16 + local.get $end|360 + i32.const 48 + i32.store16 offset=2 + local.get $end|360 + i32.const 4 + i32.add + local.set $end|360 + end + local.get $end|360 + br $~lib/util/dtoa/finishInteger|inlined.3 + end + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $hasLastDigit|292 + i32.eqz + if + local.get $end|359 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.0 (result i32) + local.get $dHi + local.set $high + local.get $dLo + local.set $low + local.get $low + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count + local.get $count + i32.const 8 + i32.eq + if + local.get $count + local.get $high + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count + end + local.get $count + br $~lib/util/dtoa/packedTrailingZeros16|inlined.0 + end + i32.const 1 + i32.shl + i32.sub + local.set $end|359 + end + local.get $end|359 i32.const 2 - i32.add - return + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if + local.get $dotZero|293 + if + local.get $end|359 + i32.const 48 + i32.store16 + local.get $end|359 + i32.const 2 + i32.add + local.set $end|359 + else + local.get $end|359 + i32.const 2 + i32.sub + local.set $end|359 + end + end + local.get $end|359 + br $~lib/util/dtoa/writeFixed|inlined.0 end - unreachable + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) - (local $sign i32) - (local $value|4 f64) - (local $buffer|5 i32) - (local $sign|6 i32) - (local $isSingle|7 i32) - (local $frc i64) - (local $exp i32) - (local $uv i32) - (local $sid i32) - (local $uv|12 i64) - (local $sid|13 i64) - (local $f i64) - (local $e i32) - (local $isSingle|16 i32) - (local $frc|17 i64) - (local $exp|18 i32) - (local $off i32) - (local $m i32) - (local $minExp i32) - (local $dk f64) - (local $k i32) - (local $index i32) - (local $off|25 i32) - (local $frc_pow i64) - (local $exp_pow i32) - (local $u i64) - (local $v i64) - (local $u0 i64) - (local $v0 i64) - (local $u1 i64) - (local $v1 i64) - (local $l i64) - (local $t i64) - (local $w i64) - (local $w_frc i64) - (local $e1 i32) - (local $e2 i32) - (local $w_exp i32) - (local $u|41 i64) - (local $v|42 i64) - (local $u0|43 i64) - (local $v0|44 i64) - (local $u1|45 i64) - (local $v1|46 i64) - (local $l|47 i64) - (local $t|48 i64) - (local $w|49 i64) - (local $wp_frc i64) - (local $e1|51 i32) - (local $e2|52 i32) - (local $wp_exp i32) - (local $u|54 i64) - (local $v|55 i64) - (local $u0|56 i64) - (local $v0|57 i64) - (local $u1|58 i64) - (local $v1|59 i64) - (local $l|60 i64) - (local $t|61 i64) - (local $w|62 i64) - (local $wm_frc i64) - (local $delta i64) - (local $len i32) - local.get $value - f64.const 0 - f64.lt - local.set $sign - local.get $sign - if - local.get $value - f64.neg - local.set $value - local.get $buffer - i32.const 45 - i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $value - local.set $value|4 - local.get $buffer - local.set $buffer|5 - local.get $sign - local.set $sign|6 - local.get $isSingle - local.set $isSingle|7 - local.get $isSingle|7 - if - local.get $value|4 - f32.demote_f64 - i32.reinterpret_f32 - local.set $uv - local.get $uv - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $exp - local.get $uv - i32.const 8388607 - i32.and - local.set $sid - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - local.get $sid - i64.extend_i32_u - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + block $~lib/util/dtoa/writeExpNotation|inlined.0 (result i32) + local.get $buf|8 + local.set $buf|365 + local.get $start + local.set $start|366 + local.get $decExp|270 + local.set $decExp|367 + local.get $hasLastDigit + local.set $hasLastDigit|368 i32.const 1 - end - i32.const 127 - i32.const 23 - i32.add - i32.sub - local.set $exp - else - local.get $value|4 - i64.reinterpret_f64 - local.set $uv|12 - local.get $uv|12 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $exp - local.get $uv|12 - i64.const 4503599627370495 - i64.and - local.set $sid|13 - local.get $exp - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $sid|13 - i64.add - local.set $frc - local.get $exp - if (result i32) - local.get $exp - else + local.set $hasExtraDigit + i32.const 16 + local.set $bcdSize + local.get $buf|365 + local.get $hasExtraDigit i32.const 1 - end - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $exp - end - local.get $frc - local.set $f - local.get $exp - local.set $e - local.get $isSingle|7 - local.set $isSingle|16 - local.get $f - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $frc|17 - local.get $e - i32.const 1 - i32.sub - local.set $exp|18 - local.get $frc|17 - i64.clz - i32.wrap_i64 - local.set $off - local.get $frc|17 - local.get $off - i64.extend_i32_s - i64.shl - local.set $frc|17 - local.get $exp|18 - local.get $off - i32.sub - local.set $exp|18 - i32.const 1 - local.get $f - local.get $isSingle|16 - if (result i64) - i64.const 8388608 - else - i64.const 4503599627370496 - end - i64.eq - i32.add - local.set $m - local.get $frc|17 - global.set $~lib/util/number/_frc_plus - local.get $f - local.get $m - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $e - local.get $m - i32.sub - local.get $exp|18 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $exp|18 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $minExp - i32.const -61 - local.get $minExp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $dk - local.get $dk - i32.trunc_sat_f64_s - local.set $k - local.get $k - local.get $k - f64.convert_i32_s - local.get $dk - f64.ne - i32.add - local.set $k - local.get $k - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $index - i32.const 348 - local.get $index - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 2952 - local.get $index - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 3648 - local.get $index - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $frc - i64.clz - i32.wrap_i64 - local.set $off|25 - local.get $frc - local.get $off|25 - i64.extend_i32_s - i64.shl - local.set $frc - local.get $exp - local.get $off|25 - i32.sub - local.set $exp - global.get $~lib/util/number/_frc_pow - local.set $frc_pow - global.get $~lib/util/number/_exp_pow - local.set $exp_pow - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $frc - local.set $u - local.get $frc_pow - local.set $v - local.get $u - i64.const 4294967295 - i64.and - local.set $u0 - local.get $v - i64.const 4294967295 - i64.and - local.set $v0 - local.get $u - i64.const 32 - i64.shr_u - local.set $u1 - local.get $v - i64.const 32 - i64.shr_u - local.set $v1 - local.get $u0 - local.get $v0 - i64.mul - local.set $l - local.get $u1 - local.get $v0 - i64.mul - local.get $l - i64.const 32 - i64.shr_u - i64.add - local.set $t - local.get $u0 - local.get $v1 - i64.mul - local.get $t - i64.const 4294967295 - i64.and - i64.add - local.set $w - local.get $w - i64.const 2147483647 - i64.add - local.set $w - local.get $t - i64.const 32 - i64.shr_u - local.set $t - local.get $w - i64.const 32 - i64.shr_u - local.set $w - local.get $u1 - local.get $v1 - i64.mul - local.get $t - i64.add - local.get $w - i64.add - br $~lib/util/number/umul64f|inlined.0 - end - local.set $w_frc - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $exp - local.set $e1 - local.get $exp_pow - local.set $e2 - local.get $e1 - local.get $e2 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.0 - end - local.set $w_exp - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $u|41 - local.get $frc_pow - local.set $v|42 - local.get $u|41 - i64.const 4294967295 - i64.and - local.set $u0|43 - local.get $v|42 - i64.const 4294967295 - i64.and - local.set $v0|44 - local.get $u|41 - i64.const 32 - i64.shr_u - local.set $u1|45 - local.get $v|42 - i64.const 32 - i64.shr_u - local.set $v1|46 - local.get $u0|43 - local.get $v0|44 - i64.mul - local.set $l|47 - local.get $u1|45 - local.get $v0|44 - i64.mul - local.get $l|47 - i64.const 32 - i64.shr_u - i64.add - local.set $t|48 - local.get $u0|43 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.const 4294967295 - i64.and - i64.add - local.set $w|49 - local.get $w|49 - i64.const 2147483647 - i64.add - local.set $w|49 - local.get $t|48 - i64.const 32 - i64.shr_u - local.set $t|48 - local.get $w|49 - i64.const 32 - i64.shr_u - local.set $w|49 - local.get $u1|45 - local.get $v1|46 - i64.mul - local.get $t|48 - i64.add - local.get $w|49 - i64.add - br $~lib/util/number/umul64f|inlined.1 - end - i64.const 1 - i64.sub - local.set $wp_frc - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $e1|51 - local.get $exp_pow - local.set $e2|52 - local.get $e1|51 - local.get $e2|52 - i32.add - i32.const 64 - i32.add - br $~lib/util/number/umul64e|inlined.1 - end - local.set $wp_exp - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $u|54 - local.get $frc_pow - local.set $v|55 - local.get $u|54 - i64.const 4294967295 - i64.and - local.set $u0|56 - local.get $v|55 - i64.const 4294967295 - i64.and - local.set $v0|57 - local.get $u|54 - i64.const 32 - i64.shr_u - local.set $u1|58 - local.get $v|55 - i64.const 32 - i64.shr_u - local.set $v1|59 - local.get $u0|56 - local.get $v0|57 - i64.mul - local.set $l|60 - local.get $u1|58 - local.get $v0|57 - i64.mul - local.get $l|60 - i64.const 32 - i64.shr_u - i64.add - local.set $t|61 - local.get $u0|56 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.const 4294967295 - i64.and - i64.add - local.set $w|62 - local.get $w|62 - i64.const 2147483647 - i64.add - local.set $w|62 - local.get $t|61 - i64.const 32 - i64.shr_u - local.set $t|61 - local.get $w|62 - i64.const 32 - i64.shr_u - local.set $w|62 - local.get $u1|58 - local.get $v1|59 - i64.mul - local.get $t|61 - i64.add - local.get $w|62 - i64.add - br $~lib/util/number/umul64f|inlined.2 + i32.shl + i32.add + local.set $buf|365 + local.get $buf|365 + local.set $p|371 + global.get $~lib/util/dtoa/gDigHi + local.set $ascii|372 + i32.const 0 + local.set $off|373 + local.get $p|371 + local.get $off|373 + i32.add + local.set $base|374 + i32.const 0 + drop + local.get $ascii|372 + i64.const 4294967295 + i64.and + local.set $lo|375 + local.get $ascii|372 + i64.const 32 + i64.shr_u + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|376 + local.get $lo|375 + local.get $lo|375 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|375 + local.get $hi|376 + local.get $hi|376 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|376 + local.get $base|374 + local.get $lo|375 + i64.store + local.get $base|374 + local.get $hi|376 + i64.store offset=8 + local.get $bcdSize + i32.const 16 + i32.eq + if + local.get $buf|365 + local.set $p|377 + global.get $~lib/util/dtoa/gDigLo + local.set $ascii|378 + i32.const 16 + local.set $off|379 + local.get $p|377 + local.get $off|379 + i32.add + local.set $base|380 + i32.const 0 + drop + local.get $ascii|378 + i64.const 4294967295 + i64.and + local.set $lo|381 + local.get $ascii|378 + i64.const 32 + i64.shr_u + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 16 + i64.shl + i64.or + i64.const 281470681808895 + i64.and + local.set $hi|382 + local.get $lo|381 + local.get $lo|381 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $lo|381 + local.get $hi|382 + local.get $hi|382 + i64.const 8 + i64.shl + i64.or + i64.const 71777214294589695 + i64.and + local.set $hi|382 + local.get $base|380 + local.get $lo|381 + i64.store + local.get $base|380 + local.get $hi|382 + i64.store offset=8 + end + local.get $buf|365 + local.get $bcdSize + i32.const 1 + i32.shl + i32.add + i32.const 48 + global.get $~lib/util/dtoa/gLastDigit + i32.add + i32.store16 + local.get $buf|365 + local.get $bcdSize + local.get $hasLastDigit|368 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $buf|365 + local.get $hasLastDigit|368 + i32.eqz + if + local.get $buf|365 + block $~lib/util/dtoa/packedTrailingZeros16|inlined.1 (result i32) + global.get $~lib/util/dtoa/gDigHi + local.set $high|383 + global.get $~lib/util/dtoa/gDigLo + local.set $low|384 + local.get $low|384 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.set $count|385 + local.get $count|385 + i32.const 8 + i32.eq + if + local.get $count|385 + local.get $high|383 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $count|385 + end + local.get $count|385 + br $~lib/util/dtoa/packedTrailingZeros16|inlined.1 + end + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + end + local.get $start|366 + i32.load16_u offset=2 + local.set $lead + local.get $start|366 + local.get $lead + i32.store16 + local.get $start|366 + i32.const 46 + i32.store16 offset=2 + local.get $buf|365 + local.get $buf|365 + i32.const 2 + i32.sub + local.get $start|366 + i32.const 2 + i32.add + i32.eq + i32.const 1 + i32.shl + i32.sub + local.set $buf|365 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $buf|365 + local.set $buf|387 + local.get $decExp|367 + local.set $decExp|388 + local.get $decExp|388 + i32.const 31 + i32.shr_s + local.set $m + local.get $buf|387 + i32.const 101 + i32.store16 + local.get $buf|387 + i32.const 43 + local.get $m + i32.const 2 + i32.and + i32.add + i32.store16 offset=2 + local.get $buf|387 + i32.const 4 + i32.add + local.set $buf|387 + local.get $decExp|388 + local.get $m + i32.xor + local.get $m + i32.sub + local.set $e + local.get $e + i32.const 100 + i32.ge_s + if + local.get $e + global.get $~lib/util/dtoa/DIV100_SIG + i32.wrap_i64 + i32.mul + i32.const 19 + i32.shr_u + local.set $d + local.get $buf|387 + i32.const 48 + local.get $d + i32.add + i32.store16 + local.get $buf|387 + i32.const 1020 + local.get $e + local.get $d + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=2 + local.get $buf|387 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $e + i32.const 10 + i32.ge_s + if + local.get $buf|387 + i32.const 1020 + local.get $e + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $buf|387 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $buf|387 + i32.const 48 + local.get $e + i32.add + i32.store16 + local.get $buf|387 + i32.const 2 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + br $~lib/util/dtoa/writeExpNotation|inlined.0 + end + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - i64.const 1 - i64.add - local.set $wm_frc - local.get $wp_frc - local.get $wm_frc - i64.sub - local.set $delta - local.get $buffer|5 - local.get $w_frc - local.get $w_exp - local.get $wp_frc - local.get $wp_exp - local.get $delta - local.get $sign|6 - call $~lib/util/number/genDigits - br $~lib/util/number/grisu2|inlined.0 + br $~lib/util/dtoa/formatDouble|inlined.0 end - local.set $len local.get $buffer - local.get $sign - i32.const 1 - i32.shl - i32.add - local.get $len - local.get $sign i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $len - local.get $len - local.get $sign - i32.add + i32.const 1 + i32.shr_u return ) (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) @@ -4516,8 +7774,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 37680 - i32.const 37728 + i32.const 37904 + i32.const 37952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5272,7 +8530,7 @@ local.get $4 i32.store local.get $4 - i32.const 3888 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if @@ -5305,7 +8563,7 @@ local.get $4 i32.store local.get $4 - i32.const 3920 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if @@ -5328,7 +8586,7 @@ call $~lib/number/F64#toString local.tee $3 i32.store offset=16 - i32.const 3952 + i32.const 4176 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5342,7 +8600,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 3952 + i32.const 4176 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5356,7 +8614,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 3952 + i32.const 4176 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5369,7 +8627,7 @@ local.get $4 i32.store local.get $4 - i32.const 4000 + i32.const 4224 call $~lib/string/String.__eq i32.eqz if @@ -5414,7 +8672,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4048 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if @@ -5442,7 +8700,7 @@ call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4304 local.get $a i32.const 10 call $~lib/number/I32#toString @@ -5457,7 +8715,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4112 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if @@ -5468,7 +8726,7 @@ call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4304 local.get $b local.set $2 global.get $~lib/memory/__stack_pointer @@ -5481,7 +8739,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4144 + i32.const 4368 call $~lib/string/String.__eq i32.eqz if @@ -5500,14 +8758,14 @@ local.get $2 i32.store offset=8 local.get $2 - i32.const 4176 + i32.const 4400 call $~lib/string/String#concat local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 4208 + i32.const 4432 call $~lib/string/String.__eq i32.eqz if @@ -5524,14 +8782,14 @@ local.get $2 i32.store offset=8 local.get $2 - i32.const 4176 + i32.const 4400 call $~lib/string/String#concat local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 4240 + i32.const 4464 call $~lib/string/String.__eq i32.eqz if @@ -5562,7 +8820,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4272 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if @@ -5655,7 +8913,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 4304 + i32.const 4528 local.get $this local.set $1 global.get $~lib/memory/__stack_pointer @@ -5718,7 +8976,7 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4336 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if @@ -5759,7 +9017,7 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4368 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if @@ -5790,7 +9048,7 @@ call $templateliteral/Ref#toString local.tee $3 i32.store offset=28 - i32.const 4416 + i32.const 4640 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5804,7 +9062,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4416 + i32.const 4640 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5818,7 +9076,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4416 + i32.const 4640 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5831,7 +9089,7 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4464 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if @@ -5896,11 +9154,11 @@ local.get $5 call $templateliteral/Ref#toString else - i32.const 4640 + i32.const 4864 end local.tee $3 i32.store offset=20 - i32.const 4592 + i32.const 4816 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5914,7 +9172,7 @@ i32.store offset=24 local.get $5 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4592 + i32.const 4816 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5928,7 +9186,7 @@ i32.store offset=24 local.get $5 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4592 + i32.const 4816 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5941,7 +9199,7 @@ local.get $5 i32.store offset=4 local.get $5 - i32.const 4672 + i32.const 4896 call $~lib/string/String.__eq i32.eqz if @@ -6076,7 +9334,7 @@ call $templateliteral/RecursiveObject#toString local.tee $3 i32.store offset=12 - i32.const 4800 + i32.const 5024 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6090,7 +9348,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4800 + i32.const 5024 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6104,7 +9362,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4800 + i32.const 5024 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6136,7 +9394,7 @@ memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 4736 + i32.const 4960 i32.const 0 call $templateliteral/RecursiveObject#constructor local.tee $c @@ -6177,7 +9435,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4832 + i32.const 5056 call $~lib/string/String.__eq i32.eqz if @@ -6228,7 +9486,7 @@ if i32.const 816 i32.const 944 - i32.const 373 + i32.const 321 i32.const 5 call $~lib/builtins/abort unreachable @@ -6376,79 +9634,296 @@ return ) (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) + (local $exactIntegerRange i32) + (local $bits i64) + (local $integer i32) + (local $negative i32) + (local $magnitude i32) + (local $digits i32) (local $result i32) - (local $5 i32) + (local $out i32) + (local $high i32) + (local $low i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $len i32) + (local $size i32) + (local $result|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + i64.const 0 + i64.store + local.get $value + f64.const 0 + f64.eq + if + i32.const 2752 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + i32.eqz + if local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq + local.get $value + f64.ne if - i32.const 2752 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 2784 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $value|1 - local.get $value|1 - f64.sub + i32.const 2816 + i32.const 2864 + local.get $value f64.const 0 + f64.lt + select + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + i32.const 0 + local.set $exactIntegerRange + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + local.get $value + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $bits + local.get $bits + i64.const 4607182418800017408 + i64.ge_u + if (result i32) + local.get $bits + i64.const 4741671816366391296 + i64.le_u + else + i32.const 0 + end + local.set $exactIntegerRange + local.get $exactIntegerRange + if + local.get $value + i32.trunc_sat_f64_s + local.set $integer + local.get $value + local.get $integer + f64.convert_i32_s f64.eq - i32.eqz if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $integer + i32.const 0 + i32.lt_s + local.set $negative + local.get $negative + if (result i32) + i32.const 0 + local.get $integer + i32.sub + else + local.get $integer + end + local.set $magnitude + local.get $magnitude + call $~lib/util/number/decimalCount32 + local.set $digits + global.get $~lib/memory/__stack_pointer + local.get $digits + local.get $negative + i32.add + i32.const 2 + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + local.set $out + local.get $negative if - i32.const 2784 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + i32.const 45 + i32.store16 + local.get $out + i32.const 2 + i32.add + local.set $out + end + local.get $magnitude + i32.const 10 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $magnitude + i32.add + i32.store16 + else + local.get $magnitude + i32.const 100 + i32.lt_u + if + local.get $out + i32.const 1020 + local.get $magnitude + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $magnitude + i32.const 10000 + i32.lt_u + if + local.get $magnitude + i32.const 100 + i32.div_u + local.set $high + local.get $magnitude + local.get $high + i32.const 100 + i32.mul + i32.sub + local.set $low + local.get $magnitude + i32.const 1000 + i32.lt_u + if + local.get $out + i32.const 48 + local.get $high + i32.add + i32.store16 + local.get $out + i32.const 2 + i32.add + i32.const 1020 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + else + local.get $out + i32.const 1020 + local.get $high + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $out + i32.const 4 + i32.add + i32.const 1020 + local.get $low + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + end + else + local.get $out + local.set $buffer + local.get $magnitude + local.set $num + local.get $digits + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + end + end end - i32.const 2816 - i32.const 2864 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $out + local.get $digits + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - i32.const 2896 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 2896 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 end - local.set $5 - global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 4 + i32.eq + drop + i32.const 2896 + local.get $value + call $~lib/util/dtoa/dtoa_buffered + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result|16 + i32.store offset=4 + local.get $result|16 + i32.const 2896 + local.get $size + memory.copy + local.get $result|16 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $17 return ) ) diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index e99c91217f..b967240efc 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -7,10 +7,9 @@ (type $5 (func (param f64) (result i32))) (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $11 (func (result i32))) + (type $8 (func (param i32) (result i64))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -22,13 +21,15 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38672)) + (global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gSig (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gExp (mut i32) (i32.const 0)) + (global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0)) + (global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38896)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") @@ -86,58 +87,59 @@ (data $30.1 (i32.const 3832) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data $31 (i32.const 3868) ",") (data $31.1 (i32.const 3880) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $33 (i32.const 3976) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\7f\"t*U3\f1\ca\ba\0f)2\d7\96@\adGy\17|\a9t\088\c7\b1\d8J\d9\bc\"x\ae\81R7\18") + (data $35 (i32.const 4840) "?6N\n@\18\00\00\00d\00\00@\00 $\00\00\00\00\00\00\00\0c\80\13\c8\82\1f\e0L^\0f\f60\d7\1b\00\00\00\00\00\00\00\fc\ff\f7\cd\d8\01\82n\d1?\cd@\01%d\db\r\r\00\00\00$\04\14@8qS\b4\1dx\11") + (data $36 (i32.const 4926) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $37 (i32.const 5116) "\1c") + (data $37.1 (i32.const 5128) "\02\00\00\00\06\00\00\001\00.\000") + (data $38 (i32.const 5148) "\1c") + (data $38.1 (i32.const 5160) "\02\00\00\00\0c\00\00\001\00.\000\002\00.\000") + (data $39 (i32.const 5180) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") + (data $40 (i32.const 5228) ",") + (data $40.1 (i32.const 5240) "\02\00\00\00\1c\00\00\00(\00A\00=\001\00.\000\00,\00 \00B\00=\002\00.\000\00)") + (data $41 (i32.const 5276) "\1c") + (data $41.1 (i32.const 5288) "\02\00\00\00\02\00\00\002") + (data $42 (i32.const 5308) "\1c") + (data $42.1 (i32.const 5320) "\02\00\00\00\08\00\00\00p\00r\00e\00f") + (data $43 (i32.const 5340) "\1c") + (data $43.1 (i32.const 5352) "\02\00\00\00\n\00\00\00p\00r\00e\00f\002") + (data $44 (i32.const 5372) "\1c") + (data $44.1 (i32.const 5384) "\02\00\00\00\n\00\00\00p\00r\00e\00f\00b") + (data $45 (i32.const 5404) "\1c") + (data $45.1 (i32.const 5416) "\02\00\00\00\08\00\00\00s\00u\00f\00f") + (data $46 (i32.const 5436) "\1c") + (data $46.1 (i32.const 5448) "\02\00\00\00\n\00\00\002\00s\00u\00f\00f") + (data $47 (i32.const 5468) "\1c") + (data $47.1 (i32.const 5480) "\02\00\00\00\n\00\00\00b\00s\00u\00f\00f") + (data $48 (i32.const 5500) "\1c") + (data $48.1 (i32.const 5512) "\02\00\00\00\04\00\00\002\00b") + (data $49 (i32.const 5532) "\1c") + (data $49.1 (i32.const 5544) "\02\00\00\00\08\00\00\00r\00e\00f\00#") + (data $50 (i32.const 5564) "\1c") + (data $50.1 (i32.const 5576) "\02\00\00\00\n\00\00\00r\00e\00f\00#\001") + (data $51 (i32.const 5596) ",") + (data $51.1 (i32.const 5608) "\02\00\00\00\14\00\00\00r\00e\00f\00#\001\00r\00e\00f\00#\002") + (data $52 (i32.const 5644) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") + (data $53 (i32.const 5692) "<") + (data $53.1 (i32.const 5704) "\02\00\00\00$\00\00\00(\00A\00=\00r\00e\00f\00#\001\00,\00 \00B\00=\00r\00e\00f\00#\002\00)") + (data $54 (i32.const 5756) "\1c") + (data $54.1 (i32.const 5768) "\02\00\00\00\06\00\00\00c\00:\00 ") + (data $55 (i32.const 5788) "\1c") + (data $55.1 (i32.const 5800) "\02\00\00\00\n\00\00\00;\00 \00d\00:\00 ") + (data $56 (i32.const 5820) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\90\16\00\00\00\00\00\00\b0\16") + (data $57 (i32.const 5868) "\1c") + (data $57.1 (i32.const 5880) "\02\00\00\00\08\00\00\00n\00u\00l\00l") + (data $58 (i32.const 5900) "<") + (data $58.1 (i32.const 5912) "\02\00\00\00\"\00\00\00c\00:\00 \00r\00e\00f\00#\003\00;\00 \00d\00:\00 \00n\00u\00l\00l") + (data $59 (i32.const 5964) "\1c") + (data $59.1 (i32.const 5976) "\02\00\00\00\02\00\00\00c") + (data $60 (i32.const 5996) "\1c") + (data $60.1 (i32.const 6008) "\02\00\00\00\02\00\00\00:") + (data $61 (i32.const 6028) "\1c\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\00\00\00\00\80\17") + (data $62 (i32.const 6060) "\1c") + (data $62.1 (i32.const 6072) "\02\00\00\00\n\00\00\00a\00:\00b\00:\00c") + (data $63 (i32.const 6096) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\04A\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) @@ -150,11 +152,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -253,7 +255,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$91 + block $__inlined_func$~lib/util/string/compareImpl$90 loop $while-continue|1 local.get $0 local.tee $3 @@ -273,7 +275,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$91 + br_if $__inlined_func$~lib/util/string/compareImpl$90 local.get $2 i32.const 2 i32.add @@ -370,11 +372,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -446,11 +448,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -581,47 +583,6 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - local.get $0 - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -936,6 +897,47 @@ memory.fill local.get $1 ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.lt_s + if + i32.const 38928 + i32.const 38976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $templateliteral/Ref#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -943,7 +945,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -964,19 +966,19 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 5328 + i32.const 5552 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 5328 + i32.const 5552 local.get $0 call $~lib/string/String#concat global.get $~lib/memory/__stack_pointer @@ -989,304 +991,582 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/number/F64#toString (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 3776 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 + i64.const 0 + i64.store + local.get $0 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3776 + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if local.get $0 local.get $0 - f64.sub - f64.const 0 f64.ne if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 3808 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 3840 - i32.const 3888 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 + return end global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3840 + i32.const 3888 local.get $0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 3920 - local.get $2 - memory.copy + f64.const 0 + f64.lt + select + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.const 4741671816366391296 + i64.le_u + local.get $4 + i64.const 4607182418800017408 + i64.ge_u + i32.and + if + local.get $0 + local.get $0 + i32.trunc_sat_f64_s + local.tee $1 + f64.convert_i32_s + f64.eq if + i32.const 0 local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 i32.sub + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s local.tee $2 - i32.const 1 - i32.shl - i32.add + select + local.tee $6 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 100 + i32.lt_u + if (result i32) + local.get $6 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $6 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $6 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $6 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $6 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $6 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2044 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u i32.const 2 - i32.shl - i32.const 2044 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2044 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2044 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if (result i32) + local.get $1 + i32.const 45 + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $1 + end + local.set $2 + local.get $6 + i32.const 10 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 48 + i32.add + i32.store16 + else + local.get $6 + i32.const 100 + i32.lt_u + if + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + else + local.get $6 + i32.const 10000 + i32.lt_u + if + local.get $6 + local.get $6 + i32.const 100 + i32.div_u + local.tee $7 + i32.const 100 + i32.mul + i32.sub + local.set $5 + local.get $6 + i32.const 1000 + i32.lt_u + if + local.get $2 + local.get $7 + i32.const 48 + i32.add + i32.store16 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store offset=2 + else + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store offset=4 + end + else + local.get $2 + local.get $6 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + end + end + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/dtoa/dtoa_buffered + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 3920 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/util/dtoa/computePow10Compact (param $0 i32) (result i64) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1552 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + local.get $0 + i32.const 10 + i32.add + local.tee $2 + i32.const 293 + i32.mul + i32.const 13 + i32.shr_u local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 + i32.const 4 + i32.shl + i32.const 4472 + i32.add local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end + i64.load + local.set $9 + local.get $4 + i64.load offset=8 + local.tee $1 + i64.const 4294967295 + i64.and + local.set $10 local.get $1 - local.get $0 + i64.const 32 + i64.shr_u + local.tee $6 + i32.const 0 local.get $2 - i32.const 4 - i32.shl local.get $3 - i32.add - i32.const 2 + i32.const 28 + i32.mul + i32.sub + i32.sub + i32.const 3 i32.shl + i32.const 4264 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i64.load + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + local.get $1 + local.get $11 + i64.mul + local.set $8 + local.get $12 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + local.tee $5 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $6 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + local.get $9 + local.get $11 + i64.mul + i64.add + local.tee $7 + local.get $6 + i64.lt_u + i64.extend_i32_u + local.get $1 + local.get $13 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i64) + local.get $7 + else + local.get $1 + i64.const 1 + i64.shl + local.get $7 + i64.const 63 + i64.shr_u + i64.or + local.set $1 + local.get $7 + i64.const 1 + i64.shl + local.get $8 + i64.const 63 + i64.shr_u + i64.or + end + local.get $0 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.const 4840 + i32.add + i64.load32_u + local.get $0 + i32.const 31 + i32.and + i64.extend_i32_s + i64.shr_u + i64.const 1 + i64.and + i64.sub + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 local.get $2 i32.const 2 i32.shl @@ -1585,7 +1865,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + block $__inlined_func$~lib/rt/itcms/Object#unlink$170 local.get $0 i32.load offset=4 i32.const -4 @@ -1597,7 +1877,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 38672 + i32.const 38896 i32.lt_u i32.and i32.eqz @@ -1609,7 +1889,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 + br $__inlined_func$~lib/rt/itcms/Object#unlink$170 end local.get $0 i32.load offset=8 @@ -1646,7 +1926,7 @@ i32.const 1 else local.get $1 - i32.const 5872 + i32.const 6096 i32.load i32.gt_u if @@ -1660,7 +1940,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 5876 + i32.const 6100 i32.add i32.load i32.const 32 @@ -1769,11 +2049,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1807,11 +2087,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1861,30 +2141,134 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 10000 + i32.ge_u if local.get $1 - i32.const 1 - i32.const 27 + i32.const 10000 + i32.rem_u + local.set $3 local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 i32.sub local.set $1 end @@ -2009,10 +2393,10 @@ if unreachable end - i32.const 38672 + i32.const 38896 i32.const 0 i32.store - i32.const 40240 + i32.const 40464 i32.const 0 i32.store loop $for-loop|0 @@ -2023,7 +2407,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 38672 + i32.const 38896 i32.add i32.const 0 i32.store offset=4 @@ -2041,7 +2425,7 @@ i32.add i32.const 2 i32.shl - i32.const 38672 + i32.const 38896 i32.add i32.const 0 i32.store offset=96 @@ -2059,14 +2443,14 @@ br $for-loop|0 end end - i32.const 38672 - i32.const 40244 + i32.const 38896 + i32.const 40468 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 38672 + i32.const 38896 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) @@ -2239,11 +2623,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2292,35 +2676,35 @@ local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 6048 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - i32.const 5824 + i32.const 6048 local.get $0 i32.store - i32.const 5824 + i32.const 6048 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 6048 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - i32.const 5832 + i32.const 6056 local.get $1 i32.store - i32.const 5824 + i32.const 6048 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 6048 i32.store - i32.const 5824 + i32.const 6048 call $~lib/staticarray/StaticArray<~lib/string/String>#join global.get $~lib/memory/__stack_pointer i32.const 20 @@ -2347,11 +2731,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2552,1034 +2936,2124 @@ global.set $~lib/memory/__stack_pointer local.get $5 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/dtoa/dtoa_buffered (param $0 f64) (result i32) + (local $1 i64) + (local $2 i64) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 1 + i64.shl + i64.const 53 + i64.shr_u + i32.wrap_i64 + local.set $5 local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + i64.const 4503599627370495 + i64.and + local.set $4 local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $3 + block $~lib/util/dtoa/formatDecodedDouble|inlined.0 (result i32) + local.get $5 + i32.const 1 + i32.sub + i32.const 2046 + i32.lt_u + local.tee $6 + i32.eqz + if + local.get $5 if - local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.get $4 + i64.const 0 + i64.ne + if + i32.const 3920 + i32.const 78 + i32.store16 + i32.const 3922 + i32.const 97 + i32.store16 + i32.const 3924 + i32.const 78 + i32.store16 + i32.const 3926 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $3 + if (result i32) + i32.const 3920 + i32.const 45 + i32.store16 + i32.const 3922 + else + i32.const 3920 + end + local.tee $3 + i64.const 29555310648492105 + i64.store + local.get $3 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 16 i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + local.get $4 + i64.eqz + if + i32.const 3920 i32.const 48 i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 3922 + i32.const 46 + i32.store16 + i32.const 3924 + i32.const 48 + i32.store16 + i32.const 3926 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 + i32.const 3920 + i32.const 45 i32.store16 - local.get $1 - i32.const 1 - i32.add + i32.const 3922 else - local.get $3 + i32.const 3920 + end + local.set $3 + local.get $6 + if + local.get $4 + i64.const 4503599627370496 + i64.or + local.set $1 + local.get $5 + i32.const 1075 + i32.sub + local.tee $7 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 + i32.lt_s + if (result i64) + i32.const 0 + local.get $7 + i32.sub + local.tee $7 + i32.const 52 + i32.le_s + if (result i64) + local.get $1 + local.get $7 + i64.extend_i32_s + local.tee $2 + i64.shr_u + i64.const 0 + i64.const 1 + local.get $2 + i64.shl + i64.const 1 + i64.sub + local.get $1 + i64.and + i64.eqz + select + else + i64.const 0 + end + else + local.get $7 + i32.const 11 + i32.lt_s + if (result i64) + local.get $1 + local.get $7 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 10000000000000000 + i64.ge_u + if (result i64) + i64.const 0 + else + local.get $1 + end + else + i64.const 0 + end + end + local.tee $2 + i64.const 0 + i64.ne + if local.get $3 + local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + block $~lib/util/dtoa/decimalLen15|inlined.0 (result i32) + local.get $2 + i64.const 100000000 + i64.lt_u + if + local.get $2 + i64.const 10000 + i64.lt_u + if + local.get $2 + i64.const 10 + i64.ge_u + i32.const 1 + i32.add + local.get $2 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 1000 + i64.ge_u + i32.const 3 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $2 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 1000000000000 + i64.lt_u + if + local.get $2 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $2 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.0 + end + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.0 + drop + i32.const 15 + end + else + i32.const 16 + end + local.tee $6 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.tee $5 + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 100 + i64.ge_u + if + local.get $5 + i32.const 4 + i32.sub + local.get $2 + local.get $2 + i64.const 100 + i64.div_u + local.tee $2 + i64.const 100 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + end + local.get $2 + i64.const 10 + i64.ge_u + if + local.get $3 + local.get $2 + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $2 + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 + end + end + local.get $6 + if + block $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + local.get $5 + i32.const 1075 + i32.sub + local.set $6 + local.get $4 + i64.eqz + if + local.get $6 + i32.const -1 + local.get $6 + i32.const 315653 + i32.mul + i32.const 131072 + i32.sub + i32.const 20 + i32.shr_s + local.tee $5 + i32.sub + local.tee $6 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s + i32.add + local.set $7 + block $~lib/util/dtoa/computePow10|inlined.0 + local.get $6 + i32.const 293 + i32.add + local.tee $6 + i32.const 320 + i32.le_s + local.get $6 + i32.const 285 + i32.ge_s + i32.and + if + i32.const 337 + local.get $6 + i32.sub + local.tee $6 + i32.const 3 + i32.shl + i32.const 3912 + i32.add + i64.load + local.set $1 + local.get $6 + i32.const 44 + i32.le_s + if + local.get $1 + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $6 + i32.const 3 + i32.shl + i32.const 4048 + i32.add + i64.load + drop + local.get $1 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.0 + end + local.get $6 + call $~lib/util/dtoa/computePow10Compact + drop + end + global.get $~lib/util/dtoa/gPow10Hi + local.tee $1 + i64.const 11 + local.get $7 + i64.extend_i32_s + local.tee $2 + i64.sub + i64.shr_u + local.set $4 + local.get $1 + local.get $2 + i64.const 53 + i64.add + local.tee $8 + i64.shl + local.tee $9 + local.get $8 + i64.shr_u + i64.const 5 + i64.mul + i64.const 1 + i64.const 9 + local.get $2 + i64.sub + i64.shl + i64.add + i64.const 10 + local.get $2 + i64.sub + i64.shr_u + local.set $2 + i64.const 10 + i64.const 2 + local.get $1 + i32.const 0 + local.get $7 + i32.sub + i64.extend_i32_s + i64.shr_u + local.tee $1 + i64.const 55 + i64.shr_u + i64.const 5 + i64.mul + local.get $9 + i64.const 54 + i64.shr_u + i64.const 5 + i64.mul + local.tee $8 + i64.const 511 + i64.and + i64.lt_u + if (result i64) + local.get $8 + i64.const 9 + i64.shr_u + i64.const 1 + i64.add + else + local.get $2 + end + local.get $9 + i64.const 4611686018427387904 + i64.eq + select + i64.const 0 + local.get $1 + i64.const 1 + i64.shr_u + local.get $9 + i64.le_u + select + local.get $1 + i64.const -1 + local.get $9 + i64.sub + i64.gt_u + select + local.tee $1 + i64.const 10 + i64.eq + if + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $1 + i64.eqz + if + local.get $4 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $1 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + local.get $5 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/toDecimalDoubleNormal|inlined.0 + end + local.get $4 + i64.const 4503599627370496 + i64.or + local.set $1 + local.get $6 + i32.const -1 + local.get $5 + i32.const 1075 i32.sub - local.tee $3 - i32.const 1 - i32.shl + i32.const 78913 + i32.mul + i32.const 18 + i32.shr_s + local.tee $5 + i32.sub + local.tee $6 + i32.const 217707 + i32.mul + i32.const 16 + i32.shr_s i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s + local.tee $7 + i32.const 7 + i32.add + local.set $10 + block $~lib/util/dtoa/computePow10|inlined.1 + local.get $6 + i32.const 293 + i32.add + local.tee $11 + i32.const 320 + i32.le_s + local.get $11 + i32.const 285 + i32.ge_s + i32.and if - local.get $0 - local.get $2 - i32.const 1 + i32.const 337 + local.get $11 + i32.sub + local.tee $11 + i32.const 3 i32.shl + i32.const 3912 i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 + i64.load + local.set $4 + local.get $11 + i32.const 44 + i32.le_s + if + local.get $4 + global.set $~lib/util/dtoa/gPow10Hi + i64.const 0 + local.set $2 + br $~lib/util/dtoa/computePow10|inlined.1 + end + local.get $11 + i32.const 3 + i32.shl + i32.const 4048 i32.add + i64.load local.set $2 - br $for-loop|1 + local.get $4 + i64.const 1 + i64.sub + global.set $~lib/util/dtoa/gPow10Hi + br $~lib/util/dtoa/computePow10|inlined.1 end + local.get $11 + call $~lib/util/dtoa/computePow10Compact + local.set $2 end local.get $1 - local.get $3 - i32.add - else + local.get $10 + i64.extend_i32_s + i64.shl + local.tee $4 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $8 + i64.mul + local.tee $9 + local.get $2 + local.get $6 + i32.const 0 + i32.lt_s + i64.extend_i32_u + i64.add + local.tee $2 + i64.const 32 + i64.shr_u + local.tee $12 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $13 + i64.mul + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $12 + i64.mul + local.get $4 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.set $2 + local.get $4 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $12 + i64.mul + local.get $4 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $2 + local.get $9 + i64.lt_u + i64.extend_i32_u + local.get $12 + local.get $13 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $13 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $4 + i64.const 58 + i64.shl + local.get $2 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.set $9 + local.get $4 + i64.const 6 + i64.shr_u + local.set $4 + i64.const 10 + local.get $9 + local.get $9 + i64.const -9223372036854775802 + i64.const 0 + local.get $2 + i64.const 4611686018427387904 + i64.ne + select + i64.add + i64.gt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + local.get $2 + i64.const 1 local.get $1 - i32.const 1 - i32.eq + i64.const 1 + i64.and + i64.sub + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i64.extend_i32_s + i64.shr_u + i64.add + local.tee $1 + i64.ge_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $1 + i64.lt_u + select + local.tee $1 + i64.const 10 + i64.eq if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 + local.get $4 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig i32.const 0 - i32.lt_s - local.tee $3 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $1 + i64.eqz if + local.get $4 + global.set $~lib/util/dtoa/gSig i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + local.get $4 + global.set $~lib/util/dtoa/gSig + local.get $1 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 + end + local.get $5 + global.set $~lib/util/dtoa/gExp + end + else + i32.const 616 + call $~lib/util/dtoa/computePow10Compact + local.set $1 + local.get $4 + i64.const 5 + i64.shl + local.tee $8 + global.get $~lib/util/dtoa/gPow10Hi + local.tee $9 + i64.mul + local.set $12 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + local.get $2 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + local.get $2 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $2 + local.get $9 + i64.const 4294967295 + i64.and + local.tee $16 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $2 + i64.const 10 + local.get $12 + local.get $12 + local.get $13 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $8 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $8 + local.get $14 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $12 + i64.gt_u + i64.extend_i32_u + local.get $1 + local.get $8 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u + i64.add + local.get $8 + local.get $16 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.add + local.tee $1 + i64.const 58 + i64.shl + local.get $12 + i64.const 6 + i64.shr_u + i64.or + local.tee $2 + i64.const 10 + i64.mul + local.tee $8 + local.get $8 + i64.const 9223372036854775802 + i64.sub + i64.gt_u + i64.extend_i32_u + local.get $2 + i64.const 32 + i64.shr_u + i64.const 10 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.const 10 + i64.mul + i64.const 32 + i64.shr_u + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 0 + local.get $2 + i64.const 1 + local.get $4 + i64.const 1 + i64.and + i64.sub + local.get $9 + i64.const 2 + i64.shr_u + i64.add + local.tee $4 + i64.ge_u + select + i64.const -1 + local.get $2 + i64.sub + local.get $4 + i64.lt_u + select + local.set $2 + local.get $1 + i64.const 6 + i64.shr_u + local.set $1 + local.get $2 + i64.const 10 + i64.eq + if + local.get $1 + i64.const 1 + i64.add + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit + else + local.get $2 + i64.eqz + if + local.get $1 + global.set $~lib/util/dtoa/gSig + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 + global.set $~lib/util/dtoa/gSig local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 + i32.wrap_i64 + global.set $~lib/util/dtoa/gLastDigit + i32.const 1 + global.set $~lib/util/dtoa/gHasLastDigit + end + end + i32.const -324 + global.set $~lib/util/dtoa/gExp + end + global.get $~lib/util/dtoa/gSig + i64.const 1000000000000000 + i64.lt_u + if + block $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + global.get $~lib/util/dtoa/gSig + i64.const 10 + i64.mul + global.get $~lib/util/dtoa/gLastDigit + i64.extend_i32_s + i64.const 0 + global.get $~lib/util/dtoa/gHasLastDigit + select + i64.add + local.tee $1 + i64.const 1000000000000000 + i64.ge_u + if + local.get $1 + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp i32.const 1 i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 + global.set $~lib/util/dtoa/gExp + br $~lib/util/dtoa/normalizeDoubleShortest|inlined.0 + end + i32.const 16 + block $~lib/util/dtoa/decimalLen15|inlined.1 (result i32) + local.get $1 + i64.const 100000000 + i64.lt_u if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u + local.get $1 + i64.const 10000 + i64.lt_u + if + local.get $1 + i64.const 10 + i64.ge_u i32.const 1 i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u + local.get $1 + i64.const 100 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 1000 + i64.ge_u i32.const 3 i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 end + local.get $1 + i64.const 100000 + i64.ge_u + i32.const 5 + i32.add + local.get $1 + i64.const 1000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 10000000 + i64.ge_u + i32.const 7 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 + end + local.get $1 + i64.const 1000000000000 + i64.lt_u + if + local.get $1 + i64.const 1000000000 + i64.ge_u + i32.const 9 + i32.add + local.get $1 + i64.const 10000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 11 + i32.add + br $~lib/util/dtoa/decimalLen15|inlined.1 end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.const 13 i32.add - local.set $1 + local.get $1 + i64.const 100000000000000 + i64.lt_u + br_if $~lib/util/dtoa/decimalLen15|inlined.1 + drop + i32.const 15 end + i32.sub + local.tee $5 + i32.const 3 + i32.shl + i32.const 4920 + i32.add + f64.load + i64.trunc_sat_f64_u local.get $1 - i32.const 2 + i64.mul + global.set $~lib/util/dtoa/gSig + global.get $~lib/util/dtoa/gExp + local.get $5 + i32.const 1 i32.add + i32.sub + global.set $~lib/util/dtoa/gExp end + i32.const 0 + global.set $~lib/util/dtoa/gLastDigit + i32.const 0 + global.set $~lib/util/dtoa/gHasLastDigit end - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) + global.get $~lib/util/dtoa/gHasLastDigit + local.set $6 + global.get $~lib/util/dtoa/gSig + local.tee $1 + i64.const 100000000 + i64.div_u + local.tee $2 local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + i64.add + local.tee $4 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + local.get $4 + i64.add + local.tee $4 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + local.get $4 + i64.add + local.tee $4 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $4 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $4 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $4 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + global.get $~lib/util/dtoa/gBcdValue + local.get $1 local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u + i64.const 100000000 + i64.mul + i64.sub + local.tee $1 + local.get $1 + i64.const 109951163 + i64.mul + i64.const 40 + i64.shr_u + i64.const 4294957296 + i64.mul + i64.add + local.tee $1 + i64.const 5243 + i64.mul + i64.const 19 + i64.shr_u + i64.const 545460846719 + i64.and + i64.const 65436 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 103 + i64.mul + i64.const 10 + i64.shr_u + i64.const 4222189076152335 + i64.and + i64.const 246 + i64.mul + local.get $1 + i64.add + local.tee $1 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + global.set $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigHi + global.get $~lib/util/dtoa/gBcdValue + i64.const 3472328296227680304 + i64.add + global.set $~lib/util/dtoa/gDigLo + global.get $~lib/util/dtoa/gExp + i32.const 16 + i32.add + local.tee $7 + i32.const 20 + i32.le_s + local.get $7 + i32.const -6 + i32.ge_s + i32.and + if + local.get $7 + i32.const 0 + i32.lt_s + if + local.get $3 + i64.const 13511005043687472 + i64.store + local.get $3 + i64.const 13511005043687472 + i64.store offset=8 + end + global.get $~lib/util/dtoa/gLastDigit + i32.const 0 + local.get $6 + select + i32.const 48 i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|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 $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $5 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $5 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $5 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u + i64.extend_i32_s + local.set $2 + i32.const 16 + i32.const 15 + local.get $6 + select + local.set $5 + global.get $~lib/util/dtoa/gDigHi + local.set $8 + global.get $~lib/util/dtoa/gDigLo + local.set $4 + block $~lib/util/dtoa/writeFixed|inlined.0 (result i32) + local.get $7 + i32.const 16 + i32.ge_s + if + local.get $3 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $3 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $3 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $3 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $3 + local.get $2 + i64.store16 offset=32 + local.get $3 + local.get $7 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $3 + i32.const 34 + i32.add + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_u + if + local.get $5 + i64.const 13511005043687472 + i64.store + local.get $5 + i64.const 13511005043687472 + i64.store offset=8 + local.get $5 + i32.const 16 + i32.add local.set $5 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 + br $for-loop|0 end - local.get $2 - i32.const 10 - i32.div_u - local.set $5 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 end - local.get $2 - local.set $5 - i32.const 0 - local.set $2 - br $break|1 + local.get $6 + i32.const 46 + i32.store16 + local.get $6 + i32.const 48 + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 end - i32.const 0 - local.set $5 - end - local.get $4 - local.get $5 - i32.or - if - local.get $4 - local.tee $6 + local.get $5 i32.const 1 i32.add - local.set $4 - local.get $6 + local.tee $5 i32.const 1 - i32.shl - i32.const 3920 i32.add local.get $5 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K local.get $7 - i32.add - global.set $~lib/util/number/_K + i32.const 0 + i32.ge_s + local.tee $5 + select + local.set $10 + local.get $3 + i32.const 1 local.get $7 - i32.const 2 + i32.sub + local.get $7 + i32.const 31 + i32.shr_s + i32.and + i32.const 1 i32.shl - i32.const 4848 i32.add - i64.load32_u + local.tee $11 + local.get $8 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 i64.shl - local.set $1 + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $11 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $11 local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $0 - local.get $9 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $0 - local.get $1 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $0 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $11 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $11 + local.get $2 + i64.store16 offset=32 + local.get $5 + if + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + local.tee $5 + i32.const 64 + i32.lt_s + if + local.get $4 + i64.const 64 + local.get $5 + i64.extend_i32_s + local.tee $9 i64.sub + local.tee $12 + i64.shl local.get $8 local.get $9 - i64.sub - i64.gt_u - i32.or + i64.shr_u + i64.or + local.set $1 + local.get $2 + local.get $12 + i64.shl + local.get $4 + local.get $9 + i64.shr_u + i64.or + local.set $2 else - i32.const 0 + local.get $5 + i32.const 64 + i32.eq + if + local.get $4 + local.set $1 + else + local.get $5 + i32.const 128 + i32.lt_s + if (result i64) + local.get $5 + i32.const -64 + i32.add + i64.extend_i32_s + local.tee $1 + local.set $9 + local.get $2 + i64.const 64 + local.get $1 + i64.sub + i64.shl + local.get $4 + local.get $1 + i64.shr_u + i64.or + local.set $1 + local.get $2 + local.get $9 + i64.shr_u + else + local.get $2 + local.set $1 + i64.const 0 + end + local.set $2 + end end + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + local.get $11 + i32.add + local.tee $5 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $9 + i64.const 16 + i64.shl + local.get $9 + i64.or + i64.const 281470681808895 + i64.and + local.tee $9 + i64.const 8 + i64.shl + local.get $9 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $10 + local.get $3 + i32.const 9 + i32.add + local.tee $5 + i32.gt_s if - local.get $7 + local.get $5 i32.const 1 - i32.sub - local.set $7 - local.get $0 + i32.shl + local.get $11 + i32.add + local.tee $5 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $1 + i64.const 16 + i64.shl local.get $1 - i64.add - local.set $0 - br $while-continue|3 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + end + local.get $11 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + else + local.get $3 + i32.const 46 + i32.store16 offset=2 + end + local.get $11 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.set $3 + local.get $10 + local.get $7 + i32.const 1 + i32.add + i32.eq + local.get $7 + i32.const 0 + i32.ge_s + i32.and + if + local.get $3 + i32.const 46 + i32.store16 + local.get $3 + i32.const 48 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeFixed|inlined.0 + end + local.get $6 + i32.eqz + if + local.get $3 + local.get $4 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 8 + i32.eq + if (result i32) + local.get $3 + local.get $8 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $3 end + i32.const 1 + i32.shl + i32.sub + local.set $3 + end + local.get $3 + i32.const 2 + i32.sub + i32.load16_u + i32.const 46 + i32.eq + if (result i32) + local.get $3 + i32.const 48 + i32.store16 + local.get $3 + i32.const 2 + i32.add + else + local.get $3 end - local.get $2 - local.get $7 - i32.store16 - local.get $4 - return end - br $while-continue|0 + br $~lib/util/dtoa/formatDecodedDouble|inlined.0 end - end - loop $while-continue|4 local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s + i32.const 2 + i32.add + local.tee $5 + global.get $~lib/util/dtoa/gDigHi + local.tee $1 + i64.const 4294967295 + i64.and + local.tee $2 + i64.const 16 + i64.shl + local.get $2 + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + i64.const 8 + i64.shl + local.get $2 + i64.or + i64.const 71777214294589695 + i64.and + i64.store + local.get $5 + local.get $1 + i64.const 32 i64.shr_u local.tee $1 - local.get $4 - i64.extend_i32_s + i64.const 16 + i64.shl + local.get $1 i64.or - i64.const 0 - i64.ne + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=8 + local.get $5 + global.get $~lib/util/dtoa/gDigLo + local.tee $1 + i64.const 4294967295 + i64.and + local.tee $2 + i64.const 16 + i64.shl + local.get $2 + i64.or + i64.const 281470681808895 + i64.and + local.tee $2 + i64.const 8 + i64.shl + local.get $2 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=16 + local.get $5 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.const 16 + i64.shl + local.get $1 + i64.or + i64.const 281470681808895 + i64.and + local.tee $1 + i64.const 8 + i64.shl + local.get $1 + i64.or + i64.const 71777214294589695 + i64.and + i64.store offset=24 + local.get $5 + global.get $~lib/util/dtoa/gLastDigit + i32.const 48 + i32.add + i32.store16 offset=32 + local.get $5 + local.get $6 + i32.const 16 + i32.add + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $3 + local.get $3 + i32.load16_u offset=2 + i32.store16 + local.get $3 + i32.const 46 + i32.store16 offset=2 + local.get $6 + i32.eqz if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 + global.get $~lib/util/dtoa/gDigHi + local.set $1 + local.get $5 + global.get $~lib/util/dtoa/gDigLo + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 8 + i32.eq + if (result i32) + local.get $5 + local.get $1 + i64.const 3472328296227680304 + i64.xor + i64.clz + i64.const 3 + i64.shr_u + i32.wrap_i64 + i32.add + else + local.get $5 + end i32.const 1 i32.shl - i32.const 3920 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 + i32.sub + local.set $5 end - local.get $7 + local.get $5 + local.get $5 + local.get $3 + i32.const 4 + i32.add + i32.eq i32.const 1 + i32.shl i32.sub - local.set $7 - local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 4848 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $0 - local.get $8 - i64.gt_u + local.tee $3 + i32.const 101 + i32.store16 local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u + local.get $7 + i32.const 31 + i32.shr_s + local.tee $5 + i32.const 2 i32.and - if (result i32) - local.get $0 - local.get $8 - local.get $10 - i64.add - local.tee $1 - i64.gt_u - local.get $0 - local.get $8 - i64.sub - local.get $1 - local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if + i32.const 43 + i32.add + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + block $~lib/util/dtoa/writeExponent|inlined.0 (result i32) + local.get $5 local.get $7 - i32.const 1 + i32.xor + local.get $5 i32.sub - local.set $7 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $2 - local.get $7 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 3920 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 + local.tee $5 + i32.const 100 + i32.ge_s + if + local.get $3 + local.get $5 + i32.const 5243 + i32.mul + i32.const 19 + i32.shr_u + local.tee $6 + i32.const 48 + i32.add + i32.store16 + local.get $3 + local.get $5 + local.get $6 + i32.const 100 + i32.mul + i32.sub + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store offset=2 + local.get $3 + i32.const 6 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $5 + i32.const 10 + i32.ge_s + if + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + br $~lib/util/dtoa/writeExponent|inlined.0 + end + local.get $3 + local.get $5 + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 2 + i32.add + end end - i64.reinterpret_f64 - local.tee $1 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 1 - local.get $4 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $1 - i64.const 4503599627370495 - i64.and - local.get $4 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $9 - i32.sub - local.set $4 - local.get $3 - local.get $9 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $1 - local.get $1 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $9 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $9 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $8 - i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 3976 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 4672 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 - local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $5 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 - i64.and - local.tee $11 - local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 - i32.const 1 - i32.shl i32.const 3920 - i32.add - local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $5 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $3 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $12 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $2 - call $~lib/util/number/genDigits - local.get $2 i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - i32.add + i32.const 1 + i32.shr_u ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -3663,7 +5137,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 38672 + i32.const 38896 i32.lt_u if local.get $0 @@ -3759,7 +5233,7 @@ unreachable end local.get $0 - i32.const 38672 + i32.const 38896 i32.lt_u if local.get $0 @@ -3782,7 +5256,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 38672 + i32.const 38896 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -3849,7 +5323,7 @@ memory.size i32.const 16 i32.shl - i32.const 38672 + i32.const 38896 i32.sub i32.const 1 i32.shr_u @@ -3884,7 +5358,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3999,7 +5473,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4121,7 +5595,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4129,13 +5603,13 @@ i32.const 20 memory.fill f64.const 1 - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4912 + i32.const 5136 call $~lib/string/String.__eq i32.eqz if @@ -4147,13 +5621,13 @@ unreachable end f64.const 1 - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 f64.const 2 - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -4166,7 +5640,7 @@ local.get $0 i32.store local.get $0 - i32.const 4944 + i32.const 5168 call $~lib/string/String.__eq i32.eqz if @@ -4179,51 +5653,51 @@ end global.get $~lib/memory/__stack_pointer f64.const 1 - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer f64.const 2 - call $~lib/number/F64#toString + call $~lib/util/number/dtoa local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5200 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - i32.const 4980 + i32.const 5204 local.get $0 i32.store - i32.const 4976 + i32.const 5200 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5200 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - i32.const 4988 + i32.const 5212 local.get $1 i32.store - i32.const 4976 + i32.const 5200 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5200 i32.store offset=4 - i32.const 4976 + i32.const 5200 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5024 + i32.const 5248 call $~lib/string/String.__eq i32.eqz if @@ -4243,7 +5717,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4262,7 +5736,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5072 + i32.const 5296 call $~lib/string/String.__eq i32.eqz if @@ -4294,7 +5768,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - i32.const 5104 + i32.const 5328 local.get $0 call $~lib/string/String#concat local.set $0 @@ -4302,7 +5776,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5136 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if @@ -4316,7 +5790,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store offset=8 - i32.const 5104 + i32.const 5328 i32.const 1088 call $~lib/string/String#concat local.set $0 @@ -4324,7 +5798,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5168 + i32.const 5392 call $~lib/string/String.__eq i32.eqz if @@ -4342,14 +5816,14 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5200 + i32.const 5424 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5232 + i32.const 5456 call $~lib/string/String.__eq i32.eqz if @@ -4364,14 +5838,14 @@ i32.const 1088 i32.store offset=8 i32.const 1088 - i32.const 5200 + i32.const 5424 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5264 + i32.const 5488 call $~lib/string/String.__eq i32.eqz if @@ -4399,7 +5873,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5296 + i32.const 5520 call $~lib/string/String.__eq i32.eqz if @@ -4419,7 +5893,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4446,7 +5920,7 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 5360 + i32.const 5584 call $~lib/string/String.__eq i32.eqz if @@ -4483,7 +5957,7 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 5392 + i32.const 5616 call $~lib/string/String.__eq i32.eqz if @@ -4511,42 +5985,42 @@ local.tee $0 i32.store offset=28 global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5664 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - i32.const 5444 + i32.const 5668 local.get $1 i32.store - i32.const 5440 + i32.const 5664 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5664 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - i32.const 5452 + i32.const 5676 local.get $0 i32.store - i32.const 5440 + i32.const 5664 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5664 i32.store offset=12 - i32.const 5440 + i32.const 5664 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 5488 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if @@ -4566,7 +6040,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4590,45 +6064,45 @@ i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5888 i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5840 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=24 - i32.const 5620 + i32.const 5844 local.get $0 i32.store - i32.const 5616 + i32.const 5840 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5840 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5888 i32.store offset=24 - i32.const 5628 - i32.const 5664 + i32.const 5852 + i32.const 5888 i32.store - i32.const 5616 - i32.const 5664 + i32.const 5840 + i32.const 5888 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5840 i32.store offset=8 - i32.const 5616 + i32.const 5840 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5696 + i32.const 5920 call $~lib/string/String.__eq i32.eqz if @@ -4648,7 +6122,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6128 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4656,7 +6130,7 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 5760 + i32.const 5984 i32.const 0 call $templateliteral/RecursiveObject#constructor local.tee $0 @@ -4689,7 +6163,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5856 + i32.const 6080 call $~lib/string/String.__eq i32.eqz if @@ -4706,8 +6180,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 38704 - i32.const 38752 + i32.const 38928 + i32.const 38976 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/dtoa/format.ts b/tests/dtoa/format.ts new file mode 100644 index 0000000000..70cf38585f --- /dev/null +++ b/tests/dtoa/format.ts @@ -0,0 +1,140 @@ +import { + toDigits32, toDigits64, writeUnpacked8, gDigits, gDigHi, gDigLo, gSig, +} from "~lib/util/dtoa"; +import { dtoa as numberDtoa, dtoa_buffered as numberBuffered } from "util/number"; + +// The allocator can grow into host-grown memory during the string sweep. +const output = memory.data(64); + +export function outputBuffer(): usize { + return output; +} + +// Called by the JS differential harness with exact input bit patterns. +export function format64Bits(bits: u64, buffer: usize): u32 { + return numberBuffered(buffer, reinterpret(bits)); +} + +export function format32Bits(bits: u32, buffer: usize): u32 { + return numberBuffered(buffer, reinterpret(bits)); +} + +export function string64Bits(bits: u64, buffer: usize): u32 { + let result = numberDtoa(reinterpret(bits)); + memory.copy(buffer, changetype(result), result.length << 1); + return result.length; +} + +export function string32Bits(bits: u32, buffer: usize): u32 { + let result = numberDtoa(reinterpret(bits)); + memory.copy(buffer, changetype(result), result.length << 1); + return result.length; +} + +toDigits32(1); +assert(gDigits == 1); +assert(gDigHi == 0x3130303030303030); // "00000001" +toDigits32(78); +assert(gDigits == 2); +assert(gDigHi == 0x3837303030303030); // "00000078" +toDigits32(1234); +assert(gDigits == 4); +toDigits32(10000); +assert(gDigits == 5); +toDigits32(10000000); +assert(gDigits == 8); + +toDigits64(100000001); +assert(gDigits == 9); +toDigits64(100000000); +assert(gDigits == 9); +toDigits64(1000000000000000); +assert(gDigits == 16); +toDigits64(1234567890123456); +assert(gDigits == 16); +assert(gDigHi == 0x3837363534333231); // "12345678" +assert(gDigLo == 0x3635343332313039); // "90123456" + +// Exercise every four-digit group in every SIMD lane (and the scalar path). +const packed = memory.data(32); +for (let lane = 0; lane < 4; ++lane) { + let scale: u64 = lane == 0 ? 1000000000000 : lane == 1 ? 100000000 : lane == 2 ? 10000 : 1; + let original: u64 = lane == 0 ? 1234 : lane == 1 ? 0 : lane == 2 ? 5678 : 1; + let base = 1234000056780001 - original * scale; + for (let group: u64 = 0; group < 10000; ++group) { + let value = base + group * scale; + toDigits64(value); + writeUnpacked8(packed, gDigHi); + writeUnpacked8(packed + 16, gDigLo); + let expected = value.toString().padStart(16, "0"); + for (let i = 0; i < 16; ++i) + assert(load(packed + (i << 1)) == expected.charCodeAt(i)); + } +} + +// Writers may store complete digit blocks beyond the logical end. Keep the +// canary after the documented 32-code-unit capacity. +const guarded = memory.data(68); + +function check64(value: f64, expected: string, normalized: bool = false): void { + store(guarded, 0x5a5a); + store(guarded + 66, 0x6b6b); + let count = numberBuffered(guarded + 2, value); + assert(count == expected.length); + for (let i: u32 = 0; i < count; ++i) + assert(load(guarded + 2 + (i << 1)) == expected.charCodeAt(i)); + assert(load(guarded) == 0x5a5a); + assert(load(guarded + 66) == 0x6b6b); + if (normalized) assert(gSig >= 1000000000000000 && gSig < 10000000000000000); +} + +function check32(value: f32, expected: string): void { + store(guarded, 0x5a5a); + store(guarded + 66, 0x6b6b); + let count = numberBuffered(guarded + 2, value); + assert(count == expected.length); + for (let i: u32 = 0; i < count; ++i) + assert(load(guarded + 2 + (i << 1)) == expected.charCodeAt(i)); + assert(load(guarded) == 0x5a5a); + assert(load(guarded + 66) == 0x6b6b); +} + +check64(0.1 + 0.2, "0.30000000000000004", true); +check64(1e-6, "0.000001", true); +check64(1e-7, "1e-7", true); +check64(1e20, "100000000000000000000.0"); +check64(1e21, "1e+21"); +check64(123456789, "123456789.0"); +check64(9007199254740992, "9007199254740992.0"); +check64(f64.MIN_VALUE, "5e-324", true); +check64(reinterpret(0x0010000000000000), "2.2250738585072014e-308", true); +check64(reinterpret(0x3ff0000000000001), "1.0000000000000002", true); +check32(1, "1.0"); +check32(1234, "1234.0"); +check32(16777215, "16777215.0"); +check32(16777216, "16777216.0"); +check32(0.1, "0.1"); +check32(reinterpret(0x00000001), "1e-45"); +check32(reinterpret(0x00000002), "3e-45"); +check32(reinterpret(0x000003e8), "1.401e-42"); +check32(reinterpret(0x007fffff), "1.1754942e-38"); +check32(reinterpret(0x3f800001), "1.0000001"); +check32(reinterpret(0x7f7fffff), "3.4028235e+38"); +check32(1e-6, "0.000001"); +check32(1e-7, "1e-7"); +// Power-of-two exponents with a one-digit correction in toDecimalFloat. +check32(reinterpret(31 << 23), "1.2621775e-29"); +check32(reinterpret(214 << 23), "1.5474251e+26"); +check32(reinterpret(217 << 23), "1.2379401e+27"); + +// The string entry point returns interned literals for special values. +assert(changetype(numberDtoa(0)) == changetype("0.0")); +assert(changetype(numberDtoa(-0.0)) == changetype("0.0")); +assert(changetype(numberDtoa(0)) == changetype("0.0")); +assert(changetype(numberDtoa(reinterpret(0x80000000))) == changetype("0.0")); +assert(changetype(numberDtoa(NaN)) == changetype("NaN")); +assert(changetype(numberDtoa(Infinity)) == changetype("Infinity")); +assert(changetype(numberDtoa(-Infinity)) == changetype("-Infinity")); +assert(changetype(numberDtoa(NaN)) == changetype("NaN")); +assert(changetype(numberDtoa(Infinity)) == changetype("Infinity")); +assert(changetype(numberDtoa(-Infinity)) == changetype("-Infinity")); diff --git a/tests/dtoa/index.js b/tests/dtoa/index.js new file mode 100644 index 0000000000..430595148f --- /dev/null +++ b/tests/dtoa/index.js @@ -0,0 +1,148 @@ +import asc from "../../dist/asc.js"; +import { shortestFloat32, withAssemblyScriptDotZero } from "./oracle.js"; +import { verifyPowers } from "./powers.js"; + +verifyPowers(); + +const f64View = new DataView(new ArrayBuffer(8)); +const f32View = new DataView(new ArrayBuffer(4)); +const sign64 = 1n << 63n; +const maxPositive64 = sign64 - 1n; +let randomState = 0x12345678; + +function random32() { + randomState ^= randomState << 13; + randomState ^= randomState >>> 17; + randomState ^= randomState << 5; + return randomState >>> 0; +} + +function bits64(value) { + f64View.setFloat64(0, value); + return f64View.getBigUint64(0); +} + +function bits32(value) { + f32View.setFloat32(0, value); + return f32View.getUint32(0); +} + +function makeCases64() { + const patterns = new Set(); + const addSigned = positive => { + if (positive < 0n || positive > maxPositive64) return; + patterns.add(positive); + patterns.add(positive | sign64); + }; + for (let exponent = 0; exponent <= 2047; ++exponent) { + const base = BigInt(exponent) << 52n; + for (const significand of [0n, 1n, 15n, (1n << 52n) - 1n]) { + addSigned(base | significand); + } + } + for (let exponent = -323; exponent <= 308; ++exponent) { + const base = bits64(Number(`1e${exponent}`)); + for (let delta = -2; delta <= 2; ++delta) addSigned(base + BigInt(delta)); + } + for (let value = 1; value < 10000; ++value) addSigned(bits64(value)); + for (const value of [10000, 99999, 1234567, 16777216, 123456789, 999999999, 1000000000]) { + addSigned(bits64(value)); + } + for (let i = 0; i < 2048; ++i) { + patterns.add((BigInt(random32()) << 32n) | BigInt(random32())); + } + return [...patterns].map(bits => { + f64View.setBigUint64(0, bits); + return [bits, withAssemblyScriptDotZero(f64View.getFloat64(0).toString())]; + }); +} + +function makeCases32() { + const patterns = new Set(); + const addSigned = positive => { + if (positive < 0 || positive > 0x7fffffff) return; + patterns.add(positive >>> 0); + patterns.add((positive | 0x80000000) >>> 0); + }; + for (let exponent = 0; exponent <= 255; ++exponent) { + const base = exponent << 23; + for (const significand of [0, 1, 15, 0x7fffff]) { + addSigned(base | significand); + } + } + for (let exponent = -45; exponent <= 38; ++exponent) { + const base = bits32(10 ** exponent); + for (let delta = -2; delta <= 2; ++delta) addSigned(base + delta); + } + for (let value = 1; value < 10000; ++value) addSigned(bits32(value)); + for (const value of [10000, 99999, 1234567, 16777215, 16777216, 16777218]) { + addSigned(bits32(value)); + } + for (let i = 0; i < 2048; ++i) patterns.add(random32()); + return [...patterns].map(bits => [bits, withAssemblyScriptDotZero(shortestFloat32(bits))]); +} + +const cases64 = makeCases64(); +const cases32 = makeCases32(); + +function compareExactOutput(exports, mode) { + const { memory, format64Bits, format32Bits, string64Bits, string32Bits } = exports; + const buffer = exports.outputBuffer(); + for (const [label, format64, format32] of [ + ["buffered", format64Bits, format32Bits], + ["string", string64Bits, string32Bits], + ]) { + for (const [bits, expected] of cases64) { + const length = format64(bits, buffer); + if (length > 32) throw new Error(`${mode} ${label} f64 length ${length} exceeds buffer capacity`); + const actual = String.fromCharCode(...new Uint16Array(memory.buffer, buffer, length)); + if (actual !== expected) { + throw new Error(`${mode} ${label} f64 0x${bits.toString(16)}: ${JSON.stringify(actual)} != ${JSON.stringify(expected)}`); + } + } + for (const [bits, expected] of cases32) { + const length = format32(bits, buffer); + if (length > 32) throw new Error(`${mode} ${label} f32 length ${length} exceeds buffer capacity`); + const actual = String.fromCharCode(...new Uint16Array(memory.buffer, buffer, length)); + if (actual !== expected) { + throw new Error(`${mode} ${label} f32 0x${bits.toString(16)}: ${JSON.stringify(actual)} != ${JSON.stringify(expected)}`); + } + } + } +} + +for (const optimized of [false, true]) { + for (const simd of [false, true]) { + const mode = `${optimized ? "release" : "debug"}/${simd ? "simd" : "scalar"}`; + const output = new Map(); + const stdout = asc.createMemoryStream(); + const stderr = asc.createMemoryStream(); + const args = [ + "tests/dtoa/format.ts", + "--outFile", "dtoa.wasm", + "--exportStart", "start", + "--runtime", "stub", + "--noColors", + optimized ? "-O" : "--debug", + ]; + if (simd) args.push("--enable", "simd"); + const { error } = await asc.main(args, { + stdout, + stderr, + writeFile: (name, data) => output.set(name, data), + }); + if (error) throw new Error(`${mode} compilation failed:\n${stderr.toString()}`, { cause: error }); + const bytes = output.get("dtoa.wasm"); + if (!bytes) throw new Error(`${mode} did not emit Wasm`); + const { instance } = await WebAssembly.instantiate(bytes, { + env: { + abort: (_message, _file, line, column) => { + throw new Error(`${mode} assertion failed at ${line}:${column}`); + }, + }, + }); + instance.exports.start(); + compareExactOutput(instance.exports, mode); + console.log(`dtoa ${mode}: ${cases64.length} f64 and ${cases32.length} f32 exact outputs passed`); + } +} diff --git a/tests/dtoa/oracle.js b/tests/dtoa/oracle.js new file mode 100644 index 0000000000..04d59dcd4f --- /dev/null +++ b/tests/dtoa/oracle.js @@ -0,0 +1,74 @@ +// Independent f32 shortest-decimal oracle, adapted from xjb-as's BigInt +// verifier. It works from the exact binary32 value, not a widened f64 string. +const bits32 = new DataView(new ArrayBuffer(4)); + +export function float32FromBits(bits) { + bits32.setUint32(0, bits >>> 0); + return bits32.getFloat32(0); +} + +function formatDecimal(negative, digits, point) { + const count = digits.length; + let result; + if (count <= point && point <= 21) { + result = digits + "0".repeat(point - count); + } else if (0 < point && point <= 21) { + result = digits.slice(0, point) + "." + digits.slice(point); + } else if (-6 < point && point <= 0) { + result = "0." + "0".repeat(-point) + digits; + } else { + const exponent = point - 1; + const suffix = "e" + (exponent >= 0 ? "+" : "-") + Math.abs(exponent); + result = count === 1 ? digits + suffix : digits[0] + "." + digits.slice(1) + suffix; + } + return (negative ? "-" : "") + result; +} + +export function shortestFloat32(bits) { + const value = float32FromBits(bits); + if (Number.isNaN(value)) return "NaN"; + if (value === Infinity) return "Infinity"; + if (value === -Infinity) return "-Infinity"; + if (value === 0) return "0"; + + const negative = (bits >>> 31) !== 0; + const exponentBits = (bits >>> 23) & 0xff; + const mantissa = bits & 0x7fffff; + const significand = BigInt(exponentBits ? mantissa | 0x800000 : mantissa); + const binaryExponent = exponentBits ? exponentBits - 150 : -149; + const decimalInteger = binaryExponent >= 0 + ? significand << BigInt(binaryExponent) + : significand * 5n ** BigInt(-binaryExponent); + const decimalExponent = Math.min(binaryExponent, 0); + const exactDigits = decimalInteger.toString(); + const magnitude = Math.abs(value); + + // At each length, test the two decimals bracketing the exact value. Choose + // the closest one that parses back to the binary32 value; ties go to even. + for (let count = 1; count <= exactDigits.length; ++count) { + const shift = exactDigits.length - count + decimalExponent; + const floor = exactDigits.slice(0, count); + const ceil = (BigInt(floor) + 1n).toString(); + const roundTrips = digits => Math.fround(Number(digits + "e" + shift)) === magnitude; + const floorOk = roundTrips(floor); + const ceilOk = roundTrips(ceil); + if (!floorOk && !ceilOk) continue; + + let chosen; + if (floorOk && ceilOk) { + const unit = 10n ** BigInt(exactDigits.length - count); + const distance = 2n * (decimalInteger % unit); + chosen = distance < unit ? floor : distance > unit ? ceil + : (Number(floor[floor.length - 1]) & 1) === 0 ? floor : ceil; + } else { + chosen = floorOk ? floor : ceil; + } + const point = chosen.length + shift; + return formatDecimal(negative, chosen.replace(/0+$/, ""), point); + } + throw new Error(`no shortest f32 decimal for 0x${bits.toString(16)}`); +} + +export function withAssemblyScriptDotZero(text) { + return /^-?\d+$/.test(text) ? text + ".0" : text; +} diff --git a/tests/dtoa/powers.js b/tests/dtoa/powers.js new file mode 100644 index 0000000000..d1908c2317 --- /dev/null +++ b/tests/dtoa/powers.js @@ -0,0 +1,74 @@ +import { readFileSync } from "node:fs"; + +const source = readFileSync(new URL("../../std/assembly/util/dtoa.ts", import.meta.url), "utf8"); +const mask64 = (1n << 64n) - 1n; + +function table(name) { + const match = new RegExp(`\\b${name}\\s*=\\s*memory\\.data<[^>]+>\\(\\[([\\s\\S]*?)\\]\\)`).exec(source); + if (!match) throw new Error(`missing ${name}`); + return [...match[1].matchAll(/0x[0-9a-f]+/gi)].map(([hex]) => BigInt(hex)); +} + +function exactPower(index) { + const exponent = index - 293; + const power = 10n ** BigInt(Math.abs(exponent)); + const bitCount = power.toString(2).length; + return exponent >= 0 + ? bitCount <= 128 ? power << BigInt(128 - bitCount) : power >> BigInt(bitCount - 128) + : (1n << BigInt(127 + bitCount)) / power; +} + +export function verifyPowers() { + const majorTable = table("POW10_MAJOR"); + const fixups = table("POW10_FIXUPS"); + const shared = table("POW10_SHARED"); + if (majorTable.length !== 46 || fixups.length !== 20 || shared.length !== 53) { + throw new Error("power-table lengths changed; update the verifier with the layout"); + } + + // Shared highs cover powers 10^27..10^-17. Their rounding direction is + // important to the f32 path, even where the corresponding low is not stored. + for (let t = 17; t <= 61; ++t) { + const exact = exactPower(337 - t); + const high = exact >> 64n; + const low = exact & mask64; + if (shared[t - 17] !== high + BigInt(low !== 0n)) { + throw new Error(`shared high mismatch at t=${t}`); + } + if (t >= 45 && t <= 52 && shared[t] !== low) { + throw new Error(`shared low mismatch at t=${t}`); + } + } + + // Reproduce the compact reconstruction using BigInt multiplication, then + // compare all 618 entries against exact powers of ten. The reference above + // does not use any cached factors or correction bits. + for (let index = 0; index < 618; ++index) { + const j = index + 10; + const major = (j * 293) >>> 13; + if (major !== Math.floor(j / 28)) throw new Error(`quotient mismatch at ${j}`); + const minor = j - major * 28; + const factor = shared[27 - minor]; + const anchor = (majorTable[major * 2] << 64n) | majorTable[major * 2 + 1]; + const product = anchor * factor; + const c0 = product & mask64; + const c1 = (product >> 64n) & mask64; + const c2 = product >> 128n; + let high; + let low; + if (c2 >> 63n) { + high = c2; + low = c1; + } else { + high = (c2 << 1n) | (c1 >> 63n); + low = ((c1 << 1n) | (c0 >> 63n)) & mask64; + } + const fixup = (fixups[index >> 5] >> BigInt(index & 31)) & 1n; + low = (low - fixup) & mask64; + const actual = (high << 64n) | low; + const expected = exactPower(index); + if (actual !== expected) { + throw new Error(`power mismatch at ${index}: ${actual.toString(16)} != ${expected.toString(16)}`); + } + } +}