(module
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_none (func))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $f32_i64_=>_none (func (param f32 i64)))
 (type $f32_i64_=>_i32 (func (param f32 i64) (result i32)))
 (type $i64_i64_=>_i64 (func (param i64 i64) (result i64)))
 (memory $0 10)
 (table $0 1 1 funcref)
 (elem (i32.const 0) $call-me)
 (global $x (mut i32) (i32.const 0))
 (func $call-me (param $0 i32) (param $1 i32)
  (nop)
 )
 (func $code-to-kill
  (local $x i32)
  (block $out
   (br $out)
  )
  (if
   (i32.const 0)
   (unreachable)
  )
  (if
   (i32.const 0)
   (block $out3
    (return)
   )
  )
  (block $out4
   (br_table $out4 $out4 $out4 $out4
    (i32.const 4)
   )
  )
  (block $out5
   (br_if $out5
    (i32.const 3)
   )
   (drop
    (i32.const 0)
   )
  )
  (if
   (i32.const 0)
   (block $block4
    (if
     (i32.const 0)
     (unreachable)
     (unreachable)
    )
   )
  )
  (if
   (i32.const 0)
   (unreachable)
  )
  (if
   (i32.const 0)
   (unreachable)
  )
  (if
   (i32.const 0)
   (unreachable)
  )
  (block $out16
   (block $in
    (br_if $out16
     (i32.const 1)
    )
   )
   (unreachable)
  )
  (if
   (i32.const 0)
   (block $block11
    (block $out18
     (block $in19
      (br_if $in19
       (i32.const 1)
      )
     )
     (unreachable)
    )
   )
  )
  (block $out20
   (block $in21
    (br_table $out20 $in21
     (i32.const 1)
    )
   )
   (unreachable)
  )
  (block $out22
   (block $in23
    (br_table $in23 $out22
     (i32.const 1)
    )
   )
   (unreachable)
  )
  (if
   (i32.const 0)
   (block $block13
    (block $out25
     (block $in26
      (br_table $in26 $in26
       (i32.const 1)
      )
     )
     (unreachable)
    )
   )
  )
  (if
   (i32.const 0)
   (block $block15
    (drop
     (i32.const 10)
    )
    (drop
     (i32.const 42)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (unreachable)
  )
  (block $out29
   (loop $in30
    (br_if $out29
     (i32.const 1)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (block $block20
    (loop $in32
     (br_if $in32
      (i32.const 1)
     )
     (unreachable)
    )
   )
  )
  (if
   (i32.const 1)
   (block
    (drop
     (i32.const 123)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 2)
   (unreachable)
  )
  (if
   (i32.const 3)
   (unreachable)
  )
  (if
   (i32.const -1)
   (block
    (drop
     (i32.const 123)
    )
    (drop
     (i32.const 456)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -2)
   (block
    (drop
     (i32.const 139)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -3)
   (block
    (drop
     (i32.const 246)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -4)
   (unreachable)
  )
  (if
   (i32.const 11)
   (unreachable)
  )
  (if
   (i32.const 22)
   (unreachable)
  )
  (if
   (i32.const 33)
   (block
    (drop
     (i32.const 0)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 44)
   (unreachable)
  )
  (if
   (i32.const 55)
   (unreachable)
  )
  (if
   (i32.const 66)
   (unreachable)
  )
  (if
   (i32.const 77)
   (unreachable)
  )
  (if
   (i32.const 88)
   (block
    (drop
     (i32.const 0)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 99)
   (unreachable)
  )
  (if
   (i32.const 100)
   (block
    (drop
     (i32.const 123)
    )
    (drop
     (i32.const 456)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 101)
   (block
    (drop
     (i32.const 123)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 102)
   (unreachable)
  )
  (drop
   (i32.const 1337)
  )
 )
 (func $killer
  (unreachable)
 )
 (func $target
  (drop
   (i32.const 2000)
  )
 )
 (func $typed-block-none-then-unreachable (result i32)
  (block $top-typed
   (block $switch$0
    (return
     (i32.const 0)
    )
   )
  )
 )
 (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32)
  (block $switch$7
   (block $switch-default$10
    (block $switch-case$9
     (block $switch-case$8
      (br_table $switch-case$9 $switch-case$8 $switch-default$10
       (i32.const -1)
      )
     )
    )
    (return
     (local.get $$$0)
    )
   )
   (return
    (local.get $$$0)
   )
  )
 )
 (func $global
  (unreachable)
 )
 (func $ret (result i32)
  (return
   (i32.const 0)
  )
 )
 (func $unreachable-br (result i32)
  (block $out (result i32)
   (br $out
    (i32.const 0)
   )
  )
 )
 (func $unreachable-br-loop (result i32)
  (loop $out
   (br $out)
  )
 )
 (func $unreachable-block-ends-switch (result i32)
  (block $label$0
   (block $label$3
    (nop)
    (unreachable)
   )
  )
 )
 (func $unreachable-block-ends-br_if (result i32)
  (block $label$0
   (block $label$2
    (nop)
    (unreachable)
   )
  )
 )
 (func $unreachable-brs-3 (result i32)
  (block $label$0 (result i32)
   (br $label$0
    (i32.const 18)
   )
  )
 )
 (func $unreachable-brs-4 (param $var$0 i32) (result i32)
  (drop
   (i32.const 1)
  )
  (block $label$0
   (block $label$1
    (block
     (drop
      (i32.const 4104)
     )
     (unreachable)
    )
   )
  )
 )
 (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $2 i64)
  (if (result i64)
   (i64.eqz
    (local.get $var$0)
   )
   (block $label$0 (result i64)
    (local.get $var$1)
   )
   (block $label$1
    (block
     (drop
      (i64.sub
       (local.get $var$0)
       (i64.const 1)
      )
     )
     (block
      (drop
       (block $block (result i64)
        (local.set $2
         (local.get $var$0)
        )
        (nop)
        (local.get $2)
       )
      )
      (unreachable)
     )
    )
   )
  )
 )
 (func $br-gone-means-block-type-changes-then-refinalize-at-end-is-too-late (param $var$0 i32) (result i32)
  (block $label$0
   (block $block
    (nop)
    (unreachable)
   )
  )
 )
 (func $br-with-unreachable-value-should-not-give-a-block-a-value (param $var$0 i32) (result i32)
  (block $label$0 (result i32)
   (block $block
    (drop
     (br_if $label$0
      (i32.const 8)
      (local.get $var$0)
     )
    )
    (unreachable)
   )
  )
 )
 (func $replace-br-value-of-i32-with-unreachable (result i32)
  (block $label$0
   (block $label$1
    (nop)
    (unreachable)
   )
  )
 )
 (func $shorten-block-requires-sync-refinalize (param $var$0 i32) (param $var$1 i32)
  (unreachable)
 )
 (func $block-with-type-but-is-unreachable (param $var$0 i32) (result i32)
  (block $label$0
   (block $block
    (nop)
    (unreachable)
   )
  )
 )
 (func $if-with-type-but-is-unreachable (param $var$0 i32) (result i32)
  (block $label$0
   (if
    (local.get $var$0)
    (unreachable)
    (unreachable)
   )
  )
 )
 (func $unreachable-loop
  (unreachable)
 )
 (func $br-block-from-unary (result i32)
  (block $label$6 (result i32)
   (block $label$7
    (br $label$6
     (i32.const 8)
    )
   )
  )
 )
 (func $replace-unary-with-br-child
  (drop
   (block $label$6 (result i32)
    (br $label$6
     (i32.const 8)
    )
   )
  )
 )
 (func $br_if-unreach-then-br_if-normal
  (block $out
   (nop)
   (unreachable)
  )
 )
 (func $replace-with-unreachable-affects-parent (param $var$0 f32) (param $var$1 i64)
  (block $top
   (block
    (drop
     (i64.const 0)
    )
    (if
     (block $block (result i32)
      (call $replace-with-unreachable-affects-parent
       (f32.const 1)
       (i64.const -15917430362925035)
      )
      (i32.const 1)
     )
     (unreachable)
     (unreachable)
    )
   )
  )
 )
 (func $replace-block-changes-later-when-if-goes
  (block $top
   (global.set $x
    (i32.const 0)
   )
   (block $inner
    (drop
     (call $helper
      (f32.const 1)
      (i64.const -15917430362925035)
     )
    )
    (unreachable)
   )
  )
 )
 (func $helper (param $var$0 f32) (param $var$1 i64) (result i32)
  (i32.const 0)
 )
)
(module
 (type $none_=>_none (func))
 (global $global (mut f64) (f64.const 0))
 (func $0
  (if
   (i32.const 0)
   (unreachable)
   (unreachable)
  )
 )
)
(module
 (type $none_=>_none (func))
 (func $0
  (local $local f64)
  (if
   (i32.const 0)
   (unreachable)
   (unreachable)
  )
 )
)
(module
 (type $none_=>_none (func))
 (type $none_=>_i32 (func (result i32)))
 (event $e (attr 0) (param))
 (func $foo
  (nop)
 )
 (func $try_unreachable
  (try
   (do
    (unreachable)
   )
   (catch
    (drop
     (pop exnref)
    )
   )
  )
  (call $foo)
 )
 (func $catch_unreachable
  (try
   (do
    (nop)
   )
   (catch
    (unreachable)
   )
  )
  (call $foo)
 )
 (func $both_unreachable
  (try
   (do
    (unreachable)
   )
   (catch
    (unreachable)
   )
  )
 )
 (func $throw
  (block $label$0
   (block $label$1
    (throw $e
    )
   )
  )
 )
 (func $rethrow
  (block $label$0
   (block $label$1
    (rethrow
     (ref.null exn)
    )
   )
  )
 )
 (func $unnecessary-concrete-block (result i32)
  (block $foo
   (nop)
   (unreachable)
  )
 )
 (func $necessary-concrete-block (result i32)
  (block $foo (result i32)
   (br $foo
    (i32.const 1)
   )
  )
 )
 (func $unnecessary-concrete-if (result i32)
  (if
   (i32.const 0)
   (return
    (i32.const 1)
   )
   (unreachable)
  )
 )
 (func $unnecessary-concrete-try (result i32)
  (try
   (do
    (unreachable)
   )
   (catch
    (unreachable)
   )
  )
 )
 (func $note-loss-of-if-children
  (block $label$1
   (block $label$2
    (nop)
    (unreachable)
   )
  )
 )
 (func $note-loss-of-non-control-flow-children
  (block $out
   (block $block
    (nop)
    (unreachable)
   )
  )
 )
)
