(module
 (type $0 (func (result i32)))
 (type $1 (func))
 (type $2 (func (param f32)))
 (type $3 (func (result f64)))
 (type $4 (func (param f64 f64) (result f64)))
 (type $5 (func (param i32 i64)))
 (type $6 (func (param i32) (result i32)))
 (type $7 (func (param f64) (result i32)))
 (type $8 (func (result i64)))
 (type $9 (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 ;) (type $1)
  (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 ;) (type $3) (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 ;) (type $4) (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 ;) (type $0) (result i32)
  (local $0 i32)
  (i32.eq
   (local.get $0)
   (i32.const 0)
  )
 )
 (func $4 (; 7 ;) (type $1)
  (drop
   (i32.add
    (i32.add
     (i32.const 0)
     (i32.const 313249263)
    )
    (i32.const -19088752)
   )
  )
 )
 (func $5 (; 8 ;) (type $1)
  (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 ;) (type $1)
  (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 ;) (type $6) (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 ;) (type $1)
  (block $label$1
   (br $label$1)
  )
 )
 (func $9 (; 12 ;) (type $3) (result f64)
  (call $fimport$2
   (f64.const 5.5)
   (f64.const 1.2)
  )
 )
 (func $10 (; 13 ;) (type $0) (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 ;) (type $2) (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 ;) (type $3) (result f64)
  (f64.const -0)
 )
 (func $13 (; 16 ;) (type $1)
  (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 ;) (type $1)
  (local $0 f32)
  (local.set $0
   (f32.neg
    (local.get $0)
   )
  )
  (call_indirect (type $2)
   (local.get $0)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $15 (; 18 ;) (type $2) (param $0 f32)
  (call_indirect (type $2)
   (local.get $0)
   (i32.add
    (i32.and
     (i32.const 1)
     (i32.const 7)
    )
    (i32.const 8)
   )
  )
 )
 (func $16 (; 19 ;) (type $1)
  (local $0 i32)
  (drop
   (i32.gt_u
    (i32.shr_u
     (local.get $0)
     (i32.const 0)
    )
    (i32.const -4096)
   )
  )
 )
 (func $17 (; 20 ;) (type $1)
  (nop)
 )
 (func $18 (; 21 ;) (type $1)
  (nop)
 )
 (func $19 (; 22 ;) (type $0) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (br $label$1)
  )
  (i32.const 0)
 )
 (func $20 (; 23 ;) (type $9) (param $0 f64) (result f64)
  (loop $label$1 (result f64)
   (drop
    (local.get $0)
   )
   (local.get $0)
  )
 )
 (func $21 (; 24 ;) (type $8) (result i64)
  (i64.const -9218868437227405313)
 )
 (func $22 (; 25 ;) (type $5) (param $0 i32) (param $1 i64)
  (i64.store32
   (local.get $0)
   (local.get $1)
  )
 )
 (func $23 (; 26 ;) (type $0) (result i32)
  (return
   (i32.const 1)
  )
 )
 (func $24 (; 27 ;) (type $0) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (return
    (i32.const 2)
   )
  )
 )
 (func $25 (; 28 ;) (type $0) (result i32)
  (drop
   (i32.const 1)
  )
  (return
   (i32.const 2)
  )
 )
 (func $26 (; 29 ;) (type $0) (result i32)
  (block $label$1
   (return
    (i32.const 2)
   )
  )
 )
 (func $27 (; 30 ;) (type $0) (result i32)
  (return
   (i32.const 2)
  )
 )
 (func $28 (; 31 ;) (type $0) (result i32)
  (block $label$1
   (drop
    (i32.const 1)
   )
   (br $label$1)
  )
  (i32.const 1)
 )
 (func $29 (; 32 ;) (type $0) (result i32)
  (if
   (i32.const 3)
   (return
    (i32.const 2)
   )
   (return
    (i32.const 1)
   )
  )
 )
 (func $30 (; 33 ;) (type $0) (result i32)
  (if
   (i32.const 3)
   (return
    (i32.const 2)
   )
   (return
    (i32.const 1)
   )
  )
 )
 (func $31 (; 34 ;) (type $0) (result i32)
  (loop $label$1
   (nop)
   (return
    (i32.const 1)
   )
  )
 )
 (func $32 (; 35 ;) (type $0) (result i32)
  (loop $label$1
   (return
    (i32.const 1)
   )
  )
 )
 (func $33 (; 36 ;) (type $0) (result i32)
  (loop $label$1
   (nop)
   (return
    (i32.const 1)
   )
  )
 )
 (func $34 (; 37 ;) (type $0) (result i32)
  (loop $label$1
   (return
    (i32.const 1)
   )
  )
 )
 (func $35 (; 38 ;) (type $1)
  (unreachable)
 )
 (func $36 (; 39 ;) (type $1)
  (if
   (i32.const 1)
   (nop)
   (unreachable)
  )
 )
)

