user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  D81(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D115(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D138(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D15(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D120(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D60(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D227(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D220(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D46(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D91(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D13(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movsd  D124(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x98(%rbp),%rdx
  lea    -0x90(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rdi
  call   <dollar_text@plt>
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    %edx,%esi
  movq   %rax,%xmm0
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D81
type_infered: f64
name: read_data
arguments: label: D64
type_infered: string
name: read_data
arguments: label: D115
type_infered: f64
name: read_data
arguments: label: D138
type_infered: f64
name: read_data
arguments: label: D15
type_infered: f64
name: read_data
arguments: label: D120
type_infered: f64
name: read_data
arguments: label: D60
type_infered: f64
name: read_data
arguments: label: D227
type_infered: f64
name: read_data
arguments: label: D220
type_infered: f64
name: read_data
arguments: label: D46
type_infered: f64
name: read_data
arguments: label: D91
type_infered: f64
name: read_data
arguments: label: D13
type_infered: f64
name: read_data
arguments: label: D124
type_infered: f64

tool: D81: 0.12

tool: D64: %.2lf is %s


tool: D115: 1.23

tool: D138: 2.34

tool: D15: 12.34

tool: D120: 112.34

tool: D60: 123.45

tool: D227: 1234.56

tool: D220: 9999.99

tool: D46: 10000

tool: D91: 100000

tool: D13: 123456.78

tool: D124: 999999.99

assistant: ```c
int main(void) {
  double dollar;
  char destination[128];
  dollar = 0.12;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 1.23;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 2.34;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 12.34;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 112.34;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 123.45;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 1234.56;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 9999.99;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 10000.00;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 100000.00;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 123456.78;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  dollar = 999999.99;
  printf("%.2lf is %s\n", dollar, dollar_text(destination, dollar));
  return 0;
}
```