(module
(import "ic0" "time" (func $time (result i64)))
(import "ic0" "global_timer_set" (func $timer (param i64) (result i64)))
(import "ic0" "msg_reply_data_append" (func $append (param i32 i32)))
(import "ic0" "msg_reply" (func $reply))
(import "ic0" "trap" (func $trap (param i32 i32)))
(import "ic0" "stable64_grow" (func $grow (param i64) (result i64)))
(import "ic0" "stable64_write" (func $write (param i64 i64 i64)))
(import "ic0" "stable64_read" (func $read (param i64 i64 i64)))
(memory (export "memory") 17)
(global $value (export "value") (mut i64) (i64.const 7))
(data (i32.const 128) "competing global timer owner")
(func $arm (param $seconds i64) (result i64)
(local $deadline i64)
(local.set $deadline (i64.add (call $time) (i64.mul (local.get $seconds) (i64.const 1000000000))))
(i64.store (i32.const 0) (local.get $deadline))
(call $timer (local.get $deadline)))
(func (export "canister_init")
(drop (call $grow (i64.const 17)))
(i64.store (i32.const 1048584) (i64.const 42))
(call $write (i64.const 1048584) (i64.const 1048584) (i64.const 8))
(drop (call $arm (i64.const 60))))
(func (export "canister_update rearm") (local $previous i64)
(local.set $previous (i64.load (i32.const 0)))
(if (i64.ne (call $arm (i64.const 120)) (local.get $previous))
(then (call $trap (i32.const 128) (i32.const 28))))
(global.set $value (i64.const 99))
(i64.store (i32.const 1048584) (i64.const 99))
(call $write (i64.const 1048584) (i64.const 1048584) (i64.const 8))
(drop (memory.grow (i32.const 2)))
(call $reply))
(func (export "canister_on_low_wasm_memory"))
(func (export "canister_global_timer")
(i64.store (i32.const 8) (i64.add (i64.load (i32.const 8)) (i64.const 1)))
(drop (call $arm (i64.const 60))))
(func (export "canister_query inspect")
(i64.store (i32.const 16) (global.get $value))
(i64.store (i32.const 24) (i64.load (i32.const 1048584)))
(call $read (i64.const 32) (i64.const 1048584) (i64.const 8))
(call $append (i32.const 0) (i32.const 40))
(call $reply))
)