(module
 (type $f32_=>_f32 (func (param f32) (result f32)))
 (type $f64_=>_f64 (func (param f64) (result f64)))
 (type $i32_f32_i64_f64_=>_none (func (param i32 f32 i64 f64)))
 (type $f32_f64_=>_none (func (param f32 f64)))
 (global $global$1 (mut f32) (f32.const 0))
 (global $global$2 (mut f32) (f32.const 12.34000015258789))
 (func $foo32 (param $x f32) (result f32)
  (local.set $x
   (call $deNan32
    (local.get $x)
   )
  )
  (call $deNan32
   (call $foo32
    (local.get $x)
   )
  )
 )
 (func $foo64 (param $x f64) (result f64)
  (local.set $x
   (call $deNan64
    (local.get $x)
   )
  )
  (call $deNan64
   (call $foo64
    (local.get $x)
   )
  )
 )
 (func $various (param $x i32) (param $y f32) (param $z i64) (param $w f64)
  (local.set $y
   (call $deNan32
    (local.get $y)
   )
  )
  (local.set $w
   (call $deNan64
    (local.get $w)
   )
  )
  (nop)
 )
 (func $ignore-local.get (param $f f32) (param $d f64)
  (local.set $f
   (call $deNan32
    (local.get $f)
   )
  )
  (local.set $d
   (call $deNan64
    (local.get $d)
   )
  )
  (drop
   (local.get $f)
  )
  (drop
   (local.get $d)
  )
  (local.set $f
   (local.get $f)
  )
  (local.set $d
   (local.get $d)
  )
  (drop
   (local.get $f)
  )
  (drop
   (local.get $d)
  )
  (drop
   (call $deNan32
    (f32.abs
     (local.get $f)
    )
   )
  )
  (drop
   (call $deNan64
    (f64.abs
     (local.get $d)
    )
   )
  )
  (local.set $f
   (call $deNan32
    (f32.abs
     (local.get $f)
    )
   )
  )
  (local.set $d
   (call $deNan64
    (f64.abs
     (local.get $d)
    )
   )
  )
  (drop
   (local.get $f)
  )
  (drop
   (local.get $d)
  )
 )
 (func $tees (param $x f32) (result f32)
  (local.set $x
   (call $deNan32
    (local.get $x)
   )
  )
  (local.tee $x
   (local.tee $x
    (local.tee $x
     (local.tee $x
      (local.get $x)
     )
    )
   )
  )
 )
 (func $select (param $x f32) (result f32)
  (local.set $x
   (call $deNan32
    (local.get $x)
   )
  )
  (select
   (local.get $x)
   (local.get $x)
   (i32.const 1)
  )
 )
 (func $deNan32 (param $0 f32) (result f32)
  (if (result f32)
   (f32.eq
    (local.get $0)
    (local.get $0)
   )
   (local.get $0)
   (f32.const 0)
  )
 )
 (func $deNan64 (param $0 f64) (result f64)
  (if (result f64)
   (f64.eq
    (local.get $0)
    (local.get $0)
   )
   (local.get $0)
   (f64.const 0)
  )
 )
)
