user: 请从给定的汇编指令推导出C源代码：

```asm
<get_x86_cpu_extended_flags>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    %rcx,0xb0(%rsp)
  mov    %r8,0xb8(%rsp)
  test   %edi,%edi
  jne    L97
  lea    D226(%rip),%rcx
  test   $0x10000000,%esi
  lea    D55(%rip),%rax
  cmove  %rcx,%rax
  test   $0x8000000,%esi
  lea    D130(%rip),%r8
  mov    %rax,0xa8(%rsp)
  lea    D189(%rip),%rax
  cmove  %rcx,%rax
  test   $0x2000000,%esi
  mov    %rax,0xa0(%rsp)
  lea    D24(%rip),%rax
  cmove  %rcx,%rax
  test   $0x1000000,%esi
  mov    %rax,0x98(%rsp)
  lea    D172(%rip),%rax
  cmove  %rcx,%rax
  test   $0x800000,%esi
  mov    %rax,0x90(%rsp)
  lea    D270(%rip),%rax
  cmove  %rcx,%rax
  test   $0x400000,%esi
  mov    %rax,0x88(%rsp)
  lea    D256(%rip),%rax
  cmove  %rcx,%rax
  test   $0x200000,%esi
  mov    %rax,0x80(%rsp)
  lea    D381(%rip),%rax
  cmove  %rcx,%rax
  test   $0x80000,%esi
  mov    %rax,0x78(%rsp)
  lea    D41(%rip),%rax
  cmove  %rcx,%rax
  test   $0x20000,%esi
  mov    %rax,0x70(%rsp)
  lea    D285(%rip),%rax
  cmove  %rcx,%rax
  test   $0x10000,%esi
  mov    %rax,0x68(%rsp)
  lea    D190(%rip),%rax
  cmove  %rcx,%rax
  test   $0x8000,%esi
  mov    %rax,0x60(%rsp)
  lea    D118(%rip),%rax
  cmove  %rcx,%rax
  test   $0x2000,%esi
  mov    %rax,0x58(%rsp)
  lea    D368(%rip),%rax
  cmove  %rcx,%rax
  test   $0x1000,%esi
  mov    %rax,0x50(%rsp)
  lea    D264(%rip),%rax
  cmove  %rcx,%rax
  test   $0x800,%esi
  mov    %rax,0x48(%rsp)
  lea    D418(%rip),%rax
  cmove  %rcx,%rax
  test   $0x400,%esi
  mov    %rax,0x40(%rsp)
  lea    D45(%rip),%rax
  cmove  %rcx,%rax
  test   $0x200,%esi
  mov    %rax,0x38(%rsp)
  lea    D78(%rip),%rax
  cmove  %rcx,%rax
  test   $0x100,%esi
  mov    %rax,0x30(%rsp)
  lea    D40(%rip),%rax
  cmove  %rcx,%rax
  test   $0x80,%sil
  mov    %rax,0x28(%rsp)
  lea    D93(%rip),%rax
  cmove  %rcx,%rax
  test   $0x40,%sil
  cmovne %r8,%rcx
  mov    %rcx,0x8(%rsp)
L74:
  test   $0x20,%sil
  lea    D226(%rip),%r8
  lea    D384(%rip),%rcx
  cmove  %r8,%rcx
  mov    %rcx,0x10(%rsp)
  mov    %esi,%ecx
  and    $0x1,%ecx
  test   %edi,%edi
  jne    L6
  test   $0x10,%sil
  lea    D250(%rip),%r9
  lea    D282(%rip),%r14
  cmove  %r8,%r9
  test   $0x8,%sil
  lea    D262(%rip),%r13
  lea    D173(%rip),%r15
  lea    D50(%rip),%rbp
  mov    %r9,0x20(%rsp)
  lea    D90(%rip),%r9
  cmove  %r8,%r9
  test   $0x4,%sil
  cmove  %r8,%r14
  and    $0x2,%esi
  cmove  %r8,%r13
  test   %ecx,%ecx
  mov    %r9,0x18(%rsp)
  cmove  %r8,%r15
  lea    D158(%rip),%rcx
  test   %edx,%edx
  cmovns %r8,%rcx
  test   $0x40000000,%edx
  cmove  %r8,%rbp
L52:
  lea    D226(%rip),%r12
  test   $0x20000000,%edx
  mov    %edx,%r8d
  lea    D423(%rip),%r10
  lea    D153(%rip),%r11
  cmove  %r12,%r10
  test   $0x8000000,%edx
  lea    D27(%rip),%rbx
  cmove  %r12,%r11
  test   $0x4000000,%edx
  cmove  %r12,%rbx
  and    $0x100000,%r8d
  test   %edi,%edi
  jne    L77
  test   $0x2000000,%edx
  lea    D197(%rip),%rsi
  lea    D187(%rip),%rdi
  cmove  %r12,%rsi
  test   $0x400000,%edx
  lea    D149(%rip),%r9
  cmove  %r12,%rdi
  test   %r8d,%r8d
  cmove  %r12,%r9
  lea    D213(%rip),%r8
  test   $0x80000,%edx
  cmove  %r12,%r8
L33:
  and    $0x8,%dh
  lea    D243(%rip),%r12
  push   0xa8(%rsp)
  lea    D226(%rip),%rdx
  push   0xa8(%rsp)
  cmove  %rdx,%r12
  push   0xa8(%rsp)
  lea    D152(%rip),%rdx
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   %rax
  push   0x98(%rsp)
  push   0xa8(%rsp)
  push   0xc0(%rsp)
  push   0xc0(%rsp)
  push   %r14
  push   %r13
  push   %r15
  push   %rcx
  mov    %r12,%rcx
  push   %rbp
  push   %r10
  push   %r11
  push   %rbx
  push   %rsi
  push   %rdi
  mov    0x1b8(%rsp),%rsi
  mov    0x1b0(%rsp),%rdi
  call   <snprintf@plt>
  add    $0x1c8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L97:
  lea    D226(%rip),%rax
  mov    %rax,0x28(%rsp)
  mov    %rax,0x30(%rsp)
  mov    %rax,0x38(%rsp)
  mov    %rax,0x40(%rsp)
  mov    %rax,0x48(%rsp)
  mov    %rax,0x50(%rsp)
  mov    %rax,0x58(%rsp)
  mov    %rax,0x60(%rsp)
  mov    %rax,0x68(%rsp)
  mov    %rax,0x70(%rsp)
  mov    %rax,0x78(%rsp)
  mov    %rax,0x80(%rsp)
  mov    %rax,0x88(%rsp)
  mov    %rax,0x90(%rsp)
  mov    %rax,0x98(%rsp)
  mov    %rax,0xa0(%rsp)
  mov    %rax,0xa8(%rsp)
  mov    %rax,0x8(%rsp)
  jmp    L74
  nopl   0x0(%rax,%rax,1)
L77:
  mov    %r12,%rsi
  test   %r8d,%r8d
  je     L67
  lea    D149(%rip),%r9
  mov    %r12,%rdi
  mov    %r12,%r8
  jmp    L33
  nopw   0x0(%rax,%rax,1)
L6:
  test   %ecx,%ecx
  mov    %r8,%r15
  mov    %r8,%rcx
  jne    L58
L48:
  mov    %rcx,0x18(%rsp)
  mov    %rcx,%r13
  mov    %rcx,%r14
  mov    %rcx,%rbp
  mov    %rcx,0x20(%rsp)
  jmp    L52
  nopw   0x0(%rax,%rax,1)
L58:
  lea    D173(%rip),%r15
  jmp    L48
  nopl   0x0(%rax)
L67:
  mov    %rsi,%r9
  mov    %rsi,%rdi
  mov    %rsi,%r8
  jmp    L33
```

