1;;! target = "aarch64"
2;;! test = "compile"
3;;! flags = ["-Wexceptions=yes", "-Wgc=yes", "-Dguest-debug=yes"]
4
5(module
6  (tag $t (param i32))
7  (import "" "host" (func))
8  (func (export "main")
9    (block $b (result i32)
10      (try_table (catch $t $b)
11        (drop (i32.const 42))
12        (throw $t (i32.const 42)))
13      i32.const 0)
14    (call 0)
15    (drop)))
16;; wasm[0]::function[1]:
17;;       stp     x29, x30, [sp, #-0x10]!
18;;       mov     x29, sp
19;;       stp     x27, x28, [sp, #-0x10]!
20;;       stp     x25, x26, [sp, #-0x10]!
21;;       stp     x23, x24, [sp, #-0x10]!
22;;       stp     x21, x22, [sp, #-0x10]!
23;;       stp     x19, x20, [sp, #-0x10]!
24;;       stp     d14, d15, [sp, #-0x10]!
25;;       stp     d12, d13, [sp, #-0x10]!
26;;       stp     d10, d11, [sp, #-0x10]!
27;;       stp     d8, d9, [sp, #-0x10]!
28;;       sub     sp, sp, #0x30
29;;       ldr     x3, [x2, #8]
30;;       ldr     x3, [x3, #0x18]
31;;       mov     x4, sp
32;;       cmp     x4, x3
33;;       b.lo    #0x190
34;;   44: stur    x2, [sp]
35;;       mov     x0, x2
36;;       stur    x2, [sp, #0x10]
37;;       nop
38;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 53, slot at FP-0xc0, locals , stack
39;;       ╰─╼ breakpoint patch: wasm PC 53, patch bytes [38, 1, 0, 148]
40;;       ldur    x0, [sp, #0x10]
41;;       nop
42;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 55, slot at FP-0xc0, locals , stack
43;;       ╰─╼ breakpoint patch: wasm PC 55, patch bytes [36, 1, 0, 148]
44;;       ldur    x0, [sp, #0x10]
45;;       nop
46;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 61, slot at FP-0xc0, locals , stack
47;;       ╰─╼ breakpoint patch: wasm PC 61, patch bytes [34, 1, 0, 148]
48;;       mov     w22, #0x2a
49;;       stur    w22, [sp, #8]
50;;       nop
51;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 63, slot at FP-0xc0, locals , stack I32 @ slot+0x8
52;;       ╰─╼ breakpoint patch: wasm PC 63, patch bytes [31, 1, 0, 148]
53;;       nop
54;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 64, slot at FP-0xc0, locals , stack
55;;       ╰─╼ breakpoint patch: wasm PC 64, patch bytes [30, 1, 0, 148]
56;;       stur    w22, [sp, #8]
57;;       nop
58;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 66, slot at FP-0xc0, locals , stack I32 @ slot+0x8
59;;       ╰─╼ breakpoint patch: wasm PC 66, patch bytes [28, 1, 0, 148]
60;;       ldur    x2, [sp, #0x10]
61;;       bl      #0x448
62;;   84: mov     x24, x2
63;;       mov     w3, #0x4000000
64;;       mov     w4, #2
65;;       mov     w5, #0x28
66;;       mov     w6, #8
67;;       ldur    x2, [sp, #0x10]
68;;       bl      #0x368
69;;   a0: ldur    x0, [sp, #0x10]
70;;       ldr     x5, [x0, #8]
71;;       ldr     x6, [x5, #0x20]
72;;       stur    x5, [sp, #0x20]
73;;       add     x15, x6, #0x20
74;;       str     w22, [x15, w2, uxtw]
75;;       add     x3, x6, #0x18
76;;       mov     x1, x24
77;;       str     w1, [x3, w2, uxtw]
78;;       mov     w3, #0
79;;       add     x4, x6, #0x1c
80;;       stur    x6, [sp, #0x18]
81;;       str     w3, [x4, w2, uxtw]
82;;       mov     x3, x2
83;;       ldur    x2, [sp, #0x10]
84;;       bl      #0x480
85;;       ├─╼ exception frame offset: SP = FP - 0xc0
86;;       ╰─╼ exception handler: tag=0, context at [SP+0x10], handler=0xf8
87;;   e0: mov     w3, #9
88;;       ldur    x2, [sp, #0x10]
89;;       bl      #0x3dc
90;;   ec: ldur    x2, [sp, #0x10]
91;;       bl      #0x414
92;;   f4: .byte   0x1f, 0xc1, 0x00, 0x00
93;;       mov     x9, x0
94;;       mov     w6, w9
95;;       mov     x7, #0x28
96;;       adds    x5, x6, x7
97;;       cset    x7, hs
98;;       uxtb    w6, w7
99;;       cbnz    x6, #0x1a8
100;;  114: ldur    x4, [sp, #0x20]
101;;       ldr     x8, [x4, #0x28]
102;;       cmp     x5, x8
103;;       cset    x10, hi
104;;       uxtb    w10, w10
105;;       cbnz    x10, #0x1ac
106;;  12c: ldur    x6, [sp, #0x18]
107;;       add     x10, x6, #0x20
108;;       ldr     w12, [x10, w9, uxtw]
109;;       stur    w12, [sp, #8]
110;;       ldur    x0, [sp, #0x10]
111;;       nop
112;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
113;;       ╰─╼ breakpoint patch: wasm PC 72, patch bytes [234, 0, 0, 148]
114;;       ldr     x14, [x0, #0x30]
115;;       ldr     x2, [x0, #0x40]
116;;       ldur    x3, [sp, #0x10]
117;;       blr     x14
118;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
119;;  154: ldur    x0, [sp, #0x10]
120;;       nop
121;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 74, slot at FP-0xc0, locals , stack I32 @ slot+0x8
122;;       ╰─╼ breakpoint patch: wasm PC 74, patch bytes [228, 0, 0, 148]
123;;       nop
124;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 75, slot at FP-0xc0, locals , stack
125;;       ╰─╼ breakpoint patch: wasm PC 75, patch bytes [227, 0, 0, 148]
126;;       add     sp, sp, #0x30
127;;       ldp     d8, d9, [sp], #0x10
128;;       ldp     d10, d11, [sp], #0x10
129;;       ldp     d12, d13, [sp], #0x10
130;;       ldp     d14, d15, [sp], #0x10
131;;       ldp     x19, x20, [sp], #0x10
132;;       ldp     x21, x22, [sp], #0x10
133;;       ldp     x23, x24, [sp], #0x10
134;;       ldp     x25, x26, [sp], #0x10
135;;       ldp     x27, x28, [sp], #0x10
136;;       ldp     x29, x30, [sp], #0x10
137;;       ret
138;;  190: stur    x2, [sp, #0x10]
139;;  194: mov     w3, #0
140;;  198: bl      #0x3dc
141;;  19c: ldur    x2, [sp, #0x10]
142;;  1a0: bl      #0x414
143;;  1a4: .byte   0x1f, 0xc1, 0x00, 0x00
144;;  1a8: .byte   0x1f, 0xc1, 0x00, 0x00
145;;  1ac: .byte   0x1f, 0xc1, 0x00, 0x00
146