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