run normal function opts twice in -O4, to recoup the step backwards from flattening etc.
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 752e1cd..41b1710 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp
@@ -203,6 +203,18 @@ add("rse"); // after all coalesce-locals, and before a final vacuum } add("vacuum"); // just to be safe + if (options.optimizeLevel >= 4) { + // -O4 optimizations, in particular flattening and relooping, are "one step + // back two steps forward" in that they make the IR more verbose and less + // optimized, but more optimizeable. Our main passes need to optimize such + // code more than once to avoid -O4 being less effective than -O3 in some + // cases, so queue them to run again. + auto old = options.optimizeLevel; + options.optimizeLevel = 3; + addDefaultFunctionOptimizationPasses(); + addDefaultFunctionOptimizationPasses(); + options.optimizeLevel = old; + } } void PassRunner::addDefaultGlobalOptimizationPrePasses() {
diff --git a/test/passes/O4_metrics.txt b/test/passes/O4_metrics.txt index a27b993..1ad36ff 100644 --- a/test/passes/O4_metrics.txt +++ b/test/passes/O4_metrics.txt
@@ -3,28 +3,28 @@ [imports] : 25 [memory-data] : 23 [table-data] : 18 - [total] : 9871 - [vars] : 144 + [total] : 9833 + [vars] : 143 binary : 1672 - block : 478 - break : 299 + block : 477 + break : 292 call : 198 call_indirect : 8 const : 1574 - drop : 41 + drop : 40 get_global : 68 - get_local : 2660 - if : 370 + get_local : 2657 + if : 375 load : 465 loop : 71 nop : 1 return : 19 select : 71 set_global : 38 - set_local : 1256 + set_local : 1233 store : 458 switch : 3 - unary : 121 + unary : 113 (module (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$id (func (param f64) (result i32))) @@ -201,10 +201,10 @@ (get_local $0) ) (set_local $5 - (tee_local $3 + (tee_local $2 (i32.and (call $_bitshift64Lshr - (tee_local $2 + (tee_local $3 (i32.load (get_global $tempDoublePtr) ) @@ -221,68 +221,66 @@ ) ) (if - (get_local $3) - (block $block$2$break - (br_if $block$2$break - (i32.eq - (get_local $5) - (i32.const 2047) - ) + (get_local $2) + (if + (i32.ne + (get_local $5) + (i32.const 2047) ) - (i32.store - (get_local $1) - (i32.add - (get_local $3) - (i32.const -1022) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (get_local $2) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (i32.or - (i32.and - (get_local $4) - (i32.const -2146435073) + (block + (i32.store + (get_local $1) + (i32.add + (get_local $2) + (i32.const -1022) ) - (i32.const 1071644672) ) - ) - (set_local $0 - (f64.load + (i32.store (get_global $tempDoublePtr) + (get_local $3) + ) + (i32.store offset=4 + (get_global $tempDoublePtr) + (i32.or + (i32.and + (get_local $4) + (i32.const -2146435073) + ) + (i32.const 1071644672) + ) + ) + (set_local $0 + (f64.load + (get_global $tempDoublePtr) + ) ) ) ) (i32.store (get_local $1) - (tee_local $2 - (if (result i32) - (f64.ne - (get_local $0) - (f64.const 0) - ) - (block (result i32) - (set_local $0 - (call $_frexp - (f64.mul - (get_local $0) - (f64.const 18446744073709551615) - ) - (get_local $1) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) + (if (result i32) + (f64.ne + (get_local $0) + (f64.const 0) ) + (block (result i32) + (set_local $0 + (call $_frexp + (f64.mul + (get_local $0) + (f64.const 18446744073709551615) + ) + (get_local $1) + ) + ) + (i32.add + (i32.load + (get_local $1) + ) + (i32.const -64) + ) + ) + (i32.const 0) ) ) ) @@ -723,7 +721,7 @@ ) (tee_local $4 (i32.load - (tee_local $7 + (tee_local $6 (i32.add (get_local $0) (i32.const 28) @@ -850,18 +848,16 @@ ) ) (if - (i32.eqz - (i32.lt_s - (get_local $4) - (i32.const 0) - ) + (i32.ge_s + (get_local $4) + (i32.const 0) ) (block - (set_local $6 + (set_local $7 (if (result i32) (i32.gt_u (get_local $4) - (tee_local $6 + (tee_local $7 (i32.load offset=4 (get_local $1) ) @@ -869,7 +865,7 @@ ) (block (result i32) (i32.store - (get_local $7) + (get_local $6) (tee_local $9 (i32.load (get_local $13) @@ -899,7 +895,7 @@ ) (i32.sub (get_local $4) - (get_local $6) + (get_local $7) ) ) (block (result i32) @@ -910,10 +906,10 @@ ) (block (i32.store - (get_local $7) + (get_local $6) (i32.add (i32.load - (get_local $7) + (get_local $6) ) (get_local $4) ) @@ -924,7 +920,7 @@ ) ) (set_local $9 - (get_local $6) + (get_local $7) ) (get_local $4) ) @@ -936,14 +932,14 @@ (i32.load (get_local $1) ) - (get_local $6) + (get_local $7) ) ) (i32.store offset=4 (get_local $1) (i32.sub (get_local $9) - (get_local $6) + (get_local $7) ) ) (set_local $11 @@ -961,7 +957,7 @@ (i32.const 0) ) (i32.store - (get_local $7) + (get_local $6) (i32.const 0) ) (i32.store @@ -1008,7 +1004,7 @@ ) ) (i32.store - (get_local $7) + (get_local $6) (get_local $1) ) (i32.store @@ -1340,7 +1336,7 @@ (get_local $3) (tee_local $4 (i32.load - (tee_local $6 + (tee_local $5 (i32.add (get_local $2) (i32.const 20) @@ -1371,7 +1367,7 @@ (br $block$2$break) ) ) - (set_local $5 + (set_local $6 (block $block$20$break (result i32) (if (i32.gt_s @@ -1387,34 +1383,30 @@ (loop $shape$14$continue (drop (br_if $block$20$break - (tee_local $5 - (i32.const 0) - ) + (i32.const 0) (i32.eqz (get_local $3) ) ) ) (if - (i32.eqz - (i32.eq - (i32.load8_s - (i32.add - (tee_local $5 - (i32.add - (get_local $3) - (i32.const -1) - ) + (i32.ne + (i32.load8_s + (i32.add + (tee_local $6 + (i32.add + (get_local $3) + (i32.const -1) ) - (get_local $0) ) + (get_local $0) ) - (i32.const 10) ) + (i32.const 10) ) (block (set_local $3 - (get_local $5) + (get_local $6) ) (br $shape$14$continue) ) @@ -1441,7 +1433,7 @@ ) (set_local $4 (i32.load - (get_local $6) + (get_local $5) ) ) (set_local $1 @@ -1472,10 +1464,10 @@ ) ) (i32.store - (get_local $6) + (get_local $5) (i32.add (i32.load - (get_local $6) + (get_local $5) ) (get_local $1) ) @@ -1483,7 +1475,7 @@ (set_local $3 (i32.add (get_local $1) - (get_local $5) + (get_local $6) ) ) ) @@ -1512,233 +1504,229 @@ (get_local $1) ) ) - (tee_local $0 - (if (result i32) - (i32.and + (if (result i32) + (i32.and + (tee_local $1 + (i32.load + (get_local $0) + ) + ) + (i32.const 8) + ) + (block (result i32) + (i32.store + (get_local $0) + (i32.or + (get_local $1) + (i32.const 32) + ) + ) + (i32.const -1) + ) + (block (result i32) + (i32.store offset=8 + (get_local $0) + (i32.const 0) + ) + (i32.store offset=4 + (get_local $0) + (i32.const 0) + ) + (i32.store offset=28 + (get_local $0) (tee_local $1 - (i32.load + (i32.load offset=44 (get_local $0) ) ) - (i32.const 8) ) - (block (result i32) - (i32.store - (get_local $0) - (i32.or - (get_local $1) - (i32.const 32) - ) - ) - (i32.const -1) + (i32.store offset=20 + (get_local $0) + (get_local $1) ) - (block (result i32) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=28 - (get_local $0) - (tee_local $1 - (i32.load offset=44 - (get_local $0) - ) + (i32.store offset=16 + (get_local $0) + (i32.add + (i32.load offset=48 + (get_local $0) ) - ) - (i32.store offset=20 - (get_local $0) (get_local $1) ) - (i32.store offset=16 - (get_local $0) - (i32.add - (i32.load offset=48 - (get_local $0) - ) - (get_local $1) - ) - ) - (i32.const 0) ) + (i32.const 0) ) ) ) (func $_wcrtomb (; 39 ;) (; has Stack IR ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (tee_local $0 - (if (result i32) - (get_local $0) - (block $block$2$break (result i32) - (if - (i32.lt_u + (if (result i32) + (get_local $0) + (block $block$2$break (result i32) + (if + (i32.lt_u + (get_local $1) + (i32.const 128) + ) + (block + (i32.store8 + (get_local $0) (get_local $1) - (i32.const 128) ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (br $block$2$break - (i32.const 1) - ) + (br $block$2$break + (i32.const 1) ) ) - (if + ) + (if + (i32.lt_u + (get_local $1) + (i32.const 2048) + ) + (block + (i32.store8 + (get_local $0) + (i32.or + (i32.shr_u + (get_local $1) + (i32.const 6) + ) + (i32.const 192) + ) + ) + (i32.store8 offset=1 + (get_local $0) + (i32.or + (i32.and + (get_local $1) + (i32.const 63) + ) + (i32.const 128) + ) + ) + (br $block$2$break + (i32.const 2) + ) + ) + ) + (if + (i32.or + (i32.eq + (i32.and + (get_local $1) + (i32.const -8192) + ) + (i32.const 57344) + ) (i32.lt_u (get_local $1) - (i32.const 2048) + (i32.const 55296) ) - (block - (i32.store8 - (get_local $0) - (i32.or + ) + (block + (i32.store8 + (get_local $0) + (i32.or + (i32.shr_u + (get_local $1) + (i32.const 12) + ) + (i32.const 224) + ) + ) + (i32.store8 offset=1 + (get_local $0) + (i32.or + (i32.and (i32.shr_u (get_local $1) (i32.const 6) ) - (i32.const 192) + (i32.const 63) ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $block$2$break - (i32.const 2) + (i32.const 128) ) ) - ) - (if - (i32.or - (i32.eq + (i32.store8 offset=2 + (get_local $0) + (i32.or (i32.and (get_local $1) - (i32.const -8192) + (i32.const 63) ) - (i32.const 57344) - ) - (i32.lt_u - (get_local $1) - (i32.const 55296) + (i32.const 128) ) ) - (block - (i32.store8 - (get_local $0) - (i32.or + (br $block$2$break + (i32.const 3) + ) + ) + ) + (if (result i32) + (i32.lt_u + (i32.add + (get_local $1) + (i32.const -65536) + ) + (i32.const 1048576) + ) + (block (result i32) + (i32.store8 + (get_local $0) + (i32.or + (i32.shr_u + (get_local $1) + (i32.const 18) + ) + (i32.const 240) + ) + ) + (i32.store8 offset=1 + (get_local $0) + (i32.or + (i32.and (i32.shr_u (get_local $1) (i32.const 12) ) - (i32.const 224) + (i32.const 63) ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $block$2$break - (i32.const 3) + (i32.const 128) ) ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block (result i32) - (i32.store8 - (get_local $0) - (i32.or + (i32.store8 offset=2 + (get_local $0) + (i32.or + (i32.and (i32.shr_u (get_local $1) - (i32.const 18) + (i32.const 6) ) - (i32.const 240) + (i32.const 63) ) + (i32.const 128) ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 84) + (i32.store8 offset=3 + (get_local $0) + (i32.or + (i32.and + (get_local $1) + (i32.const 63) + ) + (i32.const 128) ) - (i32.const -1) ) + (i32.const 4) + ) + (block (result i32) + (i32.store + (call $___errno_location) + (i32.const 84) + ) + (i32.const -1) ) ) - (i32.const 1) ) + (i32.const 1) ) ) (func $_wctomb (; 40 ;) (; has Stack IR ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -1958,88 +1946,35 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (tee_local $0 - (block $block$2$break (result i32) - (if - (i32.gt_u - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 28) - ) + (block $block$2$break (result i32) + (if + (i32.gt_u + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 20) ) ) ) - (block $block$3$break - (drop - (call_indirect (type $FUNCSIG$iiii) + (i32.load + (tee_local $2 + (i32.add (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) + (i32.const 28) ) ) - (br_if $block$3$break - (i32.load - (get_local $1) - ) - ) - (br $block$2$break - (i32.const -1) - ) ) ) - (if - (i32.lt_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (tee_local $6 - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) + (block $block$3$break (drop (call_indirect (type $FUNCSIG$iiii) (get_local $0) - (i32.sub - (get_local $4) - (get_local $6) - ) - (i32.const 1) + (i32.const 0) + (i32.const 0) (i32.add (i32.and - (i32.load offset=40 + (i32.load offset=36 (get_local $0) ) (i32.const 7) @@ -2048,29 +1983,80 @@ ) ) ) + (br_if $block$3$break + (i32.load + (get_local $1) + ) + ) + (br $block$2$break + (i32.const -1) + ) ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) + ) + (if + (i32.lt_u + (tee_local $4 + (i32.load + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 4) + ) + ) + ) + ) + (tee_local $6 + (i32.load + (tee_local $5 + (i32.add + (get_local $0) + (i32.const 8) + ) + ) + ) + ) ) - (i32.store - (get_local $2) - (i32.const 0) + (drop + (call_indirect (type $FUNCSIG$iiii) + (get_local $0) + (i32.sub + (get_local $4) + (get_local $6) + ) + (i32.const 1) + (i32.add + (i32.and + (i32.load offset=40 + (get_local $0) + ) + (i32.const 7) + ) + (i32.const 2) + ) + ) ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) + ) + (i32.store offset=16 + (get_local $0) (i32.const 0) ) + (i32.store + (get_local $2) + (i32.const 0) + ) + (i32.store + (get_local $1) + (i32.const 0) + ) + (i32.store + (get_local $5) + (i32.const 0) + ) + (i32.store + (get_local $3) + (i32.const 0) + ) + (i32.const 0) ) ) (func $_cleanup (; 44 ;) (; has Stack IR ;) (type $FUNCSIG$vi) (param $0 i32) @@ -2126,7 +2112,6 @@ (local $47 i32) (local $48 i32) (local $49 i32) - (local $50 i32) (set_local $14 (get_global $STACKTOP) ) @@ -2149,13 +2134,13 @@ (i32.const 16) ) ) - (set_local $35 + (set_local $34 (i32.add (get_local $14) (i32.const 528) ) ) - (set_local $29 + (set_local $28 (i32.ne (get_local $0) (i32.const 0) @@ -2180,7 +2165,7 @@ (i32.const 39) ) ) - (set_local $45 + (set_local $44 (i32.add (tee_local $40 (i32.add @@ -2216,27 +2201,27 @@ ) ) ) - (set_local $46 + (set_local $45 (i32.sub (get_local $23) (get_local $22) ) ) - (set_local $47 + (set_local $46 (i32.sub (i32.const -2) (get_local $22) ) ) - (set_local $48 + (set_local $47 (i32.add (get_local $23) (i32.const 2) ) ) - (set_local $50 + (set_local $49 (i32.add - (tee_local $49 + (tee_local $48 (i32.add (get_local $14) (i32.const 24) @@ -2246,14 +2231,14 @@ ) ) (set_local $43 - (tee_local $30 + (tee_local $29 (i32.add (get_local $22) (i32.const 9) ) ) ) - (set_local $34 + (set_local $33 (i32.add (get_local $22) (i32.const 8) @@ -2278,16 +2263,16 @@ (block $block$5$break (if (i32.gt_s - (get_local $17) + (get_local $16) (i32.const -1) ) - (set_local $17 + (set_local $16 (if (result i32) (i32.gt_s (get_local $10) (i32.sub (i32.const 2147483647) - (get_local $17) + (get_local $16) ) ) (block (result i32) @@ -2299,7 +2284,7 @@ ) (i32.add (get_local $10) - (get_local $17) + (get_local $16) ) ) ) @@ -2395,9 +2380,9 @@ ) ) (if - (get_local $29) - (block $block$38$break - (br_if $block$38$break + (get_local $28) + (if + (i32.eqz (i32.and (i32.load (get_local $0) @@ -2429,7 +2414,7 @@ (br $shape$4$continue) ) ) - (set_local $18 + (set_local $17 (if (result i32) (i32.lt_u (tee_local $8 @@ -2598,7 +2583,7 @@ (set_local $1 (block $block$61$break (result i32) (block $block$91$break - (set_local $16 + (set_local $18 (if (result i32) (i32.eq (i32.and @@ -2666,7 +2651,7 @@ (set_local $8 (i32.const 1) ) - (set_local $16 + (set_local $18 (i32.load (get_local $6) ) @@ -2685,7 +2670,7 @@ ) (if (i32.eqz - (get_local $29) + (get_local $28) ) (block (set_local $12 @@ -2694,7 +2679,7 @@ (set_local $10 (get_local $6) ) - (set_local $16 + (set_local $18 (i32.const 0) ) (br $block$61$break @@ -2702,7 +2687,7 @@ ) ) ) - (set_local $16 + (set_local $18 (i32.load (tee_local $10 (i32.and @@ -2732,7 +2717,7 @@ ) (br_if $block$91$break (i32.ge_s - (get_local $16) + (get_local $18) (i32.const 0) ) ) @@ -2744,12 +2729,12 @@ ) (i32.sub (i32.const 0) - (get_local $16) + (get_local $18) ) ) (block (result i32) (if - (i32.ge_u + (i32.lt_u (tee_local $6 (i32.add (i32.shr_s @@ -2765,58 +2750,55 @@ (i32.const 10) ) (block - (set_local $16 + (set_local $12 (i32.const 0) ) - (br $block$91$break) - ) - ) - (set_local $12 - (i32.const 0) - ) - (loop $shape$66$continue - (set_local $6 - (i32.add - (i32.mul - (get_local $12) - (i32.const 10) + (loop $shape$65$continue + (set_local $6 + (i32.add + (i32.mul + (get_local $12) + (i32.const 10) + ) + (get_local $6) + ) ) - (get_local $6) - ) - ) - (if - (i32.eqz - (i32.ge_u - (tee_local $9 - (i32.add - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $10) - (i32.const 1) + (if + (i32.lt_u + (tee_local $9 + (i32.add + (i32.load8_s + (tee_local $10 + (i32.add + (get_local $10) + (i32.const 1) + ) ) ) + (i32.const -48) ) - (i32.const -48) ) + (i32.const 10) ) - (i32.const 10) + (block + (set_local $12 + (get_local $6) + ) + (set_local $6 + (get_local $9) + ) + (br $shape$65$continue) + ) ) ) - (block - (set_local $12 + (br_if $block$11$break + (i32.lt_s (get_local $6) + (i32.const 0) ) - (set_local $6 - (get_local $9) - ) - (br $shape$66$continue) ) ) - ) - (br_if $block$11$break - (i32.lt_s - (get_local $6) + (set_local $6 (i32.const 0) ) ) @@ -2883,7 +2865,7 @@ (set_local $6 (get_local $9) ) - (loop $shape$81$continue + (loop $shape$82$continue (set_local $8 (tee_local $6 (i32.add @@ -2919,7 +2901,7 @@ (set_local $6 (get_local $9) ) - (br $shape$81$continue) + (br $shape$82$continue) ) ) ) @@ -2995,7 +2977,7 @@ (get_local $1) ) (if - (get_local $29) + (get_local $28) (block (set_local $8 (i32.load @@ -3041,7 +3023,7 @@ (set_local $9 (i32.const 0) ) - (loop $shape$96$continue + (loop $shape$97$continue (br_if $block$9$break (i32.gt_u (tee_local $11 @@ -3062,32 +3044,30 @@ ) ) (if - (i32.eqz - (i32.ge_u - (i32.add - (tee_local $11 - (i32.and - (tee_local $13 - (i32.load8_s + (i32.lt_u + (i32.add + (tee_local $11 + (i32.and + (tee_local $13 + (i32.load8_s + (i32.add (i32.add - (i32.add - (i32.mul - (get_local $9) - (i32.const 58) - ) - (i32.const 3611) + (i32.mul + (get_local $9) + (i32.const 58) ) - (get_local $11) + (i32.const 3611) ) + (get_local $11) ) ) - (i32.const 255) ) + (i32.const 255) ) - (i32.const -1) ) - (i32.const 8) + (i32.const -1) ) + (i32.const 8) ) (block (set_local $8 @@ -3096,7 +3076,7 @@ (set_local $9 (get_local $11) ) - (br $shape$96$continue) + (br $shape$97$continue) ) ) ) @@ -3113,7 +3093,7 @@ ) (set_local $8 (i32.gt_s - (get_local $18) + (get_local $17) (i32.const -1) ) ) @@ -3136,7 +3116,7 @@ (i32.store (i32.add (i32.shl - (get_local $18) + (get_local $17) (i32.const 2) ) (get_local $4) @@ -3148,7 +3128,7 @@ (tee_local $8 (i32.add (i32.shl - (get_local $18) + (get_local $17) (i32.const 3) ) (get_local $3) @@ -3171,7 +3151,7 @@ ) (br_if $block$6$break (i32.eqz - (get_local $29) + (get_local $28) ) ) (call $_pop_arg_336 @@ -3183,7 +3163,7 @@ ) ) (br_if $block$129$break - (get_local $29) + (get_local $28) ) (set_local $5 (get_local $10) @@ -3281,51 +3261,49 @@ ) (set_local $7 (block $block$241$break (result i32) - (set_local $31 - (tee_local $5 - (if (result i32) - (i32.lt_s - (i32.load offset=4 - (get_global $tempDoublePtr) + (set_local $30 + (if (result i32) + (i32.lt_s + (i32.load offset=4 + (get_global $tempDoublePtr) + ) + (i32.const 0) + ) + (block (result i32) + (set_local $27 + (i32.const 1) + ) + (set_local $15 + (f64.neg + (get_local $15) ) - (i32.const 0) + ) + (i32.const 4108) + ) + (if (result i32) + (i32.and + (get_local $12) + (i32.const 2048) ) (block (result i32) - (set_local $28 + (set_local $27 (i32.const 1) ) - (set_local $15 - (f64.neg - (get_local $15) - ) - ) - (i32.const 4108) + (i32.const 4111) ) - (if (result i32) - (i32.and - (get_local $12) - (i32.const 2048) - ) - (block (result i32) - (set_local $28 - (i32.const 1) - ) - (i32.const 4111) - ) - (block (result i32) - (set_local $28 - (tee_local $5 - (i32.and - (get_local $12) - (i32.const 1) - ) + (block (result i32) + (set_local $27 + (tee_local $5 + (i32.and + (get_local $12) + (i32.const 1) ) ) - (select - (i32.const 4114) - (i32.const 4109) - (get_local $5) - ) + ) + (select + (i32.const 4114) + (i32.const 4109) + (get_local $5) ) ) ) @@ -3390,10 +3368,10 @@ (set_local $9 (select (i32.add - (get_local $31) + (get_local $30) (i32.const 9) ) - (get_local $31) + (get_local $30) (tee_local $13 (i32.and (get_local $19) @@ -3423,14 +3401,14 @@ (set_local $15 (f64.const 8) ) - (loop $shape$133$continue + (loop $shape$134$continue (set_local $15 (f64.mul (get_local $15) (f64.const 16) ) ) - (br_if $shape$133$continue + (br_if $shape$134$continue (tee_local $5 (i32.add (get_local $5) @@ -3516,7 +3494,7 @@ ) (set_local $11 (i32.or - (get_local $28) + (get_local $27) (i32.const 2) ) ) @@ -3554,7 +3532,7 @@ (i32.const 1) ) ) - (set_local $18 + (set_local $17 (i32.eqz (i32.and (get_local $12) @@ -3565,7 +3543,7 @@ (set_local $5 (get_local $22) ) - (loop $shape$144$continue + (loop $shape$145$continue (i32.store8 (get_local $5) (i32.or @@ -3606,8 +3584,8 @@ ) (i32.const 1) ) - (block $block$266$break - (br_if $block$266$break + (if + (i32.eqz (i32.and (i32.and (f64.eq @@ -3616,17 +3594,19 @@ ) (get_local $19) ) - (get_local $18) + (get_local $17) ) ) - (i32.store8 - (get_local $7) - (i32.const 46) - ) - (set_local $7 - (i32.add - (get_local $5) - (i32.const 2) + (block + (i32.store8 + (get_local $7) + (i32.const 46) + ) + (set_local $7 + (i32.add + (get_local $5) + (i32.const 2) + ) ) ) ) @@ -3634,7 +3614,7 @@ (set_local $5 (get_local $7) ) - (br_if $shape$144$continue + (br_if $shape$145$continue (f64.ne (get_local $15) (f64.const 0) @@ -3644,7 +3624,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (tee_local $7 (i32.add (get_local $11) @@ -3653,13 +3633,13 @@ (i32.sub (i32.add (get_local $6) - (get_local $48) + (get_local $47) ) (get_local $8) ) (i32.add (i32.sub - (get_local $46) + (get_local $45) (get_local $8) ) (get_local $5) @@ -3672,7 +3652,7 @@ (i32.lt_s (i32.add (get_local $5) - (get_local $47) + (get_local $46) ) (get_local $6) ) @@ -3703,7 +3683,7 @@ (call $_pad (get_local $0) (i32.const 48) - (get_local $16) + (get_local $18) (get_local $7) (i32.xor (get_local $12) @@ -3774,7 +3754,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (get_local $7) (i32.xor (get_local $12) @@ -3783,11 +3763,11 @@ ) (br $block$241$break (select - (get_local $16) + (get_local $18) (get_local $7) (i32.lt_s (get_local $7) - (get_local $16) + (get_local $18) ) ) ) @@ -3826,8 +3806,8 @@ (set_local $7 (tee_local $8 (select + (get_local $48) (get_local $49) - (get_local $50) (i32.lt_s (get_local $5) (i32.const 0) @@ -3835,7 +3815,7 @@ ) ) ) - (loop $shape$165$continue + (loop $shape$166$continue (i32.store (get_local $7) (tee_local $5 @@ -3850,7 +3830,7 @@ (i32.const 4) ) ) - (br_if $shape$165$continue + (br_if $shape$166$continue (f64.ne (tee_local $15 (f64.mul @@ -3880,7 +3860,7 @@ (set_local $5 (get_local $8) ) - (loop $shape$170$continue + (loop $shape$171$continue (set_local $13 (select (i32.const 29) @@ -3905,10 +3885,10 @@ (set_local $11 (i32.const 0) ) - (loop $shape$174$continue + (loop $shape$175$continue (set_local $11 (i32.add - (tee_local $18 + (tee_local $17 (call $_bitshift64Shl (i32.load (get_local $9) @@ -3925,7 +3905,7 @@ (get_global $tempRet0) (i32.lt_u (get_local $11) - (get_local $18) + (get_local $17) ) ) ) @@ -3933,7 +3913,7 @@ (get_local $9) (call $___uremdi3 (get_local $11) - (tee_local $18 + (tee_local $17 (get_global $tempRet0) ) (i32.const 1000000000) @@ -3942,11 +3922,11 @@ (set_local $11 (call $___udivdi3 (get_local $11) - (get_local $18) + (get_local $17) (i32.const 1000000000) ) ) - (br_if $shape$174$continue + (br_if $shape$175$continue (i32.ge_u (tee_local $9 (i32.add @@ -3974,7 +3954,7 @@ ) ) ) - (loop $shape$178$continue + (loop $shape$179$continue (block $block$293$break (br_if $block$293$break (i32.le_u @@ -3995,7 +3975,7 @@ (set_local $7 (get_local $9) ) - (br $shape$178$continue) + (br $shape$179$continue) ) ) (i32.store @@ -4009,7 +3989,7 @@ ) ) ) - (br_if $shape$170$continue + (br_if $shape$171$continue (i32.gt_s (get_local $9) (i32.const 0) @@ -4021,7 +4001,7 @@ (get_local $8) ) ) - (set_local $18 + (set_local $17 (select (i32.const 6) (get_local $6) @@ -4039,21 +4019,17 @@ (block (set_local $21 (i32.add - (tee_local $6 - (i32.div_s - (tee_local $6 - (i32.add - (get_local $18) - (i32.const 25) - ) - ) - (i32.const 9) + (i32.div_s + (i32.add + (get_local $17) + (i32.const 25) ) + (i32.const 9) ) (i32.const 1) ) ) - (set_local $32 + (set_local $31 (i32.eq (get_local $26) (i32.const 102) @@ -4065,7 +4041,7 @@ (set_local $5 (get_local $7) ) - (loop $shape$195$continue + (loop $shape$196$continue (set_local $13 (select (i32.const 9) @@ -4096,7 +4072,7 @@ (i32.const -1) ) ) - (set_local $36 + (set_local $35 (i32.shr_u (i32.const 1000000000) (get_local $13) @@ -4108,12 +4084,12 @@ (set_local $7 (get_local $6) ) - (loop $shape$199$continue + (loop $shape$200$continue (i32.store (get_local $7) (i32.add (i32.shr_u - (tee_local $33 + (tee_local $32 (i32.load (get_local $7) ) @@ -4127,12 +4103,12 @@ (i32.mul (i32.and (get_local $11) - (get_local $33) + (get_local $32) ) - (get_local $36) + (get_local $35) ) ) - (br_if $shape$199$continue + (br_if $shape$200$continue (i32.lt_u (tee_local $7 (i32.add @@ -4192,7 +4168,7 @@ (select (get_local $8) (get_local $7) - (get_local $32) + (get_local $31) ) ) (i32.shl @@ -4225,11 +4201,9 @@ ) ) (if - (i32.eqz - (i32.ge_s - (get_local $9) - (i32.const 0) - ) + (i32.lt_s + (get_local $9) + (i32.const 0) ) (block (set_local $6 @@ -4238,7 +4212,7 @@ (set_local $5 (get_local $11) ) - (br $shape$195$continue) + (br $shape$196$continue) ) ) ) @@ -4286,14 +4260,14 @@ (set_local $6 (i32.const 10) ) - (loop $shape$212$continue + (loop $shape$213$continue (set_local $7 (i32.add (get_local $7) (i32.const 1) ) ) - (br_if $shape$212$continue + (br_if $shape$213$continue (i32.ge_u (get_local $11) (tee_local $6 @@ -4316,7 +4290,7 @@ (tee_local $6 (i32.add (i32.sub - (get_local $18) + (get_local $17) (select (get_local $7) (i32.const 0) @@ -4329,13 +4303,13 @@ (i32.shr_s (i32.shl (i32.and - (tee_local $32 + (tee_local $31 (i32.ne - (get_local $18) + (get_local $17) (i32.const 0) ) ) - (tee_local $36 + (tee_local $35 (i32.eq (get_local $26) (i32.const 103) @@ -4364,18 +4338,14 @@ ) (block (result i32) (set_local $13 - (tee_local $11 - (i32.div_s - (tee_local $11 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 9216) - ) - ) + (i32.div_s + (tee_local $6 + (i32.add + (get_local $6) + (i32.const 9216) ) - (i32.const 9) ) + (i32.const 9) ) ) (if @@ -4395,14 +4365,14 @@ (set_local $11 (i32.const 10) ) - (loop $shape$228$continue + (loop $shape$229$continue (set_local $11 (i32.mul (get_local $11) (i32.const 10) ) ) - (br_if $shape$228$continue + (br_if $shape$229$continue (i32.ne (tee_local $6 (i32.add @@ -4440,7 +4410,7 @@ (if (i32.eqz (i32.and - (tee_local $33 + (tee_local $32 (i32.eq (i32.add (get_local $6) @@ -4452,12 +4422,10 @@ (i32.eqz (tee_local $13 (if (result i32) - (tee_local $27 - (get_local $11) - ) + (get_local $11) (i32.rem_u (get_local $13) - (get_local $27) + (get_local $11) ) (i32.const 0) ) @@ -4466,12 +4434,12 @@ ) ) (block $block$378$break - (set_local $37 + (set_local $36 (if (result i32) - (get_local $27) + (get_local $11) (i32.div_u (get_local $26) - (get_local $27) + (get_local $11) ) (i32.const 0) ) @@ -4479,13 +4447,11 @@ (set_local $15 (if (result f64) (i32.lt_u - (tee_local $44 - (get_local $13) - ) - (tee_local $13 + (get_local $13) + (tee_local $11 (i32.div_s - (tee_local $13 - (get_local $27) + (tee_local $37 + (get_local $11) ) (i32.const 2) ) @@ -4497,10 +4463,10 @@ (f64.const 1.5) (i32.and (i32.eq + (get_local $11) (get_local $13) - (get_local $44) ) - (get_local $33) + (get_local $32) ) ) ) @@ -4510,30 +4476,30 @@ (f64.const 9007199254740994) (f64.const 9007199254740992) (i32.and - (get_local $37) + (get_local $36) (i32.const 1) ) ) ) (if - (get_local $28) - (block $block$367$break - (br_if $block$367$break - (i32.ne - (i32.load8_s - (get_local $31) + (get_local $27) + (if + (i32.eq + (i32.load8_s + (get_local $30) + ) + (i32.const 45) + ) + (block + (set_local $24 + (f64.neg + (get_local $24) ) - (i32.const 45) ) - ) - (set_local $24 - (f64.neg - (get_local $24) - ) - ) - (set_local $15 - (f64.neg - (get_local $15) + (set_local $15 + (f64.neg + (get_local $15) + ) ) ) ) @@ -4543,7 +4509,7 @@ (tee_local $13 (i32.sub (get_local $26) - (get_local $44) + (get_local $13) ) ) ) @@ -4560,8 +4526,8 @@ (get_local $6) (tee_local $7 (i32.add - (get_local $11) (get_local $13) + (get_local $37) ) ) ) @@ -4570,7 +4536,7 @@ (get_local $7) (i32.const 999999999) ) - (loop $shape$260$continue + (loop $shape$261$continue (i32.store (get_local $6) (i32.const 0) @@ -4606,7 +4572,7 @@ ) ) ) - (br_if $shape$260$continue + (br_if $shape$261$continue (i32.gt_u (get_local $7) (i32.const 999999999) @@ -4639,14 +4605,14 @@ (set_local $11 (i32.const 10) ) - (loop $shape$267$continue + (loop $shape$268$continue (set_local $7 (i32.add (get_local $7) (i32.const 1) ) ) - (br_if $shape$267$continue + (br_if $shape$268$continue (i32.ge_u (get_local $13) (tee_local $11 @@ -4691,7 +4657,7 @@ ) ) ) - (set_local $33 + (set_local $32 (i32.sub (i32.const 0) (get_local $13) @@ -4700,7 +4666,7 @@ (set_local $26 (block $block$381$break (result i32) (block $block$389$break - (loop $shape$272$continue + (loop $shape$273$continue (br_if $block$389$break (i32.le_u (get_local $5) @@ -4722,7 +4688,7 @@ (set_local $5 (get_local $7) ) - (br $shape$272$continue) + (br $shape$273$continue) ) ) ) @@ -4733,388 +4699,379 @@ (i32.const 0) ) ) - (set_local $27 - (i32.add - (i32.add - (tee_local $5 - (block $block$392$break (result i32) - (set_local $9 - (get_local $5) - ) - (set_local $37 - (i32.add - (get_local $28) - (i32.const 1) - ) - ) - (if (result i32) - (get_local $36) - (block (result i32) - (set_local $7 - (if (result i32) - (i32.and - (i32.gt_s - (tee_local $5 - (i32.add - (i32.xor - (get_local $32) - (i32.const 1) - ) - (get_local $18) - ) - ) - (get_local $13) - ) - (i32.gt_s - (get_local $13) - (i32.const -5) - ) - ) - (block (result i32) - (set_local $18 - (i32.sub - (i32.add - (get_local $5) - (i32.const -1) - ) - (get_local $13) - ) - ) - (i32.add - (get_local $19) - (i32.const -1) - ) - ) - (block (result i32) - (set_local $18 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (i32.add - (get_local $19) - (i32.const -2) - ) - ) - ) - ) - (if - (tee_local $5 - (i32.and - (get_local $12) - (i32.const 8) - ) - ) - (block - (set_local $21 - (get_local $5) - ) - (br $block$392$break - (get_local $18) - ) - ) - ) - (if - (get_local $26) - (block $block$425$break - (if - (i32.eqz - (tee_local $19 - (i32.load - (i32.add - (get_local $9) - (i32.const -4) - ) - ) - ) - ) - (block - (set_local $5 - (i32.const 9) - ) - (br $block$425$break) - ) - ) - (if - (tee_local $5 - (i32.rem_u - (get_local $19) - (i32.const 10) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $block$425$break) - ) - ) - (set_local $6 - (i32.const 10) - ) - (set_local $5 - (i32.const 0) - ) - (loop $shape$301$continue - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $27 - (tee_local $6 - (i32.mul - (get_local $6) - (i32.const 10) - ) - ) - ) - (br_if $shape$301$continue - (i32.eqz - (tee_local $27 - (if (result i32) - (get_local $6) - (i32.rem_u - (get_local $19) - (get_local $27) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.const 9) - ) - ) - (set_local $6 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (get_local $9) - (get_local $21) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if (result i32) - (i32.eq - (i32.or - (get_local $7) - (i32.const 32) - ) - (i32.const 102) - ) - (block (result i32) - (set_local $21 - (i32.const 0) - ) - (select - (get_local $18) - (tee_local $5 - (select - (i32.const 0) - (tee_local $5 - (i32.sub - (get_local $6) - (get_local $5) - ) - ) - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (get_local $18) - (get_local $5) - ) - ) - ) - (block (result i32) - (set_local $21 - (i32.const 0) - ) - (select - (get_local $18) - (tee_local $5 - (select - (i32.const 0) - (tee_local $5 - (i32.sub - (i32.add - (get_local $6) - (get_local $13) - ) - (get_local $5) - ) - ) - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (get_local $18) - (get_local $5) - ) - ) - ) - ) - ) - (block (result i32) - (set_local $21 - (i32.and - (get_local $12) - (i32.const 8) - ) - ) - (set_local $7 - (get_local $19) - ) - (get_local $18) - ) - ) - ) - ) - (get_local $37) - ) - (i32.ne - (tee_local $32 - (i32.or - (get_local $5) - (get_local $21) - ) - ) - (i32.const 0) - ) - ) - ) (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (tee_local $13 (i32.add - (get_local $27) - (tee_local $7 - (if (result i32) - (tee_local $18 - (i32.eq - (i32.or - (get_local $7) - (i32.const 32) + (i32.add + (i32.add + (tee_local $5 + (block $block$392$break (result i32) + (set_local $9 + (get_local $5) ) - (i32.const 102) - ) - ) - (block (result i32) - (set_local $19 - (i32.const 0) - ) - (select - (get_local $13) - (i32.const 0) - (i32.gt_s - (get_local $13) - (i32.const 0) + (set_local $36 + (i32.add + (get_local $27) + (i32.const 1) + ) ) - ) - ) - (block (result i32) - (if - (i32.lt_s - (i32.sub - (get_local $23) - (tee_local $6 - (call $_fmt_u - (tee_local $6 - (select - (get_local $33) + (if (result i32) + (get_local $35) + (block (result i32) + (set_local $7 + (if (result i32) + (i32.and + (i32.gt_s + (tee_local $5 + (i32.add + (i32.xor + (get_local $31) + (i32.const 1) + ) + (get_local $17) + ) + ) (get_local $13) - (i32.lt_s + ) + (i32.gt_s + (get_local $13) + (i32.const -5) + ) + ) + (block (result i32) + (set_local $17 + (i32.sub + (i32.add + (get_local $5) + (i32.const -1) + ) (get_local $13) + ) + ) + (i32.add + (get_local $19) + (i32.const -1) + ) + ) + (block (result i32) + (set_local $17 + (i32.add + (get_local $5) + (i32.const -1) + ) + ) + (i32.add + (get_local $19) + (i32.const -2) + ) + ) + ) + ) + (if + (tee_local $5 + (i32.and + (get_local $12) + (i32.const 8) + ) + ) + (block + (set_local $21 + (get_local $5) + ) + (br $block$392$break + (get_local $17) + ) + ) + ) + (if + (get_local $26) + (block $block$425$break + (if + (i32.eqz + (tee_local $19 + (i32.load + (i32.add + (get_local $9) + (i32.const -4) + ) + ) + ) + ) + (block + (set_local $5 + (i32.const 9) + ) + (br $block$425$break) + ) + ) + (if + (i32.rem_u + (get_local $19) + (i32.const 10) + ) + (block + (set_local $5 (i32.const 0) ) + (br $block$425$break) + ) + ) + (set_local $6 + (i32.const 10) + ) + (set_local $5 + (i32.const 0) + ) + (loop $shape$302$continue + (set_local $5 + (i32.add + (get_local $5) + (i32.const 1) + ) + ) + (set_local $37 + (tee_local $6 + (i32.mul + (get_local $6) + (i32.const 10) + ) + ) + ) + (br_if $shape$302$continue + (i32.eqz + (if (result i32) + (get_local $6) + (i32.rem_u + (get_local $19) + (get_local $37) + ) + (i32.const 0) + ) + ) ) ) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $6) - (i32.const 0) + ) + (set_local $5 + (i32.const 9) + ) + ) + (set_local $6 + (i32.add + (i32.mul + (i32.shr_s + (i32.sub + (get_local $9) + (get_local $21) ) - (i32.const 31) + (i32.const 2) + ) + (i32.const 9) + ) + (i32.const -9) + ) + ) + (if (result i32) + (i32.eq + (i32.or + (get_local $7) + (i32.const 32) + ) + (i32.const 102) + ) + (block (result i32) + (set_local $21 + (i32.const 0) + ) + (select + (get_local $17) + (tee_local $5 + (select + (i32.const 0) + (tee_local $5 + (i32.sub + (get_local $6) + (get_local $5) + ) + ) + (i32.lt_s + (get_local $5) + (i32.const 0) + ) + ) + ) + (i32.lt_s + (get_local $17) + (get_local $5) + ) + ) + ) + (block (result i32) + (set_local $21 + (i32.const 0) + ) + (select + (get_local $17) + (tee_local $5 + (select + (i32.const 0) + (tee_local $5 + (i32.sub + (i32.add + (get_local $6) + (get_local $13) + ) + (get_local $5) + ) + ) + (i32.lt_s + (get_local $5) + (i32.const 0) + ) + ) + ) + (i32.lt_s + (get_local $17) + (get_local $5) + ) + ) + ) + ) + ) + (block (result i32) + (set_local $21 + (i32.and + (get_local $12) + (i32.const 8) + ) + ) + (set_local $7 + (get_local $19) + ) + (get_local $17) + ) + ) + ) + ) + (get_local $36) + ) + (i32.ne + (tee_local $31 + (i32.or + (get_local $5) + (get_local $21) + ) + ) + (i32.const 0) + ) + ) + (if (result i32) + (tee_local $17 + (i32.eq + (i32.or + (get_local $7) + (i32.const 32) + ) + (i32.const 102) + ) + ) + (block (result i32) + (set_local $19 + (i32.const 0) + ) + (select + (get_local $13) + (i32.const 0) + (i32.gt_s + (get_local $13) + (i32.const 0) + ) + ) + ) + (block (result i32) + (if + (i32.lt_s + (i32.sub + (get_local $23) + (tee_local $6 + (call $_fmt_u + (tee_local $6 + (select + (get_local $32) + (get_local $13) + (i32.lt_s + (get_local $13) + (i32.const 0) + ) + ) + ) + (i32.shr_s + (i32.shl + (i32.lt_s + (get_local $6) + (i32.const 0) ) (i32.const 31) ) - (get_local $23) + (i32.const 31) ) - ) - ) - (i32.const 2) - ) - (loop $shape$321$continue - (i32.store8 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $shape$321$continue - (i32.lt_s - (i32.sub - (get_local $23) - (get_local $6) - ) - (i32.const 2) + (get_local $23) ) ) ) + (i32.const 2) ) - (i32.store8 - (i32.add - (get_local $6) - (i32.const -1) + (loop $shape$322$continue + (i32.store8 + (tee_local $6 + (i32.add + (get_local $6) + (i32.const -1) + ) + ) + (i32.const 48) ) - (i32.add - (i32.and - (i32.shr_s - (get_local $13) - (i32.const 31) + (br_if $shape$322$continue + (i32.lt_s + (i32.sub + (get_local $23) + (get_local $6) ) (i32.const 2) ) - (i32.const 43) ) ) - (i32.store8 - (tee_local $19 - (i32.add - (get_local $6) - (i32.const -2) + ) + (i32.store8 + (i32.add + (get_local $6) + (i32.const -1) + ) + (i32.add + (i32.and + (i32.shr_s + (get_local $13) + (i32.const 31) ) + (i32.const 2) ) - (get_local $7) + (i32.const 43) ) - (i32.sub - (get_local $23) - (get_local $19) + ) + (i32.store8 + (tee_local $19 + (i32.add + (get_local $6) + (i32.const -2) + ) ) + (get_local $7) + ) + (i32.sub + (get_local $23) + (get_local $19) ) ) ) @@ -5133,8 +5090,8 @@ ) (drop (call $___fwritex - (get_local $31) - (get_local $28) + (get_local $30) + (get_local $27) (get_local $0) ) ) @@ -5142,7 +5099,7 @@ (call $_pad (get_local $0) (i32.const 48) - (get_local $16) + (get_local $18) (get_local $13) (i32.xor (get_local $12) @@ -5150,7 +5107,7 @@ ) ) (if - (get_local $18) + (get_local $17) (block (set_local $6 (tee_local $11 @@ -5164,14 +5121,14 @@ ) ) ) - (loop $shape$330$continue + (loop $shape$331$continue (set_local $7 (call $_fmt_u (i32.load (get_local $6) ) (i32.const 0) - (get_local $30) + (get_local $29) ) ) (block $block$442$break @@ -5184,15 +5141,15 @@ (br_if $block$442$break (i32.ne (get_local $7) - (get_local $30) + (get_local $29) ) ) (i32.store8 - (get_local $34) + (get_local $33) (i32.const 48) ) (set_local $7 - (get_local $34) + (get_local $33) ) ) (block @@ -5202,7 +5159,7 @@ (get_local $22) ) ) - (loop $shape$336$continue + (loop $shape$337$continue (i32.store8 (tee_local $7 (i32.add @@ -5212,7 +5169,7 @@ ) (i32.const 48) ) - (br_if $shape$336$continue + (br_if $shape$337$continue (i32.gt_u (get_local $7) (get_local $22) @@ -5243,27 +5200,25 @@ ) ) (if - (i32.eqz - (i32.gt_u - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) + (i32.le_u + (tee_local $7 + (i32.add + (get_local $6) + (i32.const 4) ) - (get_local $8) ) + (get_local $8) ) (block (set_local $6 (get_local $7) ) - (br $shape$330$continue) + (br $shape$331$continue) ) ) ) (if - (get_local $32) + (get_local $31) (if (i32.eqz (i32.and @@ -5294,7 +5249,7 @@ ) ) (block - (loop $shape$349$continue + (loop $shape$350$continue (if (i32.gt_u (tee_local $6 @@ -5303,12 +5258,12 @@ (get_local $7) ) (i32.const 0) - (get_local $30) + (get_local $29) ) ) (get_local $22) ) - (loop $shape$352$continue + (loop $shape$353$continue (i32.store8 (tee_local $6 (i32.add @@ -5318,7 +5273,7 @@ ) (i32.const 48) ) - (br_if $shape$352$continue + (br_if $shape$353$continue (i32.gt_u (get_local $6) (get_local $22) @@ -5376,7 +5331,7 @@ (set_local $5 (get_local $6) ) - (br $shape$349$continue) + (br $shape$350$continue) ) ) ) @@ -5413,7 +5368,7 @@ (i32.const -1) ) (block - (set_local $18 + (set_local $17 (i32.eqz (get_local $21) ) @@ -5424,27 +5379,27 @@ (set_local $7 (get_local $5) ) - (loop $shape$364$continue + (loop $shape$365$continue (if (i32.eq - (get_local $30) + (get_local $29) (tee_local $5 (call $_fmt_u (i32.load (get_local $6) ) (i32.const 0) - (get_local $30) + (get_local $29) ) ) ) (block (i32.store8 - (get_local $34) + (get_local $33) (i32.const 48) ) (set_local $5 - (get_local $34) + (get_local $33) ) ) ) @@ -5484,7 +5439,7 @@ (get_local $7) (i32.const 1) ) - (get_local $18) + (get_local $17) ) ) (br_if $block$481$break @@ -5510,7 +5465,7 @@ (get_local $22) ) ) - (loop $shape$377$continue + (loop $shape$378$continue (i32.store8 (tee_local $5 (i32.add @@ -5520,7 +5475,7 @@ ) (i32.const 48) ) - (br_if $shape$377$continue + (br_if $shape$378$continue (i32.gt_u (get_local $5) (get_local $22) @@ -5560,7 +5515,7 @@ ) ) ) - (br_if $shape$364$continue + (br_if $shape$365$continue (i32.and (i32.lt_u (tee_local $6 @@ -5621,7 +5576,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (get_local $13) (i32.xor (get_local $12) @@ -5629,11 +5584,11 @@ ) ) (select - (get_local $16) + (get_local $18) (get_local $13) (i32.lt_s (get_local $13) - (get_local $16) + (get_local $18) ) ) ) @@ -5641,13 +5596,13 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (tee_local $7 (i32.add (tee_local $9 (select (i32.const 0) - (get_local $28) + (get_local $27) (tee_local $6 (f64.ne (get_local $15) @@ -5675,7 +5630,7 @@ (block (drop (call $___fwritex - (get_local $31) + (get_local $30) (get_local $9) (get_local $0) ) @@ -5728,7 +5683,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (get_local $7) (i32.xor (get_local $12) @@ -5736,11 +5691,11 @@ ) ) (select - (get_local $16) + (get_local $18) (get_local $7) (i32.lt_s (get_local $7) - (get_local $16) + (get_local $18) ) ) ) @@ -5767,7 +5722,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (i32.const 0) (get_local $12) ) @@ -5790,7 +5745,7 @@ ) ) (i32.store - (get_local $45) + (get_local $44) (i32.const 0) ) (i32.store @@ -5966,7 +5921,7 @@ (set_local $8 (get_local $25) ) - (loop $shape$417$continue + (loop $shape$418$continue (i32.store8 (tee_local $8 (i32.add @@ -5982,7 +5937,7 @@ (i32.const 48) ) ) - (br_if $shape$417$continue + (br_if $shape$418$continue (i32.or (tee_local $5 (call $_bitshift64Lshr @@ -6093,14 +6048,14 @@ (get_local $14) ) ) - (get_local $17) + (get_local $16) ) (i32.store offset=4 (get_local $5) (i32.shr_s (i32.shl (i32.lt_s - (get_local $17) + (get_local $16) (i32.const 0) ) (i32.const 31) @@ -6120,7 +6075,7 @@ (i32.load (get_local $14) ) - (get_local $17) + (get_local $16) ) (set_local $5 (get_local $10) @@ -6134,7 +6089,7 @@ (i32.load (get_local $14) ) - (get_local $17) + (get_local $16) ) (set_local $5 (get_local $10) @@ -6148,7 +6103,7 @@ (i32.load (get_local $14) ) - (get_local $17) + (get_local $16) ) (set_local $5 (get_local $10) @@ -6164,14 +6119,14 @@ (get_local $14) ) ) - (get_local $17) + (get_local $16) ) (i32.store offset=4 (get_local $5) (i32.shr_s (i32.shl (i32.lt_s - (get_local $17) + (get_local $16) (i32.const 0) ) (i32.const 31) @@ -6191,7 +6146,7 @@ (i32.load (get_local $14) ) - (get_local $17) + (get_local $16) ) (set_local $5 (get_local $10) @@ -6205,7 +6160,7 @@ (i32.load (get_local $14) ) - (get_local $17) + (get_local $16) ) (set_local $5 (get_local $10) @@ -6273,7 +6228,7 @@ (set_local $8 (get_local $25) ) - (loop $shape$463$continue + (loop $shape$464$continue (i32.store8 (tee_local $8 (i32.add @@ -6294,7 +6249,7 @@ (get_local $9) ) ) - (br_if $shape$463$continue + (br_if $shape$464$continue (i32.or (tee_local $7 (call $_bitshift64Lshr @@ -6419,7 +6374,7 @@ (get_local $14) ) ) - (loop $shape$440$continue + (loop $shape$441$continue (block $block$509$break (br_if $block$509$break (i32.eqz @@ -6435,7 +6390,7 @@ (i32.lt_s (tee_local $7 (call $_wctomb - (get_local $35) + (get_local $34) (get_local $9) ) ) @@ -6456,7 +6411,7 @@ (i32.const 4) ) ) - (br_if $shape$440$continue + (br_if $shape$441$continue (i32.gt_u (get_local $8) (tee_local $5 @@ -6478,7 +6433,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (get_local $5) (get_local $12) ) @@ -6493,7 +6448,7 @@ (get_local $14) ) ) - (loop $shape$448$continue + (loop $shape$449$continue (set_local $9 (get_local $5) ) @@ -6512,7 +6467,7 @@ (i32.add (tee_local $8 (call $_wctomb - (get_local $35) + (get_local $34) (get_local $8) ) ) @@ -6533,7 +6488,7 @@ ) (drop (call $___fwritex - (get_local $35) + (get_local $34) (get_local $8) (get_local $0) ) @@ -6545,7 +6500,7 @@ (i32.const 4) ) ) - (br_if $shape$448$continue + (br_if $shape$449$continue (i32.lt_u (get_local $6) (get_local $5) @@ -6564,7 +6519,7 @@ (call $_pad (get_local $0) (i32.const 32) - (get_local $16) + (get_local $18) (tee_local $7 (get_local $9) ) @@ -6578,10 +6533,10 @@ ) (set_local $10 (select - (get_local $16) + (get_local $18) (get_local $7) (i32.gt_s - (get_local $16) + (get_local $18) (get_local $7) ) ) @@ -6686,9 +6641,9 @@ (get_local $8) ) ) - (get_local $16) + (get_local $18) (i32.lt_s - (get_local $16) + (get_local $18) (get_local $6) ) ) @@ -6766,42 +6721,42 @@ (br $shape$4$continue) ) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const 0) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) (br $block$4$break) @@ -6814,7 +6769,7 @@ (get_local $1) ) (block - (set_local $17 + (set_local $16 (i32.const 0) ) (br $block$4$break) @@ -6824,7 +6779,7 @@ (i32.const 1) ) (block $block$558$break - (loop $shape$495$continue + (loop $shape$496$continue (br_if $block$558$break (i32.eqz (tee_local $1 @@ -6851,7 +6806,7 @@ (get_local $1) (get_local $2) ) - (br_if $shape$495$continue + (br_if $shape$496$continue (i32.lt_s (tee_local $0 (i32.add @@ -6863,7 +6818,7 @@ ) ) ) - (set_local $17 + (set_local $16 (i32.const 1) ) (br $block$4$break) @@ -6874,14 +6829,14 @@ (i32.const 10) ) (block - (set_local $17 + (set_local $16 (i32.const 1) ) (br $block$4$break) ) ) (block $block$576$break - (loop $shape$503$continue + (loop $shape$504$continue (br_if $block$576$break (i32.load (i32.add @@ -6893,7 +6848,7 @@ ) ) ) - (br_if $shape$503$continue + (br_if $shape$504$continue (i32.lt_s (tee_local $0 (i32.add @@ -6905,19 +6860,19 @@ ) ) ) - (set_local $17 + (set_local $16 (i32.const 1) ) (br $block$4$break) ) - (set_local $17 + (set_local $16 (i32.const -1) ) ) (set_global $STACKTOP (get_local $14) ) - (get_local $17) + (get_local $16) ) (func $_pop_arg_336 (; 46 ;) (; has Stack IR ;) (type $10) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -7399,20 +7354,16 @@ (get_local $0) (loop $shape$8$continue (i32.store8 - (tee_local $1 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) + (tee_local $2 + (i32.add + (get_local $2) + (i32.const -1) ) ) (i32.or - (tee_local $3 - (i32.rem_u - (get_local $0) - (i32.const 10) - ) + (i32.rem_u + (get_local $0) + (i32.const 10) ) (i32.const 48) ) @@ -7424,11 +7375,9 @@ ) ) (if - (i32.eqz - (i32.lt_u - (get_local $0) - (i32.const 10) - ) + (i32.ge_u + (get_local $0) + (i32.const 10) ) (block (set_local $0 @@ -9142,9 +9091,7 @@ (block (drop (br_if $block$3$break - (tee_local $4 - (get_local $2) - ) + (get_local $2) (i32.eqz (tee_local $1 (i32.and @@ -11187,491 +11134,489 @@ (i32.store (tee_local $0 (i32.add - (tee_local $0 - (if (result i32) - (i32.eq - (i32.and - (tee_local $0 - (i32.load offset=4 - (get_local $7) - ) + (if (result i32) + (i32.eq + (i32.and + (tee_local $0 + (i32.load offset=4 + (get_local $7) ) + ) + (i32.const 3) + ) + (i32.const 1) + ) + (block (result i32) + (set_local $10 + (i32.and + (get_local $0) + (i32.const -8) + ) + ) + (set_local $1 + (i32.shr_u + (get_local $0) (i32.const 3) ) - (i32.const 1) ) - (block (result i32) - (set_local $10 - (i32.and + (block $block$520$break + (if + (i32.lt_u (get_local $0) - (i32.const -8) + (i32.const 256) ) - ) - (set_local $1 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (block $block$520$break - (if - (i32.lt_u - (get_local $0) - (i32.const 256) + (block + (set_local $2 + (i32.load offset=12 + (get_local $7) + ) ) - (block - (set_local $2 - (i32.load offset=12 - (get_local $7) + (if + (i32.ne + (tee_local $0 + (i32.add + (i32.shl + (get_local $1) + (i32.const 3) + ) + (i32.const 216) + ) + ) + (tee_local $3 + (i32.load offset=8 + (get_local $7) + ) ) ) - (if - (i32.ne - (tee_local $0 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (tee_local $3 - (i32.load offset=8 - (get_local $7) - ) - ) - ) - (block $block$523$break - (if - (i32.lt_u - (get_local $3) - (get_local $4) - ) - (call $_abort) - ) - (br_if $block$523$break - (i32.eq - (i32.load offset=12 - (get_local $3) - ) - (get_local $7) - ) + (block $block$523$break + (if + (i32.lt_u + (get_local $3) + (get_local $4) ) (call $_abort) ) - ) - (if - (i32.eq - (get_local $2) - (get_local $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $block$520$break) - ) - ) - (if - (i32.eq - (get_local $0) - (get_local $2) - ) - (set_local $15 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (set_local $15 - (get_local $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $15) - (get_local $3) - ) - ) - (block - (set_local $5 - (i32.load offset=24 - (get_local $7) - ) - ) - (if - (i32.eq - (get_local $7) - (tee_local $0 + (br_if $block$523$break + (i32.eq (i32.load offset=12 - (get_local $7) + (get_local $3) ) - ) - ) - (block $block$551$break - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $block$551$break - (i32.eqz - (tee_local $1 - (i32.load - (get_local $3) - ) - ) - ) - ) - (set_local $0 - (get_local $3) - ) - ) - ) - (loop $shape$418$continue - (if - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $2) - ) - (br $shape$418$continue) - ) - ) - (if - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $2) - ) - (br $shape$418$continue) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $4) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $9 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $2 - (i32.load offset=8 - (get_local $7) - ) - ) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - ) - (get_local $7) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store - (get_local $3) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (set_local $9 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $block$520$break - (i32.eqz - (get_local $5) - ) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $7) - ) - ) - (i32.const 2) - ) - (i32.const 480) - ) - ) - ) - (get_local $7) - ) - (block $block$587$break - (i32.store - (get_local $0) - (get_local $9) - ) - (br_if $block$587$break - (get_local $9) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $block$520$break) - ) - (block - (if - (i32.lt_u - (get_local $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 16) - ) - ) - ) - (get_local $7) - ) - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store offset=20 - (get_local $5) - (get_local $9) - ) - ) - (br_if $block$520$break - (i32.eqz - (get_local $9) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $1 - (i32.load - (i32.const 192) - ) + (get_local $7) ) ) (call $_abort) ) - (i32.store offset=24 - (get_local $9) - (get_local $5) + ) + (if + (i32.eq + (get_local $2) + (get_local $3) ) - (if - (tee_local $3 - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 16) + (block + (i32.store + (i32.const 176) + (i32.and + (i32.load + (i32.const 176) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) + ) + ) + ) + (br $block$520$break) + ) + ) + (if + (i32.eq + (get_local $0) + (get_local $2) + ) + (set_local $15 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (block + (if + (i32.lt_u + (get_local $2) + (get_local $4) + ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + ) + (get_local $7) + ) + (set_local $15 + (get_local $0) + ) + (call $_abort) + ) + ) + ) + (i32.store offset=12 + (get_local $3) + (get_local $2) + ) + (i32.store + (get_local $15) + (get_local $3) + ) + ) + (block + (set_local $5 + (i32.load offset=24 + (get_local $7) + ) + ) + (if + (i32.eq + (get_local $7) + (tee_local $0 + (i32.load offset=12 + (get_local $7) + ) + ) + ) + (block $block$551$break + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (tee_local $3 + (i32.add + (get_local $7) + (i32.const 16) + ) + ) + (i32.const 4) + ) + ) + ) + ) + ) + (block + (br_if $block$551$break + (i32.eqz + (tee_local $1 + (i32.load + (get_local $3) + ) + ) + ) + ) + (set_local $0 + (get_local $3) + ) + ) + ) + (loop $shape$418$continue + (if + (tee_local $3 + (i32.load + (tee_local $2 + (i32.add + (get_local $1) + (i32.const 20) + ) + ) + ) + ) + (block + (set_local $1 + (get_local $3) + ) + (set_local $0 + (get_local $2) + ) + (br $shape$418$continue) + ) + ) + (if + (tee_local $3 + (i32.load + (tee_local $2 + (i32.add + (get_local $1) + (i32.const 16) + ) + ) + ) + ) + (block + (set_local $1 + (get_local $3) + ) + (set_local $0 + (get_local $2) + ) + (br $shape$418$continue) ) ) ) (if (i32.lt_u - (get_local $3) - (get_local $1) + (get_local $0) + (get_local $4) ) (call $_abort) (block - (i32.store offset=16 - (get_local $9) - (get_local $3) + (i32.store + (get_local $0) + (i32.const 0) ) - (i32.store offset=24 - (get_local $3) - (get_local $9) + (set_local $9 + (get_local $1) ) ) ) ) - (br_if $block$520$break - (i32.eqz - (tee_local $0 - (i32.load offset=4 + (block + (if + (i32.lt_u + (tee_local $2 + (i32.load offset=8 + (get_local $7) + ) + ) + (get_local $4) + ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $3 + (i32.add + (get_local $2) + (i32.const 12) + ) + ) + ) + (get_local $7) + ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) + ) + ) + ) + (get_local $7) + ) + (block + (i32.store + (get_local $3) (get_local $0) ) + (i32.store + (get_local $1) + (get_local $2) + ) + (set_local $9 + (get_local $0) + ) + ) + (call $_abort) + ) + ) + ) + (br_if $block$520$break + (i32.eqz + (get_local $5) + ) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $7) + ) + ) + (i32.const 2) + ) + (i32.const 480) + ) + ) + ) + (get_local $7) + ) + (block $block$587$break + (i32.store + (get_local $0) + (get_local $9) + ) + (br_if $block$587$break + (get_local $9) + ) + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) + ) + (i32.const -1) + ) + ) + ) + (br $block$520$break) + ) + (block + (if + (i32.lt_u + (get_local $5) + (i32.load + (i32.const 192) + ) + ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $5) + (i32.const 16) + ) + ) + ) + (get_local $7) + ) + (i32.store + (get_local $0) + (get_local $9) + ) + (i32.store offset=20 + (get_local $5) + (get_local $9) + ) + ) + (br_if $block$520$break + (i32.eqz + (get_local $9) + ) + ) + ) + ) + (if + (i32.lt_u + (get_local $9) + (tee_local $1 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $9) + (get_local $5) + ) + (if + (tee_local $3 + (i32.load + (tee_local $0 + (i32.add + (get_local $7) + (i32.const 16) + ) ) ) ) (if (i32.lt_u - (get_local $0) - (i32.load - (i32.const 192) - ) + (get_local $3) + (get_local $1) ) (call $_abort) (block - (i32.store offset=20 + (i32.store offset=16 (get_local $9) - (get_local $0) + (get_local $3) ) (i32.store offset=24 - (get_local $0) + (get_local $3) (get_local $9) ) ) ) ) + (br_if $block$520$break + (i32.eqz + (tee_local $0 + (i32.load offset=4 + (get_local $0) + ) + ) + ) + ) + (if + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) + ) + ) + (call $_abort) + (block + (i32.store offset=20 + (get_local $9) + (get_local $0) + ) + (i32.store offset=24 + (get_local $0) + (get_local $9) + ) + ) + ) ) ) - (set_local $6 - (i32.add - (get_local $6) - (get_local $10) - ) - ) + ) + (set_local $6 (i32.add - (get_local $7) + (get_local $6) (get_local $10) ) ) - (get_local $7) + (i32.add + (get_local $7) + (get_local $10) + ) ) + (get_local $7) ) (i32.const 4) ) @@ -11807,98 +11752,94 @@ (i32.const 8) ) ) - (block $block$637$break (result i32) - (drop - (br_if $block$637$break - (tee_local $2 - (i32.const 31) - ) - (i32.gt_u - (get_local $6) - (i32.const 16777215) - ) - ) + (if (result i32) + (i32.gt_u + (get_local $6) + (i32.const 16777215) ) - (set_local $3 - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $3) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (get_local $6) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (get_local $3) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (i32.const 31) + (block (result i32) + (set_local $3 + (i32.or + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 245760) + (i32.const 16) ) - (i32.const 16) + (i32.const 8) ) - (i32.const 2) ) ) ) + (i32.const 520192) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) + (i32.const 16) + ) + (i32.const 4) + ) + ) + (get_local $3) + ) + ) + (i32.or + (i32.and + (i32.shr_u + (get_local $6) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or + (get_local $3) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) + ) + ) + (i32.const 245760) + ) + (i32.const 16) + ) + (i32.const 2) + ) + ) + ) ) - (i32.const 15) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) + ) + (i32.const 15) + ) ) ) + (i32.const 7) ) - (i32.const 7) ) + (i32.const 1) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) + (i32.shl + (get_local $0) + (i32.const 1) + ) ) ) ) @@ -13535,13 +13476,6 @@ ) ) ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $block$10$break) ) (block (if @@ -13577,15 +13511,15 @@ (br_if $block$119$break (get_local $6) ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $block$10$break) ) ) + (set_local $2 + (get_local $1) + ) + (set_local $3 + (get_local $0) + ) + (br $block$10$break) ) (if (i32.lt_u @@ -13761,12 +13695,10 @@ ) ) (if - (i32.eqz - (i32.ne - (i32.load - (i32.const 196) - ) - (get_local $2) + (i32.eq + (get_local $2) + (i32.load + (i32.const 196) ) ) (block @@ -14932,11 +14864,9 @@ ) (loop $shape$12$continue (if - (i32.eqz - (i32.ge_s - (get_local $0) - (get_local $4) - ) + (i32.lt_s + (get_local $0) + (get_local $4) ) (block (i32.store8 @@ -15176,11 +15106,9 @@ ) (loop $shape$14$continue (if - (i32.eqz - (i32.le_s - (get_local $2) - (i32.const 0) - ) + (i32.gt_s + (get_local $2) + (i32.const 0) ) (block (i32.store8