(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)))
 (memory $0 10)
 (table $0 1 1 funcref)
 (elem (i32.const 0) $call-me)
 (global $x (mut i32) (i32.const 0))
 (func $a1 (; 0 ;) (type $1)
  (local $0 i32)
  (local.set $0
   (i32.add
    (i32.const 0)
    (i32.const 1)
   )
  )
  (drop
   (local.get $0)
  )
  (nop)
 )
 (func $a2 (; 1 ;) (type $2) (result i32)
  (local $0 i32)
  (local.set $0
   (i32.add
    (i32.const 0)
    (i32.const 1)
   )
  )
  (return
   (local.get $0)
  )
 )
 (func $a3 (; 2 ;) (type $2) (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 (; 3 ;) (type $1)
  (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)
  )
  (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
   (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 (; 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
   (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 (; 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
    (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 (; 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
     (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 (; 8 ;) (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)
  (loop $outer
   (loop $inner
    (block
     (br_if $outer
      (i32.const -1)
     )
     (nop)
     (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 (; 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
   (local.set $1
    (i32.const 0)
   )
   (br_if $outer
    (i32.const 1)
   )
   (local.set $2
    (local.get $1)
   )
   (drop
    (local.get $2)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (nop)
   (local.set $1
    (i32.const 8)
   )
   (br $outer)
   (unreachable)
  )
  (local.set $10
   (local.get $1)
  )
  (return
   (local.get $10)
  )
 )
 (func $a11 (; 10 ;) (type $1)
  (if
   (i32.const 0)
   (block
    (drop
     (i32.const 1)
    )
    (nop)
   )
  )
  (nop)
 )
 (func $a12 (; 11 ;) (type $2) (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 (; 12 ;) (type $2) (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 (; 13 ;) (type $2) (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 (; 14 ;) (type $1)
  (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)
     )
     (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
   (local.set $x
    (i32.const 1)
   )
   (local.set $1
    (local.get $x)
   )
   (block $label$2
    (local.set $x
     (i32.const 0)
    )
    (nop)
    (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)
   )
   (nop)
   (local.set $5
    (i32.const 0)
   )
  )
  (local.set $7
   (local.get $5)
  )
  (return
   (local.get $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)
  (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 (; 17 ;) (type $2) (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)
   )
   (unreachable.load16_s
    (unreachable)
   )
   (unreachable)
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $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)
    )
    (nop)
    (if
     (i32.const 1)
     (block
      (drop
       (i32.const 2)
      )
      (nop)
     )
    )
    (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)
      )
      (nop)
     )
     (unreachable)
    )
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $out3
      (return)
      (unreachable)
      (drop
       (i32.const 0)
      )
      (nop)
     )
     (unreachable)
    )
   )
   (nop)
   (block $out4
    (br_table $out4 $out4 $out4 $out4
     (i32.const 4)
    )
    (unreachable)
    (drop
     (i32.const 0)
    )
    (nop)
   )
   (nop)
   (block $out5
    (br_if $out5
     (i32.const 3)
    )
    (nop)
    (drop
     (i32.const 0)
    )
    (nop)
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $block4
      (if
       (i32.const 0)
       (block
        (block $out8
         (unreachable)
         (unreachable)
         (drop
          (i32.const 0)
         )
         (nop)
        )
        (unreachable)
       )
       (block
        (block $out9
         (unreachable)
         (unreachable)
         (drop
          (i32.const 0)
         )
         (nop)
        )
        (unreachable)
       )
      )
      (unreachable)
      (drop
       (i32.const 0)
      )
      (nop)
     )
     (unreachable)
    )
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $out11
      (unreachable)
      (unreachable)
      (unreachable)
      (drop
       (i32.const 0)
      )
      (nop)
      (unreachable)
      (unreachable)
     )
     (local.set $2
      (local.get $1)
     )
     (drop
      (local.get $2)
     )
     (nop)
    )
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $out13
      (unreachable)
      (unreachable)
      (unreachable)
      (drop
       (i32.const 0)
      )
      (nop)
      (unreachable)
      (unreachable)
     )
     (local.set $4
      (local.get $3)
     )
     (drop
      (local.get $4)
     )
     (nop)
    )
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $out15
      (unreachable)
      (unreachable)
      (unreachable)
      (unreachable)
      (drop
       (i32.const 0)
      )
      (nop)
      (unreachable)
      (unreachable)
     )
     (local.set $6
      (local.get $5)
     )
     (drop
      (local.get $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)
      )
      (nop)
     )
     (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)
      )
      (nop)
     )
     (unreachable)
    )
   )
   (nop)
   (if
    (i32.const 0)
    (block
     (block $block15
      (drop
       (i32.const 10)
      )
      (nop)
      (drop
       (i32.const 42)
      )
      (nop)
      (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)
      )
      (nop)
     )
     (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)
  )
  (nop)
 )
 (func $killer (; 21 ;) (type $1)
  (block
   (unreachable)
   (unreachable)
   (drop
    (i32.const 1000)
   )
   (nop)
  )
  (unreachable)
 )
 (func $target (; 22 ;) (type $1)
  (drop
   (i32.const 2000)
  )
  (nop)
 )
 (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)
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $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)
     (local.set $1
      (local.get $$$0)
     )
     (return
      (local.get $1)
     )
     (unreachable)
     (br $switch$7)
     (unreachable)
    )
    (nop)
    (local.set $2
     (local.get $$$0)
    )
    (return
     (local.get $2)
    )
    (unreachable)
   )
   (nop)
   (return
    (i32.const 0)
   )
   (unreachable)
  )
  (local.set $4
   (local.get $3)
  )
  (return
   (local.get $4)
  )
 )
 (func $global (; 25 ;) (type $1)
  (local $0 i32)
  (block
   (unreachable)
   (unreachable)
   (local.set $0
    (global.get $x)
   )
   (drop
    (local.get $0)
   )
   (nop)
   (global.set $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)
   (local.set $0
    (i32.const 0)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-br (; 27 ;) (type $2) (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 (; 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)
   (local.set $0
    (i32.const 19)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $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)
   (local.set $0
    (i32.const 19)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $1)
  )
 )
 (func $unreachable-brs-3 (; 31 ;) (type $2) (result i32)
  (local $0 i32)
  (local $1 i32)
  (block $label$0
   (local.set $0
    (i32.const 18)
   )
   (br $label$0)
   (grow_memory
    (unreachable)
   )
   (unreachable)
   (unreachable)
   (local.set $0
    (i32.const 21)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $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)
    (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 (; 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
   (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)
       (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 (; 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)
  (local $38 i32)
  (local $39 i32)
  (block $out
   (local.set $0
    (i32.add
     (i32.const 1)
     (i32.const 2)
    )
   )
   (drop
    (local.get $0)
   )
   (nop)
   (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)
    )
    (nop)
    (drop
     (i32.const 3)
    )
    (nop)
    (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)
   )
   (nop)
   (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)
    )
    (nop)
    (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)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (nop)
   (local.set $16
    (select
     (i32.const 9)
     (i32.const 10)
     (i32.const 11)
    )
   )
   (drop
    (local.get $16)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (nop)
   (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)
   )
   (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)
     (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)
   )
   (nop)
   (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)
   )
   (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)
   (local.set $0
    (i32.const 3)
   )
  )
  (local.set $1
   (local.get $0)
  )
  (return
   (local.get $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
    (local.set $7
     (local.get $12)
    )
    (local.set $8
     (i32.eq
      (local.get $7)
      (i32.const 65535)
     )
    )
    (if
     (local.get $8)
     (block
      (block $block44
       (block $label$78
        (local.set $430
         (i32.const 0)
        )
        (nop)
       )
       (nop)
       (local.set $9
        (local.get $430)
       )
       (local.set $432
        (local.get $9)
       )
       (nop)
      )
      (nop)
     )
     (block
      (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)
        )
        (nop)
       )
       (nop)
       (local.set $17
        (local.get $431)
       )
       (local.set $432
        (local.get $17)
       )
       (nop)
      )
      (nop)
     )
    )
   )
   (nop)
   (local.set $433
    (i32.const 1)
   )
   (nop)
   (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)
  )
  (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
    (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 (; 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
    (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)
   )
   (nop)
   (local.set $4
    (i32.const 1)
   )
  )
  (local.set $6
   (local.get $4)
  )
  (return
   (local.get $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
    (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 (; 41 ;) (type $ii) (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)
   )
   (nop)
   (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)
   )
   (nop)
  )
  (unreachable)
 )
 (func $return (; 42 ;) (type $3) (param $x i32) (result i32)
  (local $1 i32)
  (local.set $1
   (i32.sub
    (i32.const 1)
    (i32.const 2)
   )
  )
  (return
   (local.get $1)
  )
  (unreachable)
 )
)
