(module
 (type $none_=>_none (func))
 (type $i32_=>_none (func (param i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $f32_=>_none (func (param f32)))
 (type $none_=>_f64 (func (result f64)))
 (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
 (type $f64_f64_=>_f64 (func (param f64 f64) (result f64)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32)))
 (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32)))
 (type $i32_f32_=>_none (func (param i32 f32)))
 (type $i32_f64_f32_=>_none (func (param i32 f64 f32)))
 (type $f32_f64_=>_none (func (param f32 f64)))
 (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
 (type $f64_i32_=>_i32 (func (param f64 i32) (result i32)))
 (type $none_=>_f32 (func (result f32)))
 (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32)))
 (type $f64_=>_f64 (func (param f64) (result f64)))
 (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 (; has Stack IR ;)
  (nop)
 )
 (func $importedDoubles (; 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 (; 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 (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.eqz
   (local.get $0)
  )
 )
 (func $conversions (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32)
  (nop)
 )
 (func $switcher (; 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 (; has Stack IR ;) (result f64)
  (call $f64-rem
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $frem_float (; has Stack IR ;) (result f32)
  (f32.demote_f64
   (call $f64-rem
    (f64.const 5.5)
    (f64.const 1.2000000476837158)
   )
  )
 )
 (func $big_uint_div_u (; has Stack IR ;) (result i32)
  (i32.const 2147483647)
 )
 (func $trapping_sint_div_s (; has Stack IR ;) (result i32)
  (i32.div_s
   (i32.const -2147483648)
   (i32.const -1)
  )
 )
 (func $fr (; has Stack IR ;) (param $0 f32)
  (nop)
 )
 (func $negZero (; has Stack IR ;) (result f64)
  (f64.const -0)
 )
 (func $neg (; has Stack IR ;)
  (call_indirect (type $f32_=>_none)
   (f32.const -0)
   (i32.const 9)
  )
 )
 (func $cneg (; has Stack IR ;) (param $0 f32)
  (call_indirect (type $f32_=>_none)
   (local.get $0)
   (i32.const 9)
  )
 )
 (func $smallCompare (; 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 (; has Stack IR ;)
  (call_indirect (type $i32_=>_none)
   (i32.const 1)
   (i32.const 17)
  )
 )
 (func $forLoop (; 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 (; has Stack IR ;) (param $0 f32) (param $1 f64)
  (nop)
 )
 (func $aborts (; 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 (; 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 (; has Stack IR ;) (param $0 i32) (param $1 f32)
  (nop)
 )
 (func $recursiveBlockMerging (; 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 (; 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 (; 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 (; 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 (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $lb
     (i32.const 3)
    )
   )
  )
 )
 (func $dropCall (; 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 (; 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 (; has Stack IR ;) (result i32)
  (global.set $Int
   (i32.const 40)
  )
  (i32.const 50)
 )
 (func $breakThroughMany (; 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 (; 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 (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.load8_s
   (local.get $0)
  )
 )
 (func $conditionalTypeFun (; 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 (; 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 (; has Stack IR ;) (result f64)
  (f64.const 0)
 )
 (func $globalOpts (; 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 (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (; 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 (; 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 (; 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 (; 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 (; 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 (; 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 (; 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 (; has Stack IR ;) (result i32)
  (call $return_int)
 )
 (func $dropIgnoredImportInIf (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (if
   (local.get $0)
   (drop
    (call $lb
     (local.get $2)
    )
   )
  )
 )
 (func $dropIgnoredImportsInIf (; 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 (; has Stack IR ;) (param $0 i32)
  (f64.store
   (i32.const 80)
   (f64.promote_f32
    (f32.convert_i32_s
     (local.get $0)
    )
   )
  )
 )
 (func $relocatableAndModules (; has Stack IR ;) (result i32)
  (call_indirect (type $none_=>_none)
   (i32.const 10)
  )
  (call_indirect (type $none_=>_none)
   (i32.const 20)
  )
  (call_indirect (type $f64_i32_=>_i32)
   (f64.const 1.5)
   (i32.const 200)
   (i32.const 30)
  )
 )
 (func $exported_f32_user (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32)
  (local.get $1)
 )
 (func $keepAlive (; has Stack IR ;)
  (call_indirect (type $i32_=>_none)
   (i32.const 0)
   (i32.const 17)
  )
  (call_indirect (type $i32_=>_none)
   (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 (; has Stack IR ;) (param $0 i32)
  (nop)
 )
 (func $ii (; has Stack IR ;) (param $0 i32) (result i32)
  (local.get $0)
 )
)
