(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" "memory" (memory $memory 256 256))
 (import "env" "table" (table $table 25 25 funcref))
 (elem (global.get $__table_base) $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 $ii)
 (import "env" "__table_base" (global $__table_base 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 "env" "emscripten_log" (func $emscripten_log))
 (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64)))
 (global $Int (mut i32) (i32.const 0))
 (global $nonZero (mut i32) (i32.const 1337))
 (global $exportedNumber i32 (i32.const 42))
 (export "big_negative" (func $big_negative))
 (export "pick" (func $big_negative))
 (export "doubleCompares" (func $doubleCompares))
 (export "intOps" (func $intOps))
 (export "conversions" (func $conversions))
 (export "switcher" (func $switcher))
 (export "frem" (func $frem))
 (export "frem_float" (func $frem_float))
 (export "big_uint_div_u" (func $big_uint_div_u))
 (export "trapping_sint_div_s" (func $trapping_sint_div_s))
 (export "fr" (func $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 $ceiling_32_64))
 (export "aborts" (func $aborts))
 (export "continues" (func $continues))
 (export "bitcasts" (func $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 "useGlobalSet" (func $useGlobalSet))
 (export "usesGlobalSet2" (func $usesGlobalSet2))
 (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 "loophi2b" (func $loophi2b))
 (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 $exported_f32_user))
 (export "keepAlive" (func $keepAlive))
 (func $big_negative (; 7 ;) (; has Stack IR ;)
  (nop)
 )
 (func $importedDoubles (; 8 ;) (; has Stack IR ;) (result f64)
  (if
   (i32.gt_s
    (global.get $Int)
    (i32.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (f64.const 1.2)
 )
 (func $doubleCompares (; 9 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (result f64)
  (if
   (f64.gt
    (local.get $0)
    (f64.const 0)
   )
   (return
    (f64.const 1.2)
   )
  )
  (if
   (f64.gt
    (local.get $0)
    (f64.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (if
   (i32.gt_s
    (global.get $n$asm2wasm$import)
    (i32.const 0)
   )
   (return
    (f64.const 5.6)
   )
  )
  (if
   (f64.lt
    (local.get $0)
    (local.get $1)
   )
   (return
    (local.get $0)
   )
  )
  (local.get $1)
 )
 (func $intOps (; 10 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.eqz
   (local.get $0)
  )
 )
 (func $conversions (; 11 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32)
  (nop)
 )
 (func $switcher (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (block $switch
   (block $switch-case0
    (block $switch-case
     (br_table $switch-case $switch-case0 $switch
      (i32.sub
       (local.get $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
       (local.get $0)
       (i32.const 5)
      )
     )
    )
    (return
     (i32.const 121)
    )
   )
   (return
    (i32.const 51)
   )
  )
  (loop $label$continue$L1
   (block $label$break$L1
    (loop $label$continue$L3
     (block $label$break$L3
      (br_table $label$break$L3 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$continue$L3 $label$break$L1
       (i32.add
        (local.get $0)
        (i32.const -110)
       )
      )
     )
    )
    (call $h
     (i32.const 120)
    )
    (br $label$continue$L1)
   )
  )
  (i32.const 0)
 )
 (func $frem (; 13 ;) (; has Stack IR ;) (result f64)
  (call $f64-rem
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $frem_float (; 14 ;) (; has Stack IR ;) (result f32)
  (f32.demote_f64
   (call $f64-rem
    (f64.const 5.5)
    (f64.const 1.2000000476837158)
   )
  )
 )
 (func $big_uint_div_u (; 15 ;) (; has Stack IR ;) (result i32)
  (i32.const 2147483647)
 )
 (func $trapping_sint_div_s (; 16 ;) (; has Stack IR ;) (result i32)
  (i32.div_s
   (i32.const -2147483648)
   (i32.const -1)
  )
 )
 (func $fr (; 17 ;) (; has Stack IR ;) (param $0 f32)
  (nop)
 )
 (func $negZero (; 18 ;) (; has Stack IR ;) (result f64)
  (f64.const -0)
 )
 (func $neg (; 19 ;) (; has Stack IR ;)
  (call_indirect (type $FUNCSIG$vf)
   (f32.const -0)
   (i32.const 9)
  )
 )
 (func $cneg (; 20 ;) (; has Stack IR ;) (param $0 f32)
  (call_indirect (type $FUNCSIG$vf)
   (local.get $0)
   (i32.const 9)
  )
 )
 (func $smallCompare (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  (if (result i32)
   (i32.lt_u
    (local.tee $0
     (select
      (i32.add
       (local.get $0)
       (i32.const 1)
      )
      (local.get $0)
      (i32.lt_s
       (local.get $0)
       (local.get $1)
      )
     )
    )
    (local.get $1)
   )
   (i32.add
    (local.get $0)
    (i32.const 1)
   )
   (local.get $0)
  )
 )
 (func $cneg_nosemicolon (; 22 ;) (; has Stack IR ;)
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 1)
   (i32.const 17)
  )
 )
 (func $forLoop (; 23 ;) (; has Stack IR ;)
  (local $0 i32)
  (local.set $0
   (i32.const 1)
  )
  (loop $for-in
   (if
    (i32.lt_s
     (local.get $0)
     (i32.const 200)
    )
    (block
     (call $h
      (local.get $0)
     )
     (local.set $0
      (i32.add
       (local.get $0)
       (i32.const 1)
      )
     )
     (br $for-in)
    )
   )
  )
 )
 (func $ceiling_32_64 (; 24 ;) (; has Stack IR ;) (param $0 f32) (param $1 f64)
  (nop)
 )
 (func $aborts (; 25 ;) (; has Stack IR ;)
  (drop
   (call $abort
    (f64.const 0)
   )
  )
  (drop
   (call $abort
    (f64.convert_i32_s
     (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 (; 26 ;) (; has Stack IR ;)
  (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 (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32)
  (nop)
 )
 (func $recursiveBlockMerging (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (drop
   (call $lb
    (i32.add
     (local.get $0)
     (i32.const 22)
    )
   )
  )
  (drop
   (call $lb
    (i32.const 1)
   )
  )
  (drop
   (call $lb
    (i32.const 2)
   )
  )
  (i32.add
   (i32.add
    (i32.add
     (call $lb
      (i32.const 3)
     )
     (local.get $0)
    )
    (block (result 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 (result 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 (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.store
   (local.get $0)
   (i32.add
    (global.get $n$asm2wasm$import)
    (i32.const 144)
   )
  )
  (i32.const 0)
 )
 (func $zeroInit (; 30 ;) (; has Stack IR ;) (param $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (if (result i32)
     (call $lb
      (i32.const 0)
     )
     (if (result i32)
      (call $lb
       (i32.const 1)
      )
      (i32.const 3)
      (local.get $1)
     )
     (i32.const 3)
    )
    (i32.const 3)
   )
   (drop
    (call $lb
     (i32.const 2)
    )
   )
  )
 )
 (func $phi (; 31 ;) (; has Stack IR ;) (result i32)
  (block $do-once (result i32)
   (drop
    (br_if $do-once
     (i32.const 0)
     (call $lb
      (i32.const 1)
     )
    )
   )
   (i32.const 1)
  )
 )
 (func $smallIf (; 32 ;) (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $lb
     (i32.const 3)
    )
   )
  )
 )
 (func $dropCall (; 33 ;) (; has Stack IR ;) (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 $useGlobalSet (; 34 ;) (; has Stack IR ;) (result i32)
  (global.set $Int
   (i32.const 10)
  )
  (global.set $Int
   (i32.const 20)
  )
  (global.set $Int
   (i32.const 30)
  )
  (i32.const 30)
 )
 (func $usesGlobalSet2 (; 35 ;) (; has Stack IR ;) (result i32)
  (global.set $Int
   (i32.const 40)
  )
  (i32.const 50)
 )
 (func $breakThroughMany (; 36 ;) (; has Stack IR ;) (param $0 i32)
  (if
   (local.get $0)
   (loop $while-in
    (if
     (local.get $0)
     (block
      (call $zeroInit
       (i32.const 0)
      )
      (br $while-in)
     )
    )
   )
  )
 )
 (func $ifChainEmpty (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (if
   (i32.eq
    (local.get $0)
    (i32.const 4)
   )
   (return
    (i32.const 0)
   )
  )
  (i32.const 0)
 )
 (func $heap8NoShift (; 38 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.load8_s
   (local.get $0)
  )
 )
 (func $conditionalTypeFun (; 39 ;) (; has Stack IR ;)
  (drop
   (if (result i32)
    (call $return_int)
    (i32.trunc_f64_s
     (call $abort
      (f64.convert_i32_s
       (i32.const 5)
      )
     )
    )
    (i32.const 2)
   )
  )
  (drop
   (if (result f64)
    (call $return_int)
    (call $abort
     (f64.convert_i32_s
      (i32.const 7)
     )
    )
    (f64.const 4.5)
   )
  )
 )
 (func $loadSigned (; 40 ;) (; has Stack IR ;) (param $0 i32)
  (call $loadSigned
   (i32.load8_s
    (local.get $0)
   )
  )
  (call $loadSigned
   (i32.load8_s
    (local.get $0)
   )
  )
  (call $loadSigned
   (i32.load16_s
    (local.get $0)
   )
  )
  (call $loadSigned
   (i32.load16_s
    (local.get $0)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_s
      (local.get $0)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_u
      (local.get $0)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_s
      (local.get $0)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (local.get $0)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
 )
 (func $w (; 41 ;) (; has Stack IR ;) (result f64)
  (f64.const 0)
 )
 (func $globalOpts (; 42 ;) (; has Stack IR ;)
  (local $0 i32)
  (i32.store8
   (i32.const 13)
   (i32.load
    (i32.const 12)
   )
  )
  (call $globalOpts)
  (local.set $0
   (global.get $Int)
  )
  (if
   (call $return_int)
   (global.set $Int
    (i32.const 20)
   )
  )
  (global.set $Int
   (local.get $0)
  )
  (call $globalOpts)
  (local.set $0
   (global.get $Int)
  )
  (call $globalOpts)
  (global.set $Int
   (local.get $0)
  )
 )
 (func $dropCallImport (; 43 ;) (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (; 44 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32)
  (loop $while-in
   (block $while-out
    (call $loophi
     (local.get $0)
     (i32.const 0)
    )
    (br_if $while-out
     (select
      (local.get $0)
      (i32.const 0)
      (local.get $0)
     )
    )
    (br_if $while-in
     (i32.eq
      (local.get $1)
      (local.tee $0
       (i32.add
        (local.get $0)
        (i32.const 1)
       )
      )
     )
    )
   )
  )
 )
 (func $loophi2 (; 45 ;) (; has Stack IR ;) (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (loop $label$continue$L7
   (block $label$break$L7
    (local.set $0
     (i32.const 0)
    )
    (loop $while-in
     (local.set $2
      (local.get $0)
     )
     (br_if $label$break$L7
      (select
       (call $return_int)
       (i32.const 0)
       (local.get $2)
      )
     )
     (br_if $while-in
      (local.tee $0
       (i32.add
        (local.get $0)
        (i32.const 1)
       )
      )
     )
    )
    (br $label$continue$L7)
   )
  )
  (local.get $1)
 )
 (func $loophi2b (; 46 ;) (; has Stack IR ;) (result i32)
  (local $0 i32)
  (local $1 i32)
  (loop $label$continue$L7
   (block $label$break$L7
    (local.set $0
     (i32.const 0)
    )
    (loop $while-in
     (local.set $1
      (local.get $0)
     )
     (br_if $label$break$L7
      (select
       (call $return_int)
       (i32.const 0)
       (local.get $1)
      )
     )
     (br_if $while-in
      (local.tee $0
       (i32.add
        (local.get $0)
        (i32.const 1)
       )
      )
     )
    )
    (br $label$continue$L7)
   )
  )
  (local.get $0)
 )
 (func $relooperJumpThreading (; 47 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (block $__rjto$0
   (block $__rjti$0
    (if
     (local.get $0)
     (block
      (call $h
       (i32.const 0)
      )
      (br $__rjti$0)
     )
    )
    (br $__rjto$0)
   )
   (call $h
    (i32.const 1)
   )
  )
  (call $h
   (i32.const -1)
  )
  (loop $while-in
   (br_if $while-in
    (i32.eqz
     (local.tee $0
      (i32.add
       (local.get $0)
       (i32.const 1)
      )
     )
    )
   )
  )
  (call $h
   (i32.const 2)
  )
  (call $h
   (i32.const 3)
  )
  (call $h
   (i32.const -2)
  )
  (block $__rjto$3
   (block $__rjti$3
    (block $__rjti$2
     (if
      (local.get $0)
      (block
       (call $h
        (i32.const 4)
       )
       (br_if $__rjti$2
        (i32.eq
         (local.get $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
      (local.get $0)
      (block
       (call $h
        (i32.const 7)
       )
       (br_if $__rjti$4
        (i32.eq
         (local.get $0)
         (i32.const 5)
        )
       )
       (br $__rjti$5)
      )
     )
     (br $__rjto$5)
    )
    (call $h
     (i32.const 8)
    )
    (br_if $__rjti$5
     (i32.eq
      (local.get $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
     (local.get $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
      (local.get $0)
      (block
       (call $h
        (i32.const 12)
       )
       (br_if $__rjti$7
        (i32.eq
         (local.get $0)
         (i32.const 8)
        )
       )
       (br $__rjti$8)
      )
     )
     (br $label$break$L10)
    )
    (call $h
     (i32.const 13)
    )
    (br_if $__rjti$8
     (local.get $0)
    )
    (br $label$break$L10)
   )
   (call $h
    (i32.const 14)
   )
  )
  (call $h
   (i32.const -6)
  )
  (local.get $0)
 )
 (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 48 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32)
  (loop $while-in
   (block $__rjti$1
    (if
     (local.get $1)
     (br_if $__rjti$1
      (i32.eqz
       (local.get $2)
      )
     )
     (br_if $__rjti$1
      (i32.eqz
       (local.get $3)
      )
     )
    )
    (br $while-in)
   )
   (i32.store
    (local.get $4)
    (local.get $5)
   )
   (br $while-in)
  )
 )
 (func $relooperJumpThreading_irreducible (; 49 ;) (; has Stack IR ;) (param $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (local.get $0)
    (i32.const 100)
   )
   (loop $while-in
    (call $relooperJumpThreading_irreducible
     (i32.const 1337)
    )
    (br $while-in)
   )
  )
  (local.set $1
   (select
    (i32.const 2)
    (i32.const 10)
    (i32.eq
     (local.get $0)
     (i32.const 200)
    )
   )
  )
  (if
   (i32.eq
    (local.tee $1
     (select
      (i32.const 2)
      (local.get $1)
      (i32.eq
       (local.get $0)
       (i32.const 300)
      )
     )
    )
    (i32.const 2)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 1448)
   )
  )
  (if
   (i32.eq
    (local.get $1)
    (i32.const 10)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 2000)
   )
  )
 )
 (func $__Z12multi_varargiz (; 50 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
  (if
   (local.get $3)
   (loop $while-in
    (br_if $while-in
     (i32.eqz
      (local.get $2)
     )
    )
   )
   (drop
    (call $lb
     (i32.const 1)
    )
   )
  )
 )
 (func $jumpThreadDrop (; 51 ;) (; has Stack IR ;) (result i32)
  (call $return_int)
 )
 (func $dropIgnoredImportInIf (; 52 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (if
   (local.get $0)
   (drop
    (call $lb
     (local.get $2)
    )
   )
  )
 )
 (func $dropIgnoredImportsInIf (; 53 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (drop
   (if (result i32)
    (local.get $0)
    (call $lb
     (local.get $1)
    )
    (call $lb
     (local.get $2)
    )
   )
  )
 )
 (func $store_fround (; 54 ;) (; has Stack IR ;) (param $0 i32)
  (f64.store
   (i32.const 80)
   (f64.promote_f32
    (f32.convert_i32_s
     (local.get $0)
    )
   )
  )
 )
 (func $relocatableAndModules (; 55 ;) (; has Stack IR ;) (result i32)
  (call_indirect (type $FUNCSIG$v)
   (i32.const 10)
  )
  (call_indirect (type $FUNCSIG$v)
   (i32.const 20)
  )
  (call_indirect (type $FUNCSIG$idi)
   (f64.const 1.5)
   (i32.const 200)
   (i32.const 30)
  )
 )
 (func $exported_f32_user (; 56 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32)
  (local.get $1)
 )
 (func $keepAlive (; 57 ;) (; has Stack IR ;)
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 0)
   (i32.const 17)
  )
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 0)
   (block (result i32)
    (global.set $Int
     (i32.const 1)
    )
    (i32.const 17)
   )
  )
  (call $emscripten_log)
  (drop
   (call $abort
    (f64.const 0)
   )
  )
  (drop
   (call $f64-rem
    (f64.const 9.78)
    (f64.const 1)
   )
  )
  (global.set $nonZero
   (i32.add
    (global.get $nonZero)
    (i32.const 1)
   )
  )
 )
 (func $vi (; 58 ;) (; has Stack IR ;) (param $0 i32)
  (nop)
 )
 (func $ii (; 59 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local.get $0)
 )
)
