(module
 (type $none_=>_i32 (func (result i32)))
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (type $none_=>_none (func))
 (type $i32_=>_none (func (param i32)))
 (import "env" "table" (table $timport$0 9 9 funcref))
 (func $break-and-binary (result i32)
  (block $label$1 (result i32)
   (unreachable)
  )
 )
 (func $call-and-unary (param $0 i32) (result i32)
  (unreachable)
 )
 (func $tee (param $x i32)
  (local $y f32)
  (unreachable)
 )
 (func $tee2
  (local $0 f32)
  (if
   (i32.const 259)
   (unreachable)
  )
 )
 (func $select
  (unreachable)
 )
 (func $untaken-break-should-have-value (result i32)
  (block $label$1 (result i32)
   (block $label$2
    (drop
     (i32.const 0)
    )
    (unreachable)
   )
   (unreachable)
  )
 )
 (func $unreachable-in-block-but-code-before (param $0 i32) (result i32)
  (if
   (local.get $0)
   (return
    (i32.const 127)
   )
  )
  (block $label$2 (result i32)
   (drop
    (i32.const 0)
   )
   (return
    (i32.const -32)
   )
  )
 )
 (func $br_table_unreachable_to_also_unreachable (result i32)
  (block $label$1 (result i32)
   (block $label$2 (result i32)
    (unreachable)
   )
  )
 )
 (func $untaken-br_if (result i32)
  (block $label$1 (result i32)
   (block $label$2
    (if
     (i32.const 0)
     (unreachable)
     (unreachable)
    )
   )
   (unreachable)
  )
 )
)

