user: Demonstrate the C code that generates the assembly output below:

```asm
<get_x86_cpu_standard_flags>:
  endbr64
  push   %r15
  mov    %edx,%eax
  lea    D434(%rip),%rdx
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x188,%rsp
  test   %esi,%esi
  mov    %rcx,0x170(%rsp)
  lea    D474(%rip),%rcx
  cmovns %rdx,%rcx
  test   $0x40000000,%esi
  mov    %r8,0x178(%rsp)
  mov    %rcx,(%rsp)
  lea    D473(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x20000000,%esi
  mov    %rcx,0x8(%rsp)
  lea    D86(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x10000000,%esi
  mov    %rcx,0x10(%rsp)
  lea    D688(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x8000000,%esi
  mov    %rcx,0x18(%rsp)
  lea    D281(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x4000000,%esi
  mov    %rcx,0x20(%rsp)
  lea    D687(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x2000000,%esi
  mov    %rcx,0x28(%rsp)
  lea    D446(%rip),%rcx
  cmove  %rdx,%rcx
  mov    %rcx,0x30(%rsp)
  mov    %esi,%ecx
  and    $0x800000,%ecx
  test   %edi,%edi
  je     L79
  test   $0x1000000,%esi
  lea    D397(%rip),%r8
  cmove  %rdx,%r8
  test   %ecx,%ecx
  lea    D716(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x400000,%esi
  mov    %r8,0x148(%rsp)
  mov    %rcx,0x140(%rsp)
  lea    D122(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x200000,%esi
  mov    %rcx,0x168(%rsp)
  lea    D3(%rip),%rcx
  cmovne %rcx,%rdx
  mov    %rdx,0x38(%rsp)
L15:
  lea    D434(%rip),%rdx
  test   $0x100000,%esi
  lea    D132(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x80000,%esi
  mov    %rcx,0x40(%rsp)
  lea    D655(%rip),%rcx
  cmove  %rdx,%rcx
  mov    %rcx,0x48(%rsp)
  test   %edi,%edi
  je     L165
  test   $0x40000,%esi
  lea    D56(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x20000,%esi
  mov    %rcx,0x160(%rsp)
  lea    D315(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x8000,%esi
  mov    %rcx,0x158(%rsp)
  lea    D428(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x4000,%esi
  mov    %rcx,0x150(%rsp)
  lea    D90(%rip),%rcx
  cmovne %rcx,%rdx
  mov    %rdx,0x50(%rsp)
L145:
  lea    D434(%rip),%rcx
  test   $0x2000,%esi
  lea    D633(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x1000,%esi
  mov    %rdx,0x58(%rsp)
  lea    D198(%rip),%rdx
  cmove  %rcx,%rdx
  mov    %rdx,0x60(%rsp)
  mov    %esi,%edx
  and    $0x200,%edx
  test   %edi,%edi
  je     L96
  test   $0x800,%esi
  lea    D370(%rip),%r8
  cmove  %rcx,%r8
  test   $0x400,%esi
  mov    %r8,0x100(%rsp)
  lea    D653(%rip),%r8
  cmove  %rcx,%r8
  test   %edx,%edx
  lea    D550(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x100,%esi
  mov    %r8,0x138(%rsp)
  lea    D235(%rip),%r8
  mov    %rdx,0x130(%rsp)
  lea    D651(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x80,%sil
  mov    %rdx,0xf8(%rsp)
  lea    D637(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x40,%sil
  mov    %rdx,0xe0(%rsp)
  lea    D28(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x20,%sil
  mov    %rdx,0xf0(%rsp)
  lea    D565(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x10,%sil
  cmove  %rcx,%r8
  test   $0x8,%sil
  mov    %r8,0x128(%rsp)
  lea    D555(%rip),%r8
  cmove  %rcx,%r8
  test   $0x4,%sil
  mov    %r8,0x120(%rsp)
  lea    D407(%rip),%r8
  cmovne %r8,%rcx
  mov    %rcx,0x70(%rsp)
L113:
  lea    D434(%rip),%rcx
  test   $0x2,%sil
  lea    D0(%rip),%r8
  cmove  %rcx,%r8
  and    $0x1,%esi
  lea    D221(%rip),%rsi
  cmove  %rcx,%rsi
  mov    %r8,0x78(%rsp)
  mov    %rsi,0x80(%rsp)
  mov    %eax,%esi
  and    $0x10000000,%esi
  test   %edi,%edi
  je     L166
  test   %eax,%eax
  lea    D118(%rip),%r8
  cmovns %rcx,%r8
  test   $0x20000000,%eax
  mov    %r8,0xe8(%rsp)
  lea    D656(%rip),%r8
  cmove  %rcx,%r8
  test   %esi,%esi
  lea    D494(%rip),%rsi
  cmove  %rcx,%rsi
  test   $0x8000000,%eax
  mov    %r8,0x68(%rsp)
  mov    %rsi,0x118(%rsp)
  lea    D134(%rip),%rsi
  cmovne %rsi,%rcx
  mov    %rcx,0x88(%rsp)
L12:
  lea    D434(%rip),%rsi
  test   $0x4000000,%eax
  lea    D504(%rip),%rcx
  mov    %eax,%r8d
  cmove  %rsi,%rcx
  test   $0x2000000,%eax
  mov    %rcx,0x90(%rsp)
  lea    D16(%rip),%rcx
  cmove  %rsi,%rcx
  test   $0x1000000,%eax
  mov    %rcx,0x98(%rsp)
  lea    D225(%rip),%rcx
  cmove  %rsi,%rcx
  test   $0x800000,%eax
  mov    %rcx,0xa0(%rsp)
  lea    D335(%rip),%rcx
  cmove  %rsi,%rcx
  and    $0x80000,%r8d
  mov    %rcx,0xa8(%rsp)
  test   %edi,%edi
  je     L36
  test   $0x400000,%eax
  lea    D127(%rip),%rcx
  lea    D116(%rip),%rdi
  cmove  %rsi,%rcx
  test   $0x200000,%eax
  cmove  %rsi,%rdi
  test   %r8d,%r8d
  mov    %rdi,0x110(%rsp)
  lea    D467(%rip),%rdi
  cmove  %rsi,%rdi
  test   $0x40000,%eax
  mov    %rdi,0x108(%rsp)
  lea    D404(%rip),%rdi
  cmovne %rdi,%rsi
  mov    %rsi,0xb0(%rsp)
L82:
  lea    D434(%rip),%r10
  test   $0x20000,%eax
  lea    D121(%rip),%rsi
  cmove  %r10,%rsi
  test   $0x10000,%eax
  lea    D104(%rip),%r15
  lea    D517(%rip),%r14
  lea    D53(%rip),%r13
  mov    %rsi,0xb8(%rsp)
  lea    D470(%rip),%rsi
  lea    D23(%rip),%r12
  mov    %rsi,%rbx
  lea    D91(%rip),%rsi
  lea    D267(%rip),%rbp
  cmove  %r10,%rbx
  mov    %rsi,%rdi
  test   $0x80,%ah
  cmove  %r10,%rdi
  lea    D354(%rip),%rsi
  test   $0x40,%ah
  cmove  %r10,%rsi
  lea    D313(%rip),%r9
  test   $0x20,%ah
  mov    %rbx,0xc0(%rsp)
  lea    D51(%rip),%rbx
  mov    %rdi,0xc8(%rsp)
  lea    D304(%rip),%rdi
  mov    %rsi,0xd0(%rsp)
  lea    D635(%rip),%rsi
  lea    D524(%rip),%r8
  mov    %rsi,%r11
  lea    D386(%rip),%rsi
  cmove  %r10,%r11
  test   $0x10,%ah
  cmove  %r10,%r15
  test   $0x8,%ah
  cmove  %r10,%r14
  test   $0x2,%ah
  mov    %r11,0xd8(%rsp)
  cmove  %r10,%r13
  lea    D269(%rip),%r11
  test   $0x1,%ah
  cmove  %r10,%r12
  test   $0x80,%al
  cmove  %r10,%rbp
  test   $0x40,%al
  cmove  %r10,%rbx
  test   $0x20,%al
  cmove  %r10,%r11
  test   $0x10,%al
  cmove  %r10,%rdi
  test   $0x8,%al
  cmove  %r10,%rsi
  test   $0x4,%al
  cmove  %r10,%r9
  test   $0x2,%al
  cmove  %r10,%r8
  test   $0x1,%al
  lea    D664(%rip),%rax
  cmovne %rax,%r10
  sub    $0x8,%rsp
  push   0x8(%rsp)
  push   0x18(%rsp)
  push   0x28(%rsp)
  push   0x38(%rsp)
  push   0x48(%rsp)
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x188(%rsp)
  push   0x188(%rsp)
  push   0x1b8(%rsp)
  push   0x90(%rsp)
  push   0xa0(%rsp)
  push   0xb0(%rsp)
  push   0x1d0(%rsp)
  push   0x1d0(%rsp)
  push   0x1d0(%rsp)
  push   0xd8(%rsp)
  push   0xe8(%rsp)
  push   0xf8(%rsp)
  push   0x1a0(%rsp)
  push   0x1e0(%rsp)
  push   0x1e0(%rsp)
  push   0x1b0(%rsp)
  push   0x1a0(%rsp)
  push   0x1b8(%rsp)
  push   %rdx
  lea    D133(%rip),%rdx
  push   0x200(%rsp)
  push   0x200(%rsp)
  push   0x158(%rsp)
  push   0x168(%rsp)
  push   0x178(%rsp)
  push   0x1e8(%rsp)
  push   0x170(%rsp)
  push   0x228(%rsp)
  push   0x1a0(%rsp)
  push   0x1b0(%rsp)
  push   0x1c0(%rsp)
  push   0x1d0(%rsp)
  push   0x1e0(%rsp)
  push   %rcx
  mov    %r10,%rcx
  push   0x258(%rsp)
  push   0x258(%rsp)
  push   0x208(%rsp)
  push   0x218(%rsp)
  push   0x228(%rsp)
  push   0x238(%rsp)
  push   0x248(%rsp)
  push   0x258(%rsp)
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  push   %r11
  push   %rdi
  push   %rsi
  mov    0x348(%rsp),%rsi
  mov    0x340(%rsp),%rdi
  call   <snprintf@plt>
  add    $0x358,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L79:
  test   %ecx,%ecx
  je     L39
  lea    D716(%rip),%rbx
  mov    %rdx,0x148(%rsp)
  mov    %rbx,0x140(%rsp)
  mov    %rdx,0x168(%rsp)
  mov    %rdx,0x38(%rsp)
  jmp    L15
  nopl   0x0(%rax)
L36:
  mov    %rsi,%rcx
  test   %r8d,%r8d
  je     L179
  lea    D467(%rip),%rdi
  mov    %rsi,0x110(%rsp)
  mov    %rdi,0x108(%rsp)
  mov    %rsi,0xb0(%rsp)
  jmp    L82
  nopl   0x0(%rax)
L165:
  mov    %rdx,0x150(%rsp)
  mov    %rdx,0x158(%rsp)
  mov    %rdx,0x160(%rsp)
  mov    %rdx,0x50(%rsp)
  jmp    L145
  nopw   0x0(%rax,%rax,1)
L179:
  mov    %rcx,0x108(%rsp)
  mov    %rcx,0x110(%rsp)
  mov    %rcx,0xb0(%rsp)
  jmp    L82
  nopl   (%rax)
L39:
  mov    %rdx,0x140(%rsp)
  mov    %rdx,0x148(%rsp)
  mov    %rdx,0x168(%rsp)
  mov    %rdx,0x38(%rsp)
  jmp    L15
  nopw   0x0(%rax,%rax,1)
L96:
  test   %edx,%edx
  lea    D550(%rip),%rdx
  mov    %rcx,0xf0(%rsp)
  cmove  %rcx,%rdx
  mov    %rcx,0xe0(%rsp)
  mov    %rcx,0xf8(%rsp)
  mov    %rdx,0x130(%rsp)
  mov    %rcx,%rdx
  mov    %rcx,0x100(%rsp)
  test   $0x8,%sil
  je     L23
  lea    D555(%rip),%rbx
  mov    %rcx,0x128(%rsp)
  mov    %rbx,0x120(%rsp)
  mov    %rcx,0x138(%rsp)
  mov    %rcx,0x70(%rsp)
  jmp    L113
  nop
L166:
  mov    %rcx,0xe8(%rsp)
  mov    %rcx,%rbx
  test   %esi,%esi
  je     L8
  lea    D494(%rip),%rsi
  mov    %rcx,0x68(%rsp)
  mov    %rsi,0x118(%rsp)
  mov    %rcx,0x88(%rsp)
  jmp    L12
L23:
  mov    %rcx,0x120(%rsp)
  mov    %rcx,0x128(%rsp)
  mov    %rcx,0x138(%rsp)
  mov    %rcx,0x70(%rsp)
  jmp    L113
  nopw   0x0(%rax,%rax,1)
L8:
  mov    %rbx,0x118(%rsp)
  mov    %rbx,0x68(%rsp)
  mov    %rbx,0x88(%rsp)
  jmp    L12
```

