(module
  (type $FUNCSIG$id (func (param f64) (result i32)))
  (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
  (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
  (type $FUNCSIG$vf (func (param f32)))
  (type $FUNCSIG$vi (func (param 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 "asm2wasm" "i32u-div" (func $i32u-div (param i32 i32) (result i32)))
  (import "env" "memory" (memory $0 256 256))
  (import "env" "table" (table 10 10 anyfunc))
  (import "env" "memoryBase" (global $memoryBase i32))
  (import "env" "tableBase" (global $tableBase i32))
  (elem (i32.const 0) $big_negative $big_negative $big_negative $big_negative $big_negative $big_negative $importedDoubles $big_negative $big_negative $cneg)
  (data (get_global $memoryBase) "unit.asm.js")
  (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))
  (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 "big_uint_div_u" (func $big_uint_div_u))
  (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 "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))
  (func $big_negative
    (nop)
  )
  (func $importedDoubles (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 (param $0 f64) (param $1 f64) (result f64)
    (local $2 f64)
    (local $3 i32)
    (if
      (f64.gt
        (get_local $0)
        (f64.const 0)
      )
      (return
        (f64.const 1.2)
      )
    )
    (if
      (f64.gt
        (get_local $2)
        (f64.const 0)
      )
      (return
        (f64.const -3.4)
      )
    )
    (if
      (i32.gt_s
        (get_local $3)
        (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 (result i32)
    (local $0 i32)
    (i32.eqz
      (get_local $0)
    )
  )
  (func $conversions
    (local $0 f64)
    (local $1 f32)
    (local $2 i32)
    (drop
      (call $f64-to-int
        (get_local $0)
      )
    )
    (set_local $2
      (call $f64-to-int
        (f64.promote/f32
          (get_local $1)
        )
      )
    )
  )
  (func $switcher (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 $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 $0)
                  (i32.const 2)
                )
              )
            )
          )
        )
      )
    )
    (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 (result f64)
    (call $f64-rem
      (f64.const 5.5)
      (f64.const 1.2)
    )
  )
  (func $big_uint_div_u (result i32)
    (call $i32u-div
      (i32.const -1)
      (i32.const 2)
    )
  )
  (func $fr (param $0 f32)
    (nop)
  )
  (func $negZero (result f64)
    (f64.const -0)
  )
  (func $neg
    (local $0 f32)
    (call_indirect $FUNCSIG$vf
      (f32.neg
        (get_local $0)
      )
      (i32.add
        (i32.const 1)
        (i32.const 8)
      )
    )
  )
  (func $cneg (param $0 f32)
    (call_indirect $FUNCSIG$vf
      (get_local $0)
      (i32.add
        (i32.const 1)
        (i32.const 8)
      )
    )
  )
  (func $smallCompare (result i32)
    (local $0 i32)
    (local $1 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
    (call_indirect $FUNCSIG$vi
      (i32.const 1)
      (i32.add
        (i32.const 1)
        (i32.const 8)
      )
    )
  )
  (func $forLoop
    (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 $ceiling_32_64 (param $0 f32) (param $1 f64)
    (nop)
  )
  (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
      (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 (param $0 i32) (param $1 f32)
    (nop)
  )
  (func $recursiveBlockMerging (param $0 i32) (result i32)
    (drop
      (call $lb
        (i32.add
          (i32.add
            (i32.add
              (get_local $0)
              (i32.const 3)
            )
            (i32.const 7)
          )
          (i32.const 12)
        )
      )
    )
    (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 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 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 (param $0 i32) (result i32)
    (i32.store
      (get_local $0)
      (i32.add
        (i32.add
          (get_global $n)
          (i32.const 136)
        )
        (i32.const 8)
      )
    )
    (i32.const 0)
  )
  (func $zeroInit (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 (result i32)
    (block $do-once i32
      (drop
        (br_if $do-once
          (i32.const 0)
          (call $lb
            (i32.const 1)
          )
        )
      )
      (i32.const 1)
    )
  )
  (func $smallIf
    (if
      (call $return_int)
      (drop
        (call $lb
          (i32.const 3)
        )
      )
    )
  )
  (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)
          )
        )
      )
    )
    (call $phi)
  )
  (func $useSetGlobal (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 (result i32)
    (set_global $Int
      (i32.const 40)
    )
    (i32.const 50)
  )
  (func $breakThroughMany (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 (param $0 i32) (result i32)
    (if
      (i32.eq
        (get_local $0)
        (i32.const 4)
      )
      (return
        (i32.const 0)
      )
    )
    (i32.const 0)
  )
  (func $heap8NoShift (param $0 i32) (result i32)
    (i32.load8_s
      (get_local $0)
    )
  )
  (func $conditionalTypeFun
    (drop
      (if i32
        (call $return_int)
        (i32.trunc_s/f64
          (call $abort
            (f64.convert_s/i32
              (i32.const 5)
            )
          )
        )
        (i32.const 2)
      )
    )
    (drop
      (if f64
        (call $return_int)
        (call $abort
          (f64.convert_s/i32
            (i32.const 7)
          )
        )
        (f64.const 4.5)
      )
    )
  )
  (func $loadSigned (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 $globalOpts
    (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
    (if
      (call $return_int)
      (drop
        (call $return_int)
      )
    )
  )
  (func $loophi (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 (result i32)
    (local $0 i32)
    (local $1 i32)
    (local $2 i32)
    (set_local $1
      (i32.const 0)
    )
    (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 $relooperJumpThreading (param $0 i32) (result i32)
    (block $jumpthreading$outer$0
      (block $jumpthreading$inner$0
        (if
          (get_local $0)
          (block
            (call $h
              (i32.const 0)
            )
            (br $jumpthreading$inner$0)
          )
        )
        (br $jumpthreading$outer$0)
      )
      (call $h
        (i32.const 1)
      )
    )
    (call $h
      (i32.const -1)
    )
    (block $jumpthreading$inner$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)
        )
        (br $jumpthreading$inner$1)
      )
    )
    (call $h
      (i32.const 3)
    )
    (call $h
      (i32.const -2)
    )
    (block $jumpthreading$outer$3
      (block $jumpthreading$inner$3
        (block $jumpthreading$inner$2
          (if
            (get_local $0)
            (block
              (call $h
                (i32.const 4)
              )
              (br_if $jumpthreading$inner$2
                (i32.eq
                  (get_local $0)
                  (i32.const 3)
                )
              )
              (br $jumpthreading$inner$3)
            )
          )
          (br $jumpthreading$outer$3)
        )
        (call $h
          (i32.const 5)
        )
        (br $jumpthreading$outer$3)
      )
      (call $h
        (i32.const 6)
      )
    )
    (call $h
      (i32.const -3)
    )
    (block $jumpthreading$outer$5
      (block $jumpthreading$inner$5
        (block $jumpthreading$inner$4
          (if
            (get_local $0)
            (block
              (call $h
                (i32.const 7)
              )
              (br_if $jumpthreading$inner$4
                (i32.eq
                  (get_local $0)
                  (i32.const 5)
                )
              )
              (br $jumpthreading$inner$5)
            )
          )
          (br $jumpthreading$outer$5)
        )
        (call $h
          (i32.const 8)
        )
        (br_if $jumpthreading$inner$5
          (i32.eq
            (get_local $0)
            (i32.const 6)
          )
        )
        (br $jumpthreading$outer$5)
      )
      (call $h
        (i32.const 9)
      )
    )
    (call $h
      (i32.const -4)
    )
    (block $label$break$L1
      (block $jumpthreading$inner$6
        (if
          (get_local $0)
          (block
            (call $h
              (i32.const 10)
            )
            (br $jumpthreading$inner$6)
          )
        )
        (br $label$break$L1)
      )
      (call $h
        (i32.const 11)
      )
    )
    (call $h
      (i32.const -5)
    )
    (block $label$break$L10
      (block $jumpthreading$inner$8
        (block $jumpthreading$inner$7
          (if
            (get_local $0)
            (block
              (call $h
                (i32.const 12)
              )
              (br_if $jumpthreading$inner$7
                (i32.eq
                  (get_local $0)
                  (i32.const 8)
                )
              )
              (br $jumpthreading$inner$8)
            )
          )
          (br $label$break$L10)
        )
        (call $h
          (i32.const 13)
        )
        (br_if $jumpthreading$inner$8
          (get_local $0)
        )
        (br $label$break$L10)
      )
      (call $h
        (i32.const 14)
      )
    )
    (call $h
      (i32.const -6)
    )
    (get_local $0)
  )
  (func $relooperJumpThreading__ZN4game14preloadweaponsEv
    (local $0 i32)
    (local $1 i32)
    (local $2 i32)
    (local $3 i32)
    (local $4 i32)
    (loop $while-in
      (block $jumpthreading$outer$1
        (block $jumpthreading$inner$1
          (if
            (get_local $0)
            (br_if $jumpthreading$inner$1
              (i32.eqz
                (get_local $1)
              )
            )
            (br_if $jumpthreading$inner$1
              (i32.eqz
                (get_local $2)
              )
            )
          )
          (br $while-in)
        )
        (i32.store
          (get_local $3)
          (get_local $4)
        )
      )
      (br $while-in)
    )
  )
  (func $__Z12multi_varargiz (param $0 i32)
    (local $1 i32)
    (local $2 i32)
    (if
      (get_local $1)
      (loop $while-in
        (br_if $while-in
          (i32.eqz
            (get_local $2)
          )
        )
      )
      (drop
        (call $lb
          (i32.const 1)
        )
      )
    )
  )
  (func $jumpThreadDrop (result i32)
    (call $return_int)
  )
  (func $dropIgnoredImportInIf (param $0 i32) (param $1 i32) (param $2 i32)
    (if
      (get_local $0)
      (drop
        (call $lb
          (get_local $2)
        )
      )
    )
  )
  (func $dropIgnoredImportsInIf (param $0 i32) (param $1 i32) (param $2 i32)
    (drop
      (if i32
        (get_local $0)
        (call $lb
          (get_local $1)
        )
        (call $lb
          (get_local $2)
        )
      )
    )
  )
)
