(module
 (type $i32_=>_none (func (param i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_i64 (func (result i64)))
 (import "env" "memory" (memory $memory (shared 256 256)))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32)))
 (export "test64" (func $legalstub$test64))
 (func $test64 (; has Stack IR ;) (result i64)
  (local $0 i64)
  (local $1 i64)
  (i64.atomic.store
   (i32.const 4656)
   (i64.const 92)
  )
  (drop
   (i64.atomic.load
    (i32.const 4656)
   )
  )
  (drop
   (i64.atomic.rmw.cmpxchg
    (i32.const 1024)
    (local.tee $1
     (i64.atomic.rmw.xchg
      (i32.const 1024)
      (local.tee $0
       (i64.atomic.rmw.xor
        (i32.const 1024)
        (i64.atomic.rmw.or
         (i32.const 1024)
         (i64.atomic.rmw.and
          (i32.const 1024)
          (i64.atomic.rmw.sub
           (i32.const 1024)
           (i64.atomic.rmw.add
            (i32.const 0)
            (i64.const 26)
           )
          )
         )
        )
       )
      )
     )
    )
    (local.get $0)
   )
  )
  (local.get $1)
 )
 (func $legalstub$test64 (; has Stack IR ;) (result i32)
  (local $0 i64)
  (local.set $0
   (call $test64)
  )
  (call $setTempRet0
   (i32.wrap_i64
    (i64.shr_u
     (local.get $0)
     (i64.const 32)
    )
   )
  )
  (i32.wrap_i64
   (local.get $0)
  )
 )
)
