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