(module
 (type $0 (func (param i32 i64)))
 (type $1 (func))
 (type $2 (func (result i32)))
 (type $3 (func (param i32) (result i32)))
 (type $4 (func (param i32 i32)))
 (type $5 (func (param i32)))
 (type $6 (func (param i32 i32) (result i32)))
 (type $7 (func (param i64) (result i64)))
 (type $8 (func (result i64)))
 (memory $0 0)
 (export "load-off-2" (func $load-off-2))
 (func $f (; 0 ;) (type $0) (param $i1 i32) (param $i2 i64)
  (if
   (i32.eqz
    (get_local $i1)
   )
   (drop
    (i32.const 10)
   )
  )
  (if
   (get_local $i1)
   (drop
    (i32.const 12)
   )
   (drop
    (i32.const 11)
   )
  )
  (if
   (i64.eqz
    (get_local $i2)
   )
   (drop
    (i32.const 11)
   )
   (drop
    (i32.const 12)
   )
  )
  (drop
   (i32.le_s
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.lt_s
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.ge_s
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.gt_s
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.le_u
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.lt_u
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.ge_u
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.gt_u
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (i32.eqz
    (f32.gt
     (f32.const 1)
     (f32.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f32.ge
     (f32.const 1)
     (f32.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f32.lt
     (f32.const 1)
     (f32.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f32.le
     (f32.const 1)
     (f32.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f64.gt
     (f64.const 1)
     (f64.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f64.ge
     (f64.const 1)
     (f64.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f64.lt
     (f64.const 1)
     (f64.const 2)
    )
   )
  )
  (drop
   (i32.eqz
    (f64.le
     (f64.const 1)
     (f64.const 2)
    )
   )
  )
  (drop
   (f32.ne
    (f32.const 1)
    (f32.const 2)
   )
  )
  (drop
   (f32.eq
    (f32.const 1)
    (f32.const 2)
   )
  )
  (drop
   (f64.ne
    (f64.const 1)
    (f64.const 2)
   )
  )
  (drop
   (f64.eq
    (f64.const 1)
    (f64.const 2)
   )
  )
  (drop
   (i32.eqz
    (i32.const 100)
   )
  )
  (drop
   (i32.eq
    (i32.const 0)
    (i32.const 100)
   )
  )
  (drop
   (i32.eqz
    (i32.const 0)
   )
  )
  (if
   (i32.const 123)
   (nop)
  )
  (drop
   (select
    (i32.const 102)
    (i32.const 101)
    (get_local $i1)
   )
  )
  (drop
   (select
    (tee_local $i1
     (i32.const 103)
    )
    (tee_local $i1
     (i32.const 104)
    )
    (i32.eqz
     (get_local $i1)
    )
   )
  )
  (drop
   (select
    (i32.const 0)
    (i32.const 1)
    (i32.const 2)
   )
  )
 )
 (func $load-store (; 1 ;) (type $1)
  (drop
   (i32.load8_u
    (i32.const 0)
   )
  )
  (drop
   (i32.load8_u
    (i32.const 1)
   )
  )
  (drop
   (i32.and
    (i32.load8_s
     (i32.const 2)
    )
    (i32.const 254)
   )
  )
  (drop
   (i32.and
    (i32.load8_u
     (i32.const 3)
    )
    (i32.const 1)
   )
  )
  (drop
   (i32.load16_u
    (i32.const 4)
   )
  )
  (drop
   (i32.load16_u
    (i32.const 5)
   )
  )
  (drop
   (i32.and
    (i32.load16_s
     (i32.const 6)
    )
    (i32.const 65534)
   )
  )
  (drop
   (i32.and
    (i32.load16_u
     (i32.const 7)
    )
    (i32.const 1)
   )
  )
  (i32.store8
   (i32.const 8)
   (i32.const -1)
  )
  (i32.store8
   (i32.const 9)
   (i32.and
    (i32.const -2)
    (i32.const 254)
   )
  )
  (i32.store16
   (i32.const 10)
   (i32.const -3)
  )
  (i32.store16
   (i32.const 11)
   (i32.and
    (i32.const -4)
    (i32.const 65534)
   )
  )
  (i64.store8
   (i32.const 11)
   (i64.const 1)
  )
  (i64.store16
   (i32.const 11)
   (i64.const 2)
  )
  (i64.store32
   (i32.const 11)
   (i64.const 3)
  )
 )
 (func $and-neg1 (; 2 ;) (type $1)
  (drop
   (i32.const 100)
  )
  (drop
   (i32.and
    (i32.const 100)
    (i32.const 1)
   )
  )
 )
 (func $and-pos1 (; 3 ;) (type $1)
  (drop
   (i32.eqz
    (i32.const 1000)
   )
  )
  (drop
   (i32.eqz
    (i32.const 1000)
   )
  )
  (drop
   (i32.and
    (i32.const 100)
    (i32.const 1)
   )
  )
  (drop
   (i32.lt_s
    (i32.const 2000)
    (i32.const 3000)
   )
  )
 )
 (func $canonicalize-binary (; 4 ;) (type $1)
  (drop
   (i32.and
    (unreachable)
    (i32.const 1)
   )
  )
  (drop
   (i32.and
    (i32.const 1)
    (unreachable)
   )
  )
  (drop
   (i32.div_s
    (unreachable)
    (i32.const 1)
   )
  )
  (drop
   (i32.div_s
    (i32.const 1)
    (unreachable)
   )
  )
 )
 (func $ne0 (; 5 ;) (type $2) (result i32)
  (if
   (call $ne0)
   (nop)
  )
  (if
   (call $ne0)
   (nop)
  )
  (if
   (i32.or
    (call $ne0)
    (call $ne0)
   )
   (nop)
  )
  (if
   (i32.and
    (i32.ne
     (call $ne0)
     (i32.const 0)
    )
    (i32.ne
     (call $ne0)
     (i32.const 0)
    )
   )
   (nop)
  )
  (i32.const 1)
 )
 (func $recurse-bool (; 6 ;) (type $1)
  (if
   (if (result i32)
    (i32.const 1)
    (call $ne0)
    (call $ne1)
   )
   (nop)
  )
  (if
   (block $block (result i32)
    (nop)
    (call $ne0)
   )
   (nop)
  )
 )
 (func $ne1 (; 7 ;) (type $2) (result i32)
  (unreachable)
 )
 (func $load-off-2 (; 8 ;) (type $3) (param $0 i32) (result i32)
  (i32.store
   (i32.const 6)
   (get_local $0)
  )
  (i32.store
   (i32.const 6)
   (get_local $0)
  )
  (i32.store offset=2
   (i32.add
    (get_local $0)
    (i32.const 5)
   )
   (get_local $0)
  )
  (i32.store offset=2
   (i32.add
    (get_local $0)
    (i32.const 7)
   )
   (get_local $0)
  )
  (i32.store offset=2
   (i32.add
    (get_local $0)
    (i32.const -11)
   )
   (get_local $0)
  )
  (i32.store offset=2
   (i32.add
    (get_local $0)
    (i32.const -13)
   )
   (get_local $0)
  )
  (i32.store
   (i32.const 4)
   (get_local $0)
  )
  (i32.store offset=2
   (i32.const -2)
   (get_local $0)
  )
  (i32.store
   (i32.const 25)
   (get_local $0)
  )
  (i32.store offset=2
   (i32.const -25)
   (get_local $0)
  )
  (drop
   (i32.load
    (i32.const 8)
   )
  )
  (drop
   (i32.load
    (i32.const 8)
   )
  )
  (drop
   (i32.load offset=2
    (i32.add
     (get_local $0)
     (i32.const 6)
    )
   )
  )
  (drop
   (i32.load
    (i32.const 10)
   )
  )
  (i32.load offset=2
   (i32.add
    (get_local $0)
    (i32.const 10)
   )
  )
 )
 (func $sign-ext (; 9 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.eqz
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
   )
  )
  (drop
   (i32.eqz
    (i32.and
     (get_local $0)
     (i32.const 65535)
    )
   )
  )
  (drop
   (i32.eqz
    (i32.and
     (get_local $0)
     (i32.const 134217727)
    )
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const 100)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const 107)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.and
     (get_local $1)
     (i32.const 255)
    )
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $0)
     (i32.const 65535)
    )
    (i32.and
     (get_local $1)
     (i32.const 65535)
    )
   )
  )
  (drop
   (i32.eqz
    (i32.shr_s
     (i32.shl
      (get_local $0)
      (i32.const 24)
     )
     (i32.const 23)
    )
   )
  )
  (drop
   (i32.eqz
    (i32.shr_u
     (i32.shl
      (get_local $0)
      (i32.const 24)
     )
     (i32.const 24)
    )
   )
  )
  (drop
   (i32.lt_s
    (i32.shr_s
     (i32.shl
      (get_local $0)
      (i32.const 24)
     )
     (i32.const 24)
    )
    (i32.const 0)
   )
  )
 )
 (func $sign-ext-input (; 10 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.const 100)
  )
  (drop
   (i32.const 127)
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.const 128)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (unreachable)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.div_s
      (i32.const 1)
      (i32.const 2)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.and
    (i32.const 127)
    (i32.const 128)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.and
      (i32.const 128)
      (i32.const 129)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.xor
    (i32.const 127)
    (i32.const 126)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.xor
      (i32.const 127)
      (i32.const 128)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.or
    (i32.const 127)
    (i32.const 126)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.or
      (i32.const 127)
      (i32.const 128)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.const 32)
     (i32.const 26)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shl
    (i32.const 32)
    (i32.const 1)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.const 32)
     (i32.const 27)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_u
      (i32.const 256)
      (i32.const 1)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_u
    (i32.const 256)
    (i32.const 2)
   )
  )
  (drop
   (i32.shr_u
    (i32.const 128)
    (i32.const 35)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_s
      (i32.const 256)
      (i32.const 1)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.const 256)
    (i32.const 2)
   )
  )
  (drop
   (i32.shr_s
    (i32.const 128)
    (i32.const 35)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_s
      (i32.const -1)
      (i32.const 32)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.and
     (i32.const -1)
     (i32.const 2147483647)
    )
    (i32.const 31)
   )
  )
  (drop
   (i32.ne
    (i32.const -1)
    (i32.const -1)
   )
  )
  (drop
   (f32.le
    (f32.const -1)
    (f32.const -1)
   )
  )
  (drop
   (i32.clz
    (i32.const 0)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.clz
      (i32.const 0)
     )
     (i32.const 26)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.clz
      (i32.const 0)
     )
     (i32.const 27)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.wrap/i64
    (i64.clz
     (i64.const 0)
    )
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.wrap/i64
      (i64.clz
       (i64.const 0)
      )
     )
     (i32.const 25)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.wrap/i64
      (i64.clz
       (i64.const 0)
      )
     )
     (i32.const 26)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.eqz
    (i32.const -1)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_u
      (i32.wrap/i64
       (i64.const -1)
      )
      (i32.const 24)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_u
    (i32.wrap/i64
     (i64.const -1)
    )
    (i32.const 25)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_u
      (i32.wrap/i64
       (i64.extend_s/i32
        (i32.const -1)
       )
      )
      (i32.const 24)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_u
    (i32.wrap/i64
     (i64.extend_s/i32
      (i32.const -1)
     )
    )
    (i32.const 25)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.xor
      (i32.le_u
       (get_local $0)
       (i32.const 2)
      )
      (get_local $0)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
 )
 (func $linear-sums (; 11 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.add
    (get_local $1)
    (i32.shl
     (get_local $0)
     (i32.const 4)
    )
   )
  )
  (drop
   (i32.add
    (i32.add
     (get_local $1)
     (i32.shl
      (get_local $0)
      (i32.const 3)
     )
    )
    (i32.const 12)
   )
  )
  (drop
   (i32.const 4)
  )
  (drop
   (i32.const 18)
  )
  (drop
   (i32.const 6)
  )
  (drop
   (i32.const -4)
  )
  (drop
   (i32.const 2)
  )
  (drop
   (i32.const 1)
  )
  (drop
   (i32.const 26)
  )
  (drop
   (i32.const -20)
  )
  (drop
   (i32.const 22)
  )
  (drop
   (i32.add
    (i32.shl
     (i32.const 1)
     (get_local $0)
    )
    (i32.const 14)
   )
  )
  (drop
   (i32.add
    (i32.shl
     (get_local $1)
     (i32.const 3)
    )
    (i32.const -66)
   )
  )
  (drop
   (i32.const 44)
  )
  (drop
   (i32.add
    (i32.mul
     (get_local $0)
     (i32.const 10)
    )
    (i32.const 14)
   )
  )
  (drop
   (i32.add
    (i32.mul
     (get_local $0)
     (i32.const 2)
    )
    (i32.const 34)
   )
  )
  (drop
   (get_local $0)
  )
 )
 (func $almost-sign-ext (; 12 ;) (type $4) (param $0 i32) (param $0 i32)
  (drop
   (i32.shr_s
    (i32.shl
     (i32.const 100)
     (i32.const 25)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shl
    (i32.const 50)
    (i32.const 1)
   )
  )
 )
 (func $squaring (; 13 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.and
    (get_local $0)
    (i32.const 8)
   )
  )
  (drop
   (i32.and
    (i32.and
     (get_local $0)
     (i32.const 11)
    )
    (get_local $0)
   )
  )
  (drop
   (i32.and
    (get_local $0)
    (i32.const 8)
   )
  )
  (drop
   (i32.or
    (get_local $0)
    (i32.const 203)
   )
  )
  (drop
   (i32.shl
    (get_local $0)
    (i32.const 19)
   )
  )
  (drop
   (i32.shr_s
    (get_local $0)
    (i32.const 19)
   )
  )
  (drop
   (i32.shr_u
    (get_local $0)
    (i32.const 19)
   )
  )
  (drop
   (i32.shr_u
    (i32.shr_s
     (get_local $0)
     (i32.const 11)
    )
    (i32.const 200)
   )
  )
 )
 (func $sign-ext-ne (; 14 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.ne
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.ne
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.ne
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const 107)
   )
  )
  (drop
   (i32.ne
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const 111)
   )
  )
  (drop
   (i32.ne
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.and
     (get_local $1)
     (i32.const 255)
    )
   )
  )
 )
 (func $sign-ext-eqz (; 15 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.eqz
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
   )
  )
 )
 (func $sign-ext-boolean (; 16 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (if (result i32)
    (i32.and
     (get_local $0)
     (i32.const 255)
    )
    (i32.const 100)
    (i32.const 200)
   )
  )
 )
 (func $add-sub-zero (; 17 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (get_local $0)
  )
  (drop
   (get_local $0)
  )
 )
 (func $store-signext (; 18 ;) (type $5) (param $0 i32)
  (i32.store8
   (i32.const 8)
   (get_local $0)
  )
  (i32.store8
   (i32.const 8)
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 25)
    )
    (i32.const 25)
   )
  )
  (i32.store8
   (i32.const 8)
   (get_local $0)
  )
  (i32.store16
   (i32.const 8)
   (get_local $0)
  )
  (i32.store16
   (i32.const 8)
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 17)
    )
    (i32.const 17)
   )
  )
  (i32.store16
   (i32.const 8)
   (get_local $0)
  )
  (i32.store
   (i32.const 8)
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 16)
    )
    (i32.const 16)
   )
  )
  (i32.store
   (i32.const 8)
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 8)
    )
    (i32.const 8)
   )
  )
 )
 (func $sign-ext-tee (; 19 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.shr_s
    (i32.shl
     (tee_local $0
      (i32.const 128)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (tee_local $0
    (i32.const 127)
   )
  )
 )
 (func $sign-ext-load (; 20 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.load8_s
    (i32.const 256)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.shr_u
      (i32.load8_s
       (i32.const 256)
      )
      (i32.const 1)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_u
    (i32.load8_u
     (i32.const 256)
    )
    (i32.const 1)
   )
  )
  (drop
   (i32.load16_s
    (i32.const 256)
   )
  )
  (drop
   (tee_local $1
    (i32.load8_s
     (i32.const 1)
    )
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (tee_local $1
      (i32.load8_u
       (i32.const 1)
      )
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.and
    (tee_local $1
     (i32.load8_s
      (i32.const 1)
     )
    )
    (i32.const 255)
   )
  )
  (drop
   (tee_local $1
    (i32.load8_u
     (i32.const 1)
    )
   )
  )
 )
 (func $mask-bits (; 21 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (tee_local $0
    (i32.const 127)
   )
  )
  (drop
   (tee_local $0
    (i32.const 128)
   )
  )
  (drop
   (i32.and
    (tee_local $0
     (i32.const 128)
    )
    (i32.const 254)
   )
  )
  (drop
   (i32.and
    (tee_local $0
     (i32.const 128)
    )
    (i32.const 1279)
   )
  )
  (drop
   (i32.and
    (tee_local $0
     (i32.const 128)
    )
    (i32.const 1290)
   )
  )
  (drop
   (tee_local $0
    (i32.const 128)
   )
  )
  (drop
   (tee_local $0
    (i32.const 128)
   )
  )
  (drop
   (i32.and
    (tee_local $0
     (i32.const 128)
    )
    (i32.const 127)
   )
  )
 )
 (func $local-info-zero-ext (; 22 ;) (type $4) (param $0 i32) (param $1 i32)
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $w i32)
  (set_local $x
   (i32.const 212)
  )
  (drop
   (get_local $x)
  )
  (set_local $y
   (i32.const 500)
  )
  (drop
   (i32.and
    (get_local $y)
    (i32.const 255)
   )
  )
  (set_local $0
   (i32.const 212)
  )
  (drop
   (i32.and
    (get_local $0)
    (i32.const 255)
   )
  )
  (set_local $z
   (i32.const 212)
  )
  (set_local $z
   (i32.const 220)
  )
  (drop
   (get_local $z)
  )
  (set_local $w
   (i32.const 212)
  )
  (set_local $w
   (i32.const 1000)
  )
  (drop
   (i32.and
    (get_local $w)
    (i32.const 255)
   )
  )
 )
 (func $local-info-sign-ext-bitsize (; 23 ;) (type $4) (param $0 i32) (param $1 i32)
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $w i32)
  (set_local $x
   (i32.const 127)
  )
  (drop
   (get_local $x)
  )
  (set_local $y
   (i32.const 128)
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $y)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $0
   (i32.const 127)
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $z
   (i32.const 127)
  )
  (set_local $z
   (i32.const 100)
  )
  (drop
   (get_local $z)
  )
  (set_local $w
   (i32.const 127)
  )
  (set_local $w
   (i32.const 150)
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $w)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
 )
 (func $local-info-sign-ext-already-exted (; 24 ;) (type $4) (param $0 i32) (param $1 i32)
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $w i32)
  (set_local $x
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (get_local $x)
  )
  (set_local $y
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 16)
    )
    (i32.const 16)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $y)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $0
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $z
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $z
   (i32.shr_s
    (i32.shl
     (get_local $1)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (get_local $z)
  )
  (set_local $w
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $w
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 23)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $w)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $0)
     (i32.const 24)
    )
    (i32.const 23)
   )
  )
 )
 (func $signed-loads-fill-the-bits (; 25 ;) (type $3) (param $$e i32) (result i32)
  (local $$0 i32)
  (local $$conv i32)
  (set_local $$0
   (i32.load8_s
    (i32.const 1024)
   )
  )
  (set_local $$conv
   (i32.and
    (get_local $$0)
    (i32.const 255)
   )
  )
  (return
   (i32.eq
    (get_local $$conv)
    (get_local $$e)
   )
  )
 )
 (func $local-info-sign-ext-already-exted-by-load (; 26 ;) (type $4) (param $0 i32) (param $1 i32)
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $w i32)
  (set_local $x
   (i32.load8_s
    (i32.const 1024)
   )
  )
  (drop
   (get_local $x)
  )
  (set_local $y
   (i32.load8_u
    (i32.const 1024)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $y)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
  (set_local $z
   (i32.load16_s
    (i32.const 1024)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (get_local $z)
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
 )
 (func $compare-load-s-sign-extend (; 27 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.eq
    (i32.load8_u
     (get_local $0)
    )
    (i32.and
     (get_local $1)
     (i32.const 255)
    )
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $1)
     (i32.const 255)
    )
    (i32.load8_u
     (get_local $0)
    )
   )
  )
  (drop
   (i32.eq
    (i32.load8_u
     (get_local $0)
    )
    (i32.shr_s
     (i32.shl
      (get_local $1)
      (i32.const 24)
     )
     (i32.const 24)
    )
   )
  )
  (drop
   (i32.eq
    (i32.load8_s
     (get_local $0)
    )
    (i32.shr_s
     (i32.shl
      (get_local $1)
      (i32.const 16)
     )
     (i32.const 16)
    )
   )
  )
  (drop
   (i32.eq
    (i32.shr_s
     (i32.shl
      (get_local $1)
      (i32.const 24)
     )
     (i32.const 24)
    )
    (i32.load8_u
     (get_local $0)
    )
   )
  )
  (drop
   (i32.eq
    (i32.shr_s
     (i32.shl
      (get_local $1)
      (i32.const 16)
     )
     (i32.const 16)
    )
    (i32.load8_s
     (get_local $0)
    )
   )
  )
 )
 (func $unsign-diff-sizes (; 28 ;) (type $6) (param $x i32) (param $y i32) (result i32)
  (i32.ne
   (i32.shr_s
    (i32.shl
     (call $unsign-diff-sizes
      (i32.const -1)
      (i32.const 5)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
   (i32.shr_s
    (i32.shl
     (call $unsign-diff-sizes
      (i32.const 1)
      (i32.const 2006)
     )
     (i32.const 16)
    )
    (i32.const 16)
   )
  )
 )
 (func $unsign-same-sizes (; 29 ;) (type $6) (param $x i32) (param $y i32) (result i32)
  (i32.ne
   (i32.and
    (call $unsign-same-sizes
     (i32.const -1)
     (i32.const 5)
    )
    (i32.const 255)
   )
   (i32.and
    (call $unsign-same-sizes
     (i32.const 1)
     (i32.const 2006)
    )
    (i32.const 255)
   )
  )
 )
 (func $fuzz-almost-sign-ext (; 30 ;) (type $1)
  (drop
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (i32.const 2278)
     )
     (i32.const 17)
    )
    (i32.const 16)
   )
  )
  (drop
   (i32.shr_s
    (i32.shl
     (i32.load16_u
      (i32.const 2278)
     )
     (i32.const 17)
    )
    (i32.const 16)
   )
  )
 )
 (func $fuzz-comp-impossible (; 31 ;) (type $5) (param $x i32)
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 65535)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const 127)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const -2147483648)
   )
  )
  (drop
   (i32.eq
    (i32.and
     (get_local $x)
     (i32.const 255)
    )
    (i32.const 252)
   )
  )
 )
 (func $if-parallel (; 32 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.add
    (get_local $1)
    (i32.const 1)
   )
  )
  (drop
   (block (result i32)
    (drop
     (tee_local $0
      (get_local $1)
     )
    )
    (i32.add
     (get_local $1)
     (i32.const 1)
    )
   )
  )
  (drop
   (block (result i32)
    (i32.add
     (get_local $1)
     (unreachable)
    )
   )
  )
  (drop
   (block (result i32)
    (drop
     (tee_local $0
      (get_local $1)
     )
    )
    (i32.add
     (get_local $1)
     (unreachable)
    )
   )
  )
  (drop
   (if (result i32)
    (unreachable)
    (i32.add
     (get_local $1)
     (unreachable)
    )
    (i32.add
     (get_local $1)
     (unreachable)
    )
   )
  )
 )
 (func $select-parallel (; 33 ;) (type $4) (param $0 i32) (param $1 i32)
  (drop
   (i32.add
    (get_local $1)
    (i32.const 1)
   )
  )
  (drop
   (select
    (tee_local $0
     (get_local $1)
    )
    (tee_local $0
     (get_local $1)
    )
    (get_local $0)
   )
  )
  (drop
   (block (result i32)
    (drop
     (tee_local $0
      (get_local $1)
     )
    )
    (i32.add
     (get_local $1)
     (i32.const 1)
    )
   )
  )
  (drop
   (select
    (tee_local $0
     (get_local $1)
    )
    (tee_local $0
     (get_local $1)
    )
    (tee_local $0
     (get_local $1)
    )
   )
  )
  (drop
   (select
    (tee_local $0
     (get_local $1)
    )
    (tee_local $0
     (get_local $1)
    )
    (unreachable)
   )
  )
 )
 (func $zero-shifts-is-not-sign-ext (; 34 ;) (type $1)
  (drop
   (i32.eq
    (i32.load16_s align=1
     (i32.const 790656516)
    )
    (i32.const -5431187)
   )
  )
  (drop
   (i32.eq
    (i32.shl
     (i32.load16_s align=1
      (i32.const 790656516)
     )
     (i32.const 1)
    )
    (i32.const -5431187)
   )
  )
 )
 (func $zero-ops (; 35 ;) (type $2) (result i32)
  (return
   (i32.eq
    (i32.load16_s align=1
     (i32.const 790656516)
    )
    (i32.const -1337)
   )
  )
 )
 (func $sign-ext-1-and-ne (; 36 ;) (type $2) (result i32)
  (select
   (i32.ne
    (i32.and
     (call $sign-ext-1-and-ne)
     (i32.const 2147483647)
    )
    (i32.const -2147483648)
   )
   (i32.const 2)
   (i32.const 1)
  )
 )
 (func $neg-shifts-and-255 (; 37 ;) (type $2) (result i32)
  (i32.and
   (i32.shr_u
    (i32.const -99)
    (i32.const -32)
   )
   (i32.const 255)
  )
 )
 (func $neg-shifts-and-255-b (; 38 ;) (type $2) (result i32)
  (i32.and
   (i32.shl
    (i32.const -2349025)
    (i32.const -32)
   )
   (i32.const 255)
  )
 )
 (func $shifts-square-overflow (; 39 ;) (type $3) (param $x i32) (result i32)
  (i32.shr_u
   (i32.shr_u
    (get_local $x)
    (i32.const 65535)
   )
   (i32.const 32767)
  )
 )
 (func $shifts-square-no-overflow-small (; 40 ;) (type $3) (param $x i32) (result i32)
  (i32.shr_u
   (get_local $x)
   (i32.const 9)
  )
 )
 (func $shifts-square-overflow-64 (; 41 ;) (type $7) (param $x i64) (result i64)
  (i64.shr_u
   (i64.shr_u
    (get_local $x)
    (i64.const 65535)
   )
   (i64.const 64767)
  )
 )
 (func $shifts-square-no-overflow-small-64 (; 42 ;) (type $7) (param $x i64) (result i64)
  (i64.shr_u
   (get_local $x)
   (i64.const 9)
  )
 )
 (func $shifts-square-unreachable (; 43 ;) (type $3) (param $x i32) (result i32)
  (i32.shr_u
   (i32.shr_u
    (unreachable)
    (i32.const 1031)
   )
   (i32.const 4098)
  )
 )
 (func $mix-shifts (; 44 ;) (type $2) (result i32)
  (i32.shr_s
   (i32.shl
    (i32.const 23)
    (i32.const -61)
   )
   (i32.const 168)
  )
 )
 (func $actually-no-shifts (; 45 ;) (type $2) (result i32)
  (i32.const 33)
 )
 (func $less-shifts-than-it-seems (; 46 ;) (type $3) (param $x i32) (result i32)
  (i32.const 4800)
 )
 (func $and-popcount32 (; 47 ;) (type $2) (result i32)
  (i32.and
   (i32.popcnt
    (i32.const -1)
   )
   (i32.const 31)
  )
 )
 (func $and-popcount32-big (; 48 ;) (type $2) (result i32)
  (i32.popcnt
   (i32.const -1)
  )
 )
 (func $and-popcount64 (; 49 ;) (type $8) (result i64)
  (i64.and
   (i64.popcnt
    (i64.const -1)
   )
   (i64.const 63)
  )
 )
 (func $and-popcount64-big (; 50 ;) (type $8) (result i64)
  (i64.and
   (i64.popcnt
    (i64.const -1)
   )
   (i64.const 127)
  )
 )
 (func $and-popcount64-bigger (; 51 ;) (type $8) (result i64)
  (i64.and
   (i64.popcnt
    (i64.const -1)
   )
   (i64.const 255)
  )
 )
 (func $optimizeAddedConstants-filters-through-nonzero (; 52 ;) (type $2) (result i32)
  (i32.add
   (i32.shl
    (i32.const -536870912)
    (i32.wrap/i64
     (i64.const 0)
    )
   )
   (i32.const -31744)
  )
 )
 (func $optimizeAddedConstants-filters-through-nonzero-b (; 53 ;) (type $2) (result i32)
  (i32.add
   (i32.shl
    (i32.const -536870912)
    (i32.wrap/i64
     (i64.const -1)
    )
   )
   (i32.const -31744)
  )
 )
 (func $return-proper-value-from-shift-left-by-zero (; 54 ;) (type $2) (result i32)
  (if (result i32)
   (i32.add
    (loop $label$0 (result i32)
     (block $label$1
      (br_if $label$1
       (i32.load
        (i32.const 0)
       )
      )
     )
     (i32.const -62)
    )
    (i32.const 40)
   )
   (i32.const 1)
   (i32.const 0)
  )
 )
)
(module
 (type $0 (func))
 (import "env" "memory" (memory $0 (shared 256 256)))
 (func $x (; 0 ;) (type $0)
  (drop
   (i32.shr_s
    (i32.shl
     (i32.atomic.load8_u
      (i32.const 100)
     )
     (i32.const 24)
    )
    (i32.const 24)
   )
  )
 )
)
