1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330
|
static constexpr uint8_t expected_asm_kThumb2[] = {
0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x89, 0xB0, 0x00, 0x90,
0x21, 0x91, 0x8D, 0xED, 0x22, 0x0A, 0x23, 0x92, 0x24, 0x93, 0x88, 0xB0,
0x08, 0xB0, 0x09, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x4D,
0xD9, 0xF8, 0x34, 0x80, 0x70, 0x47,
};
static constexpr uint8_t expected_cfi_kThumb2[] = {
0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A,
0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05,
0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05,
0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05,
0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05,
0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x80, 0x01,
0x4E, 0x0E, 0xA0, 0x01, 0x42, 0x0E, 0x80, 0x01, 0x0A, 0x42, 0x0E, 0x5C,
0x44, 0x0E, 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06,
0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06,
0x5A, 0x06, 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x4A,
0x0B, 0x0E, 0x80, 0x01,
};
// 0x00000000: push {r5,r6,r7,r8,r10,r11,lr}
// 0x00000004: .cfi_def_cfa_offset: 28
// 0x00000004: .cfi_offset: r5 at cfa-28
// 0x00000004: .cfi_offset: r6 at cfa-24
// 0x00000004: .cfi_offset: r7 at cfa-20
// 0x00000004: .cfi_offset: r8 at cfa-16
// 0x00000004: .cfi_offset: r10 at cfa-12
// 0x00000004: .cfi_offset: r11 at cfa-8
// 0x00000004: .cfi_offset: r14 at cfa-4
// 0x00000004: vpush {s16-s31}
// 0x00000008: .cfi_def_cfa_offset: 92
// 0x00000008: .cfi_offset_extended: r80 at cfa-92
// 0x00000008: .cfi_offset_extended: r81 at cfa-88
// 0x00000008: .cfi_offset_extended: r82 at cfa-84
// 0x00000008: .cfi_offset_extended: r83 at cfa-80
// 0x00000008: .cfi_offset_extended: r84 at cfa-76
// 0x00000008: .cfi_offset_extended: r85 at cfa-72
// 0x00000008: .cfi_offset_extended: r86 at cfa-68
// 0x00000008: .cfi_offset_extended: r87 at cfa-64
// 0x00000008: .cfi_offset_extended: r88 at cfa-60
// 0x00000008: .cfi_offset_extended: r89 at cfa-56
// 0x00000008: .cfi_offset_extended: r90 at cfa-52
// 0x00000008: .cfi_offset_extended: r91 at cfa-48
// 0x00000008: .cfi_offset_extended: r92 at cfa-44
// 0x00000008: .cfi_offset_extended: r93 at cfa-40
// 0x00000008: .cfi_offset_extended: r94 at cfa-36
// 0x00000008: .cfi_offset_extended: r95 at cfa-32
// 0x00000008: sub sp, #36
// 0x0000000a: .cfi_def_cfa_offset: 128
// 0x0000000a: str r0, [sp]
// 0x0000000c: str r1, [sp, #132]
// 0x0000000e: vstr s0, [sp, #136]
// 0x00000012: str r2, [sp, #140]
// 0x00000014: str r3, [sp, #144]
// 0x00000016: sub sp, #32
// 0x00000018: .cfi_def_cfa_offset: 160
// 0x00000018: add sp, #32
// 0x0000001a: .cfi_def_cfa_offset: 128
// 0x0000001a: .cfi_remember_state
// 0x0000001a: add sp, #36
// 0x0000001c: .cfi_def_cfa_offset: 92
// 0x0000001c: vpop {s16-s31}
// 0x00000020: .cfi_def_cfa_offset: 28
// 0x00000020: .cfi_restore_extended: r80
// 0x00000020: .cfi_restore_extended: r81
// 0x00000020: .cfi_restore_extended: r82
// 0x00000020: .cfi_restore_extended: r83
// 0x00000020: .cfi_restore_extended: r84
// 0x00000020: .cfi_restore_extended: r85
// 0x00000020: .cfi_restore_extended: r86
// 0x00000020: .cfi_restore_extended: r87
// 0x00000020: .cfi_restore_extended: r88
// 0x00000020: .cfi_restore_extended: r89
// 0x00000020: .cfi_restore_extended: r90
// 0x00000020: .cfi_restore_extended: r91
// 0x00000020: .cfi_restore_extended: r92
// 0x00000020: .cfi_restore_extended: r93
// 0x00000020: .cfi_restore_extended: r94
// 0x00000020: .cfi_restore_extended: r95
// 0x00000020: pop {r5,r6,r7,r8,r10,r11,lr}
// 0x00000024: ldr r8, [tr, #52] ; is_gc_marking
// 0x00000028: bx lr
// 0x0000002a: .cfi_restore_state
// 0x0000002a: .cfi_def_cfa_offset: 128
static constexpr uint8_t expected_asm_kArm64[] = {
0xFF, 0x03, 0x03, 0xD1, 0xF3, 0x53, 0x06, 0xA9, 0xF5, 0x5B, 0x07, 0xA9,
0xF7, 0x63, 0x08, 0xA9, 0xF9, 0x6B, 0x09, 0xA9, 0xFB, 0x73, 0x0A, 0xA9,
0xFD, 0x7B, 0x0B, 0xA9, 0xE8, 0x27, 0x02, 0x6D, 0xEA, 0x2F, 0x03, 0x6D,
0xEC, 0x37, 0x04, 0x6D, 0xEE, 0x3F, 0x05, 0x6D, 0xE0, 0x03, 0x00, 0xF9,
0xE1, 0xCB, 0x00, 0xB9, 0xE0, 0xCF, 0x00, 0xBD, 0xE2, 0xD3, 0x00, 0xB9,
0xE3, 0xD7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91,
0xF3, 0x53, 0x46, 0xA9, 0xF5, 0x5B, 0x47, 0xA9, 0xF7, 0x63, 0x48, 0xA9,
0xF9, 0x6B, 0x49, 0xA9, 0xFB, 0x73, 0x4A, 0xA9, 0xFD, 0x7B, 0x4B, 0xA9,
0xE8, 0x27, 0x42, 0x6D, 0xEA, 0x2F, 0x43, 0x6D, 0xEC, 0x37, 0x44, 0x6D,
0xEE, 0x3F, 0x45, 0x6D, 0x74, 0x36, 0x40, 0xB9, 0xFF, 0x03, 0x03, 0x91,
0xC0, 0x03, 0x5F, 0xD6,
};
static constexpr uint8_t expected_cfi_kArm64[] = {
0x44, 0x0E, 0xC0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14,
0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A,
0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05,
0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22,
0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05,
0x4F, 0x1A, 0x58, 0x0E, 0xE0, 0x01, 0x44, 0x0E, 0xC0, 0x01, 0x0A, 0x44,
0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44,
0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06,
0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06,
0x4F, 0x48, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xC0, 0x01,
};
// 0x00000000: sub sp, sp, #0xc0 (192)
// 0x00000004: .cfi_def_cfa_offset: 192
// 0x00000004: stp tr, x20, [sp, #96]
// 0x00000008: .cfi_offset: r19 at cfa-96
// 0x00000008: .cfi_offset: r20 at cfa-88
// 0x00000008: stp x21, x22, [sp, #112]
// 0x0000000c: .cfi_offset: r21 at cfa-80
// 0x0000000c: .cfi_offset: r22 at cfa-72
// 0x0000000c: stp x23, x24, [sp, #128]
// 0x00000010: .cfi_offset: r23 at cfa-64
// 0x00000010: .cfi_offset: r24 at cfa-56
// 0x00000010: stp x25, x26, [sp, #144]
// 0x00000014: .cfi_offset: r25 at cfa-48
// 0x00000014: .cfi_offset: r26 at cfa-40
// 0x00000014: stp x27, x28, [sp, #160]
// 0x00000018: .cfi_offset: r27 at cfa-32
// 0x00000018: .cfi_offset: r28 at cfa-24
// 0x00000018: stp x29, lr, [sp, #176]
// 0x0000001c: .cfi_offset: r29 at cfa-16
// 0x0000001c: .cfi_offset: r30 at cfa-8
// 0x0000001c: stp d8, d9, [sp, #32]
// 0x00000020: .cfi_offset_extended: r72 at cfa-160
// 0x00000020: .cfi_offset_extended: r73 at cfa-152
// 0x00000020: stp d10, d11, [sp, #48]
// 0x00000024: .cfi_offset_extended: r74 at cfa-144
// 0x00000024: .cfi_offset_extended: r75 at cfa-136
// 0x00000024: stp d12, d13, [sp, #64]
// 0x00000028: .cfi_offset_extended: r76 at cfa-128
// 0x00000028: .cfi_offset_extended: r77 at cfa-120
// 0x00000028: stp d14, d15, [sp, #80]
// 0x0000002c: .cfi_offset_extended: r78 at cfa-112
// 0x0000002c: .cfi_offset_extended: r79 at cfa-104
// 0x0000002c: str x0, [sp]
// 0x00000030: str w1, [sp, #200]
// 0x00000034: str s0, [sp, #204]
// 0x00000038: str w2, [sp, #208]
// 0x0000003c: str w3, [sp, #212]
// 0x00000040: sub sp, sp, #0x20 (32)
// 0x00000044: .cfi_def_cfa_offset: 224
// 0x00000044: add sp, sp, #0x20 (32)
// 0x00000048: .cfi_def_cfa_offset: 192
// 0x00000048: .cfi_remember_state
// 0x00000048: ldp tr, x20, [sp, #96]
// 0x0000004c: .cfi_restore: r19
// 0x0000004c: .cfi_restore: r20
// 0x0000004c: ldp x21, x22, [sp, #112]
// 0x00000050: .cfi_restore: r21
// 0x00000050: .cfi_restore: r22
// 0x00000050: ldp x23, x24, [sp, #128]
// 0x00000054: .cfi_restore: r23
// 0x00000054: .cfi_restore: r24
// 0x00000054: ldp x25, x26, [sp, #144]
// 0x00000058: .cfi_restore: r25
// 0x00000058: .cfi_restore: r26
// 0x00000058: ldp x27, x28, [sp, #160]
// 0x0000005c: .cfi_restore: r27
// 0x0000005c: .cfi_restore: r28
// 0x0000005c: ldp x29, lr, [sp, #176]
// 0x00000060: .cfi_restore: r29
// 0x00000060: .cfi_restore: r30
// 0x00000060: ldp d8, d9, [sp, #32]
// 0x00000064: .cfi_restore_extended: r72
// 0x00000064: .cfi_restore_extended: r73
// 0x00000064: ldp d10, d11, [sp, #48]
// 0x00000068: .cfi_restore_extended: r74
// 0x00000068: .cfi_restore_extended: r75
// 0x00000068: ldp d12, d13, [sp, #64]
// 0x0000006c: .cfi_restore_extended: r76
// 0x0000006c: .cfi_restore_extended: r77
// 0x0000006c: ldp d14, d15, [sp, #80]
// 0x00000070: .cfi_restore_extended: r78
// 0x00000070: .cfi_restore_extended: r79
// 0x00000070: ldr w20, [tr, #52] ; is_gc_marking
// 0x00000074: add sp, sp, #0xc0 (192)
// 0x00000078: .cfi_def_cfa_offset: 0
// 0x00000078: ret
// 0x0000007c: .cfi_restore_state
// 0x0000007c: .cfi_def_cfa_offset: 192
static constexpr uint8_t expected_asm_kX86[] = {
0x57, 0x56, 0x55, 0x83, 0xC4, 0xE4, 0x50, 0x89, 0x4C, 0x24, 0x34, 0xF3,
0x0F, 0x11, 0x44, 0x24, 0x38, 0x89, 0x54, 0x24, 0x3C, 0x89, 0x5C, 0x24,
0x40, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x20, 0x5D, 0x5E,
0x5F, 0xC3,
};
static constexpr uint8_t expected_cfi_kX86[] = {
0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E,
0x10, 0x85, 0x04, 0x43, 0x0E, 0x2C, 0x41, 0x0E, 0x30, 0x55, 0x0E, 0x50,
0x43, 0x0E, 0x30, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41,
0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x30,
};
// 0x00000000: push edi
// 0x00000001: .cfi_def_cfa_offset: 8
// 0x00000001: .cfi_offset: r7 at cfa-8
// 0x00000001: push esi
// 0x00000002: .cfi_def_cfa_offset: 12
// 0x00000002: .cfi_offset: r6 at cfa-12
// 0x00000002: push ebp
// 0x00000003: .cfi_def_cfa_offset: 16
// 0x00000003: .cfi_offset: r5 at cfa-16
// 0x00000003: add esp, -28
// 0x00000006: .cfi_def_cfa_offset: 44
// 0x00000006: push eax
// 0x00000007: .cfi_def_cfa_offset: 48
// 0x00000007: mov [esp + 52], ecx
// 0x0000000b: movss [esp + 56], xmm0
// 0x00000011: mov [esp + 60], edx
// 0x00000015: mov [esp + 64], ebx
// 0x00000019: add esp, -32
// 0x0000001c: .cfi_def_cfa_offset: 80
// 0x0000001c: add esp, 32
// 0x0000001f: .cfi_def_cfa_offset: 48
// 0x0000001f: .cfi_remember_state
// 0x0000001f: add esp, 32
// 0x00000022: .cfi_def_cfa_offset: 16
// 0x00000022: pop ebp
// 0x00000023: .cfi_def_cfa_offset: 12
// 0x00000023: .cfi_restore: r5
// 0x00000023: pop esi
// 0x00000024: .cfi_def_cfa_offset: 8
// 0x00000024: .cfi_restore: r6
// 0x00000024: pop edi
// 0x00000025: .cfi_def_cfa_offset: 4
// 0x00000025: .cfi_restore: r7
// 0x00000025: ret
// 0x00000026: .cfi_restore_state
// 0x00000026: .cfi_def_cfa_offset: 48
static constexpr uint8_t expected_asm_kX86_64[] = {
0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83,
0xEC, 0x48, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x40, 0xF2, 0x44, 0x0F,
0x11, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x30, 0xF2,
0x44, 0x0F, 0x11, 0x64, 0x24, 0x28, 0x48, 0x89, 0x3C, 0x24, 0x89, 0xB4,
0x24, 0x88, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x84, 0x24, 0x8C, 0x00,
0x00, 0x00, 0x89, 0x94, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x8C, 0x24,
0x94, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20,
0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x28, 0xF2, 0x44, 0x0F, 0x10, 0x6C,
0x24, 0x30, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F,
0x10, 0x7C, 0x24, 0x40, 0x48, 0x83, 0xC4, 0x48, 0x5B, 0x5D, 0x41, 0x5C,
0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3,
};
static constexpr uint8_t expected_cfi_kX86_64[] = {
0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E,
0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86,
0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x80, 0x01, 0x47, 0xA0,
0x10, 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x66, 0x0E,
0xA0, 0x01, 0x44, 0x0E, 0x80, 0x01, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47,
0xDF, 0x47, 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E,
0x28, 0xC6, 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E,
0x10, 0xCE, 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x80, 0x01,
};
// 0x00000000: push r15
// 0x00000002: .cfi_def_cfa_offset: 16
// 0x00000002: .cfi_offset: r15 at cfa-16
// 0x00000002: push r14
// 0x00000004: .cfi_def_cfa_offset: 24
// 0x00000004: .cfi_offset: r14 at cfa-24
// 0x00000004: push r13
// 0x00000006: .cfi_def_cfa_offset: 32
// 0x00000006: .cfi_offset: r13 at cfa-32
// 0x00000006: push r12
// 0x00000008: .cfi_def_cfa_offset: 40
// 0x00000008: .cfi_offset: r12 at cfa-40
// 0x00000008: push rbp
// 0x00000009: .cfi_def_cfa_offset: 48
// 0x00000009: .cfi_offset: r6 at cfa-48
// 0x00000009: push rbx
// 0x0000000a: .cfi_def_cfa_offset: 56
// 0x0000000a: .cfi_offset: r3 at cfa-56
// 0x0000000a: subq rsp, 72
// 0x0000000e: .cfi_def_cfa_offset: 128
// 0x0000000e: movsd [rsp + 64], xmm15
// 0x00000015: .cfi_offset: r32 at cfa-64
// 0x00000015: movsd [rsp + 56], xmm14
// 0x0000001c: .cfi_offset: r31 at cfa-72
// 0x0000001c: movsd [rsp + 48], xmm13
// 0x00000023: .cfi_offset: r30 at cfa-80
// 0x00000023: movsd [rsp + 40], xmm12
// 0x0000002a: .cfi_offset: r29 at cfa-88
// 0x0000002a: movq [rsp], rdi
// 0x0000002e: mov [rsp + 136], esi
// 0x00000035: movss [rsp + 140], xmm0
// 0x0000003e: mov [rsp + 144], edx
// 0x00000045: mov [rsp + 148], ecx
// 0x0000004c: addq rsp, -32
// 0x00000050: .cfi_def_cfa_offset: 160
// 0x00000050: addq rsp, 32
// 0x00000054: .cfi_def_cfa_offset: 128
// 0x00000054: .cfi_remember_state
// 0x00000054: movsd xmm12, [rsp + 40]
// 0x0000005b: .cfi_restore: r29
// 0x0000005b: movsd xmm13, [rsp + 48]
// 0x00000062: .cfi_restore: r30
// 0x00000062: movsd xmm14, [rsp + 56]
// 0x00000069: .cfi_restore: r31
// 0x00000069: movsd xmm15, [rsp + 64]
// 0x00000070: .cfi_restore: r32
// 0x00000070: addq rsp, 72
// 0x00000074: .cfi_def_cfa_offset: 56
// 0x00000074: pop rbx
// 0x00000075: .cfi_def_cfa_offset: 48
// 0x00000075: .cfi_restore: r3
// 0x00000075: pop rbp
// 0x00000076: .cfi_def_cfa_offset: 40
// 0x00000076: .cfi_restore: r6
// 0x00000076: pop r12
// 0x00000078: .cfi_def_cfa_offset: 32
// 0x00000078: .cfi_restore: r12
// 0x00000078: pop r13
// 0x0000007a: .cfi_def_cfa_offset: 24
// 0x0000007a: .cfi_restore: r13
// 0x0000007a: pop r14
// 0x0000007c: .cfi_def_cfa_offset: 16
// 0x0000007c: .cfi_restore: r14
// 0x0000007c: pop r15
// 0x0000007e: .cfi_def_cfa_offset: 8
// 0x0000007e: .cfi_restore: r15
// 0x0000007e: ret
// 0x0000007f: .cfi_restore_state
// 0x0000007f: .cfi_def_cfa_offset: 128
|