(module
 (type $FUNCSIG$ff (func (param f32) (result f32)))
 (type $FUNCSIG$vi (func (param i32)))
 (type $legaltype$illegalImport (func (param f64 i32 i32 i32)))
 (type $FUNCSIG$i (func (result i32)))
 (import "env" "memory" (memory $memory 256 256))
 (data (global.get $__memory_base) "wasm-only.asm.js")
 (import "env" "table" (table $table 3 3 funcref))
 (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64)
 (import "env" "__memory_base" (global $__memory_base i32))
 (import "env" "__table_base" (global $__table_base i32))
 (import "env" "_fabsf" (func $_fabsf (param f32) (result f32)))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32)))
 (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32)))
 (import "env" "getTempRet0" (func $getTempRet0 (result i32)))
 (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32)))
 (import "env" "do_i64" (func $legalimport$do_i64 (result i32)))
 (export "test64" (func $test64))
 (export "illegalParam" (func $legalstub$illegalParam))
 (export "illegalResult" (func $legalstub$illegalResult))
 (export "keepAlive" (func $keepAlive))
 (func $loads (; 6 ;) (; has Stack IR ;)
  (drop
   (i32.load8_s
    (i32.const 100)
   )
  )
  (drop
   (i32.load8_s
    (i32.const 101)
   )
  )
  (drop
   (i32.load16_s
    (i32.const 102)
   )
  )
  (drop
   (i32.load16_s
    (i32.const 103)
   )
  )
  (drop
   (i32.load16_s align=1
    (i32.const 104)
   )
  )
  (drop
   (i32.load16_s
    (i32.const 105)
   )
  )
  (drop
   (i32.load
    (i32.const 106)
   )
  )
  (drop
   (i32.load
    (i32.const 107)
   )
  )
  (drop
   (i32.load align=1
    (i32.const 108)
   )
  )
  (drop
   (i32.load align=2
    (i32.const 109)
   )
  )
  (drop
   (i32.load
    (i32.const 110)
   )
  )
  (drop
   (f32.load
    (i32.const 111)
   )
  )
  (drop
   (f32.load
    (i32.const 112)
   )
  )
  (drop
   (f32.load align=1
    (i32.const 113)
   )
  )
  (drop
   (f32.load align=2
    (i32.const 114)
   )
  )
  (drop
   (f32.load
    (i32.const 115)
   )
  )
  (drop
   (f64.load
    (i32.const 116)
   )
  )
  (drop
   (f64.load
    (i32.const 117)
   )
  )
  (drop
   (f64.load align=1
    (i32.const 118)
   )
  )
  (drop
   (f64.load align=2
    (i32.const 119)
   )
  )
  (drop
   (f64.load align=4
    (i32.const 120)
   )
  )
  (drop
   (f64.load
    (i32.const 121)
   )
  )
 )
 (func $stores (; 7 ;) (; has Stack IR ;)
  (i32.store8
   (i32.const 100)
   (i32.const 0)
  )
  (i32.store8
   (i32.const 101)
   (i32.const 0)
  )
  (i32.store16
   (i32.const 102)
   (i32.const 0)
  )
  (i32.store16
   (i32.const 103)
   (i32.const 0)
  )
  (i32.store16 align=1
   (i32.const 104)
   (i32.const 0)
  )
  (i32.store16
   (i32.const 105)
   (i32.const 0)
  )
  (i32.store
   (i32.const 106)
   (i32.const 0)
  )
  (i32.store
   (i32.const 107)
   (i32.const 0)
  )
  (i32.store align=1
   (i32.const 108)
   (i32.const 0)
  )
  (i32.store align=2
   (i32.const 109)
   (i32.const 0)
  )
  (i32.store
   (i32.const 110)
   (i32.const 0)
  )
  (f32.store
   (i32.const 111)
   (f32.const 0)
  )
  (f32.store
   (i32.const 112)
   (f32.const 0)
  )
  (f32.store align=1
   (i32.const 113)
   (f32.const 0)
  )
  (f32.store align=2
   (i32.const 114)
   (f32.const 0)
  )
  (f32.store
   (i32.const 115)
   (f32.const 0)
  )
  (f64.store
   (i32.const 116)
   (f64.const 0)
  )
  (f64.store
   (i32.const 117)
   (f64.const 0)
  )
  (f64.store align=1
   (i32.const 118)
   (f64.const 0)
  )
  (f64.store align=2
   (i32.const 119)
   (f64.const 0)
  )
  (f64.store align=4
   (i32.const 120)
   (f64.const 0)
  )
  (f64.store
   (i32.const 121)
   (f64.const 0)
  )
 )
 (func $i64s-div (; 8 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64)
  (if (result i64)
   (i64.eqz
    (local.get $1)
   )
   (i64.const 0)
   (if (result i64)
    (i32.and
     (i64.eq
      (local.get $0)
      (i64.const -9223372036854775808)
     )
     (i64.eq
      (local.get $1)
      (i64.const -1)
     )
    )
    (i64.const 0)
    (i64.div_s
     (local.get $0)
     (local.get $1)
    )
   )
  )
 )
 (func $f32-to-int64 (; 9 ;) (; has Stack IR ;) (param $0 f32)
  (drop
   (if (result i64)
    (f32.ne
     (local.get $0)
     (local.get $0)
    )
    (i64.const -9223372036854775808)
    (if (result i64)
     (f32.ge
      (local.get $0)
      (f32.const 9223372036854775808)
     )
     (i64.const -9223372036854775808)
     (if (result i64)
      (f32.le
       (local.get $0)
       (f32.const -9223372036854775808)
      )
      (i64.const -9223372036854775808)
      (i64.trunc_f32_s
       (local.get $0)
      )
     )
    )
   )
  )
 )
 (func $f64-to-int64 (; 10 ;) (; has Stack IR ;) (param $0 f64)
  (drop
   (if (result i64)
    (f64.ne
     (local.get $0)
     (local.get $0)
    )
    (i64.const -9223372036854775808)
    (if (result i64)
     (f64.ge
      (local.get $0)
      (f64.const 9223372036854775808)
     )
     (i64.const -9223372036854775808)
     (if (result i64)
      (f64.le
       (local.get $0)
       (f64.const -9223372036854775808)
      )
      (i64.const -9223372036854775808)
      (i64.trunc_f64_s
       (local.get $0)
      )
     )
    )
   )
  )
 )
 (func $f32-to-uint64 (; 11 ;) (; has Stack IR ;) (param $0 f32)
  (drop
   (if (result i64)
    (f32.ne
     (local.get $0)
     (local.get $0)
    )
    (i64.const 0)
    (if (result i64)
     (f32.ge
      (local.get $0)
      (f32.const 18446744073709551616)
     )
     (i64.const 0)
     (if (result i64)
      (f32.le
       (local.get $0)
       (f32.const -1)
      )
      (i64.const 0)
      (i64.trunc_f32_u
       (local.get $0)
      )
     )
    )
   )
  )
 )
 (func $f64-to-uint64 (; 12 ;) (; has Stack IR ;) (param $0 f64)
  (drop
   (if (result i64)
    (f64.ne
     (local.get $0)
     (local.get $0)
    )
    (i64.const 0)
    (if (result i64)
     (f64.ge
      (local.get $0)
      (f64.const 18446744073709551616)
     )
     (i64.const 0)
     (if (result i64)
      (f64.le
       (local.get $0)
       (f64.const -1)
      )
      (i64.const 0)
      (i64.trunc_f64_u
       (local.get $0)
      )
     )
    )
   )
  )
 )
 (func $test64 (; 13 ;) (; has Stack IR ;)
  (local $0 i64)
  (local $1 f32)
  (local $2 f64)
  (drop
   (i64.rem_s
    (i64.rem_u
     (call $i64s-div
      (i64.const 100)
      (i64.const 128849018897)
     )
     (i64.const 128849018897)
    )
    (i64.const 128849018897)
   )
  )
  (drop
   (i64.load
    (i32.const 120)
   )
  )
  (drop
   (i64.load
    (i32.const 120)
   )
  )
  (drop
   (i64.load align=2
    (i32.const 120)
   )
  )
  (drop
   (i64.load align=4
    (i32.const 120)
   )
  )
  (i64.store
   (i32.const 120)
   (local.tee $0
    (i64.load
     (i32.const 120)
    )
   )
  )
  (i64.store
   (i32.const 120)
   (local.get $0)
  )
  (i64.store align=2
   (i32.const 120)
   (local.get $0)
  )
  (i64.store align=4
   (i32.const 120)
   (local.get $0)
  )
  (i64.store
   (i32.const 120)
   (local.get $0)
  )
  (call $f32-to-int64
   (local.tee $1
    (f32.convert_i64_u
     (local.tee $0
      (i64.extend_i32_u
       (i32.wrap_i64
        (local.get $0)
       )
      )
     )
    )
   )
  )
  (call $f64-to-int64
   (local.tee $2
    (f64.convert_i64_u
     (local.get $0)
    )
   )
  )
  (call $f32-to-uint64
   (local.get $1)
  )
  (call $f64-to-uint64
   (local.get $2)
  )
 )
 (func $imports (; 14 ;) (; has Stack IR ;)
  (call $legalfunc$illegalImport
   (f64.const -3.13159)
   (i64.const 94489280523)
   (i32.const -33)
  )
  (drop
   (i64.or
    (i64.extend_i32_u
     (call $legalimport$illegalImportResult)
    )
    (i64.shl
     (i64.extend_i32_u
      (call $getTempRet0)
     )
     (i64.const 32)
    )
   )
  )
 )
 (func $arg (; 15 ;) (; has Stack IR ;) (param $0 i64)
  (i64.store
   (i32.const 100)
   (local.get $0)
  )
  (call $arg
   (local.get $0)
  )
 )
 (func $illegalParam (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i64) (param $2 f64)
  (i32.store
   (i32.const 50)
   (local.get $0)
  )
  (i64.store
   (i32.const 100)
   (local.get $1)
  )
  (f64.store
   (i32.const 200)
   (local.get $2)
  )
  (call $illegalParam
   (i32.const 0)
   (local.get $1)
   (f64.const 12.34)
  )
 )
 (func $call1 (; 17 ;) (; has Stack IR ;) (param $0 i64) (result i64)
  (call $call1
   (local.get $0)
  )
 )
 (func $call2 (; 18 ;) (; has Stack IR ;) (param $0 i64) (result i64)
  (drop
   (call $call2
    (call $call2
     (local.get $0)
    )
   )
  )
  (i64.const 245127260211081)
 )
 (func $ifValue64 (; 19 ;) (; has Stack IR ;)
  (drop
   (call $call2
    (i64.const 0)
   )
  )
 )
 (func $ifValue32 (; 20 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  (call $ifValue32
   (local.get $0)
   (local.get $1)
  )
 )
 (func $unreachable_leftovers (; 21 ;) (; has Stack IR ;)
  (i32.store
   (i32.const 0)
   (i32.const -2)
  )
 )
 (func $keepAlive (; 22 ;) (; has Stack IR ;)
  (call $loads)
  (call $loads)
  (call $stores)
  (call $stores)
  (call $imports)
  (call $imports)
  (call $arg
   (i64.const 0)
  )
  (call $arg
   (i64.const 0)
  )
  (drop
   (call $call1
    (i64.const 0)
   )
  )
  (drop
   (call $call1
    (i64.const 0)
   )
  )
  (drop
   (call $call2
    (i64.const 0)
   )
  )
  (drop
   (call $call2
    (i64.const 0)
   )
  )
  (call $ifValue64)
  (call $ifValue64)
  (drop
   (call $ifValue32
    (i32.const 0)
    (i32.const 0)
   )
  )
  (drop
   (call $ifValue32
    (i32.const 0)
    (i32.const 0)
   )
  )
  (call $unreachable_leftovers)
  (call $unreachable_leftovers)
 )
 (func $legalstub$illegalParam (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
  (call $illegalParam
   (local.get $0)
   (i64.or
    (i64.extend_i32_u
     (local.get $1)
    )
    (i64.shl
     (i64.extend_i32_u
      (local.get $2)
     )
     (i64.const 32)
    )
   )
   (local.get $3)
  )
 )
 (func $legalstub$illegalResult (; 24 ;) (; has Stack IR ;) (result i32)
  (call $setTempRet0
   (i32.const 2)
  )
  (i32.const 1)
 )
 (func $legalfunc$illegalImport (; 25 ;) (; has Stack IR ;) (param $0 f64) (param $1 i64) (param $2 i32)
  (call $legalimport$illegalImport
   (local.get $0)
   (i32.wrap_i64
    (local.get $1)
   )
   (i32.wrap_i64
    (i64.shr_u
     (local.get $1)
     (i64.const 32)
    )
   )
   (local.get $2)
  )
 )
 (func $legalfunc$do_i64 (; 26 ;) (; has Stack IR ;) (result i64)
  (i64.or
   (i64.extend_i32_u
    (call $legalimport$do_i64)
   )
   (i64.shl
    (i64.extend_i32_u
     (call $getTempRet0)
    )
    (i64.const 32)
   )
  )
 )
)
