(module
  (memory 256 256)
  (export "memory" memory)
  (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
  (type $FUNCSIG$vf (func (param f32)))
  (type $FUNCSIG$vi (func (param i32)))
  (import $abort "env" "abort" (param i32))
  (import $print "env" "print" (param i32))
  (import $h "env" "h" (param i32))
  (import $f64-rem "asm2wasm" "f64-rem" (param f64 f64) (result f64))
  (export "big_negative" $big_negative)
  (export "pick" $big_negative)
  (table $big_negative $big_negative $big_negative $big_negative $big_negative $big_negative $importedDoubles $big_negative $big_negative $cneg)
  (func $big_negative
    (nop)
  )
  (func $importedDoubles (result f64)
    (if
      (i32.gt_s
        (i32.load
          (i32.const 24)
        )
        (i32.const 0)
      )
      (return
        (f64.const -3.4)
      )
    )
    (if
      (f64.gt
        (f64.load
          (i32.const 32)
        )
        (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 f32)
    (local $1 i32)
    (set_local $1
      (i32.trunc_s/f32
        (get_local $0)
      )
    )
  )
  (func $switcher (param $0 i32) (result i32)
    (block $switch-default$3
      (block $switch-case$2
        (block $switch-case$1
          (br_table $switch-case$1 $switch-case$2 $switch-default$3
            (i32.sub
              (get_local $0)
              (i32.const 1)
            )
          )
        )
        (return
          (i32.const 1)
        )
      )
      (return
        (i32.const 2)
      )
    )
    (block $switch-default$7
      (block $switch-case$6
        (block $switch-case$5
          (br_table $switch-case$6 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-case$5 $switch-default$7
            (i32.sub
              (get_local $0)
              (i32.const 5)
            )
          )
        )
        (return
          (i32.const 121)
        )
      )
      (return
        (i32.const 51)
      )
    )
    (block $label$break$Lout
      (block $switch-default$16
        (block $switch-case$15
          (block $switch-case$12
            (block $switch-case$9
              (block $switch-case$8
                (br_table $switch-case$15 $switch-default$16 $switch-default$16 $switch-case$12 $switch-default$16 $switch-default$16 $switch-default$16 $switch-default$16 $switch-case$9 $switch-default$16 $switch-case$8 $switch-default$16
                  (i32.sub
                    (get_local $0)
                    (i32.const 2)
                  )
                )
              )
              (br $label$break$Lout)
            )
            (br $label$break$Lout)
          )
          (loop $while-out$10 $while-in$11
            (br $while-out$10)
          )
          (br $label$break$Lout)
        )
        (loop $while-out$13 $while-in$14
          (br $label$break$Lout)
        )
      )
    )
    (loop $label$break$L1 $label$continue$L1
      (loop $label$break$L3 $label$continue$L3
        (block $switch$17
          (block $switch-default$21
            (block $switch-default$21
              (block $switch-case$20
                (block $switch-case$19
                  (block $switch-case$18
                    (br_table $switch-case$18 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-case$20 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-default$21 $switch-case$19 $switch-default$21
                      (i32.sub
                        (get_local $0)
                        (i32.const -1)
                      )
                    )
                  )
                  (br $label$break$L1)
                )
                (br $switch$17)
              )
              (br $label$break$L3)
            )
            (br $label$break$L1)
          )
        )
        (br $label$continue$L3)
      )
      (call_import $h
        (i32.const 120)
      )
      (br $label$continue$L1)
    )
    (i32.const 0)
  )
  (func $frem (result f64)
    (call_import $f64-rem
      (f64.const 5.5)
      (f64.const 1.2)
    )
  )
  (func $big_uint_div_u (result i32)
    (i32.and
      (i32.div_u
        (i32.const -1)
        (i32.const 2)
      )
      (i32.const -1)
    )
  )
  (func $fr (param $0 f32)
    (nop)
  )
  (func $negZero (result f64)
    (f64.const -0)
  )
  (func $neg
    (local $0 f32)
    (call_indirect $FUNCSIG$vf
      (i32.add
        (i32.and
          (i32.const 1)
          (i32.const 7)
        )
        (i32.const 8)
      )
      (f32.neg
        (get_local $0)
      )
    )
  )
  (func $cneg (param $0 f32)
    (call_indirect $FUNCSIG$vf
      (i32.add
        (i32.and
          (i32.const 1)
          (i32.const 7)
        )
        (i32.const 8)
      )
      (get_local $0)
    )
  )
  (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.add
        (i32.and
          (i32.const 1)
          (i32.const 7)
        )
        (i32.const 8)
      )
      (i32.const 1)
    )
  )
  (func $forLoop
    (local $0 i32)
    (set_local $0
      (i32.const 1)
    )
    (loop $for-out$0 $for-in$1
      (br_if $for-out$0
        (i32.ge_s
          (get_local $0)
          (i32.const 200)
        )
      )
      (call_import $h
        (get_local $0)
      )
      (set_local $0
        (i32.add
          (get_local $0)
          (i32.const 1)
        )
      )
      (br $for-in$1)
    )
  )
  (func $ceiling_32_64 (param $0 f32) (param $1 f64)
    (nop)
  )
  (func $aborts
    (call_import $abort
      (i32.const 0)
    )
    (call_import $abort
      (i32.const 55)
    )
    (call_import $abort
      (i32.const 0)
    )
  )
  (func $continues
    (loop $while-out$0 $while-in$1
      (call_import $print
        (i32.const 1)
      )
      (loop $do-once$2 $unlikely-continue$3
        (call_import $print
          (i32.const 5)
        )
        (br_if $unlikely-continue$3
          (i32.const 0)
        )
      )
      (call_import $print
        (i32.const 2)
      )
      (br $while-in$1)
    )
  )
  (func $bitcasts (param $0 i32) (param $1 f32)
    (nop)
  )
  (func $recursiveBlockMerging (param $0 i32) (result i32)
    (call $lb
      (i32.add
        (i32.add
          (i32.add
            (get_local $0)
            (i32.const 3)
          )
          (i32.const 7)
        )
        (i32.const 12)
      )
    )
    (call $lb
      (i32.const 1)
    )
    (call $lb
      (i32.const 2)
    )
    (i32.add
      (i32.add
        (i32.add
          (get_local $0)
          (call $lb
            (i32.const 3)
          )
        )
        (block
          (call $lb
            (i32.const 4)
          )
          (call $lb
            (i32.const 5)
          )
          (call $lb
            (i32.const 6)
          )
          (call $lb
            (i32.const 7)
          )
        )
      )
      (block
        (call $lb
          (i32.const 8)
        )
        (call $lb
          (i32.const 9)
        )
        (call $lb
          (i32.const 10)
        )
        (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
          (i32.load
            (i32.const 48)
          )
          (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)
      )
      (call $lb
        (i32.const 2)
      )
    )
  )
  (func $phi (result i32)
    (block $do-once$0
      (br_if $do-once$0
        (i32.const 0)
        (call $lb
          (i32.const 1)
        )
      )
      (i32.const 1)
    )
  )
)
