(module (memory 256 256) (type $i (func (param i32))) (type $ii (func (param i32 i32))) (type $iii (func (param i32 i32 i32))) (type $3 (func)) (table 1 1 anyfunc) (elem (i32.const 0) $call-i) (func $call-i (type $i) (param $0 i32) (nop) ) (func $call-ii (type $ii) (param $0 i32) (param $1 i32) (nop) ) (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) (nop) ) (func $b0-yes (type $i) (param $i1 i32) (drop (i32.const 10) ) ) (func $b0-no (type $i) (param $i1 i32) (block $topmost (block $block0 (br $block0) ) (br $topmost) ) ) (func $b0-br-but-ok (type $i) (param $i1 i32) (block $topmost (br $topmost) ) ) (func $b1-yes (type $i) (param $i1 i32) (drop (i32.const 10) ) ) (func $b2-yes (type $i) (param $i1 i32) (drop (i32.const 5) ) (drop (i32.const 10) ) (drop (i32.const 15) ) ) (func $b3-yes (type $i) (param $i1 i32) (drop (i32.const 3) ) (drop (i32.const 6) ) (drop (i32.const 10) ) (drop (i32.const 15) ) (drop (i32.const 20) ) ) (func $b4 (type $i) (param $i1 i32) (block $inner (drop (i32.const 10) ) (br $inner) ) ) (func $b5 (type $i) (param $i1 i32) (block $middle (block $inner (drop (i32.const 10) ) (br $inner) ) (br $middle) ) ) (func $b6 (type $i) (param $i1 i32) (drop (i32.const 5) ) (block $inner (drop (i32.const 10) ) (br $inner) ) (drop (i32.const 15) ) ) (func $b7 (type $i) (param $i1 i32) (drop (i32.const 3) ) (block $middle (drop (i32.const 6) ) (block $inner (drop (i32.const 10) ) (br $inner) ) (drop (i32.const 15) ) (br $middle) ) (drop (i32.const 20) ) ) (func $unary (type $3) (local $x i32) (drop (i32.eqz (block (i32.const 10) ) ) ) (drop (i32.const 10) ) (drop (i32.eqz (i32.const 20) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.eqz (i32.const 30) ) ) (drop (i32.const 10) ) (set_local $x (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.load (i32.const 20) ) ) (drop (i32.const 10) ) (return (unreachable) ) ) (func $binary (type $3) (drop (i32.add (block (i32.const 10) ) (i32.const 20) ) ) (drop (i32.const 10) ) (drop (i32.add (i32.const 20) (i32.const 30) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.add (i32.const 30) (i32.const 40) ) ) (drop (i32.add (i32.const 10) (block (i32.const 20) ) ) ) (drop (i32.const 20) ) (drop (i32.add (i32.const 10) (i32.const 30) ) ) (drop (i32.const 20) ) (drop (i32.const 30) ) (drop (i32.add (i32.const 10) (i32.const 40) ) ) (drop (i32.add (block (i32.const 10) ) (block (i32.const 20) ) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.add (i32.const 20) (i32.const 40) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.const 40) ) (drop (i32.const 50) ) (drop (i32.add (i32.const 30) (i32.const 60) ) ) (drop (i32.const 20) ) (i32.store (i32.const 10) (i32.const 30) ) (drop (i32.const 10) ) (i32.store (i32.const 20) (i32.const 30) ) (drop (i32.add (unreachable) (block (drop (i32.const 10) ) (i32.const 20) ) ) ) (unreachable) (drop (i32.const 20) ) (drop (i32.add (i32.const 10) (i32.const 30) ) ) ) (func $trinary (type $3) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (drop (select (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 20) ) (drop (i32.const 40) ) (drop (select (block (i32.const 10) ) (i32.const 30) (i32.const 50) ) ) (drop (i32.const 10) ) (drop (i32.const 40) ) (drop (select (i32.const 20) (block (i32.const 30) ) (i32.const 50) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (select (i32.const 20) (i32.const 40) (block (i32.const 50) ) ) ) (drop (i32.const 30) ) (drop (select (block (i32.const 10) ) (block (i32.const 20) ) (i32.const 40) ) ) (drop (i32.const 20) ) (drop (select (block (i32.const 10) ) (i32.const 30) (block (i32.const 40) ) ) ) (drop (i32.const 10) ) (drop (select (i32.const 20) (block (i32.const 30) ) (block (i32.const 40) ) ) ) (unreachable) (drop (i32.const 30) ) (drop (i32.const 50) ) (drop (select (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 10) ) (drop (select (unreachable) (block (drop (i32.const 30) ) (i32.const 40) ) (block (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (i32.const 10) ) (unreachable) (drop (i32.const 50) ) (drop (select (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (select (i32.const 20) (unreachable) (block (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (unreachable) (drop (select (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (drop (select (i32.const 20) (i32.const 40) (unreachable) ) ) ) (func $breaks (type $3) (block $out (drop (i32.const 10) ) (drop (i32.const 20) ) (br $out) (drop (i32.const 10) ) (br_if $out (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.const 30) ) (br_if $out (i32.const 40) ) (drop (i32.const 10) ) (br_table $out $out (i32.const 20) ) (drop (block $out2 (drop (i32.const 10) ) (drop (i32.const 30) ) (br_table $out2 $out2 (i32.const 20) (i32.const 40) ) ) ) (unreachable) ) ) (func $calls (type $3) (call $call-i (block (i32.const 10) ) ) (drop (i32.const 10) ) (call $call-i (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (call $call-i (i32.const 30) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (call $call-ii (i32.const 20) (i32.const 40) ) (unreachable) (drop (i32.const 20) ) (call $call-ii (i32.const 10) (i32.const 30) ) (drop (i32.const 10) ) (call $call-ii (unreachable) (block (drop (i32.const 20) ) (i32.const 30) ) ) (drop (i32.const 10) ) (unreachable) (call $call-ii (i32.const 20) (i32.const 30) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (call $call-ii (i32.const 20) (unreachable) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (call $call-iii (i32.const 20) (i32.const 40) (i32.const 60) ) (drop (i32.const 10) ) (drop (i32.const 40) ) (call $call-iii (i32.const 20) (i32.const 30) (i32.const 50) ) (drop (i32.const 50) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (call_indirect $ii (i32.const 20) (i32.const 40) (i32.const 60) ) (drop (i32.const 50) ) (call_indirect $ii (unreachable) (block (drop (i32.const 30) ) (i32.const 40) ) (i32.const 60) ) ) (func $block-type-change (type $3) (local $0 f64) (local $1 f64) (if (block (nop) (f64.gt (get_local $0) (get_local $1) ) ) (nop) ) ) )