(module
 (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
 (type $FUNCSIG$vf (func (param f32)))
 (type $FUNCSIG$vi (func (param i32)))
 (type $FUNCSIG$v (func))
 (type $FUNCSIG$idi (func (param f64 i32) (result i32)))
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (type $FUNCSIG$dd (func (param f64) (result f64)))
 (type $FUNCSIG$i (func (result i32)))
 (import "env" "gb" (global $n$asm2wasm$import i32))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32)))
 (import "env" "abort" (func $abort (param f64) (result f64)))
 (import "env" "print" (func $print (param i32)))
 (import "env" "h" (func $h (param i32)))
 (import "env" "return_int" (func $return_int (result i32)))
 (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64)))
 (import "env" "memory" (memory $0 256 256))
 (import "env" "table" (table 24 24 anyfunc))
 (import "env" "memoryBase" (global $memoryBase i32))
 (import "env" "tableBase" (global $tableBase i32))
 (global $Int (mut i32) (i32.const 0))
 (global $Double (mut f64) (f64.const 0))
 (global $n (mut i32) (get_global $n$asm2wasm$import))
 (global $exportedNumber i32 (i32.const 42))
 (elem (get_global $tableBase) $big_negative $big_negative $big_negative $big_negative $w $w $importedDoubles $w $fr $cneg $fr $fr $fr $fr $fr $fr $vi $vi $vi $vi $vi $vi $vi $vi)
 (export "big_negative" (func $big_negative))
 (export "pick" (func $big_negative))
 (export "doubleCompares" (func $doubleCompares))
 (export "intOps" (func $intOps))
 (export "conversions" (func $big_negative))
 (export "switcher" (func $switcher))
 (export "frem" (func $frem))
 (export "big_uint_div_u" (func $big_uint_div_u))
 (export "fr" (func $legalstub$fr))
 (export "negZero" (func $negZero))
 (export "neg" (func $neg))
 (export "smallCompare" (func $smallCompare))
 (export "cneg_nosemicolon" (func $cneg_nosemicolon))
 (export "forLoop" (func $forLoop))
 (export "ceiling_32_64" (func $legalstub$ceiling_32_64))
 (export "aborts" (func $aborts))
 (export "continues" (func $continues))
 (export "bitcasts" (func $legalstub$bitcasts))
 (export "recursiveBlockMerging" (func $recursiveBlockMerging))
 (export "lb" (func $lb))
 (export "zeroInit" (func $zeroInit))
 (export "phi" (func $phi))
 (export "smallIf" (func $smallIf))
 (export "dropCall" (func $dropCall))
 (export "useSetGlobal" (func $useSetGlobal))
 (export "usesSetGlobal2" (func $usesSetGlobal2))
 (export "breakThroughMany" (func $breakThroughMany))
 (export "ifChainEmpty" (func $ifChainEmpty))
 (export "heap8NoShift" (func $heap8NoShift))
 (export "conditionalTypeFun" (func $conditionalTypeFun))
 (export "loadSigned" (func $loadSigned))
 (export "globalOpts" (func $globalOpts))
 (export "dropCallImport" (func $dropCallImport))
 (export "loophi" (func $loophi))
 (export "loophi2" (func $loophi2))
 (export "relooperJumpThreading" (func $relooperJumpThreading))
 (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv))
 (export "__Z12multi_varargiz" (func $__Z12multi_varargiz))
 (export "jumpThreadDrop" (func $jumpThreadDrop))
 (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf))
 (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf))
 (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible))
 (export "store_fround" (func $store_fround))
 (export "exportedNumber" (global $exportedNumber))
 (export "relocatableAndModules" (func $relocatableAndModules))
 (export "exported_f32_user" (func $legalstub$exported_f32_user))
 (export "keepAlive" (func $keepAlive))
 (func $big_negative
  (nop)
 )
 (func $importedDoubles (result f64)
  (if
   (i32.gt_s
    (get_global $Int)
    (i32.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (if
   (f64.gt
    (get_global $Double)
    (f64.const 0)
   )
   (return
    (f64.const 5.6)
   )
  )
  (f64.const 1.2)
 )
 (func $doubleCompares (param $0 f64) (param $1 f64) (result f64)
  (local $2 f64)
  (local $3 i32)
  (if
   (f64.gt
    (get_local $0)
    (f64.const 0)
   )
   (return
    (f64.const 1.2)
   )
  )
  (if
   (f64.gt
    (get_local $2)
    (f64.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (if
   (i32.gt_s
    (get_local $3)
    (i32.const 0)
   )
   (return
    (f64.const 5.6)
   )
  )
  (if
   (f64.lt
    (get_local $0)
    (get_local $1)
   )
   (return
    (get_local $0)
   )
  )
  (get_local $1)
 )
 (func $intOps (result i32)
  (local $0 i32)
  (i32.eqz
   (get_local $0)
  )
 )
 (func $switcher (param $0 i32) (result i32)
  (block $switch
   (block $switch-case0
    (block $switch-case
     (br_table $switch-case $switch-case0 $switch
      (i32.sub
       (get_local $0)
       (i32.const 1)
      )
     )
    )
    (return
     (i32.const 1)
    )
   )
   (return
    (i32.const 2)
   )
  )
  (block $switch1
   (block $switch-case3
    (block $switch-case2
     (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1
      (i32.sub
       (get_local $0)
       (i32.const 5)
      )
     )
    )
    (return
     (i32.const 121)
    )
   )
   (return
    (i32.const 51)
   )
  )
  (block $label$break$Lout
   (block $switch-case9
    (block $switch-case6
     (block $switch-case5
      (block $switch-case4
       (br_table $switch-case9 $label$break$Lout $label$break$Lout $switch-case6 $label$break$Lout $label$break$Lout $label$break$Lout $label$break$Lout $switch-case5 $label$break$Lout $switch-case4 $label$break$Lout
        (i32.sub
         (get_local $0)
         (i32.const 2)
        )
       )
      )
     )
    )
   )
  )
  (loop $label$continue$L1
   (block $label$break$L1
    (loop $label$continue$L3
     (block $label$break$L3
      (block $switch-default
       (block $switch-case13
        (block $switch-case12
         (block $switch-case11
          (br_table $switch-case11 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case12 $switch-default
           (i32.sub
            (get_local $0)
            (i32.const -1)
           )
          )
         )
         (br $label$break$L1)
        )
        (br $label$continue$L3)
       )
       (br $label$break$L3)
      )
      (br $label$break$L1)
     )
    )
    (call $h
     (i32.const 120)
    )
    (br $label$continue$L1)
   )
  )
  (i32.const 0)
 )
 (func $frem (result f64)
  (call $f64-rem
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $big_uint_div_u (result i32)
  (i32.const 2147483647)
 )
 (func $fr (param $0 f32)
  (nop)
 )
 (func $negZero (result f64)
  (f64.const -0)
 )
 (func $neg
  (local $0 f32)
  (call_indirect $FUNCSIG$vf
   (f32.neg
    (get_local $0)
   )
   (i32.const 9)
  )
 )
 (func $cneg (param $0 f32)
  (call_indirect $FUNCSIG$vf
   (get_local $0)
   (i32.const 9)
  )
 )
 (func $smallCompare (result i32)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.lt_s
    (get_local $0)
    (get_local $1)
   )
   (set_local $0
    (i32.add
     (get_local $0)
     (i32.const 1)
    )
   )
  )
  (if
   (i32.lt_u
    (get_local $0)
    (get_local $1)
   )
   (set_local $0
    (i32.add
     (get_local $0)
     (i32.const 1)
    )
   )
  )
  (get_local $0)
 )
 (func $cneg_nosemicolon
  (call_indirect $FUNCSIG$vi
   (i32.const 1)
   (i32.const 17)
  )
 )
 (func $forLoop
  (local $0 i32)
  (set_local $0
   (i32.const 1)
  )
  (loop $for-in
   (if
    (i32.lt_s
     (get_local $0)
     (i32.const 200)
    )
    (block
     (call $h
      (get_local $0)
     )
     (set_local $0
      (i32.add
       (get_local $0)
       (i32.const 1)
      )
     )
     (br $for-in)
    )
   )
  )
 )
 (func $ceiling_32_64 (param $0 f32) (param $1 f64)
  (nop)
 )
 (func $aborts
  (drop
   (call $abort
    (f64.const 0)
   )
  )
  (drop
   (call $abort
    (f64.convert_s/i32
     (i32.const 55)
    )
   )
  )
  (drop
   (call $abort
    (f64.const 0)
   )
  )
  (drop
   (call $abort
    (f64.const 12.34)
   )
  )
  (drop
   (call $abort
    (f64.const 56.779998779296875)
   )
  )
 )
 (func $continues
  (loop $while-in
   (call $print
    (i32.const 1)
   )
   (loop $unlikely-continue
    (call $print
     (i32.const 5)
    )
    (br_if $unlikely-continue
     (call $return_int)
    )
   )
   (call $print
    (i32.const 2)
   )
   (br $while-in)
  )
 )
 (func $bitcasts (param $0 i32) (param $1 f32)
  (nop)
 )
 (func $recursiveBlockMerging (param $0 i32) (result i32)
  (drop
   (call $lb
    (i32.add
     (get_local $0)
     (i32.const 22)
    )
   )
  )
  (drop
   (call $lb
    (i32.const 1)
   )
  )
  (drop
   (call $lb
    (i32.const 2)
   )
  )
  (i32.add
   (i32.add
    (i32.add
     (get_local $0)
     (call $lb
      (i32.const 3)
     )
    )
    (block i32
     (drop
      (call $lb
       (i32.const 4)
      )
     )
     (drop
      (call $lb
       (i32.const 5)
      )
     )
     (drop
      (call $lb
       (i32.const 6)
      )
     )
     (call $lb
      (i32.const 7)
     )
    )
   )
   (block i32
    (drop
     (call $lb
      (i32.const 8)
     )
    )
    (drop
     (call $lb
      (i32.const 9)
     )
    )
    (drop
     (call $lb
      (i32.const 10)
     )
    )
    (drop
     (call $lb
      (i32.const 11)
     )
    )
    (call $lb
     (i32.const 12)
    )
   )
  )
 )
 (func $lb (param $0 i32) (result i32)
  (i32.store
   (get_local $0)
   (i32.add
    (get_global $n)
    (i32.const 144)
   )
  )
  (i32.const 0)
 )
 (func $zeroInit (param $0 i32)
  (local $1 i32)
  (if
   (call $lb
    (i32.const 0)
   )
   (if
    (call $lb
     (i32.const 1)
    )
    (set_local $1
     (i32.const 3)
    )
   )
   (set_local $1
    (i32.const 3)
   )
  )
  (if
   (i32.eq
    (get_local $1)
    (i32.const 3)
   )
   (drop
    (call $lb
     (i32.const 2)
    )
   )
  )
 )
 (func $phi (result i32)
  (block $do-once i32
   (drop
    (br_if $do-once
     (i32.const 0)
     (call $lb
      (i32.const 1)
     )
    )
   )
   (i32.const 1)
  )
 )
 (func $smallIf
  (if
   (call $return_int)
   (drop
    (call $lb
     (i32.const 3)
    )
   )
  )
 )
 (func $dropCall (result i32)
  (if
   (call $return_int)
   (block
    (drop
     (call $phi)
    )
    (drop
     (call $setTempRet0
      (i32.const 10)
     )
    )
    (call $zeroInit
     (call $setTempRet0
      (i32.const 10)
     )
    )
   )
  )
  (call $phi)
 )
 (func $useSetGlobal (result i32)
  (set_global $Int
   (i32.const 10)
  )
  (set_global $Int
   (i32.const 20)
  )
  (set_global $Int
   (i32.const 30)
  )
  (get_global $Int)
 )
 (func $usesSetGlobal2 (result i32)
  (set_global $Int
   (i32.const 40)
  )
  (i32.const 50)
 )
 (func $breakThroughMany (param $0 i32)
  (block $label$break$L1
   (if
    (get_local $0)
    (loop $while-in
     (br_if $label$break$L1
      (i32.eqz
       (get_local $0)
      )
     )
     (call $zeroInit
      (i32.const 0)
     )
     (br $while-in)
    )
   )
  )
 )
 (func $ifChainEmpty (param $0 i32) (result i32)
  (if
   (i32.eq
    (get_local $0)
    (i32.const 4)
   )
   (return
    (i32.const 0)
   )
  )
  (i32.const 0)
 )
 (func $heap8NoShift (param $0 i32) (result i32)
  (i32.load8_s
   (get_local $0)
  )
 )
 (func $conditionalTypeFun
  (drop
   (if i32
    (call $return_int)
    (i32.trunc_s/f64
     (call $abort
      (f64.convert_s/i32
       (i32.const 5)
      )
     )
    )
    (i32.const 2)
   )
  )
  (drop
   (if f64
    (call $return_int)
    (call $abort
     (f64.convert_s/i32
      (i32.const 7)
     )
    )
    (f64.const 4.5)
   )
  )
 )
 (func $loadSigned (param $0 i32)
  (call $loadSigned
   (i32.load8_s
    (get_local $0)
   )
  )
  (call $loadSigned
   (i32.load8_s
    (get_local $0)
   )
  )
  (call $loadSigned
   (i32.load16_s
    (get_local $0)
   )
  )
  (call $loadSigned
   (i32.load16_s
    (get_local $0)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_s
      (get_local $0)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_u
      (get_local $0)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_s
      (get_local $0)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (get_local $0)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
 )
 (func $w (result f64)
  (f64.const 0)
 )
 (func $globalOpts
  (local $0 i32)
  (i32.store8
   (i32.const 13)
   (i32.load
    (i32.const 12)
   )
  )
  (call $globalOpts)
  (set_local $0
   (get_global $Int)
  )
  (if
   (call $return_int)
   (set_global $Int
    (i32.const 20)
   )
  )
  (set_global $Int
   (get_local $0)
  )
  (call $globalOpts)
  (set_local $0
   (get_global $Int)
  )
  (call $globalOpts)
  (set_global $Int
   (get_local $0)
  )
 )
 (func $dropCallImport
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (param $0 i32) (param $1 i32)
  (local $2 i32)
  (loop $while-in
   (block $while-out
    (call $loophi
     (get_local $0)
     (i32.const 0)
    )
    (if
     (tee_local $2
      (get_local $0)
     )
     (br_if $while-out
      (get_local $2)
     )
    )
    (br_if $while-in
     (i32.eq
      (tee_local $0
       (i32.add
        (get_local $0)
        (i32.const 1)
       )
      )
      (get_local $1)
     )
    )
   )
  )
 )
 (func $loophi2 (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (set_local $1
   (i32.const 0)
  )
  (loop $label$continue$L7
   (block $label$break$L7
    (set_local $0
     (i32.const 0)
    )
    (loop $while-in
     (set_local $2
      (get_local $0)
     )
     (if
      (call $return_int)
      (br_if $label$break$L7
       (get_local $2)
      )
     )
     (br_if $while-in
      (tee_local $0
       (i32.add
        (get_local $0)
        (i32.const 1)
       )
      )
     )
    )
    (br $label$continue$L7)
   )
  )
  (get_local $1)
 )
 (func $relooperJumpThreading (param $0 i32) (result i32)
  (block $__rjto$0
   (block $__rjti$0
    (if
     (get_local $0)
     (block
      (call $h
       (i32.const 0)
      )
      (br $__rjti$0)
     )
    )
    (br $__rjto$0)
   )
   (call $h
    (i32.const 1)
   )
  )
  (call $h
   (i32.const -1)
  )
  (block $__rjti$1
   (loop $while-in
    (br_if $while-in
     (i32.eqz
      (tee_local $0
       (i32.add
        (get_local $0)
        (i32.const 1)
       )
      )
     )
    )
    (call $h
     (i32.const 2)
    )
    (br $__rjti$1)
   )
  )
  (call $h
   (i32.const 3)
  )
  (call $h
   (i32.const -2)
  )
  (block $__rjto$3
   (block $__rjti$3
    (block $__rjti$2
     (if
      (get_local $0)
      (block
       (call $h
        (i32.const 4)
       )
       (br_if $__rjti$2
        (i32.eq
         (get_local $0)
         (i32.const 3)
        )
       )
       (br $__rjti$3)
      )
     )
     (br $__rjto$3)
    )
    (call $h
     (i32.const 5)
    )
    (br $__rjto$3)
   )
   (call $h
    (i32.const 6)
   )
  )
  (call $h
   (i32.const -3)
  )
  (block $__rjto$5
   (block $__rjti$5
    (block $__rjti$4
     (if
      (get_local $0)
      (block
       (call $h
        (i32.const 7)
       )
       (br_if $__rjti$4
        (i32.eq
         (get_local $0)
         (i32.const 5)
        )
       )
       (br $__rjti$5)
      )
     )
     (br $__rjto$5)
    )
    (call $h
     (i32.const 8)
    )
    (br_if $__rjti$5
     (i32.eq
      (get_local $0)
      (i32.const 6)
     )
    )
    (br $__rjto$5)
   )
   (call $h
    (i32.const 9)
   )
  )
  (call $h
   (i32.const -4)
  )
  (block $label$break$L1
   (block $__rjti$6
    (if
     (get_local $0)
     (block
      (call $h
       (i32.const 10)
      )
      (br $__rjti$6)
     )
    )
    (br $label$break$L1)
   )
   (call $h
    (i32.const 11)
   )
  )
  (call $h
   (i32.const -5)
  )
  (block $label$break$L10
   (block $__rjti$8
    (block $__rjti$7
     (if
      (get_local $0)
      (block
       (call $h
        (i32.const 12)
       )
       (br_if $__rjti$7
        (i32.eq
         (get_local $0)
         (i32.const 8)
        )
       )
       (br $__rjti$8)
      )
     )
     (br $label$break$L10)
    )
    (call $h
     (i32.const 13)
    )
    (br_if $__rjti$8
     (get_local $0)
    )
    (br $label$break$L10)
   )
   (call $h
    (i32.const 14)
   )
  )
  (call $h
   (i32.const -6)
  )
  (get_local $0)
 )
 (func $relooperJumpThreading__ZN4game14preloadweaponsEv
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (loop $while-in
   (block $__rjto$1
    (block $__rjti$1
     (if
      (get_local $0)
      (br_if $__rjti$1
       (i32.eqz
        (get_local $1)
       )
      )
      (br_if $__rjti$1
       (i32.eqz
        (get_local $2)
       )
      )
     )
     (br $while-in)
    )
    (i32.store
     (get_local $3)
     (get_local $4)
    )
   )
   (br $while-in)
  )
 )
 (func $relooperJumpThreading_irreducible (param $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (get_local $0)
    (i32.const 100)
   )
   (loop $while-in
    (call $relooperJumpThreading_irreducible
     (i32.const 1337)
    )
    (br $while-in)
   )
  )
  (set_local $1
   (select
    (i32.const 2)
    (i32.const 10)
    (i32.eq
     (get_local $0)
     (i32.const 200)
    )
   )
  )
  (if
   (i32.eq
    (get_local $0)
    (i32.const 300)
   )
   (set_local $1
    (i32.const 2)
   )
  )
  (if
   (i32.eq
    (get_local $1)
    (i32.const 2)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 1448)
   )
  )
  (if
   (i32.eq
    (get_local $1)
    (i32.const 10)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 2000)
   )
  )
 )
 (func $__Z12multi_varargiz (param $0 i32)
  (local $1 i32)
  (local $2 i32)
  (if
   (get_local $1)
   (loop $while-in
    (br_if $while-in
     (i32.eqz
      (get_local $2)
     )
    )
   )
   (drop
    (call $lb
     (i32.const 1)
    )
   )
  )
 )
 (func $jumpThreadDrop (result i32)
  (call $return_int)
 )
 (func $dropIgnoredImportInIf (param $0 i32) (param $1 i32) (param $2 i32)
  (if
   (get_local $0)
   (drop
    (call $lb
     (get_local $2)
    )
   )
  )
 )
 (func $dropIgnoredImportsInIf (param $0 i32) (param $1 i32) (param $2 i32)
  (drop
   (if i32
    (get_local $0)
    (call $lb
     (get_local $1)
    )
    (call $lb
     (get_local $2)
    )
   )
  )
 )
 (func $store_fround (param $0 i32)
  (f64.store
   (i32.const 80)
   (f64.promote/f32
    (f32.convert_s/i32
     (get_local $0)
    )
   )
  )
 )
 (func $relocatableAndModules (result i32)
  (call_indirect $FUNCSIG$v
   (i32.const 10)
  )
  (call_indirect $FUNCSIG$v
   (i32.const 20)
  )
  (call_indirect $FUNCSIG$idi
   (f64.const 1.5)
   (i32.const 200)
   (i32.const 30)
  )
 )
 (func $exported_f32_user (param $0 i32) (param $1 f32) (param $2 f64) (result f32)
  (get_local $1)
 )
 (func $sqrts (param $0 f64) (result f64)
  (f64.add
   (f64.sqrt
    (get_local $0)
   )
   (f64.promote/f32
    (f32.sqrt
     (f32.demote/f64
      (get_local $0)
     )
    )
   )
  )
 )
 (func $f2u (param $0 f64) (result i32)
  (i32.trunc_u/f64
   (get_local $0)
  )
 )
 (func $f2s (param $0 f64) (result i32)
  (i32.trunc_s/f64
   (get_local $0)
  )
 )
 (func $keepAlive
  (drop
   (call $sqrts
    (f64.const 3.14159)
   )
  )
  (drop
   (call $f2u
    (f64.const 100)
   )
  )
  (drop
   (call $f2s
    (f64.const 100)
   )
  )
 )
 (func $vi (param $0 i32)
  (nop)
 )
 (func $legalstub$fr (param $0 f64)
  (call $fr
   (f32.demote/f64
    (get_local $0)
   )
  )
 )
 (func $legalstub$ceiling_32_64 (param $0 f64) (param $1 f64)
  (call $ceiling_32_64
   (f32.demote/f64
    (get_local $0)
   )
   (get_local $1)
  )
 )
 (func $legalstub$bitcasts (param $0 i32) (param $1 f64)
  (call $bitcasts
   (get_local $0)
   (f32.demote/f64
    (get_local $1)
   )
  )
 )
 (func $legalstub$exported_f32_user (param $0 i32) (param $1 f64) (param $2 f64) (result f64)
  (f64.promote/f32
   (call $exported_f32_user
    (get_local $0)
    (f32.demote/f64
     (get_local $1)
    )
    (get_local $2)
   )
  )
 )
)
