(module
 (type $0 (func))
 (type $1 (func (param i32 i32) (result f64)))
 (type $2 (func (param i32) (result i32)))
 (memory $0 1)
 (func $contrast
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $a i32)
  (local $b i32)
  (nop)
  (if
   (local.tee $x
    (i32.const 1)
   )
   (then
    (nop)
   )
  )
  (if
   (local.get $x)
   (then
    (nop)
   )
  )
  (nop)
  (drop
   (if (result i32)
    (i32.const 2)
    (then
     (i32.const 3)
    )
    (else
     (i32.const 4)
    )
   )
  )
  (nop)
  (drop
   (block (result i32)
    (i32.const 5)
   )
  )
  (if
   (i32.const 6)
   (then
    (local.set $a
     (i32.const 7)
    )
   )
   (else
    (local.set $a
     (i32.const 8)
    )
   )
  )
  (drop
   (local.get $a)
  )
  (block $val
   (if
    (i32.const 10)
    (then
     (local.set $b
      (i32.const 11)
     )
     (br $val)
    )
   )
   (local.set $b
    (i32.const 12)
   )
  )
  (drop
   (local.get $b)
  )
 )
 (func $no-unreachable
  (local $x i32)
  (unreachable)
 )
 (func $implicit-trap-and-global-effects
  (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
  (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)
   (then
    (drop
     (local.get $other)
    )
   )
  )
 )
 (func $multi-pass-get-equivs-right (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 (param $x i32) (result i32)
  (local $y i32)
  (if
   (i32.const 1)
   (then
    (local.set $x
     (i32.const 2)
    )
   )
   (else
    (nop)
    (nop)
   )
  )
  (local.get $x)
 )
)
