(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 $0 256 256))
 (import "env" "table" (table 25 25 anyfunc))
 (import "env" "tableBase" (global $tableBase 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 $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 $z $cneg $z $z $z $z $z $z $vi $vi $vi $vi $vi $vi $vi $vi $ii)
 (export "big_negative" (func $big_negative))
 (export "pick" (func $big_negative))
 (export "doubleCompares" (func $doubleCompares))
 (export "intOps" (func $intOps))
 (export "conversions" (func $legalstub$conversions))
 (export "switcher" (func $switcher))
 (export "frem" (func $frem))
 (export "frem_float" (func $legalstub$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 $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 "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 $legalstub$exported_f32_user))
 (export "keepAlive" (func $keepAlive))
 (func $big_negative (; 7 ;)
  (nop)
 )
 (func $importedDoubles (; 8 ;) (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 (; 9 ;) (param $0 f64) (param $1 f64) (result f64)
  (if
   (f64.gt
    (get_local $0)
    (f64.const 0)
   )
   (return
    (f64.const 1.2)
   )
  )
  (if
   (f64.gt
    (get_local $0)
    (f64.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (if
   (i32.gt_s
    (get_global $n)
    (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 (; 10 ;) (param $0 i32) (result i32)
  (i32.eqz
   (get_local $0)
  )
 )
 (func $switcher (; 11 ;) (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 $switch-case9
   (block $switch-case4
    (br_table $switch-case4 $switch-case9 $switch-case9 $switch-case9 $switch-case9 $switch-case4 $switch-case9 $switch-case4 $switch-case9
     (i32.add
      (get_local $0)
      (i32.const -5)
     )
    )
   )
  )
  (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 (; 12 ;) (result f64)
  (call $f64-rem
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $big_uint_div_u (; 13 ;) (result i32)
  (i32.const 2147483647)
 )
 (func $trapping_sint_div_s (; 14 ;) (result i32)
  (i32.div_s
   (i32.const -2147483648)
   (i32.const -1)
  )
 )
 (func $negZero (; 15 ;) (result f64)
  (f64.const -0)
 )
 (func $neg (; 16 ;)
  (local $0 f32)
  (call_indirect (type $FUNCSIG$vf)
   (f32.neg
    (get_local $0)
   )
   (i32.const 9)
  )
 )
 (func $cneg (; 17 ;) (param $0 f32)
  (call_indirect (type $FUNCSIG$vf)
   (get_local $0)
   (i32.const 9)
  )
 )
 (func $smallCompare (; 18 ;) (param $0 i32) (param $1 i32) (result 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 (; 19 ;)
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 1)
   (i32.const 17)
  )
 )
 (func $forLoop (; 20 ;)
  (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 $aborts (; 21 ;)
  (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 (; 22 ;)
  (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 $recursiveBlockMerging (; 23 ;) (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 (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 (; 24 ;) (param $0 i32) (result i32)
  (i32.store
   (get_local $0)
   (i32.add
    (get_global $n)
    (i32.const 144)
   )
  )
  (i32.const 0)
 )
 (func $zeroInit (; 25 ;) (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 (; 26 ;) (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 (; 27 ;)
  (if
   (call $return_int)
   (drop
    (call $lb
     (i32.const 3)
    )
   )
  )
 )
 (func $dropCall (; 28 ;) (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 (; 29 ;) (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 (; 30 ;) (result i32)
  (set_global $Int
   (i32.const 40)
  )
  (i32.const 50)
 )
 (func $breakThroughMany (; 31 ;) (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 (; 32 ;) (param $0 i32) (result i32)
  (if
   (i32.eq
    (get_local $0)
    (i32.const 4)
   )
   (return
    (i32.const 0)
   )
  )
  (i32.const 0)
 )
 (func $heap8NoShift (; 33 ;) (param $0 i32) (result i32)
  (i32.load8_s
   (get_local $0)
  )
 )
 (func $conditionalTypeFun (; 34 ;)
  (drop
   (if (result i32)
    (call $return_int)
    (i32.trunc_s/f64
     (call $abort
      (f64.convert_s/i32
       (i32.const 5)
      )
     )
    )
    (i32.const 2)
   )
  )
  (drop
   (if (result f64)
    (call $return_int)
    (call $abort
     (f64.convert_s/i32
      (i32.const 7)
     )
    )
    (f64.const 4.5)
   )
  )
 )
 (func $loadSigned (; 35 ;) (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 $z (; 36 ;) (param $0 f32)
  (nop)
 )
 (func $w (; 37 ;) (result f64)
  (f64.const 0)
 )
 (func $globalOpts (; 38 ;)
  (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 (; 39 ;)
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (; 40 ;) (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 (; 41 ;) (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (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 $loophi2b (; 42 ;) (result i32)
  (local $0 i32)
  (local $1 i32)
  (loop $label$continue$L7
   (block $label$break$L7
    (set_local $0
     (i32.const 0)
    )
    (loop $while-in
     (set_local $1
      (get_local $0)
     )
     (if
      (call $return_int)
      (br_if $label$break$L7
       (get_local $1)
      )
     )
     (br_if $while-in
      (tee_local $0
       (i32.add
        (get_local $0)
        (i32.const 1)
       )
      )
     )
    )
    (br $label$continue$L7)
   )
  )
  (get_local $0)
 )
 (func $relooperJumpThreading (; 43 ;) (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)
  )
  (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)
  )
  (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 (; 44 ;) (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 $__rjto$1
    (block $__rjti$1
     (if
      (get_local $1)
      (br_if $__rjti$1
       (i32.eqz
        (get_local $2)
       )
      )
      (br_if $__rjti$1
       (i32.eqz
        (get_local $3)
       )
      )
     )
     (br $while-in)
    )
    (i32.store
     (get_local $4)
     (get_local $5)
    )
   )
   (br $while-in)
  )
 )
 (func $relooperJumpThreading_irreducible (; 45 ;) (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 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
  (if
   (get_local $3)
   (loop $while-in
    (br_if $while-in
     (i32.eqz
      (get_local $2)
     )
    )
   )
   (drop
    (call $lb
     (i32.const 1)
    )
   )
  )
 )
 (func $jumpThreadDrop (; 47 ;) (result i32)
  (call $return_int)
 )
 (func $dropIgnoredImportInIf (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (if
   (get_local $0)
   (drop
    (call $lb
     (get_local $2)
    )
   )
  )
 )
 (func $dropIgnoredImportsInIf (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32)
  (drop
   (if (result i32)
    (get_local $0)
    (call $lb
     (get_local $1)
    )
    (call $lb
     (get_local $2)
    )
   )
  )
 )
 (func $store_fround (; 50 ;) (param $0 i32)
  (f64.store
   (i32.const 80)
   (f64.promote/f32
    (f32.convert_s/i32
     (get_local $0)
    )
   )
  )
 )
 (func $relocatableAndModules (; 51 ;) (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 $sqrts (; 52 ;) (param $0 f64) (result f64)
  (f64.add
   (f64.sqrt
    (get_local $0)
   )
   (f64.promote/f32
    (f32.sqrt
     (f32.demote/f64
      (get_local $0)
     )
    )
   )
  )
 )
 (func $keepAlive (; 53 ;)
  (drop
   (call $sqrts
    (f64.const 3.14159)
   )
  )
  (drop
   (call $sqrts
    (f64.const 2.18281)
   )
  )
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 0)
   (i32.const 17)
  )
  (call_indirect (type $FUNCSIG$vi)
   (i32.const 0)
   (block (result i32)
    (set_global $Int
     (i32.const 1)
    )
    (i32.add
     (i32.and
      (get_global $Int)
      (i32.const 7)
     )
     (i32.const 16)
    )
   )
  )
  (call $emscripten_log)
  (drop
   (call $abort
    (f64.const 0)
   )
  )
 )
 (func $vi (; 54 ;) (param $0 i32)
  (nop)
 )
 (func $ii (; 55 ;) (param $0 i32) (result i32)
  (get_local $0)
 )
 (func $legalstub$conversions (; 56 ;) (param $0 i32) (param $1 f64) (param $2 f64)
  (nop)
 )
 (func $legalstub$frem_float (; 57 ;) (result f64)
  (f64.promote/f32
   (f32.demote/f64
    (call $f64-rem
     (f64.const 5.5)
     (f64.const 1.2000000476837158)
    )
   )
  )
 )
 (func $legalstub$fr (; 58 ;) (param $0 f64)
  (nop)
 )
 (func $legalstub$ceiling_32_64 (; 59 ;) (param $0 f64) (param $1 f64)
  (nop)
 )
 (func $legalstub$bitcasts (; 60 ;) (param $0 i32) (param $1 f64)
  (nop)
 )
 (func $legalstub$exported_f32_user (; 61 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result f64)
  (f64.promote/f32
   (f32.demote/f64
    (get_local $1)
   )
  )
 )
)
