(module
 (type $0 (func))
 (type $1 (func (param i32 i32) (result f64)))
 (type $2 (func (param i32) (result i32)))
 (func $contrast (; 0 ;) (type $0)
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $a i32)
  (local $b i32)
  (nop)
  (if
   (local.tee $x
    (i32.const 1)
   )
   (nop)
  )
  (if
   (local.get $x)
   (nop)
  )
  (nop)
  (drop
   (if (result i32)
    (i32.const 2)
    (i32.const 3)
    (i32.const 4)
   )
  )
  (nop)
  (drop
   (block $block (result i32)
    (i32.const 5)
   )
  )
  (if
   (i32.const 6)
   (local.set $a
    (i32.const 7)
   )
   (local.set $a
    (i32.const 8)
   )
  )
  (drop
   (local.get $a)
  )
  (block $val
   (if
    (i32.const 10)
    (block $block4
     (local.set $b
      (i32.const 11)
     )
     (br $val)
    )
   )
   (local.set $b
    (i32.const 12)
   )
  )
  (drop
   (local.get $b)
  )
 )
 (func $no-unreachable (; 1 ;) (type $0)
  (local $x i32)
  (unreachable)
 )
 (func $implicit-trap-and-global-effects (; 2 ;) (type $0)
  (local $var$0 i32)
  (local.set $var$0
   (i32.trunc_f64_u
    (f64.const -nan:0xfffffffffffc3)
   )
  )
  (f32.store align=1
   (i32.const 22)
   (f32.const 154)
  )
  (drop
   (local.get $var$0)
  )
 )
 (func $implicit-trap-and-local-effects (; 3 ;) (type $0)
  (local $var$0 i32)
  (local $other i32)
  (nop)
  (local.set $other
   (i32.const 100)
  )
  (drop
   (i32.trunc_f64_u
    (f64.const -nan:0xfffffffffffc3)
   )
  )
  (if
   (i32.const 1)
   (drop
    (local.get $other)
   )
  )
 )
 (func $multi-pass-get-equivs-right (; 4 ;) (type $1) (param $var$0 i32) (param $var$1 i32) (result f64)
  (local $var$2 i32)
  (nop)
  (i32.store
   (local.get $var$0)
   (i32.const 1)
  )
  (f64.promote_f32
   (f32.load
    (local.get $var$0)
   )
  )
 )
 (func $if-value-structure-equivalent (; 5 ;) (type $2) (param $x i32) (result i32)
  (local $y i32)
  (if
   (i32.const 1)
   (local.set $x
    (i32.const 2)
   )
   (block $block
    (nop)
    (local.set $x
     (local.get $x)
    )
   )
  )
  (local.get $x)
 )
)
