user: 请将以下的汇编代码转换成C语言代码:

```asm
<get_x86_cpu_standard_flags>:
  endbr64
  push   %r15
  mov    %edx,%eax
  lea    D235(%rip),%rdx
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x188,%rsp
  test   %esi,%esi
  mov    %rcx,0x170(%rsp)
  lea    D397(%rip),%rcx
  cmovns %rdx,%rcx
  test   $0x40000000,%esi
  mov    %r8,0x178(%rsp)
  mov    %rcx,(%rsp)
  lea    D466(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x20000000,%esi
  mov    %rcx,0x8(%rsp)
  lea    D511(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x10000000,%esi
  mov    %rcx,0x10(%rsp)
  lea    D413(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x8000000,%esi
  mov    %rcx,0x18(%rsp)
  lea    D683(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x4000000,%esi
  mov    %rcx,0x20(%rsp)
  lea    D670(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x2000000,%esi
  mov    %rcx,0x28(%rsp)
  lea    D234(%rip),%rcx
  cmove  %rdx,%rcx
  mov    %rcx,0x30(%rsp)
  mov    %esi,%ecx
  and    $0x800000,%ecx
  test   %edi,%edi
  je     L129
  test   $0x1000000,%esi
  lea    D497(%rip),%r8
  cmove  %rdx,%r8
  test   %ecx,%ecx
  lea    D302(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x400000,%esi
  mov    %r8,0x148(%rsp)
  mov    %rcx,0x140(%rsp)
  lea    D72(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x200000,%esi
  mov    %rcx,0x168(%rsp)
  lea    D289(%rip),%rcx
  cmovne %rcx,%rdx
  mov    %rdx,0x38(%rsp)
L100:
  lea    D235(%rip),%rdx
  test   $0x100000,%esi
  lea    D84(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x80000,%esi
  mov    %rcx,0x40(%rsp)
  lea    D531(%rip),%rcx
  cmove  %rdx,%rcx
  mov    %rcx,0x48(%rsp)
  test   %edi,%edi
  je     L93
  test   $0x40000,%esi
  lea    D632(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x20000,%esi
  mov    %rcx,0x160(%rsp)
  lea    D704(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x8000,%esi
  mov    %rcx,0x158(%rsp)
  lea    D697(%rip),%rcx
  cmove  %rdx,%rcx
  test   $0x4000,%esi
  mov    %rcx,0x150(%rsp)
  lea    D601(%rip),%rcx
  cmovne %rcx,%rdx
  mov    %rdx,0x50(%rsp)
L115:
  lea    D235(%rip),%rcx
  test   $0x2000,%esi
  lea    D216(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x1000,%esi
  mov    %rdx,0x58(%rsp)
  lea    D35(%rip),%rdx
  cmove  %rcx,%rdx
  mov    %rdx,0x60(%rsp)
  mov    %esi,%edx
  and    $0x200,%edx
  test   %edi,%edi
  je     L152
  test   $0x800,%esi
  lea    D690(%rip),%r8
  cmove  %rcx,%r8
  test   $0x400,%esi
  mov    %r8,0x100(%rsp)
  lea    D649(%rip),%r8
  cmove  %rcx,%r8
  test   %edx,%edx
  lea    D569(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x100,%esi
  mov    %r8,0x138(%rsp)
  lea    D65(%rip),%r8
  mov    %rdx,0x130(%rsp)
  lea    D399(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x80,%sil
  mov    %rdx,0xf8(%rsp)
  lea    D688(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x40,%sil
  mov    %rdx,0xe0(%rsp)
  lea    D44(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x20,%sil
  mov    %rdx,0xf0(%rsp)
  lea    D67(%rip),%rdx
  cmove  %rcx,%rdx
  test   $0x10,%sil
  cmove  %rcx,%r8
  test   $0x8,%sil
  mov    %r8,0x128(%rsp)
  lea    D8(%rip),%r8
  cmove  %rcx,%r8
  test   $0x4,%sil
  mov    %r8,0x120(%rsp)
  lea    D321(%rip),%r8
  cmovne %r8,%rcx
  mov    %rcx,0x70(%rsp)
L10:
  lea    D235(%rip),%rcx
  test   $0x2,%sil
  lea    D222(%rip),%r8
  cmove  %rcx,%r8
  and    $0x1,%esi
  lea    D217(%rip),%rsi
  cmove  %rcx,%rsi
  mov    %r8,0x78(%rsp)
  mov    %rsi,0x80(%rsp)
  mov    %eax,%esi
  and    $0x10000000,%esi
  test   %edi,%edi
  je     L14
  test   %eax,%eax
  lea    D135(%rip),%r8
  cmovns %rcx,%r8
  test   $0x20000000,%eax
  mov    %r8,0xe8(%rsp)
  lea    D209(%rip),%r8
  cmove  %rcx,%r8
  test   %esi,%esi
  lea    D505(%rip),%rsi
  cmove  %rcx,%rsi
  test   $0x8000000,%eax
  mov    %r8,0x68(%rsp)
  mov    %rsi,0x118(%rsp)
  lea    D280(%rip),%rsi
  cmovne %rsi,%rcx
  mov    %rcx,0x88(%rsp)
L166:
  lea    D235(%rip),%rsi
  test   $0x4000000,%eax
  lea    D498(%rip),%rcx
  mov    %eax,%r8d
  cmove  %rsi,%rcx
  test   $0x2000000,%eax
  mov    %rcx,0x90(%rsp)
  lea    D664(%rip),%rcx
  cmove  %rsi,%rcx
  test   $0x1000000,%eax
  mov    %rcx,0x98(%rsp)
  lea    D447(%rip),%rcx
  cmove  %rsi,%rcx
  test   $0x800000,%eax
  mov    %rcx,0xa0(%rsp)
  lea    D716(%rip),%rcx
  cmove  %rsi,%rcx
  and    $0x80000,%r8d
  mov    %rcx,0xa8(%rsp)
  test   %edi,%edi
  je     L94
  test   $0x400000,%eax
  lea    D2(%rip),%rcx
  lea    D476(%rip),%rdi
  cmove  %rsi,%rcx
  test   $0x200000,%eax
  cmove  %rsi,%rdi
  test   %r8d,%r8d
  mov    %rdi,0x110(%rsp)
  lea    D453(%rip),%rdi
  cmove  %rsi,%rdi
  test   $0x40000,%eax
  mov    %rdi,0x108(%rsp)
  lea    D101(%rip),%rdi
  cmovne %rdi,%rsi
  mov    %rsi,0xb0(%rsp)
L25:
  lea    D235(%rip),%r10
  test   $0x20000,%eax
  lea    D423(%rip),%rsi
  cmove  %r10,%rsi
  test   $0x10000,%eax
  lea    D635(%rip),%r15
  lea    D618(%rip),%r14
  lea    D386(%rip),%r13
  mov    %rsi,0xb8(%rsp)
  lea    D565(%rip),%rsi
  lea    D554(%rip),%r12
  mov    %rsi,%rbx
  lea    D598(%rip),%rsi
  lea    D351(%rip),%rbp
  cmove  %r10,%rbx
  mov    %rsi,%rdi
  test   $0x80,%ah
  cmove  %r10,%rdi
  lea    D662(%rip),%rsi
  test   $0x40,%ah
  cmove  %r10,%rsi
  lea    D545(%rip),%r9
  test   $0x20,%ah
  mov    %rbx,0xc0(%rsp)
  lea    D10(%rip),%rbx
  mov    %rdi,0xc8(%rsp)
  lea    D508(%rip),%rdi
  mov    %rsi,0xd0(%rsp)
  lea    D352(%rip),%rsi
  lea    D415(%rip),%r8
  mov    %rsi,%r11
  lea    D37(%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    D166(%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    D225(%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    D252(%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)
L129:
  test   %ecx,%ecx
  je     L40
  lea    D302(%rip),%rbx
  mov    %rdx,0x148(%rsp)
  mov    %rbx,0x140(%rsp)
  mov    %rdx,0x168(%rsp)
  mov    %rdx,0x38(%rsp)
  jmp    L100
  nopl   0x0(%rax)
L94:
  mov    %rsi,%rcx
  test   %r8d,%r8d
  je     L143
  lea    D453(%rip),%rdi
  mov    %rsi,0x110(%rsp)
  mov    %rdi,0x108(%rsp)
  mov    %rsi,0xb0(%rsp)
  jmp    L25
  nopl   0x0(%rax)
L93:
  mov    %rdx,0x150(%rsp)
  mov    %rdx,0x158(%rsp)
  mov    %rdx,0x160(%rsp)
  mov    %rdx,0x50(%rsp)
  jmp    L115
  nopw   0x0(%rax,%rax,1)
L143:
  mov    %rcx,0x108(%rsp)
  mov    %rcx,0x110(%rsp)
  mov    %rcx,0xb0(%rsp)
  jmp    L25
  nopl   (%rax)
L40:
  mov    %rdx,0x140(%rsp)
  mov    %rdx,0x148(%rsp)
  mov    %rdx,0x168(%rsp)
  mov    %rdx,0x38(%rsp)
  jmp    L100
  nopw   0x0(%rax,%rax,1)
L152:
  test   %edx,%edx
  lea    D569(%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    D8(%rip),%rbx
  mov    %rcx,0x128(%rsp)
  mov    %rbx,0x120(%rsp)
  mov    %rcx,0x138(%rsp)
  mov    %rcx,0x70(%rsp)
  jmp    L10
  nop
L14:
  mov    %rcx,0xe8(%rsp)
  mov    %rcx,%rbx
  test   %esi,%esi
  je     L78
  lea    D505(%rip),%rsi
  mov    %rcx,0x68(%rsp)
  mov    %rsi,0x118(%rsp)
  mov    %rcx,0x88(%rsp)
  jmp    L166
L23:
  mov    %rcx,0x120(%rsp)
  mov    %rcx,0x128(%rsp)
  mov    %rcx,0x138(%rsp)
  mov    %rcx,0x70(%rsp)
  jmp    L10
  nopw   0x0(%rax,%rax,1)
L78:
  mov    %rbx,0x118(%rsp)
  mov    %rbx,0x68(%rsp)
  mov    %rbx,0x88(%rsp)
  jmp    L166
```