tool_calls: name: extract_symbolic_data
arguments: label: D434
type_infered: string
name: extract_symbolic_data
arguments: label: D474
type_infered: string
name: extract_symbolic_data
arguments: label: D473
type_infered: string
name: extract_symbolic_data
arguments: label: D86
type_infered: string
name: extract_symbolic_data
arguments: label: D688
type_infered: string
name: extract_symbolic_data
arguments: label: D281
type_infered: string
name: extract_symbolic_data
arguments: label: D687
type_infered: string
name: extract_symbolic_data
arguments: label: D446
type_infered: string
name: extract_symbolic_data
arguments: label: D397
type_infered: string
name: extract_symbolic_data
arguments: label: D716
type_infered: string
name: extract_symbolic_data
arguments: label: D122
type_infered: string
name: extract_symbolic_data
arguments: label: D3
type_infered: string
name: extract_symbolic_data
arguments: label: D132
type_infered: string
name: extract_symbolic_data
arguments: label: D655
type_infered: string
name: extract_symbolic_data
arguments: label: D56
type_infered: string
name: extract_symbolic_data
arguments: label: D315
type_infered: string
name: extract_symbolic_data
arguments: label: D428
type_infered: string
name: extract_symbolic_data
arguments: label: D90
type_infered: string
name: extract_symbolic_data
arguments: label: D633
type_infered: string
name: extract_symbolic_data
arguments: label: D198
type_infered: string
name: extract_symbolic_data
arguments: label: D370
type_infered: string
name: extract_symbolic_data
arguments: label: D653
type_infered: string
name: extract_symbolic_data
arguments: label: D550
type_infered: string
name: extract_symbolic_data
arguments: label: D235
type_infered: string
name: extract_symbolic_data
arguments: label: D651
type_infered: string
name: extract_symbolic_data
arguments: label: D637
type_infered: string
name: extract_symbolic_data
arguments: label: D28
type_infered: string
name: extract_symbolic_data
arguments: label: D565
type_infered: string
name: extract_symbolic_data
arguments: label: D555
type_infered: string
name: extract_symbolic_data
arguments: label: D407
type_infered: string
name: extract_symbolic_data
arguments: label: D0
type_infered: string
name: extract_symbolic_data
arguments: label: D221
type_infered: string
name: extract_symbolic_data
arguments: label: D118
type_infered: string
name: extract_symbolic_data
arguments: label: D656
type_infered: string
name: extract_symbolic_data
arguments: label: D494
type_infered: string
name: extract_symbolic_data
arguments: label: D134
type_infered: string
name: extract_symbolic_data
arguments: label: D504
type_infered: string
name: extract_symbolic_data
arguments: label: D16
type_infered: string
name: extract_symbolic_data
arguments: label: D225
type_infered: string
name: extract_symbolic_data
arguments: label: D335
type_infered: string
name: extract_symbolic_data
arguments: label: D127
type_infered: string
name: extract_symbolic_data
arguments: label: D116
type_infered: string
name: extract_symbolic_data
arguments: label: D467
type_infered: string
name: extract_symbolic_data
arguments: label: D404
type_infered: string
name: extract_symbolic_data
arguments: label: D121
type_infered: string
name: extract_symbolic_data
arguments: label: D104
type_infered: string
name: extract_symbolic_data
arguments: label: D517
type_infered: string
name: extract_symbolic_data
arguments: label: D53
type_infered: string
name: extract_symbolic_data
arguments: label: D470
type_infered: string
name: extract_symbolic_data
arguments: label: D23
type_infered: string
name: extract_symbolic_data
arguments: label: D91
type_infered: string
name: extract_symbolic_data
arguments: label: D267
type_infered: string
name: extract_symbolic_data
arguments: label: D354
type_infered: string
name: extract_symbolic_data
arguments: label: D313
type_infered: string
name: extract_symbolic_data
arguments: label: D51
type_infered: string
name: extract_symbolic_data
arguments: label: D304
type_infered: string
name: extract_symbolic_data
arguments: label: D635
type_infered: string
name: extract_symbolic_data
arguments: label: D524
type_infered: string
name: extract_symbolic_data
arguments: label: D386
type_infered: string
name: extract_symbolic_data
arguments: label: D269
type_infered: string
name: extract_symbolic_data
arguments: label: D664
type_infered: string
name: extract_symbolic_data
arguments: label: D133
type_infered: string

