(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 (func (param f64) (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))
 (data (global.get $__memory_base) "unit.asm.js")
 (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" "__memory_base" (global $__memory_base i32))
 (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-to-int" (func $f64-to-int (param f64) (result i32)))
 (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 (; 8 ;) (; has Stack IR ;)
  (nop)
 )
 (func $importedDoubles (; 9 ;) (; 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 (; 10 ;) (; 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 (; 11 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.eqz
   (local.get $0)
  )
 )
 (func $conversions (; 12 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32)
  (drop
   (call $f64-to-int
    (local.get $1)
   )
  )
  (drop
   (call $f64-to-int
    (f64.promote_f32
     (local.get $2)
    )
   )
  )
 )
 (func $switcher (; 13 ;) (; 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 (; 14 ;) (; has Stack IR ;) (result f64)
  (call $f64-rem
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $frem_float (; 15 ;) (; has Stack IR ;) (result f32)
  (f32.demote_f64
   (call $f64-rem
    (f64.const 5.5)
    (f64.const 1.2000000476837158)
   )
  )
 )
 (func $big_uint_div_u (; 16 ;) (; has Stack IR ;) (result i32)
  (i32.const 2147483647)
 )
 (func $trapping_sint_div_s (; 17 ;) (; has Stack IR ;) (result i32)
  (i32.const 0)
 )
 (func $fr (; 18 ;) (; has Stack IR ;) (param $0 f32)
  (nop)
 )
 (func $negZero (; 19 ;) (; has Stack IR ;) (result f64)
  (f64.const -0)
 )
 (func $neg (; 20 ;) (; has Stack IR ;)
  (call_indirect (type $f32_=>_none)
   (f32.const -0)
   (i32.const 9)
  )
 )
 (func $cneg (; 21 ;) (; has Stack IR ;) (param $0 f32)
  (call_indirect (type $f32_=>_none)
   (local.get $0)
   (i32.const 9)
  )
 )
 (func $smallCompare (; 22 ;) (; 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 (; 23 ;) (; has Stack IR ;)
  (call_indirect (type $i32_=>_none)
   (i32.const 1)
   (i32.const 17)
  )
 )
 (func $forLoop (; 24 ;) (; 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 (; 25 ;) (; has Stack IR ;) (param $0 f32) (param $1 f64)
  (nop)
 )
 (func $aborts (; 26 ;) (; 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 (; 27 ;) (; 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 (; 28 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32)
  (nop)
 )
 (func $recursiveBlockMerging (; 29 ;) (; 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 (; 30 ;) (; 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 (; 31 ;) (; 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 (; 32 ;) (; 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 (; 33 ;) (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $lb
     (i32.const 3)
    )
   )
  )
 )
 (func $dropCall (; 34 ;) (; 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 (; 35 ;) (; 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 (; 36 ;) (; has Stack IR ;) (result i32)
  (global.set $Int
   (i32.const 40)
  )
  (i32.const 50)
 )
 (func $breakThroughMany (; 37 ;) (; 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 (; 38 ;) (; 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 (; 39 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (i32.load8_s
   (local.get $0)
  )
 )
 (func $conditionalTypeFun (; 40 ;) (; has Stack IR ;)
  (drop
   (if (result i32)
    (call $return_int)
    (call $f64-to-int
     (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 (; 41 ;) (; 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 (; 42 ;) (; has Stack IR ;) (result f64)
  (f64.const 0)
 )
 (func $globalOpts (; 43 ;) (; 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 (; 44 ;) (; has Stack IR ;)
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (; 45 ;) (; 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 (; 46 ;) (; 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 (; 47 ;) (; 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 (; 48 ;) (; 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 (; 49 ;) (; 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 (; 50 ;) (; 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 (; 51 ;) (; 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 (; 52 ;) (; has Stack IR ;) (result i32)
  (call $return_int)
 )
 (func $dropIgnoredImportInIf (; 53 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (if
   (local.get $0)
   (drop
    (call $lb
     (local.get $2)
    )
   )
  )
 )
 (func $dropIgnoredImportsInIf (; 54 ;) (; 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 (; 55 ;) (; has Stack IR ;) (param $0 i32)
  (f64.store
   (i32.const 80)
   (f64.promote_f32
    (f32.convert_i32_s
     (local.get $0)
    )
   )
  )
 )
 (func $relocatableAndModules (; 56 ;) (; 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 (; 57 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32)
  (local.get $1)
 )
 (func $keepAlive (; 58 ;) (; has Stack IR ;)
  (drop
   (call $f64-to-int
    (f64.const 100)
   )
  )
  (drop
   (call $f64-to-int
    (f64.const 100)
   )
  )
  (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 $f64-to-int
    (call $abort
     (f64.const 0)
    )
   )
  )
  (drop
   (call $f64-to-int
    (f64.sub
     (f64.const 2.31)
     (f64.mul
      (call $f64-rem
       (f64.const 9.78)
       (f64.const 1)
      )
      (f64.const 2.31)
     )
    )
   )
  )
  (global.set $nonZero
   (i32.add
    (global.get $nonZero)
    (i32.const 1)
   )
  )
 )
 (func $vi (; 59 ;) (; has Stack IR ;) (param $0 i32)
  (nop)
 )
 (func $ii (; 60 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local.get $0)
 )
)
