(module
 (type $i32_=>_none (func (param i32)))
 (type $none_=>_none (func))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (func $trivial
  (nop)
 )
 (func $trivial2
  (call $trivial)
  (call $trivial)
 )
 (func $return-void
  (nop)
 )
 (func $return-val (result i32)
  (i32.const 1)
 )
 (func $ifs (param $0 i32) (result i32)
  (select
   (select
    (i32.const 2)
    (i32.const 3)
    (local.get $0)
   )
   (select
    (i32.const 4)
    (i32.const 5)
    (local.get $0)
   )
   (local.get $0)
  )
 )
 (func $loops (param $0 i32)
  (if
   (local.get $0)
   (loop $shape$2$continue
    (call $trivial)
    (br $shape$2$continue)
   )
  )
  (loop $shape$4$continue
   (call $trivial)
   (if
    (local.get $0)
    (br $shape$4$continue)
   )
  )
  (loop $shape$6$continue
   (call $trivial)
   (if
    (local.get $0)
    (br $shape$6$continue)
   )
  )
 )
 (func $br-out (param $0 i32)
  (call $br-out
   (i32.const 5)
  )
 )
 (func $unreachable (param $0 i32)
  (if
   (i32.eqz
    (local.get $0)
   )
   (block
    (call $unreachable
     (i32.const 5)
    )
    (return)
   )
  )
  (if
   (local.get $0)
   (block
    (call $unreachable
     (i32.const 1)
    )
    (unreachable)
   )
   (call $unreachable
    (i32.const 3)
   )
  )
 )
 (func $empty-blocks (param $0 i32)
  (nop)
 )
 (func $before-and-after (param $0 i32)
  (call $before-and-after
   (i32.const 1)
  )
  (call $before-and-after
   (i32.const 2)
  )
  (call $before-and-after
   (i32.const 3)
  )
  (call $before-and-after
   (i32.const 4)
  )
  (if
   (i32.eqz
    (local.get $0)
   )
   (call $before-and-after
    (i32.const 5)
   )
  )
  (call $before-and-after
   (i32.const 6)
  )
  (call $before-and-after
   (i32.const 7)
  )
  (call $before-and-after
   (i32.const 8)
  )
  (loop $shape$4$continue
   (call $before-and-after
    (i32.const 9)
   )
   (if
    (local.get $0)
    (br $shape$4$continue)
   )
  )
  (call $before-and-after
   (i32.const 10)
  )
  (call $before-and-after
   (i32.const 11)
  )
  (if
   (local.get $0)
   (call $before-and-after
    (i32.const 12)
   )
  )
  (call $before-and-after
   (i32.const 13)
  )
  (if
   (local.get $0)
   (call $before-and-after
    (i32.const 14)
   )
   (call $before-and-after
    (i32.const 15)
   )
  )
  (if
   (local.get $0)
   (call $before-and-after
    (i32.const 16)
   )
  )
  (call $before-and-after
   (i32.const 17)
  )
  (call $before-and-after
   (i32.const 18)
  )
  (call $before-and-after
   (i32.const 19)
  )
  (call $before-and-after
   (i32.const 20)
  )
  (call $before-and-after
   (i32.const 21)
  )
  (call $before-and-after
   (i32.const 22)
  )
  (call $before-and-after
   (i32.const 23)
  )
  (call $before-and-after
   (i32.const 24)
  )
  (call $before-and-after
   (i32.const 25)
  )
 )
 (func $switch (param $0 i32)
  (call $switch
   (i32.const 1)
  )
  (block $block$7$break
   (block $switch$3$default
    (block $switch$3$case$7
     (br_table $switch$3$case$7 $switch$3$case$7 $switch$3$case$7 $switch$3$default
      (local.get $0)
     )
    )
    (br $block$7$break)
   )
   (call $switch
    (i32.const 2)
   )
  )
  (call $switch
   (i32.const 3)
  )
 )
 (func $no-return
  (nop)
 )
 (func $if-br-wat (param $0 i32)
  (call $if-br-wat
   (i32.const 0)
  )
  (block $block$2$break
   (if
    (local.get $0)
    (call $if-br-wat
     (i32.const 1)
    )
    (if
     (local.get $0)
     (br $block$2$break)
    )
   )
   (call $if-br-wat
    (i32.const 2)
   )
  )
  (call $if-br-wat
   (i32.const 3)
  )
 )
)
