(module
 (type $FUNCSIG$id (func (param f64) (result i32)))
 (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-to-int" (func $f64-to-int (param f64) (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
   (call $f64-to-int
    (get_local $d)
   )
  )
  (set_local $i
   (call $f64-to-int
    (f64.promote/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 $i32u-div (param $0 i32) (param $1 i32) (result i32)
  (if i32
   (i32.eqz
    (get_local $1)
   )
   (i32.const 0)
   (i32.div_u
    (get_local $0)
    (get_local $1)
   )
  )
 )
 (func $big_uint_div_u (result i32)
  (local $x i32)
  (set_local $x
   (i32.and
    (call $i32u-div
     (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)
   )
  )
 )
)
