(module
 (type $0 (func (param i32)))
 (type $1 (func))
 (type $2 (func (result i32)))
 (memory $0 256 256)
 (func $b14 (type $2) (result i32)
  (drop
   (select
    (block $block1 i32
     (i32.const 12)
    )
    (block $block3 i32
     (i32.const 27)
    )
    (i32.const 1)
   )
  )
  (drop
   (select
    (i32.load
     (i32.const 10)
    )
    (i32.const 27)
    (i32.const 1)
   )
  )
  (drop
   (select
    (i32.rem_s
     (i32.const 11)
     (i32.const 12)
    )
    (i32.const 27)
    (i32.const 1)
   )
  )
  (drop
   (select
    (i32.trunc_u/f64
     (f64.const 12.34)
    )
    (i32.const 27)
    (i32.const 1)
   )
  )
 )
 (func $join-br_ifs (type $1)
  (block $out
   (br_if $out
    (i32.or
     (i32.const 1)
     (i32.const 2)
    )
   )
   (nop)
   (br_if $out
    (i32.const 3)
   )
  )
  (block $out2
   (block $out3
    (br_if $out2
     (i32.const 1)
    )
    (br_if $out3
     (i32.const 2)
    )
    (br_if $out2
     (i32.const 3)
    )
   )
   (unreachable)
  )
  (block $out4
   (block $out5
    (br_if $out4
     (i32.const 1)
    )
    (br_if $out5
     (i32.or
      (i32.const 2)
      (i32.const 3)
     )
    )
    (nop)
   )
   (unreachable)
  )
  (block $out6
   (block $out7
    (br_if $out6
     (i32.or
      (i32.const 1)
      (i32.const 2)
     )
    )
    (nop)
    (br_if $out7
     (i32.const 3)
    )
   )
   (unreachable)
  )
  (if
   (i32.eqz
    (i32.or
     (call $b14)
     (i32.const 0)
    )
   )
   (block
    (nop)
    (nop)
   )
  )
  (block $out83
   (br_if $out83
    (i32.const 1)
   )
   (br_if $out83
    (call $b14)
   )
  )
 )
)
