(module (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (global $global$0 (mut i32) (i32.const 1)) (func $basics (param $x i32) (local $y i32) (local $z f32) (local $w i64) (local $t f64) (local $5 i32) (local $6 f64) (local $7 f64) (drop (local.get $x) ) (drop (i32.const 0) ) (drop (f32.const 0) ) (drop (i64.const 0) ) (drop (f64.const 0) ) (local.set $5 (i32.const 100) ) (drop (local.get $5) ) (local.set $6 (f64.const 2) ) (drop (local.get $6) ) (local.set $7 (f64.const 33) ) (drop (local.get $7) ) (drop (local.get $7) ) ) (func $if (param $p i32) (local $x i32) (local $y i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) (local.set $13 (local.get $p) ) (block (drop (if (result i32) (i32.const 1) (i32.const 0) (i32.const 0) ) ) (if (i32.const 1) (local.set $3 (local.tee $15 (local.tee $14 (local.tee $12 (i32.const 1) ) ) ) ) ) (drop (local.get $12) ) (if (i32.const 1) (local.set $4 (local.tee $13 (i32.const 1) ) ) ) (drop (local.get $13) ) (if (i32.const 1) (local.set $5 (local.tee $15 (local.tee $14 (i32.const 2) ) ) ) (nop) ) (drop (local.get $14) ) (if (i32.const 1) (nop) (local.set $6 (local.tee $15 (i32.const 3) ) ) ) (drop (local.get $15) ) (if (i32.const 1) (local.set $7 (local.tee $16 (i32.const 4) ) ) (local.set $8 (local.tee $16 (i32.const 5) ) ) ) (drop (local.get $16) ) (if (i32.const 1) (local.set $9 (local.tee $17 (i32.const 6) ) ) (block $block (local.set $10 (i32.const 7) ) (local.set $11 (local.tee $17 (i32.const 8) ) ) ) ) (drop (local.get $17) ) ) ) (func $if2 (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 (local.get $x) ) (block (if (i32.const 1) (block $block (local.set $1 (local.tee $2 (i32.const 1) ) ) (drop (local.get $1) ) ) ) (drop (local.get $2) ) ) ) (func $block (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 (local.get $x) ) (block (block $out (br_if $out (i32.const 2) ) (local.set $1 (local.tee $2 (i32.const 1) ) ) ) (drop (local.get $2) ) ) ) (func $block2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (block $out (local.set $1 (local.tee $6 (i32.const 1) ) ) (drop (local.get $1) ) (br_if $out (i32.const 2) ) (drop (local.get $1) ) (if (i32.const 3) (block $block (local.set $2 (local.tee $6 (i32.const 1) ) ) (drop (local.get $2) ) (br $out) ) ) (drop (local.get $1) ) (local.set $3 (local.tee $6 (i32.const 4) ) ) (drop (local.get $3) ) (if (i32.const 5) (br $out) ) (drop (local.get $3) ) (if (i32.const 6) (nop) ) (if (i32.const 7) (nop) (nop) ) (block $in (local.set $4 (local.tee $6 (i32.const 8) ) ) (drop (local.get $4) ) (br_table $in $out (i32.const 9) ) ) (drop (local.get $4) ) (block $in2 (local.set $5 (local.tee $6 (i32.const 10) ) ) (drop (local.get $5) ) (br_table $out $in2 (i32.const 11) ) ) (drop (local.get $5) ) ) (drop (local.get $6) ) ) (func $loop (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 (local.get $x) ) (block (drop (local.get $x) ) (loop $moar (drop (local.get $2) ) (local.set $1 (local.tee $2 (i32.const 1) ) ) (br_if $moar (i32.const 2) ) ) (drop (local.get $1) ) ) ) (func $loop2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local.set $4 (local.get $x) ) (block (drop (local.get $x) ) (loop $moar (drop (local.get $4) ) (local.set $1 (i32.const 1) ) (drop (local.get $1) ) (local.set $2 (local.tee $4 (i32.const 123) ) ) (drop (local.get $2) ) (br_if $moar (i32.const 2) ) (drop (local.get $2) ) (local.set $3 (i32.const 3) ) (drop (local.get $3) ) ) (drop (local.get $3) ) ) ) (func $loop2-zeroinit (local $x i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (drop (i32.const 0) ) (loop $moar (drop (local.get $4) ) (local.set $1 (i32.const 1) ) (drop (local.get $1) ) (local.set $2 (local.tee $4 (i32.const 123) ) ) (drop (local.get $2) ) (br_if $moar (i32.const 2) ) (drop (local.get $2) ) (local.set $3 (i32.const 3) ) (drop (local.get $3) ) ) (drop (local.get $3) ) ) (func $real-loop (param $param i32) (local $loopvar i32) (local $inc i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local.set $3 (local.tee $6 (local.tee $5 (local.get $param) ) ) ) (loop $more (block $stop (if (i32.const 1) (br $stop) ) (local.set $inc (i32.add (local.get $5) (i32.const 1) ) ) (local.set $4 (local.tee $6 (local.tee $5 (local.get $inc) ) ) ) (br $more) ) ) (drop (local.get $6) ) ) (func $real-loop-outblock (param $param i32) (local $loopvar i32) (local $inc i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local.set $3 (local.tee $6 (local.tee $5 (local.get $param) ) ) ) (block $stop (loop $more (if (i32.const 1) (br $stop) ) (local.set $inc (i32.add (local.get $5) (i32.const 1) ) ) (local.set $4 (local.tee $6 (local.tee $5 (local.get $inc) ) ) ) (br $more) ) ) (drop (local.get $6) ) ) (func $loop-loop-param (param $param i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local.set $3 (local.get $param) ) (local.set $4 (local.get $param) ) (block (loop $loop1 (block $out1 (if (local.get $3) (br $out1) ) (local.set $1 (local.tee $4 (local.tee $3 (i32.const 1) ) ) ) (br $loop1) ) ) (loop $loop2 (block $out2 (if (local.get $4) (br $out2) ) (local.set $2 (local.tee $4 (i32.const 2) ) ) (br $loop2) ) ) ) ) (func $loop-loop-param-nomerge (param $param i32) (local $1 i32) (local $2 i32) (local $3 i32) (loop $loop1 (block $out1 (local.set $1 (local.tee $3 (i32.const 1) ) ) (if (local.get $1) (br $out1) ) (br $loop1) ) ) (loop $loop2 (block $out2 (if (local.get $3) (br $out2) ) (local.set $2 (local.tee $3 (i32.const 2) ) ) (br $loop2) ) ) ) (func $loop-nesting (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local.set $3 (local.get $x) ) (local.set $4 (local.get $x) ) (local.set $5 (local.get $x) ) (block (block $out (loop $loop1 (if (local.get $3) (br $out) ) (loop $loop2 (if (local.get $4) (br $out) ) (local.set $1 (local.tee $5 (local.tee $4 (i32.const 1) ) ) ) (br $loop2) ) (local.set $2 (local.tee $5 (local.tee $4 (local.tee $3 (i32.const 2) ) ) ) ) (br $loop1) ) ) (drop (local.get $5) ) ) ) (func $loop-nesting-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local.set $3 (local.get $x) ) (local.set $4 (local.get $x) ) (local.set $5 (local.get $x) ) (block (block $out (loop $loop1 (if (local.get $3) (br $out) ) (loop $loop2 (if (local.get $4) (br $out) ) (local.set $1 (local.tee $5 (local.tee $4 (i32.const 1) ) ) ) (br_if $loop2 (i32.const 3) ) ) (local.set $2 (local.tee $5 (local.tee $4 (local.tee $3 (i32.const 2) ) ) ) ) (br $loop1) ) ) (drop (local.get $5) ) ) ) (func $func_6 (result i32) (local $result i32) (local $zero i32) (local $2 i32) (local $3 i32) (local $4 i32) (loop $label$1 (if (i32.eqz (global.get $global$0) ) (return (local.get $4) ) ) (global.set $global$0 (i32.const 0) ) (local.set $2 (local.tee $4 (i32.const 1) ) ) (br_if $label$1 (i32.const 0) ) (local.set $3 (local.tee $4 (i32.const 0) ) ) (br $label$1) ) ) (func $ssa-merge-tricky (result i32) (local $var$0 i32) (local $var$1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local.set $3 (local.tee $8 (local.tee $2 (local.tee $7 (i32.const 0) ) ) ) ) (loop $label$1 (if (i32.eqz (global.get $global$0) ) (return (i32.const 12345) ) ) (global.set $global$0 (i32.const 0) ) (if (i32.eqz (local.get $7) ) (br_if $label$1 (i32.eqz (local.tee $4 (local.tee $7 (i32.const 1) ) ) ) ) ) (br_if $label$1 (i32.eqz (local.tee $6 (local.tee $8 (local.tee $5 (local.tee $7 (local.get $8) ) ) ) ) ) ) ) (i32.const -54) ) )