user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<ConvertTempoToString>:
  endbr64
  push   %rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  xor    %eax,%eax
  comisd D6(%rip),%xmm0
  movq   $0x0,0x9(%rsp)
  movl   $0x0,0x11(%rsp)
  mov    %ax,0x15(%rsp)
  movb   $0x0,0x17(%rsp)
  jbe    L465
  movsd  D8(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L465
  lea    0x9(%rsp),%rbp
  lea    D7(%rip),%rdx
  mov    $0xe,%esi
  mov    %rbp,%rdi
  call   <snprintf@plt>
  test   %rax,%rax
  js     L465
  movzbl 0x9(%rsp),%edx
  test   %dl,%dl
  je     L794
  cmp    $0x2e,%dl
  jne    L750
  movb   $0x2c,0x9(%rsp)
  mov    $0x2c,%edx
L750:
  movzbl 0xa(%rsp),%eax
  test   %al,%al
  je     L449
  cmp    $0x2e,%al
  jne    L652
  movb   $0x2c,0xa(%rsp)
L652:
  movzbl 0xb(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L370
  movb   $0x2c,0xb(%rsp)
L370:
  movzbl 0xc(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L397
  movb   $0x2c,0xc(%rsp)
L397:
  movzbl 0xd(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  je     L570
L731:
  movzbl 0xe(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  je     L677
L534:
  movzbl 0xf(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  je     L678
L49:
  movzbl 0x10(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  je     L298
L153:
  movzbl 0x11(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L723
  movb   $0x2c,0x11(%rsp)
L723:
  movzbl 0x12(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L399
  movb   $0x2c,0x12(%rsp)
L399:
  movzbl 0x13(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L1008
  movb   $0x2c,0x13(%rsp)
L1008:
  movzbl 0x14(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L986
  movb   $0x2c,0x14(%rsp)
L986:
  movzbl 0x15(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  jne    L929
  movb   $0x2c,0x15(%rsp)
L929:
  movzbl 0x16(%rsp),%eax
  test   %al,%al
  je     L361
  cmp    $0x2e,%al
  je     L722
  nopl   0x0(%rax)
L361:
  test   %dl,%dl
  je     L794
  movzbl 0xa(%rsp),%eax
L449:
  cmp    $0x2c,%dl
  je     L721
  test   %al,%al
  je     L794
L329:
  movzbl 0xb(%rsp),%edx
  cmp    $0x2c,%al
  je     L572
  test   %dl,%dl
  je     L794
L611:
  movzbl 0xc(%rsp),%eax
  cmp    $0x2c,%dl
  je     L429
  test   %al,%al
  je     L794
L27:
  movzbl 0xd(%rsp),%edx
  cmp    $0x2c,%al
  je     L555
  test   %dl,%dl
  je     L794
L470:
  movzbl 0xe(%rsp),%eax
  cmp    $0x2c,%dl
  je     L286
  test   %al,%al
  je     L794
L695:
  movzbl 0xf(%rsp),%edx
  cmp    $0x2c,%al
  je     L532
  test   %dl,%dl
  je     L794
L1016:
  movzbl 0x10(%rsp),%eax
  cmp    $0x2c,%dl
  je     L96
  test   %al,%al
  je     L794
L422:
  movzbl 0x11(%rsp),%edx
  cmp    $0x2c,%al
  je     L259
  test   %dl,%dl
  je     L794
L1021:
  movzbl 0x12(%rsp),%eax
  cmp    $0x2c,%dl
  je     L299
  test   %al,%al
  je     L794
L812:
  movzbl 0x13(%rsp),%edx
  cmp    $0x2c,%al
  je     L641
  test   %dl,%dl
  je     L794
L129:
  movzbl 0x14(%rsp),%eax
  cmp    $0x2c,%dl
  je     L489
  test   %al,%al
  je     L794
L697:
  movzbl 0x15(%rsp),%edx
  cmp    $0x2c,%al
  je     L160
  test   %dl,%dl
  je     L794
L288:
  movzbl 0x16(%rsp),%eax
  cmp    $0x2c,%dl
  je     L715
  nopl   0x0(%rax)
L794:
  mov    %rbp,%rdi
  call   <DuplicateString@plt>
L343:
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L354
  add    $0x20,%rsp
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L465:
  xor    %eax,%eax
  jmp    L343
  nopl   0x0(%rax)
L555:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0xe(%rsp)
  je     L794
  movb   $0x0,0xf(%rsp)
  jmp    L470
  nopl   (%rax)
L570:
  movb   $0x2c,0xd(%rsp)
  jmp    L731
  nopw   0x0(%rax,%rax,1)
L286:
  test   %al,%al
  je     L794
  cmpb   $0x0,0xf(%rsp)
  je     L794
  movb   $0x0,0x10(%rsp)
  jmp    L695
  nopl   (%rax)
L677:
  movb   $0x2c,0xe(%rsp)
  jmp    L534
  nopw   0x0(%rax,%rax,1)
L532:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0x10(%rsp)
  je     L794
  movb   $0x0,0x11(%rsp)
  jmp    L1016
  nopl   (%rax)
L678:
  movb   $0x2c,0xf(%rsp)
  jmp    L49
  nopw   0x0(%rax,%rax,1)
L298:
  movb   $0x2c,0x10(%rsp)
  jmp    L153
  nopw   0x0(%rax,%rax,1)
L721:
  test   %al,%al
  je     L794
  cmpb   $0x0,0xb(%rsp)
  je     L794
  movb   $0x0,0xc(%rsp)
  jmp    L329
  nopl   (%rax)
L572:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0xc(%rsp)
  je     L794
  movb   $0x0,0xd(%rsp)
  jmp    L611
  nopl   (%rax)
L429:
  test   %al,%al
  je     L794
  cmpb   $0x0,0xd(%rsp)
  je     L794
  movb   $0x0,0xe(%rsp)
  jmp    L27
  nopl   (%rax)
L96:
  test   %al,%al
  je     L794
  cmpb   $0x0,0x11(%rsp)
  je     L794
  movb   $0x0,0x12(%rsp)
  jmp    L422
  nopl   (%rax)
L259:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0x12(%rsp)
  je     L794
  movb   $0x0,0x13(%rsp)
  jmp    L1021
  nopl   (%rax)
L299:
  test   %al,%al
  je     L794
  cmpb   $0x0,0x13(%rsp)
  je     L794
  movb   $0x0,0x14(%rsp)
  jmp    L812
  nopl   (%rax)
L641:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0x14(%rsp)
  je     L794
  movb   $0x0,0x15(%rsp)
  jmp    L129
L489:
  test   %al,%al
  je     L794
  cmpb   $0x0,0x15(%rsp)
  je     L794
  movb   $0x0,0x16(%rsp)
  jmp    L697
L722:
  movb   $0x2c,0x16(%rsp)
  jmp    L361
L715:
  test   %al,%al
  je     L794
  cmpb   $0x0,0x17(%rsp)
  je     L794
  movb   $0x0,0x18(%rsp)
  jmp    L794
L160:
  test   %dl,%dl
  je     L794
  cmpb   $0x0,0x16(%rsp)
  je     L794
  movb   $0x0,0x17(%rsp)
  jmp    L288
L354:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D6
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D8
datatype: f64
name: extract_symbolic_data
arguments: label: D7
datatype: string

tool: {"D6": [0.0,1000.0]}

tool: D8: 1000

tool: D7: %.6f

assistant: ```c
char *ConvertTempoToString(double tempo) {
  char string[15] = {0};
  char *temp = NULL;
  unsigned ctr = 0;
  if (!(tempo > 0.0) || !(tempo < 1000.0))
    return NULL;
  if (snprintf(string, sizeof(string) - 1, "%.6f", tempo) < 0)
    return NULL;
  for (ctr = 0; string[ctr] != '\0'; ctr++)
    if (string[ctr] == '.')
      string[ctr] = ',';
  for (ctr = 0; string[ctr] != '\0'; ctr++)
    if ((string[ctr] == ',') && (string[ctr + 1] != '\0') && (string[ctr + 2] != '\0'))
      string[ctr + 3] = '\0';
  temp = DuplicateString(string);
  return temp;
}
```