tool_calls: name: parse_data
arguments: data_tag: D235
data_type: string
name: parse_data
arguments: data_tag: D397
data_type: string
name: parse_data
arguments: data_tag: D466
data_type: string
name: parse_data
arguments: data_tag: D511
data_type: string
name: parse_data
arguments: data_tag: D413
data_type: string
name: parse_data
arguments: data_tag: D683
data_type: string
name: parse_data
arguments: data_tag: D670
data_type: string
name: parse_data
arguments: data_tag: D234
data_type: string
name: parse_data
arguments: data_tag: D497
data_type: string
name: parse_data
arguments: data_tag: D302
data_type: string
name: parse_data
arguments: data_tag: D72
data_type: string
name: parse_data
arguments: data_tag: D289
data_type: string
name: parse_data
arguments: data_tag: D84
data_type: string
name: parse_data
arguments: data_tag: D531
data_type: string
name: parse_data
arguments: data_tag: D632
data_type: string
name: parse_data
arguments: data_tag: D704
data_type: string
name: parse_data
arguments: data_tag: D697
data_type: string
name: parse_data
arguments: data_tag: D601
data_type: string
name: parse_data
arguments: data_tag: D216
data_type: string
name: parse_data
arguments: data_tag: D35
data_type: string
name: parse_data
arguments: data_tag: D690
data_type: string
name: parse_data
arguments: data_tag: D649
data_type: string
name: parse_data
arguments: data_tag: D569
data_type: string
name: parse_data
arguments: data_tag: D65
data_type: string
name: parse_data
arguments: data_tag: D399
data_type: string
name: parse_data
arguments: data_tag: D688
data_type: string
name: parse_data
arguments: data_tag: D44
data_type: string
name: parse_data
arguments: data_tag: D67
data_type: string
name: parse_data
arguments: data_tag: D8
data_type: string
name: parse_data
arguments: data_tag: D321
data_type: string
name: parse_data
arguments: data_tag: D222
data_type: string
name: parse_data
arguments: data_tag: D217
data_type: string
name: parse_data
arguments: data_tag: D135
data_type: string
name: parse_data
arguments: data_tag: D209
data_type: string
name: parse_data
arguments: data_tag: D505
data_type: string
name: parse_data
arguments: data_tag: D280
data_type: string
name: parse_data
arguments: data_tag: D498
data_type: string
name: parse_data
arguments: data_tag: D664
data_type: string
name: parse_data
arguments: data_tag: D447
data_type: string
name: parse_data
arguments: data_tag: D716
data_type: string
name: parse_data
arguments: data_tag: D2
data_type: string
name: parse_data
arguments: data_tag: D476
data_type: string
name: parse_data
arguments: data_tag: D453
data_type: string
name: parse_data
arguments: data_tag: D101
data_type: string
name: parse_data
arguments: data_tag: D423
data_type: string
name: parse_data
arguments: data_tag: D635
data_type: string
name: parse_data
arguments: data_tag: D618
data_type: string
name: parse_data
arguments: data_tag: D386
data_type: string
name: parse_data
arguments: data_tag: D565
data_type: string
name: parse_data
arguments: data_tag: D554
data_type: string
name: parse_data
arguments: data_tag: D598
data_type: string
name: parse_data
arguments: data_tag: D351
data_type: string
name: parse_data
arguments: data_tag: D662
data_type: string
name: parse_data
arguments: data_tag: D545
data_type: string
name: parse_data
arguments: data_tag: D10
data_type: string
name: parse_data
arguments: data_tag: D508
data_type: string
name: parse_data
arguments: data_tag: D352
data_type: string
name: parse_data
arguments: data_tag: D415
data_type: string
name: parse_data
arguments: data_tag: D37
data_type: string
name: parse_data
arguments: data_tag: D166
data_type: string
name: parse_data
arguments: data_tag: D225
data_type: string
name: parse_data
arguments: data_tag: D252
data_type: string

