1static constexpr uint8_t expected_asm_kThumb2[] = {
2    0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x89, 0xB0, 0x00, 0x90,
3    0x21, 0x91, 0x8D, 0xED, 0x22, 0x0A, 0x23, 0x92, 0x24, 0x93, 0x88, 0xB0,
4    0x08, 0xB0, 0x09, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x4D,
5    0xD9, 0xF8, 0x34, 0x80, 0x70, 0x47,
6};
7static constexpr uint8_t expected_cfi_kThumb2[] = {
8    0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A,
9    0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05,
10    0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05,
11    0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05,
12    0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05,
13    0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x80, 0x01,
14    0x4E, 0x0E, 0xA0, 0x01, 0x42, 0x0E, 0x80, 0x01, 0x0A, 0x42, 0x0E, 0x5C,
15    0x44, 0x0E, 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06,
16    0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06,
17    0x5A, 0x06, 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x4A,
18    0x0B, 0x0E, 0x80, 0x01,
19};
20// 0x00000000: push {r5,r6,r7,r8,r10,r11,lr}
21// 0x00000004: .cfi_def_cfa_offset: 28
22// 0x00000004: .cfi_offset: r5 at cfa-28
23// 0x00000004: .cfi_offset: r6 at cfa-24
24// 0x00000004: .cfi_offset: r7 at cfa-20
25// 0x00000004: .cfi_offset: r8 at cfa-16
26// 0x00000004: .cfi_offset: r10 at cfa-12
27// 0x00000004: .cfi_offset: r11 at cfa-8
28// 0x00000004: .cfi_offset: r14 at cfa-4
29// 0x00000004: vpush {s16-s31}
30// 0x00000008: .cfi_def_cfa_offset: 92
31// 0x00000008: .cfi_offset_extended: r80 at cfa-92
32// 0x00000008: .cfi_offset_extended: r81 at cfa-88
33// 0x00000008: .cfi_offset_extended: r82 at cfa-84
34// 0x00000008: .cfi_offset_extended: r83 at cfa-80
35// 0x00000008: .cfi_offset_extended: r84 at cfa-76
36// 0x00000008: .cfi_offset_extended: r85 at cfa-72
37// 0x00000008: .cfi_offset_extended: r86 at cfa-68
38// 0x00000008: .cfi_offset_extended: r87 at cfa-64
39// 0x00000008: .cfi_offset_extended: r88 at cfa-60
40// 0x00000008: .cfi_offset_extended: r89 at cfa-56
41// 0x00000008: .cfi_offset_extended: r90 at cfa-52
42// 0x00000008: .cfi_offset_extended: r91 at cfa-48
43// 0x00000008: .cfi_offset_extended: r92 at cfa-44
44// 0x00000008: .cfi_offset_extended: r93 at cfa-40
45// 0x00000008: .cfi_offset_extended: r94 at cfa-36
46// 0x00000008: .cfi_offset_extended: r95 at cfa-32
47// 0x00000008: sub sp, #36
48// 0x0000000a: .cfi_def_cfa_offset: 128
49// 0x0000000a: str r0, [sp]
50// 0x0000000c: str r1, [sp, #132]
51// 0x0000000e: vstr s0, [sp, #136]
52// 0x00000012: str r2, [sp, #140]
53// 0x00000014: str r3, [sp, #144]
54// 0x00000016: sub sp, #32
55// 0x00000018: .cfi_def_cfa_offset: 160
56// 0x00000018: add sp, #32
57// 0x0000001a: .cfi_def_cfa_offset: 128
58// 0x0000001a: .cfi_remember_state
59// 0x0000001a: add sp, #36
60// 0x0000001c: .cfi_def_cfa_offset: 92
61// 0x0000001c: vpop {s16-s31}
62// 0x00000020: .cfi_def_cfa_offset: 28
63// 0x00000020: .cfi_restore_extended: r80
64// 0x00000020: .cfi_restore_extended: r81
65// 0x00000020: .cfi_restore_extended: r82
66// 0x00000020: .cfi_restore_extended: r83
67// 0x00000020: .cfi_restore_extended: r84
68// 0x00000020: .cfi_restore_extended: r85
69// 0x00000020: .cfi_restore_extended: r86
70// 0x00000020: .cfi_restore_extended: r87
71// 0x00000020: .cfi_restore_extended: r88
72// 0x00000020: .cfi_restore_extended: r89
73// 0x00000020: .cfi_restore_extended: r90
74// 0x00000020: .cfi_restore_extended: r91
75// 0x00000020: .cfi_restore_extended: r92
76// 0x00000020: .cfi_restore_extended: r93
77// 0x00000020: .cfi_restore_extended: r94
78// 0x00000020: .cfi_restore_extended: r95
79// 0x00000020: pop {r5,r6,r7,r8,r10,r11,lr}
80// 0x00000024: ldr r8, [tr, #52] ; is_gc_marking
81// 0x00000028: bx lr
82// 0x0000002a: .cfi_restore_state
83// 0x0000002a: .cfi_def_cfa_offset: 128
84
85static constexpr uint8_t expected_asm_kArm64[] = {
86    0xFF, 0x03, 0x03, 0xD1, 0xF3, 0x53, 0x06, 0xA9, 0xF5, 0x5B, 0x07, 0xA9,
87    0xF7, 0x63, 0x08, 0xA9, 0xF9, 0x6B, 0x09, 0xA9, 0xFB, 0x73, 0x0A, 0xA9,
88    0xFD, 0x7B, 0x0B, 0xA9, 0xE8, 0x27, 0x02, 0x6D, 0xEA, 0x2F, 0x03, 0x6D,
89    0xEC, 0x37, 0x04, 0x6D, 0xEE, 0x3F, 0x05, 0x6D, 0xE0, 0x03, 0x00, 0xF9,
90    0xE1, 0xCB, 0x00, 0xB9, 0xE0, 0xCF, 0x00, 0xBD, 0xE2, 0xD3, 0x00, 0xB9,
91    0xE3, 0xD7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91,
92    0xF3, 0x53, 0x46, 0xA9, 0xF5, 0x5B, 0x47, 0xA9, 0xF7, 0x63, 0x48, 0xA9,
93    0xF9, 0x6B, 0x49, 0xA9, 0xFB, 0x73, 0x4A, 0xA9, 0xFD, 0x7B, 0x4B, 0xA9,
94    0xE8, 0x27, 0x42, 0x6D, 0xEA, 0x2F, 0x43, 0x6D, 0xEC, 0x37, 0x44, 0x6D,
95    0xEE, 0x3F, 0x45, 0x6D, 0x74, 0x36, 0x40, 0xB9, 0xFF, 0x03, 0x03, 0x91,
96    0xC0, 0x03, 0x5F, 0xD6,
97};
98static constexpr uint8_t expected_cfi_kArm64[] = {
99    0x44, 0x0E, 0xC0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14,
100    0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A,
101    0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05,
102    0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22,
103    0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05,
104    0x4F, 0x1A, 0x58, 0x0E, 0xE0, 0x01, 0x44, 0x0E, 0xC0, 0x01, 0x0A, 0x44,
105    0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44,
106    0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06,
107    0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06,
108    0x4F, 0x48, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xC0, 0x01,
109};
110// 0x00000000: sub sp, sp, #0xc0 (192)
111// 0x00000004: .cfi_def_cfa_offset: 192
112// 0x00000004: stp tr, x20, [sp, #96]
113// 0x00000008: .cfi_offset: r19 at cfa-96
114// 0x00000008: .cfi_offset: r20 at cfa-88
115// 0x00000008: stp x21, x22, [sp, #112]
116// 0x0000000c: .cfi_offset: r21 at cfa-80
117// 0x0000000c: .cfi_offset: r22 at cfa-72
118// 0x0000000c: stp x23, x24, [sp, #128]
119// 0x00000010: .cfi_offset: r23 at cfa-64
120// 0x00000010: .cfi_offset: r24 at cfa-56
121// 0x00000010: stp x25, x26, [sp, #144]
122// 0x00000014: .cfi_offset: r25 at cfa-48
123// 0x00000014: .cfi_offset: r26 at cfa-40
124// 0x00000014: stp x27, x28, [sp, #160]
125// 0x00000018: .cfi_offset: r27 at cfa-32
126// 0x00000018: .cfi_offset: r28 at cfa-24
127// 0x00000018: stp x29, lr, [sp, #176]
128// 0x0000001c: .cfi_offset: r29 at cfa-16
129// 0x0000001c: .cfi_offset: r30 at cfa-8
130// 0x0000001c: stp d8, d9, [sp, #32]
131// 0x00000020: .cfi_offset_extended: r72 at cfa-160
132// 0x00000020: .cfi_offset_extended: r73 at cfa-152
133// 0x00000020: stp d10, d11, [sp, #48]
134// 0x00000024: .cfi_offset_extended: r74 at cfa-144
135// 0x00000024: .cfi_offset_extended: r75 at cfa-136
136// 0x00000024: stp d12, d13, [sp, #64]
137// 0x00000028: .cfi_offset_extended: r76 at cfa-128
138// 0x00000028: .cfi_offset_extended: r77 at cfa-120
139// 0x00000028: stp d14, d15, [sp, #80]
140// 0x0000002c: .cfi_offset_extended: r78 at cfa-112
141// 0x0000002c: .cfi_offset_extended: r79 at cfa-104
142// 0x0000002c: str x0, [sp]
143// 0x00000030: str w1, [sp, #200]
144// 0x00000034: str s0, [sp, #204]
145// 0x00000038: str w2, [sp, #208]
146// 0x0000003c: str w3, [sp, #212]
147// 0x00000040: sub sp, sp, #0x20 (32)
148// 0x00000044: .cfi_def_cfa_offset: 224
149// 0x00000044: add sp, sp, #0x20 (32)
150// 0x00000048: .cfi_def_cfa_offset: 192
151// 0x00000048: .cfi_remember_state
152// 0x00000048: ldp tr, x20, [sp, #96]
153// 0x0000004c: .cfi_restore: r19
154// 0x0000004c: .cfi_restore: r20
155// 0x0000004c: ldp x21, x22, [sp, #112]
156// 0x00000050: .cfi_restore: r21
157// 0x00000050: .cfi_restore: r22
158// 0x00000050: ldp x23, x24, [sp, #128]
159// 0x00000054: .cfi_restore: r23
160// 0x00000054: .cfi_restore: r24
161// 0x00000054: ldp x25, x26, [sp, #144]
162// 0x00000058: .cfi_restore: r25
163// 0x00000058: .cfi_restore: r26
164// 0x00000058: ldp x27, x28, [sp, #160]
165// 0x0000005c: .cfi_restore: r27
166// 0x0000005c: .cfi_restore: r28
167// 0x0000005c: ldp x29, lr, [sp, #176]
168// 0x00000060: .cfi_restore: r29
169// 0x00000060: .cfi_restore: r30
170// 0x00000060: ldp d8, d9, [sp, #32]
171// 0x00000064: .cfi_restore_extended: r72
172// 0x00000064: .cfi_restore_extended: r73
173// 0x00000064: ldp d10, d11, [sp, #48]
174// 0x00000068: .cfi_restore_extended: r74
175// 0x00000068: .cfi_restore_extended: r75
176// 0x00000068: ldp d12, d13, [sp, #64]
177// 0x0000006c: .cfi_restore_extended: r76
178// 0x0000006c: .cfi_restore_extended: r77
179// 0x0000006c: ldp d14, d15, [sp, #80]
180// 0x00000070: .cfi_restore_extended: r78
181// 0x00000070: .cfi_restore_extended: r79
182// 0x00000070: ldr w20, [tr, #52] ; is_gc_marking
183// 0x00000074: add sp, sp, #0xc0 (192)
184// 0x00000078: .cfi_def_cfa_offset: 0
185// 0x00000078: ret
186// 0x0000007c: .cfi_restore_state
187// 0x0000007c: .cfi_def_cfa_offset: 192
188
189static constexpr uint8_t expected_asm_kX86[] = {
190    0x57, 0x56, 0x55, 0x83, 0xC4, 0xE4, 0x50, 0x89, 0x4C, 0x24, 0x34, 0xF3,
191    0x0F, 0x11, 0x44, 0x24, 0x38, 0x89, 0x54, 0x24, 0x3C, 0x89, 0x5C, 0x24,
192    0x40, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x20, 0x5D, 0x5E,
193    0x5F, 0xC3,
194};
195static constexpr uint8_t expected_cfi_kX86[] = {
196    0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E,
197    0x10, 0x85, 0x04, 0x43, 0x0E, 0x2C, 0x41, 0x0E, 0x30, 0x55, 0x0E, 0x50,
198    0x43, 0x0E, 0x30, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41,
199    0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x30,
200};
201// 0x00000000: push edi
202// 0x00000001: .cfi_def_cfa_offset: 8
203// 0x00000001: .cfi_offset: r7 at cfa-8
204// 0x00000001: push esi
205// 0x00000002: .cfi_def_cfa_offset: 12
206// 0x00000002: .cfi_offset: r6 at cfa-12
207// 0x00000002: push ebp
208// 0x00000003: .cfi_def_cfa_offset: 16
209// 0x00000003: .cfi_offset: r5 at cfa-16
210// 0x00000003: add esp, -28
211// 0x00000006: .cfi_def_cfa_offset: 44
212// 0x00000006: push eax
213// 0x00000007: .cfi_def_cfa_offset: 48
214// 0x00000007: mov [esp + 52], ecx
215// 0x0000000b: movss [esp + 56], xmm0
216// 0x00000011: mov [esp + 60], edx
217// 0x00000015: mov [esp + 64], ebx
218// 0x00000019: add esp, -32
219// 0x0000001c: .cfi_def_cfa_offset: 80
220// 0x0000001c: add esp, 32
221// 0x0000001f: .cfi_def_cfa_offset: 48
222// 0x0000001f: .cfi_remember_state
223// 0x0000001f: add esp, 32
224// 0x00000022: .cfi_def_cfa_offset: 16
225// 0x00000022: pop ebp
226// 0x00000023: .cfi_def_cfa_offset: 12
227// 0x00000023: .cfi_restore: r5
228// 0x00000023: pop esi
229// 0x00000024: .cfi_def_cfa_offset: 8
230// 0x00000024: .cfi_restore: r6
231// 0x00000024: pop edi
232// 0x00000025: .cfi_def_cfa_offset: 4
233// 0x00000025: .cfi_restore: r7
234// 0x00000025: ret
235// 0x00000026: .cfi_restore_state
236// 0x00000026: .cfi_def_cfa_offset: 48
237
238static constexpr uint8_t expected_asm_kX86_64[] = {
239    0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83,
240    0xEC, 0x48, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x40, 0xF2, 0x44, 0x0F,
241    0x11, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x30, 0xF2,
242    0x44, 0x0F, 0x11, 0x64, 0x24, 0x28, 0x48, 0x89, 0x3C, 0x24, 0x89, 0xB4,
243    0x24, 0x88, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x84, 0x24, 0x8C, 0x00,
244    0x00, 0x00, 0x89, 0x94, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x8C, 0x24,
245    0x94, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20,
246    0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x28, 0xF2, 0x44, 0x0F, 0x10, 0x6C,
247    0x24, 0x30, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F,
248    0x10, 0x7C, 0x24, 0x40, 0x48, 0x83, 0xC4, 0x48, 0x5B, 0x5D, 0x41, 0x5C,
249    0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3,
250};
251static constexpr uint8_t expected_cfi_kX86_64[] = {
252    0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E,
253    0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86,
254    0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x80, 0x01, 0x47, 0xA0,
255    0x10, 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x66, 0x0E,
256    0xA0, 0x01, 0x44, 0x0E, 0x80, 0x01, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47,
257    0xDF, 0x47, 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E,
258    0x28, 0xC6, 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E,
259    0x10, 0xCE, 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x80, 0x01,
260};
261// 0x00000000: push r15
262// 0x00000002: .cfi_def_cfa_offset: 16
263// 0x00000002: .cfi_offset: r15 at cfa-16
264// 0x00000002: push r14
265// 0x00000004: .cfi_def_cfa_offset: 24
266// 0x00000004: .cfi_offset: r14 at cfa-24
267// 0x00000004: push r13
268// 0x00000006: .cfi_def_cfa_offset: 32
269// 0x00000006: .cfi_offset: r13 at cfa-32
270// 0x00000006: push r12
271// 0x00000008: .cfi_def_cfa_offset: 40
272// 0x00000008: .cfi_offset: r12 at cfa-40
273// 0x00000008: push rbp
274// 0x00000009: .cfi_def_cfa_offset: 48
275// 0x00000009: .cfi_offset: r6 at cfa-48
276// 0x00000009: push rbx
277// 0x0000000a: .cfi_def_cfa_offset: 56
278// 0x0000000a: .cfi_offset: r3 at cfa-56
279// 0x0000000a: subq rsp, 72
280// 0x0000000e: .cfi_def_cfa_offset: 128
281// 0x0000000e: movsd [rsp + 64], xmm15
282// 0x00000015: .cfi_offset: r32 at cfa-64
283// 0x00000015: movsd [rsp + 56], xmm14
284// 0x0000001c: .cfi_offset: r31 at cfa-72
285// 0x0000001c: movsd [rsp + 48], xmm13
286// 0x00000023: .cfi_offset: r30 at cfa-80
287// 0x00000023: movsd [rsp + 40], xmm12
288// 0x0000002a: .cfi_offset: r29 at cfa-88
289// 0x0000002a: movq [rsp], rdi
290// 0x0000002e: mov [rsp + 136], esi
291// 0x00000035: movss [rsp + 140], xmm0
292// 0x0000003e: mov [rsp + 144], edx
293// 0x00000045: mov [rsp + 148], ecx
294// 0x0000004c: addq rsp, -32
295// 0x00000050: .cfi_def_cfa_offset: 160
296// 0x00000050: addq rsp, 32
297// 0x00000054: .cfi_def_cfa_offset: 128
298// 0x00000054: .cfi_remember_state
299// 0x00000054: movsd xmm12, [rsp + 40]
300// 0x0000005b: .cfi_restore: r29
301// 0x0000005b: movsd xmm13, [rsp + 48]
302// 0x00000062: .cfi_restore: r30
303// 0x00000062: movsd xmm14, [rsp + 56]
304// 0x00000069: .cfi_restore: r31
305// 0x00000069: movsd xmm15, [rsp + 64]
306// 0x00000070: .cfi_restore: r32
307// 0x00000070: addq rsp, 72
308// 0x00000074: .cfi_def_cfa_offset: 56
309// 0x00000074: pop rbx
310// 0x00000075: .cfi_def_cfa_offset: 48
311// 0x00000075: .cfi_restore: r3
312// 0x00000075: pop rbp
313// 0x00000076: .cfi_def_cfa_offset: 40
314// 0x00000076: .cfi_restore: r6
315// 0x00000076: pop r12
316// 0x00000078: .cfi_def_cfa_offset: 32
317// 0x00000078: .cfi_restore: r12
318// 0x00000078: pop r13
319// 0x0000007a: .cfi_def_cfa_offset: 24
320// 0x0000007a: .cfi_restore: r13
321// 0x0000007a: pop r14
322// 0x0000007c: .cfi_def_cfa_offset: 16
323// 0x0000007c: .cfi_restore: r14
324// 0x0000007c: pop r15
325// 0x0000007e: .cfi_def_cfa_offset: 8
326// 0x0000007e: .cfi_restore: r15
327// 0x0000007e: ret
328// 0x0000007f: .cfi_restore_state
329// 0x0000007f: .cfi_def_cfa_offset: 128
330
331static constexpr uint8_t expected_asm_kMips[] = {
332    0xC0, 0xFF, 0xBD, 0x27, 0x3C, 0x00, 0xBF, 0xAF, 0x38, 0x00, 0xBE, 0xAF,
333    0x34, 0x00, 0xB7, 0xAF, 0x30, 0x00, 0xB6, 0xAF, 0x2C, 0x00, 0xB5, 0xAF,
334    0x28, 0x00, 0xB4, 0xAF, 0x24, 0x00, 0xB3, 0xAF, 0x20, 0x00, 0xB2, 0xAF,
335    0x00, 0x00, 0xA4, 0xAF, 0x44, 0x00, 0xA5, 0xAF, 0x48, 0x00, 0xA8, 0xE7,
336    0x4C, 0x00, 0xA6, 0xAF, 0x50, 0x00, 0xA7, 0xAF, 0xE0, 0xFF, 0xBD, 0x27,
337    0x20, 0x00, 0xBD, 0x27, 0x20, 0x00, 0xB2, 0x8F, 0x24, 0x00, 0xB3, 0x8F,
338    0x28, 0x00, 0xB4, 0x8F, 0x2C, 0x00, 0xB5, 0x8F, 0x30, 0x00, 0xB6, 0x8F,
339    0x34, 0x00, 0xB7, 0x8F, 0x38, 0x00, 0xBE, 0x8F, 0x3C, 0x00, 0xBF, 0x8F,
340    0x09, 0x00, 0xE0, 0x03, 0x40, 0x00, 0xBD, 0x27,
341};
342static constexpr uint8_t expected_cfi_kMips[] = {
343    0x44, 0x0E, 0x40, 0x44, 0x9F, 0x01, 0x44, 0x9E, 0x02, 0x44, 0x97, 0x03,
344    0x44, 0x96, 0x04, 0x44, 0x95, 0x05, 0x44, 0x94, 0x06, 0x44, 0x93, 0x07,
345    0x44, 0x92, 0x08, 0x58, 0x0E, 0x60, 0x44, 0x0E, 0x40, 0x0A, 0x44, 0xD2,
346    0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6, 0x44, 0xD7, 0x44, 0xDE,
347    0x44, 0xDF, 0x48, 0x0E, 0x00, 0x0B, 0x0E, 0x40,
348};
349// 0x00000000: addiu r29, r29, -64
350// 0x00000004: .cfi_def_cfa_offset: 64
351// 0x00000004: sw r31, +60(r29)
352// 0x00000008: .cfi_offset: r31 at cfa-4
353// 0x00000008: sw r30, +56(r29)
354// 0x0000000c: .cfi_offset: r30 at cfa-8
355// 0x0000000c: sw r23, +52(r29)
356// 0x00000010: .cfi_offset: r23 at cfa-12
357// 0x00000010: sw r22, +48(r29)
358// 0x00000014: .cfi_offset: r22 at cfa-16
359// 0x00000014: sw r21, +44(r29)
360// 0x00000018: .cfi_offset: r21 at cfa-20
361// 0x00000018: sw r20, +40(r29)
362// 0x0000001c: .cfi_offset: r20 at cfa-24
363// 0x0000001c: sw r19, +36(r29)
364// 0x00000020: .cfi_offset: r19 at cfa-28
365// 0x00000020: sw r18, +32(r29)
366// 0x00000024: .cfi_offset: r18 at cfa-32
367// 0x00000024: sw r4, +0(r29)
368// 0x00000028: sw r5, +68(r29)
369// 0x0000002c: swc1 f8, +72(r29)
370// 0x00000030: sw r6, +76(r29)
371// 0x00000034: sw r7, +80(r29)
372// 0x00000038: addiu r29, r29, -32
373// 0x0000003c: .cfi_def_cfa_offset: 96
374// 0x0000003c: addiu r29, r29, 32
375// 0x00000040: .cfi_def_cfa_offset: 64
376// 0x00000040: .cfi_remember_state
377// 0x00000040: lw r18, +32(r29)
378// 0x00000044: .cfi_restore: r18
379// 0x00000044: lw r19, +36(r29)
380// 0x00000048: .cfi_restore: r19
381// 0x00000048: lw r20, +40(r29)
382// 0x0000004c: .cfi_restore: r20
383// 0x0000004c: lw r21, +44(r29)
384// 0x00000050: .cfi_restore: r21
385// 0x00000050: lw r22, +48(r29)
386// 0x00000054: .cfi_restore: r22
387// 0x00000054: lw r23, +52(r29)
388// 0x00000058: .cfi_restore: r23
389// 0x00000058: lw r30, +56(r29)
390// 0x0000005c: .cfi_restore: r30
391// 0x0000005c: lw r31, +60(r29)
392// 0x00000060: .cfi_restore: r31
393// 0x00000060: jr r31
394// 0x00000064: addiu r29, r29, 64
395// 0x00000068: .cfi_def_cfa_offset: 0
396// 0x00000068: .cfi_restore_state
397// 0x00000068: .cfi_def_cfa_offset: 64
398
399static constexpr uint8_t expected_asm_kMips64[] = {
400    0x90, 0xFF, 0xBD, 0x67, 0x68, 0x00, 0xBF, 0xFF, 0x60, 0x00, 0xBE, 0xFF,
401    0x58, 0x00, 0xBC, 0xFF, 0x50, 0x00, 0xB7, 0xFF, 0x48, 0x00, 0xB6, 0xFF,
402    0x40, 0x00, 0xB5, 0xFF, 0x38, 0x00, 0xB4, 0xFF, 0x30, 0x00, 0xB3, 0xFF,
403    0x28, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0xA4, 0xFF, 0x78, 0x00, 0xA5, 0xAF,
404    0x7C, 0x00, 0xAE, 0xE7, 0x80, 0x00, 0xA7, 0xAF, 0x84, 0x00, 0xA8, 0xAF,
405    0xE0, 0xFF, 0xBD, 0x67, 0x20, 0x00, 0xBD, 0x67, 0x28, 0x00, 0xB2, 0xDF,
406    0x30, 0x00, 0xB3, 0xDF, 0x38, 0x00, 0xB4, 0xDF, 0x40, 0x00, 0xB5, 0xDF,
407    0x48, 0x00, 0xB6, 0xDF, 0x50, 0x00, 0xB7, 0xDF, 0x58, 0x00, 0xBC, 0xDF,
408    0x60, 0x00, 0xBE, 0xDF, 0x68, 0x00, 0xBF, 0xDF, 0x70, 0x00, 0xBD, 0x67,
409    0x09, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00,
410};
411static constexpr uint8_t expected_cfi_kMips64[] = {
412    0x44, 0x0E, 0x70, 0x44, 0x9F, 0x02, 0x44, 0x9E, 0x04, 0x44, 0x9C, 0x06,
413    0x44, 0x97, 0x08, 0x44, 0x96, 0x0A, 0x44, 0x95, 0x0C, 0x44, 0x94, 0x0E,
414    0x44, 0x93, 0x10, 0x44, 0x92, 0x12, 0x58, 0x0E, 0x90, 0x01, 0x44, 0x0E,
415    0x70, 0x0A, 0x44, 0xD2, 0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6,
416    0x44, 0xD7, 0x44, 0xDC, 0x44, 0xDE, 0x44, 0xDF, 0x44, 0x0E, 0x00, 0x48,
417    0x0B, 0x0E, 0x70,
418};
419// 0x00000000: daddiu r29, r29, -112
420// 0x00000004: .cfi_def_cfa_offset: 112
421// 0x00000004: sd r31, +104(r29)
422// 0x00000008: .cfi_offset: r31 at cfa-8
423// 0x00000008: sd r30, +96(r29)
424// 0x0000000c: .cfi_offset: r30 at cfa-16
425// 0x0000000c: sd r28, +88(r29)
426// 0x00000010: .cfi_offset: r28 at cfa-24
427// 0x00000010: sd r23, +80(r29)
428// 0x00000014: .cfi_offset: r23 at cfa-32
429// 0x00000014: sd r22, +72(r29)
430// 0x00000018: .cfi_offset: r22 at cfa-40
431// 0x00000018: sd r21, +64(r29)
432// 0x0000001c: .cfi_offset: r21 at cfa-48
433// 0x0000001c: sd r20, +56(r29)
434// 0x00000020: .cfi_offset: r20 at cfa-56
435// 0x00000020: sd r19, +48(r29)
436// 0x00000024: .cfi_offset: r19 at cfa-64
437// 0x00000024: sd r18, +40(r29)
438// 0x00000028: .cfi_offset: r18 at cfa-72
439// 0x00000028: sd r4, +0(r29)
440// 0x0000002c: sw r5, +120(r29)
441// 0x00000030: swc1 f14, +124(r29)
442// 0x00000034: sw r7, +128(r29)
443// 0x00000038: sw r8, +132(r29)
444// 0x0000003c: daddiu r29, r29, -32
445// 0x00000040: .cfi_def_cfa_offset: 144
446// 0x00000040: daddiu r29, r29, 32
447// 0x00000044: .cfi_def_cfa_offset: 112
448// 0x00000044: .cfi_remember_state
449// 0x00000044: ld r18, +40(r29)
450// 0x00000048: .cfi_restore: r18
451// 0x00000048: ld r19, +48(r29)
452// 0x0000004c: .cfi_restore: r19
453// 0x0000004c: ld r20, +56(r29)
454// 0x00000050: .cfi_restore: r20
455// 0x00000050: ld r21, +64(r29)
456// 0x00000054: .cfi_restore: r21
457// 0x00000054: ld r22, +72(r29)
458// 0x00000058: .cfi_restore: r22
459// 0x00000058: ld r23, +80(r29)
460// 0x0000005c: .cfi_restore: r23
461// 0x0000005c: ld r28, +88(r29)
462// 0x00000060: .cfi_restore: r28
463// 0x00000060: ld r30, +96(r29)
464// 0x00000064: .cfi_restore: r30
465// 0x00000064: ld r31, +104(r29)
466// 0x00000068: .cfi_restore: r31
467// 0x00000068: daddiu r29, r29, 112
468// 0x0000006c: .cfi_def_cfa_offset: 0
469// 0x0000006c: jr r31
470// 0x00000070: nop
471// 0x00000074: .cfi_restore_state
472// 0x00000074: .cfi_def_cfa_offset: 112
473
474