tool_calls: name: unpack_data
arguments: data_label: D226
type_infered: string
name: unpack_data
arguments: data_label: D55
type_infered: string
name: unpack_data
arguments: data_label: D130
type_infered: string
name: unpack_data
arguments: data_label: D189
type_infered: string
name: unpack_data
arguments: data_label: D24
type_infered: string
name: unpack_data
arguments: data_label: D172
type_infered: string
name: unpack_data
arguments: data_label: D270
type_infered: string
name: unpack_data
arguments: data_label: D256
type_infered: string
name: unpack_data
arguments: data_label: D381
type_infered: string
name: unpack_data
arguments: data_label: D41
type_infered: string
name: unpack_data
arguments: data_label: D285
type_infered: string
name: unpack_data
arguments: data_label: D190
type_infered: string
name: unpack_data
arguments: data_label: D118
type_infered: string
name: unpack_data
arguments: data_label: D368
type_infered: string
name: unpack_data
arguments: data_label: D264
type_infered: string
name: unpack_data
arguments: data_label: D418
type_infered: string
name: unpack_data
arguments: data_label: D45
type_infered: string
name: unpack_data
arguments: data_label: D78
type_infered: string
name: unpack_data
arguments: data_label: D40
type_infered: string
name: unpack_data
arguments: data_label: D93
type_infered: string
name: unpack_data
arguments: data_label: D384
type_infered: string
name: unpack_data
arguments: data_label: D250
type_infered: string
name: unpack_data
arguments: data_label: D282
type_infered: string
name: unpack_data
arguments: data_label: D262
type_infered: string
name: unpack_data
arguments: data_label: D173
type_infered: string
name: unpack_data
arguments: data_label: D50
type_infered: string
name: unpack_data
arguments: data_label: D90
type_infered: string
name: unpack_data
arguments: data_label: D158
type_infered: string
name: unpack_data
arguments: data_label: D423
type_infered: string
name: unpack_data
arguments: data_label: D153
type_infered: string
name: unpack_data
arguments: data_label: D27
type_infered: string
name: unpack_data
arguments: data_label: D197
type_infered: string
name: unpack_data
arguments: data_label: D187
type_infered: string
name: unpack_data
arguments: data_label: D149
type_infered: string
name: unpack_data
arguments: data_label: D213
type_infered: string
name: unpack_data
arguments: data_label: D243
type_infered: string
name: unpack_data
arguments: data_label: D152
type_infered: string