tool: 

tool: D397: hypervisor 

tool: D466: rdrnd 

tool: D511: f16c 

tool: D413: avx 

tool: D683: osxsave 

tool: D670: xsave 

tool: D234: aes 

tool: D497: tsc_deadline 

tool: D302: popcnt 

tool: D72: movbe 

tool: D289: x2apic 

tool: D84: sse4_2 

tool: D531: sse4_1 

tool: D632: dca 

tool: D704: pcid 

tool: D697: pdcm 

tool: D601: xtpr 

tool: D216: cx16 

tool: D35: fma 

tool: D690: sdbg 

tool: D649: cnxt-id 

tool: D569: ssse3 

tool: D65: ds_cpl 

tool: D399: tm2 

tool: D688: est 

tool: D44: smx 

tool: D67: vmx 

tool: D8: monitor 

tool: D321: dtes64 

tool: D222: pclmulqdq 

tool: D217: sse3 

tool: D135: pbe 

tool: D209: tm 

tool: D505: htt 

tool: D280: ss 

tool: D498: sse2 

tool: D664: sse 

tool: D447: fxsr 

tool: D716: mmx 

tool: D2: acpi 

tool: D476: ds 

tool: D453: cflsh 

tool: D101: psn 

tool: D423: pse36 

tool: D635: mtrr 

tool: D618: sep 

tool: D386: apic 

tool: D565: pat 

tool: D554: cx8 

tool: D598: cmov 

tool: D351: mce 

tool: D662: mca 

tool: D545: de 

tool: D10: pae 

tool: D508: tsc 

tool: D352: pge 

tool: D415: vme 

tool: D37: pse 

tool: D166: msr 

tool: D225: fpu 

tool: D252: %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 " : "");
}
```