(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))
  (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.add
        (i32.const 8)
        (i32.const 1)
      )
    )
  )
  (func $cneg (param $0 f32)
    (call_indirect $FUNCSIG$vf
      (get_local $0)
      (i32.add
        (i32.const 8)
        (i32.const 1)
      )
    )
  )
  (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.add
        (i32.const 16)
        (i32.const 1)
      )
    )
  )
  (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
          (i32.add
            (i32.add
              (get_local $0)
              (i32.const 3)
            )
            (i32.const 7)
          )
          (i32.const 12)
        )
      )
    )
    (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
        (i32.add
          (get_global $n)
          (i32.const 136)
        )
        (i32.const 8)
      )
    )
    (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 $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)
      )
    )
  )
)