tool: 

tool: D474: hypervisor 

tool: D473: rdrnd 

tool: D86: f16c 

tool: D688: avx 

tool: D281: osxsave 

tool: D687: xsave 

tool: D446: aes 

tool: D397: tsc_deadline 

tool: D716: popcnt 

tool: D122: movbe 

tool: D3: x2apic 

tool: D132: sse4_2 

tool: D655: sse4_1 

tool: D56: dca 

tool: D315: pcid 

tool: D428: pdcm 

tool: D90: xtpr 

tool: D633: cx16 

tool: D198: fma 

tool: D370: sdbg 

tool: D653: cnxt-id 

tool: D550: ssse3 

tool: D235: ds_cpl 

tool: D651: tm2 

tool: D637: est 

tool: D28: smx 

tool: D565: vmx 

tool: D555: monitor 

tool: D407: dtes64 

tool: D0: pclmulqdq 

tool: D221: sse3 

tool: D118: pbe 

tool: D656: tm 

tool: D494: htt 

tool: D134: ss 

tool: D504: sse2 

tool: D16: sse 

tool: D225: fxsr 

tool: D335: mmx 

tool: D127: acpi 

tool: D116: ds 

tool: D467: cflsh 

tool: D404: psn 

tool: D121: pse36 

tool: D104: mtrr 