tool: 

tool: D55: pcx_l2i 

tool: D130: sse4a 

tool: D189: perftsc 

tool: D24: dbx 

tool: D172: perfctr_nb 

tool: D270: perfctr_core 

tool: D256: topoext 

tool: D381: tbm 

tool: D41: nodeid_msr 

tool: D285: tce 

tool: D190: fma4 

tool: D118: lwp 

tool: D368: wdt 

tool: D264: skinit 

tool: D418: xop 

tool: D45: ibs 

tool: D78: osvw 

tool: D40: 3dnowprefetch 

tool: D93: misalignsse 

tool: D384: lzcnt 

tool: D250: cr8_legacy 

tool: D282: svm 

tool: D262: cmp_legacy 

tool: D173: lahf_lm 

tool: D50: 3dnowext 

tool: D90: extapic 

tool: D158: 3dnow 

tool: D423: lm 

tool: D153: rdtscp 

tool: D27: pdpe1gb 

tool: D197: fxsr_opt 

tool: D187: mmxext 

tool: D149: nx 

tool: D213: mp 

tool: D243: syscall 

tool: D152: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s

assistant: ```c
int get_x86_cpu_extended_flags(int intel, uint32_t ecx, uint32_t edx, char *flags, size_t len) {
  return snprintf(flags, len,
                  ""
                  ""
                  "%s"
                  ""
                  "%s"
                  "%s%s"
                  "%s%s%s"
                  "%s%s%s"
                  "%s%s%s%s"
                  "%s%s%s%s"
                  "%s%s%s%s"
                  "%s%s%s"
                  "%s%s%s"
                  "%s%s%s"
                  "%s%s%s"
                  "%s",
                  edx & 0x00000800 ? "syscall " : "", intel ? "" : (edx & 0x00080000 ? "mp " : ""), edx & 0x00100000 ? "nx " : "", intel ? "" : (edx & 0x00400000 ? "mmxext " : ""), intel ? "" : (edx & 0x02000000 ? "fxsr_opt " : ""), edx & 0x04000000 ? "pdpe1gb " : "", edx & 0x08000000 ? "rdtscp " : "", edx & 0x20000000 ? "lm " : "", intel ? "" : (edx & 0x40000000 ? "3dnowext " : ""), intel ? "" : (edx & 0x80000000 ? "3dnow " : ""), ecx & 0x00000001 ? "lahf_lm " : "", intel ? "" : (ecx & 0x00000002 ? "cmp_legacy " : ""), intel ? "" : (ecx & 0x00000004 ? "svm " : ""), intel ? "" : (ecx & 0x00000008 ? "extapic " : ""), intel ? "" : (ecx & 0x00000010 ? "cr8_legacy " : ""), ecx & 0x00000020 ? "lzcnt " : "", intel ? "" : (ecx & 0x00000040 ? "sse4a " : ""), intel ? "" : (ecx & 0x00000080 ? "misalignsse " : ""), intel ? "" : (ecx & 0x00000100 ? "3dnowprefetch " : ""), intel ? "" : (ecx & 0x00000200 ? "osvw " : ""), intel ? "" : (ecx & 0x00000400 ? "ibs " : ""), intel ? "" : (ecx & 0x00000800 ? "xop " : ""), intel ? "" : (ecx & 0x00001000 ? "skinit " : ""), intel ? "" : (ecx & 0x00002000 ? "wdt " : ""), intel ? "" : (ecx & 0x00008000 ? "lwp " : ""), intel ? "" : (ecx & 0x00010000 ? "fma4 " : ""), intel ? "" : (ecx & 0x00020000 ? "tce " : ""), intel ? "" : (ecx & 0x00080000 ? "nodeid_msr " : ""), intel ? "" : (ecx & 0x00200000 ? "tbm " : ""), intel ? "" : (ecx & 0x00400000 ? "topoext " : ""), intel ? "" : (ecx & 0x00800000 ? "perfctr_core " : ""), intel ? "" : (ecx & 0x01000000 ? "perfctr_nb " : ""), intel ? "" : (ecx & 0x02000000 ? "dbx " : ""), intel ? "" : (ecx & 0x08000000 ? "perftsc " : ""), intel ? "" : (ecx & 0x10000000 ? "pcx_l2i " : ""));
}
```