(module
 (type $2 (func (result i32)))
 (type $1 (func))
 (memory $0 256 256)
 (func $b14 (result i32)
  (drop
   (select
    (block $block1 (result i32)
     (i32.const 12)
    )
    (block $block3 (result i32)
     (i32.const 27)
    )
    (i32.const 1)
   )
  )
  (drop
   (if (result i32)
    (i32.const 1)
    (then
     (i32.load
      (i32.const 10)
     )
    )
    (else
     (i32.const 27)
    )
   )
  )
  (drop
   (select
    (i32.rem_s
     (i32.const 11)
     (i32.const 12)
    )
    (i32.const 27)
    (i32.const 1)
   )
  )
  (drop
   (if (result i32)
    (i32.const 1)
    (then
     (i32.trunc_f64_u
      (f64.const 12.34)
     )
    )
    (else
     (i32.const 27)
    )
   )
  )
  (i32.const 0)
 )
 (func $join-br_ifs
  (local $x i32)
  (block $out
   (br_if $out
    (i32.or
     (local.get $x)
     (local.get $x)
    )
   )
   (nop)
   (br_if $out
    (local.get $x)
   )
  )
  (block $out2
   (block $out3
    (br_if $out2
     (local.get $x)
    )
    (br_if $out3
     (local.get $x)
    )
    (br_if $out2
     (local.get $x)
    )
   )
   (unreachable)
  )
  (block $out4
   (block $out5
    (br_if $out4
     (local.get $x)
    )
    (br_if $out5
     (i32.or
      (local.get $x)
      (local.get $x)
     )
    )
    (nop)
   )
   (unreachable)
  )
  (block $out6
   (block $out7
    (br_if $out6
     (i32.or
      (local.get $x)
      (local.get $x)
     )
    )
    (nop)
    (br_if $out7
     (local.get $x)
    )
   )
   (unreachable)
  )
  (if
   (i32.eqz
    (i32.or
     (call $b14)
     (local.get $x)
    )
   )
   (then
    (block $out8
     (nop)
     (nop)
    )
   )
  )
  (block $out80
   (br_if $out80
    (local.get $x)
   )
   (br_if $out80
    (call $b14)
   )
  )
 )
 (func $join-and-it-becomes-unreachable
  (block $label$1
   (block
    (br_if $label$1
     (i32.load8_u
      (i32.const -93487262)
     )
    )
    (br_if $label$1
     (loop $label$5
      (br $label$5)
     )
    )
   )
  )
 )
 (func $br-if-unreachable-pair
  (local $x i32)
  (block $label$14
   (br_if $label$14
    (unreachable)
   )
   (br_if $label$14
    (local.get $x)
   )
  )
 )
 (func $br-if-unreachable-pair2
  (local $x i32)
  (block $label$14
   (br_if $label$14
    (local.get $x)
   )
   (br_if $label$14
    (unreachable)
   )
  )
 )
 (func $simple-switch (result i32)
  (block $A
   (block $B
    (block $y
     (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y
      (i32.const 0)
     )
     (return
      (i32.const 0)
     )
    )
    (return
     (i32.const 1)
    )
   )
   (return
    (i32.const 2)
   )
  )
  (i32.const 3)
 )
 (func $simple-switch-2 (result i32)
  (local $0 i32)
  (block $A
   (block $B
    (block $y
     (br_if $A
      (i32.or
       (i32.eqz
        (local.tee $0
         (i32.const 0)
        )
       )
       (i32.eq
        (local.get $0)
        (i32.const 12)
       )
      )
     )
     (nop)
     (br $y)
     (return
      (i32.const 0)
     )
    )
    (return
     (i32.const 1)
    )
   )
   (return
    (i32.const 2)
   )
  )
  (i32.const 3)
 )
 (func $simple-switch-3 (result i32)
  (local $0 i32)
  (block $A
   (block $B
    (block $y
     (br_if $A
      (i32.eqz
       (local.tee $0
        (i32.const 0)
       )
      )
     )
     (br_if $B
      (i32.eq
       (local.get $0)
       (i32.const 1025)
      )
     )
     (br $y)
     (return
      (i32.const 0)
     )
    )
    (return
     (i32.const 1)
    )
   )
   (return
    (i32.const 2)
   )
  )
  (i32.const 3)
 )
 (func $simple-switch-4 (result i32)
  (block $A
   (block $B
    (block $y
     (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y
      (i32.const 0)
     )
     (return
      (i32.const 0)
     )
    )
    (return
     (i32.const 1)
    )
   )
   (return
    (i32.const 2)
   )
  )
  (i32.const 3)
 )
)