tool: D517: sep 

tool: D53: apic 

tool: D470: pat 

tool: D23: cx8 

tool: D91: cmov 

tool: D267: mce 

tool: D354: mca 

tool: D313: de 

tool: D51: pae 

tool: D304: tsc 

tool: D635: pge 

tool: D524: vme 

tool: D386: pse 

tool: D269: msr 

tool: D664: fpu 

tool: D133: %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%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_standard_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%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 & 0x00000001 ? "fpu " : "", edx & 0x00000002 ? "vme " : "", edx & 0x00000004 ? "de " : "", edx & 0x00000008 ? "pse " : "", edx & 0x00000010 ? "tsc " : "", edx & 0x00000020 ? "msr " : "", edx & 0x00000040 ? "pae " : "", edx & 0x00000080 ? "mce " : "", edx & 0x00000100 ? "cx8 " : "", edx & 0x00000200 ? "apic " : "", edx & 0x00000800 ? "sep " : "", edx & 0x00001000 ? "mtrr " : "", edx & 0x00002000 ? "pge " : "", edx & 0x00004000 ? "mca " : "", edx & 0x00008000 ? "cmov " : "", edx & 0x00010000 ? "pat " : "", edx & 0x00020000 ? "pse36 " : "", intel ? (edx & 0x00040000 ? "psn " : "") : "", edx & 0x00080000 ? "cflsh " : "", intel ? (edx & 0x00200000 ? "ds " : "") : "", intel ? (edx & 0x00400000 ? "acpi " : "") : "", edx & 0x00800000 ? "mmx " : "", edx & 0x01000000 ? "fxsr " : "", edx & 0x02000000 ? "sse " : "", edx & 0x04000000 ? "sse2 " : "", intel ? (edx & 0x08000000 ? "ss " : "") : "", edx & 0x10000000 ? "htt " : "", intel ? (edx & 0x20000000 ? "tm " : "") : "", intel ? (edx & 0x80000000 ? "pbe " : "") : "", ecx & 0x00000001 ? "sse3 " : "", ecx & 0x00000002 ? "pclmulqdq " : "", intel ? (ecx & 0x00000004 ? "dtes64 " : "") : "", ecx & 0x00000008 ? "monitor " : "", intel ? (ecx & 0x00000010 ? "ds_cpl " : "") : "", intel ? (ecx & 0x00000020 ? "vmx " : "") : "", intel ? (ecx & 0x00000040 ? "smx " : "") : "", intel ? (ecx & 0x00000080 ? "est " : "") : "", intel ? (ecx & 0x00000100 ? "tm2 " : "") : "", ecx & 0x00000200 ? "ssse3 " : "", intel ? (ecx & 0x00000400 ? "cnxt-id " : "") : "", intel ? (ecx & 0x00000800 ? "sdbg " : "") : "", ecx & 0x00001000 ? "fma " : "", ecx & 0x00002000 ? "cx16 " : "", intel ? (ecx & 0x00004000 ? "xtpr " : "") : "", intel ? (ecx & 0x00008000 ? "pdcm " : "") : "", intel ? (ecx & 0x00020000 ? "pcid " : "") : "", intel ? (ecx & 0x00040000 ? "dca " : "") : "", ecx & 0x00080000 ? "sse4_1 " : "", ecx & 0x00100000 ? "sse4_2 " : "", intel ? (ecx & 0x00200000 ? "x2apic " : "") : "", intel ? (ecx & 0x00400000 ? "movbe " : "") : "", ecx & 0x00800000 ? "popcnt " : "", intel ? (ecx & 0x01000000 ? "tsc_deadline " : "") : "", ecx & 0x02000000 ? "aes " : "", ecx & 0x04000000 ? "xsave " : "", ecx & 0x08000000 ? "osxsave " : "", ecx & 0x10000000 ? "avx " : "", ecx & 0x20000000 ? "f16c " : "", ecx & 0x40000000 ? "rdrnd " : "", ecx & 0x80000000 ? "hypervisor " : "");
}
```