(module
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_none (func))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $none_=>_f32 (func (result f32)))
 (type $i64_i64_=>_i64 (func (param i64 i64) (result i64)))
 (type $none_=>_anyref (func (result anyref)))
 (memory $0 10)
 (table $0 1 1 funcref)
 (elem (i32.const 0) $call-me)
 (global $x (mut i32) (i32.const 0))
 (func $a1
  (local $0 i32)
  (local.set $0
   (i32.add
    (i32.const 0)
    (i32.const 1)
   )
  )
  (drop
   (local.get $0)
  )
 )
 (func $a2 (result i32)
  (local $0 i32)
  (local.set $0
   (i32.add
    (i32.const 0)
    (i32.const 1)
   )
  )
  (return
   (local.get $0)
  )
 )
 (func $a3 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (block $block
   (local.set $0
    (i32.const 1)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (local.set $2
   (i32.add
    (i32.const 0)
    (local.get $1)
   )
  )
  (return
   (local.get $2)
  )
 )
 (func $a4
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (block $block
   (local.set $0
    (i32.const 1)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (local.set $2
   (i32.add
    (i32.const 0)
    (local.get $1)
   )
  )
  (drop
   (local.get $2)
  )
 )
 (func $a5 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (block $block
   (local.set $0
    (i32.const 0)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (block $block0
   (local.set $2
    (i32.const 1)
   )
  )
  (local.set $3
   (local.get $2)
  )
  (local.set $4
   (i32.add
    (local.get $1)
    (local.get $3)
   )
  )
  (return
   (local.get $4)
  )
 )
 (func $a6 (result i32)
  (local $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (block $block
   (local.set $x
    (i32.const 0)
   )
   (local.set $1
    (local.get $x)
   )
   (local.set $2
    (local.get $1)
   )
  )
  (local.set $3
   (local.get $2)
  )
  (block $block1
   (local.set $x
    (i32.const 1)
   )
   (local.set $4
    (local.get $x)
   )
   (local.set $5
    (local.get $4)
   )
  )
  (local.set $6
   (local.get $5)
  )
  (local.set $7
   (i32.add
    (local.get $3)
    (local.get $6)
   )
  )
  (return
   (local.get $7)
  )
 )
 (func $a7 (result i32)
  (local $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (local $8 i32)
  (local $9 i32)
  (block $block
   (block $block2
    (local.set $x
     (i32.const 0)
    )
    (local.set $1
     (local.get $x)
    )
    (local.set $2
     (local.get $1)
    )
   )
   (local.set $3
    (local.get $2)
   )
   (block $block3
    (local.set $x
     (i32.const 1)
    )
    (local.set $4
     (local.get $x)
    )
    (local.set $5
     (local.get $4)
    )
   )
   (local.set $6
    (local.get $5)
   )
   (local.set $7
    (i32.add
     (local.get $3)
     (local.get $6)
    )
   )
   (local.set $8
    (local.get $7)
   )
  )
  (local.set $9
   (local.get $8)
  )
  (return
   (local.get $9)
  )
 )
 (func $a8 (result i32)
  (local $x i32)
  (local $1 i32)
  (local $2 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)
  (block $outer
   (block $inner
    (block $block
     (local.set $1
      (i32.const -1)
     )
     (br $inner)
     (unreachable)
     (local.set $2
      (i32.const 0)
     )
     (br $outer)
     (unreachable)
     (local.set $3
      (i32.const 1)
     )
    )
    (local.set $4
     (local.get $3)
    )
    (block $block4
     (local.set $2
      (i32.const 2)
     )
     (br $outer)
     (unreachable)
     (local.set $x
      (i32.const 3)
     )
     (local.set $5
      (local.get $x)
     )
     (local.set $6
      (local.get $5)
     )
    )
    (local.set $7
     (local.get $6)
    )
    (local.set $8
     (i32.add
      (local.get $4)
      (local.get $7)
     )
    )
    (local.set $1
     (local.get $8)
    )
   )
   (local.set $9
    (local.get $1)
   )
   (local.set $2
    (local.get $9)
   )
  )
  (local.set $10
   (local.get $2)
  )
  (return
   (local.get $10)
  )
 )
 (func $a9 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (loop $outer
   (loop $inner
    (block
     (br_if $outer
      (i32.const -1)
     )
     (local.set $0
      (i32.add
       (i32.const 0)
       (i32.const 1)
      )
     )
     (local.set $1
      (local.get $0)
     )
    )
    (local.set $2
     (local.get $1)
    )
    (local.set $3
     (local.get $2)
    )
   )
   (local.set $4
    (local.get $3)
   )
   (local.set $5
    (local.get $4)
   )
  )
  (local.set $6
   (local.get $5)
  )
  (return
   (local.get $6)
  )
 )
 (func $a10 (result i32)
  (local $x i32)
  (local $1 i32)
  (local $2 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)
  (block $outer
   (local.set $1
    (i32.const 0)
   )
   (br_if $outer
    (i32.const 1)
   )
   (local.set $2
    (local.get $1)
   )
   (drop
    (local.get $2)
   )
   (local.set $x
    (i32.const 2)
   )
   (local.set $3
    (local.get $x)
   )
   (local.set $1
    (local.get $3)
   )
   (br_if $outer
    (i32.const 3)
   )
   (local.set $4
    (local.get $1)
   )
   (drop
    (local.get $4)
   )
   (local.set $x
    (i32.const 5)
   )
   (local.set $5
    (local.get $x)
   )
   (local.set $1
    (i32.const 4)
   )
   (br_if $outer
    (local.get $5)
   )
   (local.set $6
    (local.get $1)
   )
   (drop
    (local.get $6)
   )
   (local.set $x
    (i32.const 6)
   )
   (local.set $7
    (local.get $x)
   )
   (local.set $x
    (i32.const 7)
   )
   (local.set $8
    (local.get $x)
   )
   (local.set $1
    (local.get $7)
   )
   (br_if $outer
    (local.get $8)
   )
   (local.set $9
    (local.get $1)
   )
   (drop
    (local.get $9)
   )
   (local.set $1
    (i32.const 8)
   )
   (br $outer)
   (unreachable)
  )
  (local.set $10
   (local.get $1)
  )
  (return
   (local.get $10)
  )
 )
 (func $a11
  (if
   (i32.const 0)
   (drop
    (i32.const 1)
   )
  )
 )
 (func $a12 (result i32)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.const 0)
   (local.set $0
    (i32.const 1)
   )
   (local.set $0
    (i32.const 2)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $a13 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (block $x
   (block
    (local.set $0
     (i32.const 2)
    )
    (local.set $1
     (local.get $0)
    )
    (br_table $x
     (i32.const 0)
    )
    (if
     (unreachable)
     (local.set $2
      (i32.const 0)
     )
     (local.set $2
      (i32.const 1)
     )
    )
   )
   (local.set $3
    (local.get $2)
   )
   (local.set $1
    (local.get $3)
   )
  )
  (local.set $4
   (local.get $1)
  )
  (return
   (local.get $4)
  )
 )
 (func $a14 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (block $block
   (local.set $0
    (i32.const 7)
   )
   (local.set $1
    (local.get $0)
   )
   (br_table $block
    (i32.const 1)
   )
   (select
    (i32.const 0)
    (i32.const 1)
    (unreachable)
   )
   (unreachable)
  )
  (local.set $2
   (local.get $1)
  )
  (return
   (local.get $2)
  )
 )
 (func $a15
  (local $0 i32)
  (local $1 f32)
  (local $2 f32)
  (block
   (local.set $0
    (i32.load16_u
     (i32.const 53)
    )
   )
   (if
    (local.get $0)
    (block
     (unreachable)
     (unreachable)
    )
    (block
     (block $label$3
      (unreachable)
      (unreachable)
     )
     (local.set $2
      (local.get $1)
     )
     (drop
      (local.get $2)
     )
    )
   )
  )
  (unreachable)
 )
 (func $a16 (result i32)
  (local $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (block $label$1
   (local.set $x
    (i32.const 1)
   )
   (local.set $1
    (local.get $x)
   )
   (block $label$2
    (local.set $x
     (i32.const 0)
    )
    (local.set $2
     (i32.const 0)
    )
   )
   (local.set $3
    (local.get $2)
   )
   (local.set $4
    (i32.eqz
     (local.get $3)
    )
   )
   (local.set $5
    (local.get $1)
   )
   (br_if $label$1
    (local.get $4)
   )
   (local.set $6
    (local.get $5)
   )
   (drop
    (local.get $6)
   )
   (local.set $5
    (i32.const 0)
   )
  )
  (local.set $7
   (local.get $5)
  )
  (return
   (local.get $7)
  )
 )
 (func $a17 (result f32)
  (local $var$0 f32)
  (local $1 f32)
  (local $2 f32)
  (local $3 f32)
  (local $4 f32)
  (local $5 f32)
  (local.set $1
   (local.get $var$0)
  )
  (local.set $var$0
   (f32.const -137438953472)
  )
  (local.set $2
   (local.get $var$0)
  )
  (local.set $3
   (local.get $var$0)
  )
  (local.set $4
   (select
    (local.get $2)
    (local.get $3)
    (i32.const 0)
   )
  )
  (local.set $5
   (f32.max
    (local.get $1)
    (local.get $4)
   )
  )
  (return
   (local.get $5)
  )
 )
 (func $a18 (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $label$1
   (unreachable)
   (local.set $0
    (i32.const 1)
   )
   (br_if $label$1
    (unreachable)
   )
   (unreachable)
   (drop
    (unreachable)
   )
   (i32.load
    (unreachable)
   )
   (unreachable)
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $a19 (result f32)
  (block $label$0
   (block $label$1
    (unreachable)
    (return
     (f32.const 4289944320)
    )
    (select
     (unreachable)
     (unreachable)
     (i32.const 65535)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
   (unreachable)
  )
  (unreachable)
 )
 (func $call-me (param $0 i32) (param $1 i32)
  (nop)
 )
 (func $code-to-kill
  (local $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (block $out
   (br $out)
   (unreachable)
   (drop
    (i32.const 0)
   )
   (if
    (i32.const 1)
    (drop
     (i32.const 2)
    )
   )
   (br_table $out $out $out $out
    (i32.const 3)
   )
   (unreachable)
   (call $code-to-kill)
  )
  (if
   (i32.const 0)
   (block
    (block $out1
     (unreachable)
     (unreachable)
     (drop
      (i32.const 0)
     )
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (block
    (block $out3
     (return)
     (unreachable)
     (drop
      (i32.const 0)
     )
    )
    (unreachable)
   )
  )
  (block $out4
   (br_table $out4 $out4 $out4 $out4
    (i32.const 4)
   )
   (unreachable)
   (drop
    (i32.const 0)
   )
  )
  (block $out5
   (br_if $out5
    (i32.const 3)
   )
   (drop
    (i32.const 0)
   )
  )
  (if
   (i32.const 0)
   (block
    (block $block4
     (if
      (i32.const 0)
      (block
       (block $out8
        (unreachable)
        (unreachable)
        (drop
         (i32.const 0)
        )
       )
       (unreachable)
      )
      (block
       (block $out9
        (unreachable)
        (unreachable)
        (drop
         (i32.const 0)
        )
       )
       (unreachable)
      )
     )
     (unreachable)
     (drop
      (i32.const 0)
     )
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (block
    (block $out11
     (unreachable)
     (unreachable)
     (unreachable)
     (drop
      (i32.const 0)
     )
     (unreachable)
     (unreachable)
    )
    (local.set $2
     (local.get $1)
    )
    (drop
     (local.get $2)
    )
   )
  )
  (if
   (i32.const 0)
   (block
    (block $out13
     (unreachable)
     (unreachable)
     (unreachable)
     (drop
      (i32.const 0)
     )
     (unreachable)
     (unreachable)
    )
    (local.set $4
     (local.get $3)
    )
    (drop
     (local.get $4)
    )
   )
  )
  (if
   (i32.const 0)
   (block
    (block $out15
     (unreachable)
     (unreachable)
     (unreachable)
     (unreachable)
     (drop
      (i32.const 0)
     )
     (unreachable)
     (unreachable)
    )
    (local.set $6
     (local.get $5)
    )
    (drop
     (local.get $6)
    )
   )
  )
  (block $out16
   (block $in
    (br_if $out16
     (i32.const 1)
    )
   )
   (unreachable)
   (unreachable)
  )
  (if
   (i32.const 0)
   (block
    (block $block11
     (block $out18
      (block $in19
       (br_if $in19
        (i32.const 1)
       )
      )
      (unreachable)
      (unreachable)
     )
     (unreachable)
     (drop
      (i32.const 10)
     )
    )
    (unreachable)
   )
  )
  (block $out20
   (block $in21
    (br_table $out20 $in21
     (i32.const 1)
    )
    (unreachable)
   )
   (unreachable)
   (unreachable)
  )
  (block $out22
   (block $in23
    (br_table $in23 $out22
     (i32.const 1)
    )
    (unreachable)
   )
   (unreachable)
   (unreachable)
  )
  (if
   (i32.const 0)
   (block
    (block $block13
     (block $out25
      (block $in26
       (br_table $in26 $in26
        (i32.const 1)
       )
       (unreachable)
      )
      (unreachable)
      (unreachable)
     )
     (unreachable)
     (drop
      (i32.const 10)
     )
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (block
    (block $block15
     (drop
      (i32.const 10)
     )
     (drop
      (i32.const 42)
     )
     (unreachable)
     (unreachable)
     (unreachable)
     (return
      (unreachable)
     )
     (unreachable)
     (unreachable)
     (unreachable)
     (return)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 0)
   (block
    (loop $loop-in18
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (block $out29
   (loop $in30
    (block
     (br_if $out29
      (i32.const 1)
     )
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
   (unreachable)
  )
  (if
   (i32.const 0)
   (block
    (block $block20
     (loop $in32
      (block
       (br_if $in32
        (i32.const 1)
       )
       (unreachable)
       (unreachable)
      )
      (unreachable)
     )
     (unreachable)
     (drop
      (i32.const 10)
     )
    )
    (unreachable)
   )
  )
  (if
   (i32.const 1)
   (block
    (unreachable)
    (call $call-me
     (i32.const 123)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 2)
   (block
    (unreachable)
    (call $call-me
     (unreachable)
     (i32.const 0)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 3)
   (block
    (unreachable)
    (unreachable)
    (call $call-me
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -1)
   (block
    (unreachable)
    (call_indirect (type $i32_i32_=>_none)
     (i32.const 123)
     (i32.const 456)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -2)
   (block
    (unreachable)
    (call_indirect (type $i32_i32_=>_none)
     (i32.const 139)
     (unreachable)
     (i32.const 0)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -3)
   (block
    (unreachable)
    (unreachable)
    (call_indirect (type $i32_i32_=>_none)
     (i32.const 246)
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const -4)
   (block
    (unreachable)
    (unreachable)
    (unreachable)
    (call_indirect (type $i32_i32_=>_none)
     (unreachable)
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 11)
   (block
    (unreachable)
    (unreachable)
    (unreachable)
   )
  )
  (if
   (i32.const 22)
   (block
    (unreachable)
    (i32.load
     (unreachable)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 33)
   (block
    (unreachable)
    (i32.store
     (i32.const 0)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 44)
   (block
    (unreachable)
    (i32.store
     (unreachable)
     (i32.const 0)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 55)
   (block
    (unreachable)
    (unreachable)
    (i32.store
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 66)
   (block
    (unreachable)
    (i32.eqz
     (unreachable)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 77)
   (block
    (unreachable)
    (i32.add
     (unreachable)
     (i32.const 0)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 88)
   (block
    (unreachable)
    (i32.add
     (i32.const 0)
     (unreachable)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 99)
   (block
    (unreachable)
    (unreachable)
    (i32.add
     (unreachable)
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 100)
   (block
    (unreachable)
    (select
     (i32.const 123)
     (i32.const 456)
     (unreachable)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 101)
   (block
    (unreachable)
    (select
     (i32.const 123)
     (unreachable)
     (i32.const 456)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (if
   (i32.const 102)
   (block
    (unreachable)
    (select
     (unreachable)
     (i32.const 123)
     (i32.const 456)
    )
    (drop
     (unreachable)
    )
    (unreachable)
   )
  )
  (drop
   (i32.const 1337)
  )
 )
 (func $killer
  (block
   (unreachable)
   (unreachable)
   (drop
    (i32.const 1000)
   )
  )
  (unreachable)
 )
 (func $target
  (drop
   (i32.const 2000)
  )
 )
 (func $typed-block-none-then-unreachable (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $top-typed
   (block $switch$0
    (return
     (i32.const 0)
    )
    (unreachable)
    (br $switch$0)
    (unreachable)
   )
   (return
    (i32.const 1)
   )
   (unreachable)
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (block
   (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)
       )
       (unreachable)
      )
     )
     (local.set $1
      (local.get $$$0)
     )
     (return
      (local.get $1)
     )
     (unreachable)
     (br $switch$7)
     (unreachable)
    )
    (local.set $2
     (local.get $$$0)
    )
    (return
     (local.get $2)
    )
    (unreachable)
   )
   (return
    (i32.const 0)
   )
   (unreachable)
  )
  (local.set $4
   (local.get $3)
  )
  (return
   (local.get $4)
  )
 )
 (func $global
  (local $0 i32)
  (block
   (unreachable)
   (unreachable)
   (local.set $0
    (global.get $x)
   )
   (drop
    (local.get $0)
   )
   (global.set $x
    (i32.const 1)
   )
  )
  (unreachable)
 )
 (func $ret (result i32)
  (local $0 i32)
  (local $1 i32)
  (block
   (return
    (i32.const 0)
   )
   (unreachable)
   (nop)
   (local.set $0
    (i32.const 0)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-br (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $out
   (local.set $0
    (i32.const 0)
   )
   (br $out)
   (unreachable)
   (unreachable)
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-br-loop (result i32)
  (loop $out
   (br $out)
   (unreachable)
  )
  (unreachable)
 )
 (func $unreachable-block-ends-switch (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $label$0
   (block $label$3
    (nop)
    (unreachable)
    (br_table $label$3
     (unreachable)
    )
    (unreachable)
    (unreachable)
    (unreachable)
   )
   (local.set $0
    (i32.const 19)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-block-ends-br_if (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $label$0
   (block $label$2
    (nop)
    (unreachable)
    (br_if $label$2
     (unreachable)
    )
    (unreachable)
    (unreachable)
    (unreachable)
   )
   (local.set $0
    (i32.const 19)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-brs-3 (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $label$0
   (local.set $0
    (i32.const 18)
   )
   (br $label$0)
   (memory.grow
    (unreachable)
   )
   (unreachable)
   (unreachable)
   (local.set $0
    (i32.const 21)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-brs-4 (param $var$0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (block $label$0
   (block $label$1
    (unreachable)
    (local.set $1
     (i32.const 4104)
    )
    (br_if $label$0
     (unreachable)
    )
    (unreachable)
    (drop
     (unreachable)
    )
    (unreachable)
    (local.set $2
     (i32.const 4)
    )
   )
   (local.set $3
    (local.get $2)
   )
   (local.set $1
    (local.get $3)
   )
   (br $label$0)
   (unreachable)
   (local.set $1
    (i32.const 16)
   )
  )
  (local.set $4
   (local.get $1)
  )
  (local.set $5
   (i32.add
    (i32.const 1)
    (local.get $4)
   )
  )
  (return
   (local.get $5)
  )
 )
 (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $2 i64)
  (local $3 i64)
  (local $4 i32)
  (local $5 i64)
  (local $6 i64)
  (local $7 i64)
  (local $8 i64)
  (local $9 i64)
  (local $10 i64)
  (local $11 i64)
  (local $12 i64)
  (local $13 i64)
  (local $14 i64)
  (local $15 i64)
  (local $16 i64)
  (local $17 i64)
  (block
   (local.set $3
    (local.get $var$0)
   )
   (local.set $4
    (i64.eqz
     (local.get $3)
    )
   )
   (if
    (local.get $4)
    (block
     (block $label$0
      (local.set $5
       (local.get $var$1)
      )
      (local.set $6
       (local.get $5)
      )
     )
     (local.set $7
      (local.get $6)
     )
     (local.set $16
      (local.get $7)
     )
    )
    (block
     (block $label$1
      (local.set $8
       (local.get $var$0)
      )
      (local.set $9
       (i64.sub
        (local.get $8)
        (i64.const 1)
       )
      )
      (block $block
       (local.set $10
        (local.get $var$0)
       )
       (local.set $2
        (local.get $10)
       )
       (nop)
       (local.set $11
        (local.get $2)
       )
       (local.set $12
        (local.get $11)
       )
      )
      (local.set $13
       (local.get $12)
      )
      (unreachable)
      (i64.mul
       (local.get $13)
       (unreachable)
      )
      (call $call-unreach
       (local.get $9)
       (unreachable)
      )
      (unreachable)
     )
     (local.set $15
      (local.get $14)
     )
     (local.set $16
      (local.get $15)
     )
    )
   )
  )
  (local.set $17
   (local.get $16)
  )
  (return
   (local.get $17)
  )
 )
 (func $test-flatten
  (local $0 i32)
  (local $1 i32)
  (local $2 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 $18 i32)
  (local $19 i32)
  (local $20 i32)
  (local $21 i32)
  (local $22 i32)
  (local $23 i32)
  (local $24 i32)
  (local $25 i32)
  (local $26 i32)
  (local $27 i32)
  (local $28 i32)
  (local $29 i32)
  (local $30 i32)
  (local $31 i32)
  (local $32 i32)
  (local $33 i32)
  (local $34 i32)
  (local $35 i32)
  (local $36 i32)
  (local $37 i32)
  (local $38 i32)
  (local $39 i32)
  (block $out
   (local.set $0
    (i32.add
     (i32.const 1)
     (i32.const 2)
    )
   )
   (drop
    (local.get $0)
   )
   (br $out)
   (i32.add
    (i32.const 1)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (br $out)
   (i32.add
    (unreachable)
    (i32.const 1)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (br_table $out $out $out $out
    (i32.const 3)
   )
   (i32.add
    (i32.const 1)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (block $block
    (drop
     (i32.const 2)
    )
    (drop
     (i32.const 3)
    )
    (local.set $1
     (i32.const 4)
    )
   )
   (local.set $2
    (local.get $1)
   )
   (local.set $3
    (i32.add
     (i32.const 1)
     (local.get $2)
    )
   )
   (drop
    (local.get $3)
   )
   (block $in
    (block $switch-in
     (local.set $4
      (i32.const 2)
     )
     (local.set $5
      (local.get $4)
     )
     (local.set $6
      (local.get $4)
     )
     (br_table $in $switch-in $in
      (i32.const 777)
     )
     (unreachable)
    )
    (local.set $7
     (local.get $6)
    )
    (drop
     (local.get $7)
    )
    (local.set $5
     (i32.const 3)
    )
    (br $in)
    (unreachable)
    (local.set $5
     (i32.const 4)
    )
   )
   (local.set $8
    (local.get $5)
   )
   (local.set $9
    (i32.add
     (i32.const 1)
     (local.get $8)
    )
   )
   (drop
    (local.get $9)
   )
   (loop $loop-in
    (local.set $10
     (i32.const 5)
    )
   )
   (local.set $11
    (local.get $10)
   )
   (local.set $12
    (i32.add
     (i32.const 1)
     (local.get $11)
    )
   )
   (drop
    (local.get $12)
   )
   (if
    (i32.const 6)
    (local.set $13
     (i32.const 7)
    )
    (local.set $13
     (i32.const 8)
    )
   )
   (local.set $14
    (local.get $13)
   )
   (local.set $15
    (i32.add
     (i32.const 1)
     (local.get $14)
    )
   )
   (drop
    (local.get $15)
   )
   (local.set $16
    (select
     (i32.const 9)
     (i32.const 10)
     (i32.const 11)
    )
   )
   (drop
    (local.get $16)
   )
   (br $out)
   (select
    (unreachable)
    (i32.const 10)
    (i32.const 11)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (br $out)
   (select
    (i32.const 9)
    (unreachable)
    (i32.const 11)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (br $out)
   (select
    (i32.const 9)
    (i32.const 10)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (if
    (i32.const 11)
    (local.set $17
     (i32.const 12)
    )
    (local.set $17
     (i32.const 13)
    )
   )
   (local.set $18
    (local.get $17)
   )
   (local.set $19
    (select
     (local.get $18)
     (i32.const 9)
     (i32.const 10)
    )
   )
   (drop
    (local.get $19)
   )
   (if
    (i32.const 11)
    (local.set $20
     (i32.const 12)
    )
    (local.set $20
     (i32.const 13)
    )
   )
   (local.set $21
    (local.get $20)
   )
   (local.set $22
    (select
     (i32.const 9)
     (local.get $21)
     (i32.const 10)
    )
   )
   (drop
    (local.get $22)
   )
   (if
    (i32.const 11)
    (local.set $23
     (i32.const 12)
    )
    (local.set $23
     (i32.const 13)
    )
   )
   (local.set $24
    (local.get $23)
   )
   (local.set $25
    (select
     (i32.const 9)
     (i32.const 10)
     (local.get $24)
    )
   )
   (drop
    (local.get $25)
   )
   (if
    (i32.const 11)
    (local.set $26
     (i32.const 12)
    )
    (local.set $26
     (i32.const 13)
    )
   )
   (local.set $27
    (local.get $26)
   )
   (if
    (i32.const 15)
    (local.set $28
     (i32.const 16)
    )
    (local.set $28
     (i32.const 17)
    )
   )
   (local.set $29
    (local.get $28)
   )
   (local.set $30
    (select
     (local.get $27)
     (i32.const 14)
     (local.get $29)
    )
   )
   (drop
    (local.get $30)
   )
   (return)
   (i32.add
    (i32.const 1)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (unreachable)
   (i32.add
    (i32.const 1)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (block
    (if
     (i32.const 5)
     (local.set $31
      (i32.const 6)
     )
     (local.set $31
      (i32.const 7)
     )
    )
    (local.set $32
     (local.get $31)
    )
    (if
     (local.get $32)
     (local.set $35
      (i32.const 8)
     )
     (block
      (if
       (i32.const 9)
       (local.set $33
        (i32.const 10)
       )
       (local.set $33
        (i32.const 11)
       )
      )
      (local.set $34
       (local.get $33)
      )
      (local.set $35
       (local.get $34)
      )
     )
    )
   )
   (local.set $36
    (local.get $35)
   )
   (drop
    (local.get $36)
   )
   (block $temp
    (local.set $37
     (i32.const 1)
    )
    (br_if $temp
     (i32.const 2)
    )
    (local.set $38
     (local.get $37)
    )
    (local.set $37
     (local.get $38)
    )
   )
   (local.set $39
    (local.get $37)
   )
   (drop
    (local.get $39)
   )
  )
 )
 (func $flatten-return-value (result i32)
  (local $0 i32)
  (local $1 i32)
  (block
   (return
    (i32.const 2)
   )
   (i32.add
    (i32.const 1)
    (unreachable)
   )
   (drop
    (unreachable)
   )
   (unreachable)
   (local.set $0
    (i32.const 3)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unbug
  (local $12 i32)
  (local $432 i32)
  (local $430 i32)
  (local $431 i32)
  (local $9 i32)
  (local $5 i32)
  (local $433 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 $18 i32)
  (local $19 i32)
  (local $20 i32)
  (local $21 i32)
  (local $22 i32)
  (block $block
   (block
    (local.set $7
     (local.get $12)
    )
    (local.set $8
     (i32.eq
      (local.get $7)
      (i32.const 65535)
     )
    )
    (if
     (local.get $8)
     (block $block44
      (block $label$78
       (local.set $430
        (i32.const 0)
       )
      )
      (local.set $9
       (local.get $430)
      )
      (local.set $432
       (local.get $9)
      )
     )
     (block $block45
      (block $label$79
       (local.set $10
        (local.get $9)
       )
       (local.set $11
        (local.get $5)
       )
       (local.set $12
        (local.get $12)
       )
       (local.set $13
        (i32.mul
         (local.get $12)
         (i32.const 12)
        )
       )
       (local.set $14
        (i32.add
         (local.get $11)
         (local.get $13)
        )
       )
       (local.set $15
        (i32.load16_u offset=2
         (local.get $14)
        )
       )
       (local.set $16
        (i32.lt_u
         (local.get $10)
         (local.get $15)
        )
       )
       (local.set $431
        (local.get $16)
       )
      )
      (local.set $17
       (local.get $431)
      )
      (local.set $432
       (local.get $17)
      )
     )
    )
   )
   (local.set $433
    (i32.const 1)
   )
   (local.set $18
    (local.get $432)
   )
   (local.set $19
    (local.get $433)
   )
   (local.set $20
    (i32.xor
     (local.get $18)
     (local.get $19)
    )
   )
   (local.set $21
    (local.get $20)
   )
  )
  (local.set $22
   (local.get $21)
  )
  (drop
   (local.get $22)
  )
 )
 (func $outer-block-typed (param $var$0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (block $block
   (block $label$0
    (local.set $1
     (i32.const 16)
    )
   )
   (local.set $2
    (local.get $1)
   )
   (local.set $3
    (i32.add
     (i32.const 1)
     (local.get $2)
    )
   )
   (local.set $4
    (local.get $3)
   )
  )
  (local.set $5
   (local.get $4)
  )
  (return
   (local.get $5)
  )
 )
 (func $nested-br_if-with-value (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (block $label$0
   (block $block
    (local.set $1
     (local.get $0)
    )
    (local.set $2
     (local.get $1)
    )
   )
   (local.set $3
    (local.get $2)
   )
   (local.set $4
    (i32.const 0)
   )
   (br_if $label$0
    (local.get $3)
   )
   (local.set $5
    (local.get $4)
   )
   (drop
    (local.get $5)
   )
   (local.set $4
    (i32.const 1)
   )
  )
  (local.set $6
   (local.get $4)
  )
  (return
   (local.get $6)
  )
 )
 (func $switch-unreachable
  (block $label$3
   (unreachable)
   (br_table $label$3
    (unreachable)
   )
   (unreachable)
  )
 )
 (func $br_if_order (param $x i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (local $8 i32)
  (local $9 i32)
  (block $outer
   (block $inner
    (local.set $1
     (i32.const 0)
    )
    (br_if $outer
     (i32.const 1)
    )
    (local.set $2
     (local.get $1)
    )
    (block $block
     (local.set $3
      (i32.const -16)
     )
    )
    (local.set $4
     (local.get $3)
    )
    (local.set $5
     (call $br_if_order
      (local.get $4)
     )
    )
    (local.set $6
     (local.get $2)
    )
    (br_if $inner
     (local.get $5)
    )
    (local.set $7
     (local.get $6)
    )
    (local.set $6
     (local.get $7)
    )
   )
   (local.set $8
    (local.get $6)
   )
   (local.set $1
    (local.get $8)
   )
  )
  (local.set $9
   (local.get $1)
  )
  (return
   (local.get $9)
  )
 )
 (func $tees (param $x i32) (param $y i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (block
   (local.set $x
    (i32.const 1)
   )
   (local.set $2
    (local.get $x)
   )
   (drop
    (local.get $2)
   )
   (unreachable)
   (unreachable)
   (drop
    (unreachable)
   )
   (unreachable)
   (local.set $x
    (i32.const 2)
   )
   (local.set $3
    (local.get $x)
   )
   (local.set $y
    (local.get $3)
   )
   (local.set $4
    (local.get $y)
   )
   (drop
    (local.get $4)
   )
  )
  (unreachable)
 )
 (func $return (param $x i32) (result i32)
  (local $1 i32)
  (local.set $1
   (i32.sub
    (i32.const 1)
    (i32.const 2)
   )
  )
  (return
   (local.get $1)
  )
  (unreachable)
 )
 (func $subtype (result anyref)
  (local $0 externref)
  (local $1 anyref)
  (local $2 externref)
  (local $3 externref)
  (local $4 externref)
  (local $5 externref)
  (local $6 externref)
  (local $7 anyref)
  (block $label0
   (block $block
    (local.set $1
     (ref.null extern)
    )
    (local.set $2
     (ref.null extern)
    )
    (br_if $label0
     (i32.const 0)
    )
    (local.set $3
     (local.get $2)
    )
    (local.set $0
     (local.get $3)
    )
    (local.set $4
     (local.get $0)
    )
    (local.set $5
     (local.get $4)
    )
   )
   (local.set $6
    (local.get $5)
   )
   (local.set $1
    (local.get $6)
   )
  )
  (local.set $7
   (local.get $1)
  )
  (return
   (local.get $7)
  )
 )
)
(module
 (type $i64_f32_=>_none (func (param i64 f32)))
 (type $none_=>_i32 (func (result i32)))
 (export "test" (func $1))
 (func $0 (param $0 i64) (param $1 f32)
  (nop)
 )
 (func $1 (result i32)
  (unreachable)
  (return
   (i32.const -111)
  )
  (call $0
   (unreachable)
   (unreachable)
  )
  (unreachable)
 )
)
