(module
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_none (func))
 (type $f32_=>_none (func (param f32)))
 (type $none_=>_f64 (func (result f64)))
 (type $f64_f64_=>_f64 (func (param f64 f64) (result f64)))
 (type $i32_i64_=>_none (func (param i32 i64)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $f64_=>_i32 (func (param f64) (result i32)))
 (type $none_=>_i64 (func (result i64)))
 (type $f64_=>_f64 (func (param f64) (result f64)))
 (import "env" "_emscripten_asm_const_vi" (func $fimport$0))
 (import "asm2wasm" "f64-to-int" (func $fimport$1 (param f64) (result i32)))
 (import "asm2wasm" "f64-rem" (func $fimport$2 (param f64 f64) (result f64)))
 (memory $0 4096 4096)
 (data (i32.const 1026) "\14\00")
 (table $0 10 funcref)
 (elem (i32.const 0) $17 $0 $17 $17 $18 $18 $1 $18 $17 $15)
 (export "big_negative" (func $0))
 (func $0 (; 3 ;)
  (local $0 f64)
  (local.set $0
   (f64.const -2147483648)
  )
  (local.set $0
   (f64.const -2147483648)
  )
  (local.set $0
   (f64.const -21474836480)
  )
  (local.set $0
   (f64.const 0.039625)
  )
  (local.set $0
   (f64.const -0.039625)
  )
 )
 (func $1 (; 4 ;) (result f64)
  (local $0 f64)
  (block $label$1 (result f64)
   (local.set $0
    (f64.add
     (f64.add
      (f64.add
       (f64.load
        (i32.const 8)
       )
       (f64.load
        (i32.const 16)
       )
      )
      (f64.neg
       (f64.load
        (i32.const 16)
       )
      )
     )
     (f64.neg
      (f64.load
       (i32.const 8)
      )
     )
    )
   )
   (if
    (i32.gt_s
     (i32.load
      (i32.const 24)
     )
     (i32.const 0)
    )
    (br $label$1
     (f64.const -3.4)
    )
   )
   (if
    (f64.gt
     (f64.load
      (i32.const 32)
     )
     (f64.const 0)
    )
    (br $label$1
     (f64.const 5.6)
    )
   )
   (f64.const 1.2)
  )
 )
 (func $2 (; 5 ;) (param $0 f64) (param $1 f64) (result f64)
  (local $2 i32)
  (local $3 f64)
  (local $4 f64)
  (block $label$1 (result f64)
   (if
    (f64.gt
     (local.get $0)
     (f64.const 0)
    )
    (br $label$1
     (f64.const 1.2)
    )
   )
   (if
    (f64.gt
     (local.get $4)
     (f64.const 0)
    )
    (br $label$1
     (f64.const -3.4)
    )
   )
   (if
    (i32.gt_s
     (local.get $2)
     (i32.const 0)
    )
    (br $label$1
     (f64.const 5.6)
    )
   )
   (if
    (f64.lt
     (local.get $0)
     (local.get $1)
    )
    (br $label$1
     (local.get $0)
    )
   )
   (local.get $1)
  )
 )
 (func $3 (; 6 ;) (result i32)
  (local $0 i32)
  (i32.eq
   (local.get $0)
   (i32.const 0)
  )
 )
 (func $4 (; 7 ;)
  (drop
   (i32.add
    (i32.add
     (i32.const 0)
     (i32.const 313249263)
    )
    (i32.const -19088752)
   )
  )
 )
 (func $5 (; 8 ;)
  (local $0 i32)
  (local $1 f64)
  (local.set $0
   (call $fimport$1
    (local.get $1)
   )
  )
  (local.set $1
   (f64.convert_i32_s
    (local.get $0)
   )
  )
  (local.set $1
   (f64.convert_i32_u
    (i32.shr_u
     (local.get $0)
     (i32.const 0)
    )
   )
  )
 )
 (func $6 (; 9 ;)
  (local $0 f64)
  (local.set $0
   (f64.sub
    (block $label$1 (result f64)
     (drop
      (f64.const 0.1)
     )
     (f64.const 5.1)
    )
    (block $label$2 (result f64)
     (drop
      (f64.const 3.2)
     )
     (f64.const 4.2)
    )
   )
  )
 )
 (func $7 (; 10 ;) (param $0 i32) (result i32)
  (block $label$1 (result i32)
   (block $label$2
    (block $label$3
     (block $label$4
      (block $label$5
       (br_table $label$5 $label$4 $label$3
        (i32.sub
         (local.get $0)
         (i32.const 1)
        )
       )
      )
      (br $label$1
       (i32.const 1)
      )
     )
     (br $label$1
      (i32.const 2)
     )
    )
    (nop)
   )
   (block $label$6
    (block $label$7
     (block $label$8
      (block $label$9
       (br_table $label$8 $label$7 $label$7 $label$7 $label$7 $label$7 $label$7 $label$9 $label$7
        (i32.sub
         (local.get $0)
         (i32.const 5)
        )
       )
      )
      (br $label$1
       (i32.const 121)
      )
     )
     (br $label$1
      (i32.const 51)
     )
    )
    (nop)
   )
   (block $label$10
    (block $label$11
     (block $label$12
      (block $label$13
       (block $label$14
        (block $label$15
         (br_table $label$12 $label$11 $label$11 $label$13 $label$11 $label$11 $label$11 $label$11 $label$14 $label$11 $label$15 $label$11
          (i32.sub
           (local.get $0)
           (i32.const 2)
          )
         )
        )
        (br $label$10)
       )
       (br $label$10)
      )
      (block $label$16
       (loop $label$17
        (br $label$16)
       )
      )
     )
     (block $label$18
      (loop $label$19
       (br $label$10)
      )
     )
    )
    (nop)
   )
   (i32.const 0)
  )
 )
 (func $8 (; 11 ;)
  (block $label$1
   (br $label$1)
  )
 )
 (func $9 (; 12 ;) (result f64)
  (call $fimport$2
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $10 (; 13 ;) (result i32)
  (local $0 i32)
  (local.set $0
   (i32.and
    (i32.div_u
     (i32.const -1)
     (i32.const 2)
    )
    (i32.const -1)
   )
  )
  (local.get $0)
 )
 (func $11 (; 14 ;) (param $0 f32)
  (local $1 f32)
  (local $2 f64)
  (drop
   (f32.demote_f64
    (local.get $2)
   )
  )
  (drop
   (local.get $1)
  )
  (drop
   (f32.const 5)
  )
  (drop
   (f32.const 0)
  )
  (drop
   (f32.const 5)
  )
  (drop
   (f32.const 0)
  )
 )
 (func $12 (; 15 ;) (result f64)
  (f64.const -0)
 )
 (func $13 (; 16 ;)
  (local $0 i32)
  (local $1 i32)
  (local $2 f32)
  (local $3 f64)
  (local.set $0
   (block $label$1 (result i32)
    (local.set $1
     (i32.const 0)
    )
    (select
     (i32.sub
      (i32.const 0)
      (local.get $1)
     )
     (local.get $1)
     (i32.lt_s
      (local.get $1)
      (i32.const 0)
     )
    )
   )
  )
  (local.set $3
   (f64.abs
    (f64.const 0)
   )
  )
  (local.set $2
   (f32.abs
    (f32.const 0)
   )
  )
 )
 (func $14 (; 17 ;)
  (local $0 f32)
  (local.set $0
   (f32.neg
    (local.get $0)
   )
  )
  (call_indirect (type $f32_=>_none)
   (local.get $0)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $15 (; 18 ;) (param $0 f32)
  (call_indirect (type $f32_=>_none)
   (local.get $0)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $16 (; 19 ;)
  (local $0 i32)
  (drop
   (i32.gt_u
    (i32.shr_u
     (local.get $0)
     (i32.const 0)
    )
    (i32.const -4096)
   )
  )
 )
 (func $17 (; 20 ;)
  (nop)
 )
 (func $18 (; 21 ;)
  (nop)
 )
 (func $19 (; 22 ;) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (br $label$1)
  )
  (i32.const 0)
 )
 (func $20 (; 23 ;) (param $0 f64) (result f64)
  (loop $label$1 (result f64)
   (drop
    (local.get $0)
   )
   (local.get $0)
  )
 )
 (func $21 (; 24 ;) (result i64)
  (i64.const -9218868437227405313)
 )
 (func $22 (; 25 ;) (param $0 i32) (param $1 i64)
  (i64.store32
   (local.get $0)
   (local.get $1)
  )
 )
 (func $23 (; 26 ;) (result i32)
  (return
   (i32.const 1)
  )
 )
 (func $24 (; 27 ;) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (return
    (i32.const 2)
   )
  )
 )
 (func $25 (; 28 ;) (result i32)
  (drop
   (i32.const 1)
  )
  (return
   (i32.const 2)
  )
 )
 (func $26 (; 29 ;) (result i32)
  (block $label$1
   (return
    (i32.const 2)
   )
  )
 )
 (func $27 (; 30 ;) (result i32)
  (return
   (i32.const 2)
  )
 )
 (func $28 (; 31 ;) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (br $label$1)
  )
  (i32.const 1)
 )
 (func $29 (; 32 ;) (result i32)
  (if
   (i32.const 3)
   (return
    (i32.const 2)
   )
   (return
    (i32.const 1)
   )
  )
 )
 (func $30 (; 33 ;) (result i32)
  (if
   (i32.const 3)
   (return
    (i32.const 2)
   )
   (return
    (i32.const 1)
   )
  )
 )
 (func $31 (; 34 ;) (result i32)
  (loop $label$1
   (nop)
   (return
    (i32.const 1)
   )
  )
 )
 (func $32 (; 35 ;) (result i32)
  (loop $label$1
   (return
    (i32.const 1)
   )
  )
 )
 (func $33 (; 36 ;) (result i32)
  (loop $label$1
   (nop)
   (return
    (i32.const 1)
   )
  )
 )
 (func $34 (; 37 ;) (result i32)
  (loop $label$1
   (return
    (i32.const 1)
   )
  )
 )
 (func $35 (; 38 ;)
  (unreachable)
 )
 (func $36 (; 39 ;)
  (if
   (i32.const 1)
   (nop)
   (unreachable)
  )
 )
)

