(module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f32_f32_=>_i64 (func (param i32 f32 f32) (result i64))) (global $global$0 (mut i32) (i32.const 10)) (func $test (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (local.get $x) ) (func $test2 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (local.get $x) ) (func $test-multiple (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (drop (local.get $x) ) (local.get $x) ) (func $test-just-some (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (drop (local.get $x) ) (local.set $y (i32.const 200) ) (local.get $y) ) (func $test-just-some2 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (if (i32.const 300) (local.set $y (i32.const 400) ) (drop (local.get $x) ) ) (i32.const 500) ) (func $test-just-some3 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (i32.const 200) ) ) (if (i32.const 300) (local.set $y (i32.const 400) ) (drop (local.get $y) ) ) (local.get $y) ) (func $silly-self (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.get $x) ) (i32.const 100) (local.get $x) ) ) (local.get $y) ) (func $silly-multi (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x (local.tee $y (local.get $x) ) ) (i32.const 100) (local.get $x) ) ) (local.get $y) ) (func $undo-1 (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) ) (local.set $var$2 (i32.const 1) ) (drop (local.get $var$1) ) ) (func $undo-2 (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) ) (if (local.get $var$1) (local.set $var$2 (i32.const 1) ) ) (drop (local.get $var$1) ) ) (func $reverse (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $y) ) ) (drop (local.get $y) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $reverse-end (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) ) (func $reverse-lone-end-2 (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (local.set $y (i32.const 200) ) (drop (local.get $y) ) ) (func $reverse-undo (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $y) ) ) (local.set $x (i32.const 300) ) (drop (local.get $x) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $reverse-undo2 (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (i32.const 150) ) ) (local.set $x (i32.const 300) ) (drop (local.get $x) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $reverse-undo3-conditional (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (i32.const 150) ) ) (if (i32.const 1) (local.set $x (i32.const 300) ) ) (drop (local.get $x) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $reverse-undo3-conditional-b (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (local.get $x) ) ) (if (i32.const 1) (local.set $x (i32.const 300) ) ) (drop (local.get $x) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $reverse-undo3-conditional-c (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x (local.get $y) ) (i32.const 100) (i32.const 150) ) ) (if (i32.const 1) (drop (local.get $x) ) (block $block (if (i32.const 1) (local.set $x (i32.const 300) ) ) (drop (local.get $x) ) ) ) (if (i32.const 1) (local.set $y (i32.const 200) ) ) (drop (local.get $y) ) ) (func $fuzz (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64) (local $var$3 i32) (global.set $global$0 (i32.sub (global.get $global$0) (i32.const 1) ) ) (loop $label$1 (result i64) (global.set $global$0 (i32.sub (global.get $global$0) (i32.const 1) ) ) (br_if $label$1 (block $label$2 (result i32) (drop (if (result i32) (block $label$3 (result i32) (global.set $global$0 (i32.sub (global.get $global$0) (i32.const 3) ) ) (local.set $var$3 (i32.const 1) ) (local.tee $var$3 (local.get $var$0) ) ) (i32.const 0) (block $block (result i32) (local.set $var$3 (if (result i32) (i32.const 0) (block $block13 (result i32) (block $label$7 (block $label$8 (local.set $var$0 (i32.const 34738786) ) ) ) (local.get $var$3) ) (block $block14 (result i32) (if (i32.eqz (global.get $global$0) ) (return (i64.const 137438953472) ) ) (global.set $global$0 (i32.sub (global.get $global$0) (i32.const 1) ) ) (br_if $label$1 (i32.eqz (local.get $var$3) ) ) (return (i64.const 44125) ) ) ) ) (i32.const -129) ) ) ) (i32.const 0) ) ) (i64.const -36028797018963968) ) ) (func $trivial-confusion (param $unused i32) (param $param i32) (param $result i32) (loop $label$1 (if (i32.const 1) (drop (local.get $result) ) ) (local.set $result (local.get $param) ) (br_if $label$1 (local.tee $unused (local.get $param) ) ) ) ) (func $subtype-test (local $0 anyref) (local $1 funcref) (local $2 funcref) (local.set $0 (local.get $1) ) (local.set $2 (local.get $1) ) ) )