(module
 (type $FUNCSIG$vdji (func (param f64 i64 i32)))
 (type $FUNCSIG$j (func (result i64)))
 (type $FUNCSIG$ff (func (param f32) (result f32)))
 (type $legaltype$illegalImport (func (param f64 i32 i32 i32)))
 (type $legaltype$illegalImportResult (func (result i32)))
 (type $legaltype$_fabsf (func (param f64) (result f64)))
 (type $legaltype$do_i64 (func (result i32)))
 (import "env" "illegalImport" (func $illegalImport (param f64 i64 i32)))
 (import "env" "illegalImportResult" (func $illegalImportResult (result i64)))
 (import "env" "_fabsf" (func $_fabsf (param f32) (result f32)))
 (import "env" "do_i64" (func $do_i64 (result i64)))
 (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32)))
 (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32)))
 (import "env" "_fabsf" (func $legalimport$_fabsf (param f64) (result f64)))
 (import "env" "do_i64" (func $legalimport$do_i64 (result i32)))
 (import "env" "memory" (memory $0 256 256))
 (import "env" "table" (table 3 3 anyfunc))
 (import "env" "memoryBase" (global $memoryBase i32))
 (import "env" "tableBase" (global $tableBase i32))
 (global $tempRet0 (mut i32) (i32.const 0))
 (elem (get_global $tableBase) $legalfunc$illegalImport $legalfunc$_fabsf $legalfunc$do_i64)
 (export "test64" (func $test64))
 (export "illegalParam" (func $legalstub$illegalParam))
 (export "illegalResult" (func $legalstub$illegalResult))
 (export "keepAlive" (func $keepAlive))
 (func $loads
  (local $i i32)
  (local $f f32)
  (local $d f64)
  (set_local $i
   (i32.load8_s
    (i32.const 100)
   )
  )
  (set_local $i
   (i32.load8_s
    (i32.const 101)
   )
  )
  (set_local $i
   (i32.load16_s
    (i32.const 102)
   )
  )
  (set_local $i
   (i32.load16_s
    (i32.const 103)
   )
  )
  (set_local $i
   (i32.load16_s align=1
    (i32.const 104)
   )
  )
  (set_local $i
   (i32.load16_s
    (i32.const 105)
   )
  )
  (set_local $i
   (i32.load
    (i32.const 106)
   )
  )
  (set_local $i
   (i32.load
    (i32.const 107)
   )
  )
  (set_local $i
   (i32.load align=1
    (i32.const 108)
   )
  )
  (set_local $i
   (i32.load align=2
    (i32.const 109)
   )
  )
  (set_local $i
   (i32.load
    (i32.const 110)
   )
  )
  (set_local $f
   (f32.load
    (i32.const 111)
   )
  )
  (set_local $f
   (f32.load
    (i32.const 112)
   )
  )
  (set_local $f
   (f32.load align=1
    (i32.const 113)
   )
  )
  (set_local $f
   (f32.load align=2
    (i32.const 114)
   )
  )
  (set_local $f
   (f32.load
    (i32.const 115)
   )
  )
  (set_local $d
   (f64.load
    (i32.const 116)
   )
  )
  (set_local $d
   (f64.load
    (i32.const 117)
   )
  )
  (set_local $d
   (f64.load align=1
    (i32.const 118)
   )
  )
  (set_local $d
   (f64.load align=2
    (i32.const 119)
   )
  )
  (set_local $d
   (f64.load align=4
    (i32.const 120)
   )
  )
  (set_local $d
   (f64.load
    (i32.const 121)
   )
  )
 )
 (func $stores
  (local $i i32)
  (local $f f32)
  (local $d f64)
  (i32.store8
   (i32.const 100)
   (get_local $i)
  )
  (i32.store8
   (i32.const 101)
   (get_local $i)
  )
  (i32.store16
   (i32.const 102)
   (get_local $i)
  )
  (i32.store16
   (i32.const 103)
   (get_local $i)
  )
  (i32.store16 align=1
   (i32.const 104)
   (get_local $i)
  )
  (i32.store16
   (i32.const 105)
   (get_local $i)
  )
  (i32.store
   (i32.const 106)
   (get_local $i)
  )
  (i32.store
   (i32.const 107)
   (get_local $i)
  )
  (i32.store align=1
   (i32.const 108)
   (get_local $i)
  )
  (i32.store align=2
   (i32.const 109)
   (get_local $i)
  )
  (i32.store
   (i32.const 110)
   (get_local $i)
  )
  (f32.store
   (i32.const 111)
   (get_local $f)
  )
  (f32.store
   (i32.const 112)
   (get_local $f)
  )
  (f32.store align=1
   (i32.const 113)
   (get_local $f)
  )
  (f32.store align=2
   (i32.const 114)
   (get_local $f)
  )
  (f32.store
   (i32.const 115)
   (get_local $f)
  )
  (f64.store
   (i32.const 116)
   (get_local $d)
  )
  (f64.store
   (i32.const 117)
   (get_local $d)
  )
  (f64.store align=1
   (i32.const 118)
   (get_local $d)
  )
  (f64.store align=2
   (i32.const 119)
   (get_local $d)
  )
  (f64.store align=4
   (i32.const 120)
   (get_local $d)
  )
  (f64.store
   (i32.const 121)
   (get_local $d)
  )
 )
 (func $test
  (local $i i32)
  (local $j i64)
  (local $f f32)
  (local $f1 f32)
  (local $f2 f32)
  (local $d1 f64)
  (local $d2 f64)
  (set_local $i
   (i32.reinterpret/f32
    (get_local $f)
   )
  )
  (set_local $f
   (f32.reinterpret/i32
    (get_local $i)
   )
  )
  (set_local $i
   (i32.ctz
    (get_local $i)
   )
  )
  (set_local $i
   (i32.popcnt
    (get_local $i)
   )
  )
  (set_local $j
   (i64.popcnt
    (get_local $j)
   )
  )
  (set_local $f1
   (f32.copysign
    (get_local $f1)
    (get_local $f2)
   )
  )
  (set_local $d1
   (f64.copysign
    (get_local $d1)
    (get_local $d2)
   )
  )
 )
 (func $test64
  (local $x i64)
  (local $y i64)
  (local $z i32)
  (local $int32 i32)
  (local $float32 f32)
  (local $float64 f64)
  (set_local $x
   (i64.const 100)
  )
  (set_local $y
   (i64.const 128849018897)
  )
  (set_local $x
   (i64.add
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.sub
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.mul
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.div_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.div_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.rem_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.rem_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.and
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.or
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.xor
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.shl
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.shr_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.shr_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $x
   (i64.load
    (i32.const 120)
   )
  )
  (set_local $x
   (i64.load
    (i32.const 120)
   )
  )
  (set_local $x
   (i64.load align=2
    (i32.const 120)
   )
  )
  (set_local $x
   (i64.load align=4
    (i32.const 120)
   )
  )
  (set_local $x
   (i64.load
    (i32.const 120)
   )
  )
  (i64.store
   (i32.const 120)
   (get_local $x)
  )
  (i64.store
   (i32.const 120)
   (get_local $x)
  )
  (i64.store align=2
   (i32.const 120)
   (get_local $x)
  )
  (i64.store align=4
   (i32.const 120)
   (get_local $x)
  )
  (i64.store
   (i32.const 120)
   (get_local $x)
  )
  (set_local $z
   (i64.eq
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.ne
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.le_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.le_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.ge_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.ge_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.lt_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.lt_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.gt_u
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (i64.gt_s
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $int32
   (i32.wrap/i64
    (get_local $x)
   )
  )
  (set_local $x
   (i64.extend_s/i32
    (get_local $int32)
   )
  )
  (set_local $x
   (i64.extend_u/i32
    (get_local $int32)
   )
  )
  (set_local $float32
   (f32.convert_s/i64
    (get_local $x)
   )
  )
  (set_local $float64
   (f64.convert_s/i64
    (get_local $x)
   )
  )
  (set_local $float32
   (f32.convert_u/i64
    (get_local $x)
   )
  )
  (set_local $float64
   (f64.convert_u/i64
    (get_local $x)
   )
  )
  (set_local $x
   (i64.trunc_s/f32
    (get_local $float32)
   )
  )
  (set_local $x
   (i64.trunc_s/f64
    (get_local $float64)
   )
  )
  (set_local $x
   (i64.trunc_u/f32
    (get_local $float32)
   )
  )
  (set_local $x
   (i64.trunc_u/f64
    (get_local $float64)
   )
  )
  (set_local $x
   (i64.reinterpret/f64
    (get_local $float64)
   )
  )
  (set_local $float64
   (f64.reinterpret/i64
    (get_local $x)
   )
  )
  (set_local $x
   (i64.clz
    (get_local $y)
   )
  )
  (set_local $y
   (i64.ctz
    (get_local $x)
   )
  )
 )
 (func $imports (result i64)
  (call $legalfunc$illegalImport
   (f64.const -3.13159)
   (i64.const 94489280523)
   (i32.const -33)
  )
  (return
   (call $legalfunc$illegalImportResult)
  )
 )
 (func $arg (param $x i64)
  (i64.store
   (i32.const 100)
   (get_local $x)
  )
  (call $arg
   (get_local $x)
  )
 )
 (func $illegalParam (param $a i32) (param $x i64) (param $b f64)
  (i64.store
   (i32.const 100)
   (get_local $x)
  )
  (call $illegalParam
   (i32.const 0)
   (get_local $x)
   (f64.const 12.34)
  )
 )
 (func $result (result i64)
  (return
   (i64.const 8589934593)
  )
 )
 (func $illegalResult (result i64)
  (return
   (i64.const 8589934593)
  )
 )
 (func $call1 (param $x i64) (result i64)
  (local $y i64)
  (set_local $y
   (call $call1
    (get_local $x)
   )
  )
  (return
   (get_local $y)
  )
 )
 (func $call2 (param $x i64) (result i64)
  (drop
   (call $call2
    (call $call2
     (get_local $x)
    )
   )
  )
  (return
   (i64.const 245127260211081)
  )
 )
 (func $returnCastConst (result i64)
  (return
   (i64.const 0)
  )
 )
 (func $ifValue64 (param $$4 i64) (param $$6 i64) (result i64)
  (local $$$0 i64)
  (local $$9 i64)
  (local $$10 i64)
  (if
   (i32.wrap/i64
    (get_local $$6)
   )
   (block
    (set_local $$9
     (call $call2
      (get_local $$4)
     )
    )
    (set_local $$$0
     (get_local $$9)
    )
   )
   (block
    (set_local $$10
     (call $call2
      (get_local $$4)
     )
    )
    (set_local $$$0
     (get_local $$10)
    )
   )
  )
  (return
   (get_local $$$0)
  )
 )
 (func $ifValue32 (param $$4 i32) (param $$6 i32) (result i32)
  (local $$$0 i32)
  (local $$9 i32)
  (local $$10 i32)
  (if
   (get_local $$6)
   (block
    (set_local $$9
     (call $ifValue32
      (get_local $$4)
      (get_local $$6)
     )
    )
    (set_local $$$0
     (get_local $$9)
    )
   )
   (block
    (set_local $$10
     (call $ifValue32
      (get_local $$4)
      (get_local $$6)
     )
    )
    (set_local $$$0
     (get_local $$10)
    )
   )
  )
  (return
   (get_local $$$0)
  )
 )
 (func $switch64 (param $$a444 i64) (result i32)
  (local $$waka i32)
  (block $switch
   (block $switch-default
    (block $switch-case0
     (block $switch-case
      (br_table $switch-case0 $switch-default $switch-case $switch-default
       (i32.wrap/i64
        (i64.sub
         (get_local $$a444)
         (i64.const 42949672965)
        )
       )
      )
     )
     (block
      (set_local $$waka
       (i32.const 11000)
      )
      (br $switch)
     )
    )
    (block
     (set_local $$waka
      (i32.const 10)
     )
     (br $switch)
    )
   )
   (set_local $$waka
    (i32.const 1)
   )
  )
  (return
   (get_local $$waka)
  )
 )
 (func $unreachable_leftovers (param $$0 i32) (param $$1 i32) (param $$2 i32)
  (local $label i32)
  (block $label$break$L1
   (if
    (get_local $$1)
    (set_local $label
     (i32.const 10)
    )
    (block
     (if
      (get_local $$2)
      (block
       (br $label$break$L1)
       (return)
      )
     )
     (i32.store
      (get_local $$0)
      (i32.const -2)
     )
     (return)
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 10)
   )
   (i32.store
    (get_local $$0)
    (i32.const -1)
   )
  )
  (return)
 )
 (func $switch64TOOMUCH (param $$a444 i64) (result i32)
  (local $$waka i32)
  (local $2 i64)
  (local $3 i32)
  (local $4 i64)
  (local $5 i32)
  (block $switch
   (block $switch-default
    (block $switch-case0
     (block $switch-case
      (set_local $2
       (get_local $$a444)
      )
      (if
       (i64.eq
        (get_local $2)
        (i64.const -9223372036854775808)
       )
       (br $switch-case0)
       (if
        (i64.eq
         (get_local $2)
         (i64.const 4611686018427387904)
        )
        (br $switch-case)
        (br $switch-default)
       )
      )
     )
     (nop)
    )
    (return
     (i32.const 40)
    )
   )
   (set_local $$waka
    (i32.const 1)
   )
  )
  (block $switch1
   (block $switch-default4
    (block $switch-case3
     (block $switch-case2
      (set_local $3
       (i32.const 100)
      )
      (if
       (i32.eq
        (get_local $3)
        (i32.const 214748364)
       )
       (br $switch-case3)
       (if
        (i32.eq
         (get_local $3)
         (i32.const 107374182)
        )
        (br $switch-case2)
        (br $switch-default4)
       )
      )
     )
     (nop)
    )
    (return
     (i32.const 41)
    )
   )
   (set_local $$waka
    (i32.const 1001)
   )
  )
  (block $switch5
   (block $switch-case7
    (block $switch-case6
     (set_local $4
      (get_local $$a444)
     )
     (if
      (i64.eq
       (get_local $4)
       (i64.const -9223372036854775808)
      )
      (br $switch-case7)
      (if
       (i64.eq
        (get_local $4)
        (i64.const 4611686018427387904)
       )
       (br $switch-case6)
       (br $switch5)
      )
     )
    )
    (nop)
   )
   (return
    (i32.const 42)
   )
  )
  (block $switch8
   (block $switch-case10
    (block $switch-case9
     (set_local $5
      (i32.const 100)
     )
     (if
      (i32.eq
       (get_local $5)
       (i32.const 214748364)
      )
      (br $switch-case10)
      (if
       (i32.eq
        (get_local $5)
        (i32.const 107374182)
       )
       (br $switch-case9)
       (br $switch8)
      )
     )
    )
    (nop)
   )
   (return
    (i32.const 43)
   )
  )
  (return
   (i32.const 44)
  )
 )
 (func $keepAlive
  (call $loads)
  (call $stores)
  (call $test)
  (drop
   (call $imports)
  )
  (call $arg
   (i64.const 0)
  )
  (drop
   (call $call1
    (i64.const 0)
   )
  )
  (drop
   (call $call2
    (i64.const 0)
   )
  )
  (drop
   (call $returnCastConst)
  )
  (drop
   (call $ifValue64
    (i64.const 0)
    (i64.const 0)
   )
  )
  (drop
   (call $ifValue32
    (i32.const 0)
    (i32.const 0)
   )
  )
  (drop
   (call $switch64
    (i64.const 0)
   )
  )
  (call $unreachable_leftovers
   (i32.const 0)
   (i32.const 0)
   (i32.const 0)
  )
 )
 (func $__emscripten_dceable_type_decls
  (drop
   (call $legalfunc$_fabsf
    (f32.const 0)
   )
  )
  (drop
   (call $legalfunc$do_i64)
  )
 )
 (func $legalstub$illegalParam (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
  (call $illegalParam
   (get_local $0)
   (i64.or
    (i64.extend_u/i32
     (get_local $1)
    )
    (i64.shl
     (i64.extend_u/i32
      (get_local $2)
     )
     (i64.const 32)
    )
   )
   (get_local $3)
  )
 )
 (func $legalstub$illegalResult (result i32)
  (local $0 i64)
  (set_local $0
   (call $illegalResult)
  )
  (set_global $tempRet0
   (i32.wrap/i64
    (i64.shr_u
     (get_local $0)
     (i64.const 32)
    )
   )
  )
  (i32.wrap/i64
   (get_local $0)
  )
 )
 (func $legalfunc$illegalImport (param $0 f64) (param $1 i64) (param $2 i32)
  (call $legalimport$illegalImport
   (get_local $0)
   (i32.wrap/i64
    (get_local $1)
   )
   (i32.wrap/i64
    (i64.shr_u
     (get_local $1)
     (i64.const 32)
    )
   )
   (get_local $2)
  )
 )
 (func $legalfunc$illegalImportResult (result i64)
  (i64.or
   (i64.extend_u/i32
    (call $legalimport$illegalImportResult)
   )
   (i64.shl
    (i64.extend_u/i32
     (get_global $tempRet0)
    )
    (i64.const 32)
   )
  )
 )
 (func $legalfunc$_fabsf (param $0 f32) (result f32)
  (f32.demote/f64
   (call $legalimport$_fabsf
    (f64.promote/f32
     (get_local $0)
    )
   )
  )
 )
 (func $legalfunc$do_i64 (result i64)
  (i64.or
   (i64.extend_u/i32
    (call $legalimport$do_i64)
   )
   (i64.shl
    (i64.extend_u/i32
     (get_global $tempRet0)
    )
    (i64.const 32)
   )
  )
 )
)
