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