(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 "global" "NaN" (global $t$asm2wasm$import f64))
 (import "global" "Infinity" (global $u$asm2wasm$import f64))
 (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32))
 (import "env" "gb" (global $n$asm2wasm$import i32))
 (import "env" "STACKTOP" (global $STACKTOP$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 $t (mut f64) (get_global $t$asm2wasm$import))
 (global $u (mut f64) (get_global $u$asm2wasm$import))
 (global $Int (mut i32) (i32.const 0))
 (global $Double (mut f64) (f64.const 0))
 (global $tempDoublePtr (mut i32) (get_global $tempDoublePtr$asm2wasm$import))
 (global $n (mut i32) (get_global $n$asm2wasm$import))
 (global $STACKTOP (mut i32) (get_global $STACKTOP$asm2wasm$import))
 (global $exportedNumber i32 (i32.const 42))
 (elem (get_global $tableBase) $v $big_negative $v $v $w $w $importedDoubles $w $z $cneg $z $z $z $z $z $z $vi $vi $vi $vi $vi $vi $vi $vi)
 (export "big_negative" (func $big_negative))
 (export "pick" (func $exportMe))
 (export "doubleCompares" (func $doubleCompares))
 (export "intOps" (func $intOps))
 (export "conversions" (func $conversions))
 (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))
 (export "keepAlive" (func $keepAlive))
 (func $big_negative
  (local $temp f64)
  (set_local $temp
   (f64.const -2147483648)
  )
  (set_local $temp
   (f64.const -2147483648)
  )
  (set_local $temp
   (f64.const -21474836480)
  )
  (set_local $temp
   (f64.const 0.039625)
  )
  (set_local $temp
   (f64.const -0.039625)
  )
 )
 (func $importedDoubles (result f64)
  (local $temp f64)
  (set_local $temp
   (f64.add
    (f64.add
     (f64.add
      (get_global $t)
      (get_global $u)
     )
     (f64.neg
      (get_global $u)
     )
    )
    (f64.neg
     (get_global $t)
    )
   )
  )
  (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)
   )
  )
  (return
   (f64.const 1.2)
  )
 )
 (func $doubleCompares (param $x f64) (param $y f64) (result f64)
  (local $t f64)
  (local $Int f64)
  (local $Double i32)
  (if
   (f64.gt
    (get_local $x)
    (f64.const 0)
   )
   (return
    (f64.const 1.2)
   )
  )
  (if
   (f64.gt
    (get_local $Int)
    (f64.const 0)
   )
   (return
    (f64.const -3.4)
   )
  )
  (if
   (i32.gt_s
    (get_local $Double)
    (i32.const 0)
   )
   (return
    (f64.const 5.6)
   )
  )
  (if
   (f64.lt
    (get_local $x)
    (get_local $y)
   )
   (return
    (get_local $x)
   )
  )
  (return
   (get_local $y)
  )
 )
 (func $intOps (result i32)
  (local $x i32)
  (return
   (i32.eqz
    (get_local $x)
   )
  )
 )
 (func $hexLiterals
  (local $i i32)
  (set_local $i
   (i32.add
    (i32.add
     (i32.const 0)
     (i32.const 313249263)
    )
    (i32.const -19088752)
   )
  )
 )
 (func $conversions
  (local $i i32)
  (local $d f64)
  (local $f f32)
  (set_local $i
   (i32.trunc_s/f64
    (get_local $d)
   )
  )
  (set_local $i
   (i32.trunc_s/f32
    (get_local $f)
   )
  )
  (set_local $d
   (f64.convert_s/i32
    (get_local $i)
   )
  )
  (set_local $d
   (f64.convert_u/i32
    (get_local $i)
   )
  )
 )
 (func $seq
  (local $J f64)
  (set_local $J
   (f64.sub
    (block f64
     (drop
      (f64.const 0.1)
     )
     (f64.const 5.1)
    )
    (block f64
     (drop
      (f64.const 3.2)
     )
     (f64.const 4.2)
    )
   )
  )
 )
 (func $switcher (param $x i32) (result i32)
  (local $waka i32)
  (block $switch
   (block $switch-case0
    (block $switch-case
     (br_table $switch-case $switch-case0 $switch
      (i32.sub
       (get_local $x)
       (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 $x)
       (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 $x)
         (i32.const 2)
        )
       )
      )
      (br $label$break$Lout)
     )
     (br $label$break$Lout)
    )
    (block
     (loop $while-in
      (block $while-out
       (br $while-out)
       (br $while-in)
      )
     )
     (br $label$break$Lout)
    )
   )
   (block
    (loop $while-in8
     (block $while-out7
      (br $label$break$Lout)
      (br $while-in8)
     )
    )
    (br $label$break$Lout)
   )
  )
  (loop $label$continue$L1
   (block $label$break$L1
    (loop $label$continue$L3
     (block $label$break$L3
      (block $switch10
       (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 $x)
             (i32.const -1)
            )
           )
          )
          (block
           (br $label$break$L1)
           (br $switch10)
          )
         )
         (block
          (set_local $waka
           (i32.const 1)
          )
          (br $switch10)
         )
        )
        (block
         (br $label$break$L3)
         (br $switch10)
        )
       )
       (br $label$break$L1)
      )
      (br $label$continue$L3)
     )
    )
    (call $h
     (i32.const 120)
    )
    (br $label$continue$L1)
   )
  )
  (return
   (i32.const 0)
  )
 )
 (func $blocker
  (block $label$break$L
   (br $label$break$L)
  )
 )
 (func $frem (result f64)
  (return
   (call $f64-rem
    (f64.const 5.5)
    (f64.const 1.2)
   )
  )
 )
 (func $big_uint_div_u (result i32)
  (local $x i32)
  (set_local $x
   (i32.and
    (i32.div_u
     (i32.const -1)
     (i32.const 2)
    )
    (i32.const -1)
   )
  )
  (return
   (get_local $x)
  )
 )
 (func $fr (param $x f32)
  (local $y f32)
  (local $z f64)
  (drop
   (f32.demote/f64
    (get_local $z)
   )
  )
  (drop
   (get_local $y)
  )
  (drop
   (f32.const 5)
  )
  (drop
   (f32.const 0)
  )
  (drop
   (f32.const 5)
  )
  (drop
   (f32.const 0)
  )
 )
 (func $negZero (result f64)
  (return
   (f64.const -0)
  )
 )
 (func $abs
  (local $x i32)
  (local $y f64)
  (local $z f32)
  (local $asm2wasm_i32_temp i32)
  (set_local $x
   (block i32
    (set_local $asm2wasm_i32_temp
     (i32.const 0)
    )
    (select
     (i32.sub
      (i32.const 0)
      (get_local $asm2wasm_i32_temp)
     )
     (get_local $asm2wasm_i32_temp)
     (i32.lt_s
      (get_local $asm2wasm_i32_temp)
      (i32.const 0)
     )
    )
   )
  )
  (set_local $y
   (f64.abs
    (f64.const 0)
   )
  )
  (set_local $z
   (f32.abs
    (f32.const 0)
   )
  )
 )
 (func $minmax
  (local $x f64)
  (local $y f64)
  (local $z f32)
  (local $w f32)
  (set_local $x
   (f64.min
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $y
   (f64.max
    (get_local $x)
    (get_local $y)
   )
  )
  (set_local $z
   (f32.min
    (get_local $z)
    (get_local $w)
   )
  )
  (set_local $w
   (f32.max
    (get_local $z)
    (get_local $w)
   )
  )
 )
 (func $neg
  (local $x f32)
  (set_local $x
   (f32.neg
    (get_local $x)
   )
  )
  (call_indirect $FUNCSIG$vf
   (get_local $x)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $cneg (param $x f32)
  (call_indirect $FUNCSIG$vf
   (get_local $x)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $___syscall_ret
  (local $$0 i32)
  (drop
   (i32.gt_u
    (get_local $$0)
    (i32.const -4096)
   )
  )
 )
 (func $smallCompare (result i32)
  (local $i i32)
  (local $j i32)
  (if
   (i32.lt_s
    (get_local $i)
    (get_local $j)
   )
   (set_local $i
    (i32.add
     (get_local $i)
     (i32.const 1)
    )
   )
  )
  (if
   (i32.lt_u
    (get_local $i)
    (get_local $j)
   )
   (set_local $i
    (i32.add
     (get_local $i)
     (i32.const 1)
    )
   )
  )
  (return
   (get_local $i)
  )
 )
 (func $cneg_nosemicolon
  (call_indirect $FUNCSIG$vi
   (i32.const 1)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 16)
   )
  )
 )
 (func $forLoop
  (local $i i32)
  (set_local $i
   (i32.const 1)
  )
  (loop $for-in
   (block $for-out
    (if
     (i32.eqz
      (i32.lt_s
       (get_local $i)
       (i32.const 200)
      )
     )
     (br $for-out)
    )
    (call $h
     (get_local $i)
    )
    (set_local $i
     (i32.add
      (get_local $i)
      (i32.const 1)
     )
    )
    (br $for-in)
   )
  )
 )
 (func $ceiling_32_64 (param $u f32) (param $B f64)
  (local $temp f32)
  (set_local $temp
   (f32.demote/f64
    (f64.ceil
     (get_local $B)
    )
   )
  )
  (set_local $temp
   (f32.mul
    (get_local $u)
    (f32.ceil
     (f32.demote/f64
      (get_local $B)
     )
    )
   )
  )
 )
 (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.promote/f32
     (f32.const 56.779998779296875)
    )
   )
  )
 )
 (func $continues
  (loop $while-in
   (block $while-out
    (call $print
     (i32.const 1)
    )
    (block $do-once
     (loop $unlikely-continue
      (call $print
       (i32.const 5)
      )
      (if
       (call $return_int)
       (br $unlikely-continue)
      )
     )
    )
    (call $print
     (i32.const 2)
    )
    (br $while-in)
   )
  )
 )
 (func $bitcasts (param $i i32) (param $f f32)
  (local $d f64)
  (drop
   (f32.reinterpret/i32
    (get_local $i)
   )
  )
  (drop
   (f64.promote/f32
    (f32.reinterpret/i32
     (get_local $i)
    )
   )
  )
  (drop
   (i32.reinterpret/f32
    (get_local $f)
   )
  )
  (drop
   (i32.reinterpret/f32
    (f32.demote/f64
     (get_local $d)
    )
   )
  )
 )
 (func $recursiveBlockMerging (param $x i32) (result i32)
  (drop
   (call $lb
    (i32.add
     (i32.add
      (i32.add
       (block i32
        (drop
         (i32.const 1)
        )
        (get_local $x)
       )
       (block i32
        (drop
         (i32.const 2)
        )
        (i32.const 3)
       )
      )
      (block i32
       (block
        (block
         (drop
          (i32.const 4)
         )
         (drop
          (i32.const 5)
         )
        )
        (drop
         (i32.const 6)
        )
       )
       (i32.const 7)
      )
     )
     (block i32
      (drop
       (i32.const 8)
      )
      (block i32
       (drop
        (i32.const 9)
       )
       (block i32
        (drop
         (i32.const 10)
        )
        (block i32
         (drop
          (i32.const 11)
         )
         (i32.const 12)
        )
       )
      )
     )
    )
   )
  )
  (set_local $x
   (i32.add
    (i32.add
     (i32.add
      (block i32
       (drop
        (call $lb
         (i32.const 1)
        )
       )
       (get_local $x)
      )
      (block i32
       (drop
        (call $lb
         (i32.const 2)
        )
       )
       (call $lb
        (i32.const 3)
       )
      )
     )
     (block i32
      (block
       (block
        (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)
      )
     )
     (block i32
      (drop
       (call $lb
        (i32.const 9)
       )
      )
      (block i32
       (drop
        (call $lb
         (i32.const 10)
        )
       )
       (block i32
        (drop
         (call $lb
          (i32.const 11)
         )
        )
        (call $lb
         (i32.const 12)
        )
       )
      )
     )
    )
   )
  )
  (return
   (get_local $x)
  )
 )
 (func $lb (param $a i32) (result i32)
  (i32.store
   (get_local $a)
   (i32.add
    (i32.add
     (get_global $n)
     (i32.const 136)
    )
    (i32.const 8)
   )
  )
  (return
   (i32.const 0)
  )
 )
 (func $forgetMe
  (drop
   (f64.const 123.456)
  )
 )
 (func $exportMe
  (drop
   (f64.const -3.14159)
  )
 )
 (func $zeroInit (param $x i32)
  (local $y i32)
  (if
   (call $lb
    (i32.const 0)
   )
   (if
    (call $lb
     (i32.const 1)
    )
    (set_local $y
     (i32.const 3)
    )
   )
   (set_local $y
    (i32.const 3)
   )
  )
  (if
   (i32.eq
    (get_local $y)
    (i32.const 3)
   )
   (drop
    (call $lb
     (i32.const 2)
    )
   )
  )
 )
 (func $phi (result i32)
  (local $x i32)
  (block $do-once
   (block
    (if
     (call $lb
      (i32.const 1)
     )
     (block
      (set_local $x
       (i32.const 0)
      )
      (br $do-once)
     )
    )
    (set_local $x
     (i32.const 1)
    )
   )
  )
  (return
   (get_local $x)
  )
 )
 (func $smallIf
  (block $do-once
   (if
    (call $return_int)
    (drop
     (call $lb
      (i32.const 3)
     )
    )
    (br $do-once)
   )
   (nop)
  )
 )
 (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)
     )
    )
   )
  )
  (return
   (call $phi)
  )
 )
 (func $useSetGlobal (result i32)
  (local $x i32)
  (set_local $x
   (block i32
    (set_global $Int
     (i32.const 10)
    )
    (get_global $Int)
   )
  )
  (set_global $Int
   (i32.const 20)
  )
  (return
   (block i32
    (set_global $Int
     (i32.const 30)
    )
    (get_global $Int)
   )
  )
 )
 (func $usesSetGlobal2 (result i32)
  (return
   (block i32
    (block
     (set_global $Int
      (i32.const 40)
     )
     (drop
      (get_global $Int)
     )
    )
    (i32.const 50)
   )
  )
 )
 (func $breakThroughMany (param $$s i32)
  (block $label$break$L1
   (if
    (get_local $$s)
    (loop $while-in
     (block $while-out
      (if
       (i32.eqz
        (get_local $$s)
       )
       (br $label$break$L1)
      )
      (call $zeroInit
       (i32.const 0)
      )
      (br $while-in)
     )
    )
    (drop
     (i32.const 1337)
    )
   )
   (nop)
  )
 )
 (func $ifChainEmpty (param $label i32) (result i32)
  (if
   (i32.eq
    (get_local $label)
    (i32.const 4)
   )
   (return
    (i32.const 0)
   )
   (if
    (i32.eq
     (get_local $label)
     (i32.const 7)
    )
    (nop)
   )
  )
  (return
   (i32.const 0)
  )
 )
 (func $heap8NoShift (param $x i32) (result i32)
  (return
   (i32.load8_s
    (get_local $x)
   )
  )
 )
 (func $conditionalTypeFun
  (local $x i32)
  (local $y f64)
  (set_local $x
   (if i32
    (call $return_int)
    (i32.trunc_s/f64
     (call $abort
      (f64.convert_s/i32
       (i32.const 5)
      )
     )
    )
    (i32.const 2)
   )
  )
  (set_local $y
   (if f64
    (call $return_int)
    (call $abort
     (f64.convert_s/i32
      (i32.const 7)
     )
    )
    (f64.const 4.5)
   )
  )
 )
 (func $loadSigned (param $x i32)
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_s
      (get_local $x)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_u
      (get_local $x)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_s
      (get_local $x)
     )
     (i32.const 16)
    )
    (i32.const 16)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (get_local $x)
     )
     (i32.const 16)
    )
    (i32.const 16)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_s
      (get_local $x)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load8_u
      (get_local $x)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_s
      (get_local $x)
     )
     (i32.const 16)
    )
    (i32.const 24)
   )
  )
  (call $loadSigned
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (get_local $x)
     )
     (i32.const 24)
    )
    (i32.const 16)
   )
  )
 )
 (func $z (param $x f32)
  (nop)
 )
 (func $w (result f64)
  (return
   (f64.const 0)
  )
 )
 (func $globalOpts
  (local $x i32)
  (local $y f64)
  (set_local $x
   (get_global $Int)
  )
  (set_local $y
   (get_global $Double)
  )
  (i32.store8
   (i32.const 13)
   (i32.load
    (i32.const 12)
   )
  )
  (set_global $Double
   (get_local $y)
  )
  (set_global $Int
   (get_local $x)
  )
  (call $globalOpts)
  (set_local $x
   (get_global $Int)
  )
  (if
   (call $return_int)
   (set_global $Int
    (i32.const 20)
   )
  )
  (set_global $Int
   (get_local $x)
  )
  (call $globalOpts)
  (set_local $x
   (get_global $Int)
  )
  (call $globalOpts)
  (set_global $Int
   (get_local $x)
  )
 )
 (func $dropCallImport
  (if
   (call $return_int)
   (drop
    (call $return_int)
   )
  )
 )
 (func $loophi (param $x i32) (param $y i32)
  (local $temp i32)
  (local $inc i32)
  (local $loopvar i32)
  (set_local $loopvar
   (get_local $x)
  )
  (loop $while-in
   (block $while-out
    (call $loophi
     (get_local $loopvar)
     (i32.const 0)
    )
    (set_local $temp
     (get_local $loopvar)
    )
    (if
     (get_local $temp)
     (if
      (get_local $temp)
      (br $while-out)
     )
    )
    (set_local $inc
     (i32.add
      (get_local $loopvar)
      (i32.const 1)
     )
    )
    (if
     (i32.eq
      (get_local $inc)
      (get_local $y)
     )
     (set_local $loopvar
      (get_local $inc)
     )
     (br $while-out)
    )
    (br $while-in)
   )
  )
 )
 (func $loophi2 (result i32)
  (local $jnc i32)
  (local $i i32)
  (local $i$lcssa i32)
  (local $temp i32)
  (local $j i32)
  (set_local $i
   (i32.const 0)
  )
  (loop $label$continue$L7
   (block $label$break$L7
    (set_local $j
     (i32.const 0)
    )
    (loop $while-in
     (block $while-out
      (set_local $temp
       (get_local $j)
      )
      (if
       (call $return_int)
       (if
        (get_local $temp)
        (block
         (set_local $i$lcssa
          (get_local $i)
         )
         (br $label$break$L7)
        )
       )
      )
      (set_local $jnc
       (i32.add
        (get_local $j)
        (i32.const 1)
       )
      )
      (if
       (get_local $jnc)
       (set_local $j
        (get_local $jnc)
       )
       (br $while-out)
      )
      (br $while-in)
     )
    )
    (br $label$continue$L7)
   )
  )
  (return
   (get_local $i$lcssa)
  )
 )
 (func $relooperJumpThreading (param $x i32) (result i32)
  (local $label i32)
  (if
   (get_local $x)
   (block
    (call $h
     (i32.const 0)
    )
    (set_local $label
     (i32.const 1)
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 1)
   )
   (call $h
    (i32.const 1)
   )
  )
  (call $h
   (i32.const -1)
  )
  (loop $while-in
   (block $while-out
    (set_local $x
     (i32.add
      (get_local $x)
      (i32.const 1)
     )
    )
    (if
     (get_local $x)
     (block
      (call $h
       (i32.const 2)
      )
      (set_local $label
       (i32.const 2)
      )
      (br $while-out)
     )
    )
    (br $while-in)
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 2)
   )
   (call $h
    (i32.const 3)
   )
  )
  (call $h
   (i32.const -2)
  )
  (if
   (get_local $x)
   (block
    (call $h
     (i32.const 4)
    )
    (if
     (i32.eq
      (get_local $x)
      (i32.const 3)
     )
     (set_local $label
      (i32.const 3)
     )
     (set_local $label
      (i32.const 4)
     )
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 3)
   )
   (call $h
    (i32.const 5)
   )
   (if
    (i32.eq
     (get_local $label)
     (i32.const 4)
    )
    (call $h
     (i32.const 6)
    )
   )
  )
  (call $h
   (i32.const -3)
  )
  (if
   (get_local $x)
   (block
    (call $h
     (i32.const 7)
    )
    (if
     (i32.eq
      (get_local $x)
      (i32.const 5)
     )
     (set_local $label
      (i32.const 5)
     )
     (set_local $label
      (i32.const 6)
     )
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 5)
   )
   (block
    (call $h
     (i32.const 8)
    )
    (if
     (i32.eq
      (get_local $x)
      (i32.const 6)
     )
     (set_local $label
      (i32.const 6)
     )
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 6)
   )
   (call $h
    (i32.const 9)
   )
  )
  (call $h
   (i32.const -4)
  )
  (if
   (get_local $x)
   (block
    (call $h
     (i32.const 10)
    )
    (set_local $label
     (i32.const 7)
    )
   )
  )
  (block $label$break$L1
   (if
    (i32.eq
     (get_local $label)
     (i32.const 7)
    )
    (block
     (call $h
      (i32.const 11)
     )
     (br $label$break$L1)
    )
   )
  )
  (call $h
   (i32.const -5)
  )
  (if
   (get_local $x)
   (block
    (call $h
     (i32.const 12)
    )
    (if
     (i32.eq
      (get_local $x)
      (i32.const 8)
     )
     (set_local $label
      (i32.const 8)
     )
     (set_local $label
      (i32.const 9)
     )
    )
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 8)
   )
   (block
    (call $h
     (i32.const 13)
    )
    (if
     (get_local $x)
     (set_local $label
      (i32.const 9)
     )
    )
   )
  )
  (block $label$break$L10
   (if
    (i32.eq
     (get_local $label)
     (i32.const 9)
    )
    (block
     (call $h
      (i32.const 14)
     )
     (br $label$break$L10)
    )
   )
  )
  (call $h
   (i32.const -6)
  )
  (return
   (get_local $x)
  )
 )
 (func $relooperJumpThreading__ZN4game14preloadweaponsEv
  (local $$12 i32)
  (local $$14 i32)
  (local $$or$cond8 i32)
  (local $$or$cond6 i32)
  (local $$vararg_ptr5 i32)
  (local $$11 i32)
  (local $$exitcond i32)
  (local $label i32)
  (loop $while-in
   (block $while-out
    (if
     (get_local $$14)
     (if
      (get_local $$or$cond8)
      (set_local $label
       (i32.const 7)
      )
      (set_local $label
       (i32.const 8)
      )
     )
     (if
      (get_local $$or$cond6)
      (set_local $label
       (i32.const 7)
      )
      (set_local $label
       (i32.const 8)
      )
     )
    )
    (if
     (i32.eq
      (get_local $label)
      (i32.const 7)
     )
     (set_local $label
      (i32.const 0)
     )
     (if
      (i32.eq
       (get_local $label)
       (i32.const 8)
      )
      (block
       (set_local $label
        (i32.const 0)
       )
       (i32.store
        (get_local $$vararg_ptr5)
        (get_local $$11)
       )
      )
     )
    )
    (br $while-in)
   )
  )
 )
 (func $relooperJumpThreading_irreducible (param $x i32)
  (local $label i32)
  (if
   (i32.eq
    (get_local $x)
    (i32.const 100)
   )
   (set_local $label
    (i32.const 1)
   )
   (set_local $label
    (i32.const 10)
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 1)
   )
   (loop $while-in
    (block $while-out
     (call $relooperJumpThreading_irreducible
      (i32.const 1337)
     )
     (set_local $label
      (i32.const 1)
     )
     (br $while-in)
    )
   )
  )
  (if
   (i32.eq
    (get_local $x)
    (i32.const 200)
   )
   (set_local $label
    (i32.const 2)
   )
   (set_local $label
    (i32.const 10)
   )
  )
  (if
   (i32.eq
    (get_local $x)
    (i32.const 300)
   )
   (set_local $label
    (i32.const 2)
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 2)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 1448)
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 10)
   )
   (call $relooperJumpThreading_irreducible
    (i32.const 2000)
   )
  )
 )
 (func $__Z12multi_varargiz (param $$0 i32)
  (local $$2 i32)
  (local $$$06$i4 i32)
  (local $$exitcond$i6 i32)
  (local $$12 i32)
  (local $$20 i32)
  (if
   (get_local $$2)
   (loop $while-in
    (block $while-out
     (set_local $$12
      (get_local $$$06$i4)
     )
     (if
      (get_local $$exitcond$i6)
      (br $while-out)
      (set_local $$$06$i4
       (get_local $$20)
      )
     )
     (br $while-in)
    )
   )
   (drop
    (call $lb
     (i32.const 1)
    )
   )
  )
 )
 (func $jumpThreadDrop (result i32)
  (local $label i32)
  (local $temp i32)
  (set_local $temp
   (call $return_int)
  )
  (loop $while-in
   (block $while-out
    (set_local $label
     (i32.const 14)
    )
    (br $while-out)
    (br $while-in)
   )
  )
  (if
   (i32.eq
    (get_local $label)
    (i32.const 10)
   )
   (nop)
   (if
    (i32.eq
     (get_local $label)
     (i32.const 12)
    )
    (drop
     (call $return_int)
    )
    (if
     (i32.eq
      (get_local $label)
      (i32.const 14)
     )
     (nop)
    )
   )
  )
  (return
   (get_local $temp)
  )
 )
 (func $dropIgnoredImportInIf (param $$0 i32) (param $$1 i32) (param $$2 i32)
  (block $do-once
   (if
    (get_local $$0)
    (block
     (set_local $$0
      (i32.const 1)
     )
     (drop
      (call $lb
       (get_local $$2)
      )
     )
    )
    (br $do-once)
   )
   (nop)
  )
  (return)
 )
 (func $big_fround (result f32)
  (return
   (f32.const 4294967296)
  )
 )
 (func $dropIgnoredImportsInIf (param $$0 i32) (param $$1 i32) (param $$2 i32)
  (block $do-once
   (if
    (get_local $$0)
    (drop
     (call $lb
      (get_local $$1)
     )
    )
    (drop
     (call $lb
      (get_local $$2)
     )
    )
   )
   (nop)
  )
  (return)
 )
 (func $f32_ucast (param $x i32) (result f32)
  (return
   (f32.convert_u/i32
    (get_local $x)
   )
  )
 )
 (func $f32_scast (param $x i32) (result f32)
  (return
   (f32.convert_s/i32
    (get_local $x)
   )
  )
 )
 (func $store_fround (param $x i32)
  (f64.store
   (i32.const 80)
   (f64.promote/f32
    (f32.convert_s/i32
     (get_local $x)
    )
   )
  )
 )
 (func $relocatableAndModules (result i32)
  (call_indirect $FUNCSIG$v
   (i32.const 10)
  )
  (call_indirect $FUNCSIG$v
   (i32.const 20)
  )
  (return
   (call_indirect $FUNCSIG$idi
    (f64.const 1.5)
    (i32.const 200)
    (i32.const 30)
   )
  )
 )
 (func $exported_f32_user (param $x i32) (param $y f32) (param $z f64) (result f32)
  (return
   (get_local $y)
  )
 )
 (func $sqrts (param $x f64) (result f64)
  (return
   (f64.add
    (f64.sqrt
     (get_local $x)
    )
    (f64.promote/f32
     (f32.sqrt
      (f32.demote/f64
       (get_local $x)
      )
     )
    )
   )
  )
 )
 (func $keepAlive
  (drop
   (call $sqrts
    (f64.const 3.14159)
   )
  )
 )
 (func $v
  (nop)
 )
 (func $vi (param $x 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)
   )
  )
 )
)
