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

```asm
<plot_sine>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x7f0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x7ec(%rbp)
  jmp    L121
L109:
  movl   $0x0,-0x7e8(%rbp)
  jmp    L147
L18:
  cmpl   $0x0,-0x7ec(%rbp)
  jne    L46
  cmpl   $0xa,-0x7e8(%rbp)
  jne    L46
  mov    -0x7e8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movb   $0x2b,(%rax)
  jmp    L93
L46:
  cmpl   $0x0,-0x7ec(%rbp)
  jne    L21
  mov    -0x7e8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movb   $0x7c,(%rax)
  jmp    L93
L21:
  cmpl   $0xa,-0x7e8(%rbp)
  jne    L17
  mov    -0x7e8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movb   $0x2d,(%rax)
  jmp    L93
L17:
  mov    -0x7e8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movb   $0x20,(%rax)
L93:
  addl   $0x1,-0x7e8(%rbp)
L147:
  cmpl   $0x13,-0x7e8(%rbp)
  jle    L18
  addl   $0x1,-0x7ec(%rbp)
L121:
  cmpl   $0x63,-0x7ec(%rbp)
  jle    L109
  movl   $0x0,-0x7ec(%rbp)
  jmp    L131
L164:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x7ec(%rbp),%xmm0
  movsd  D7(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D7(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <floor@plt>
  mov    %eax,-0x7e4(%rbp)
  mov    -0x7e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movb   $0x78,(%rax)
  addl   $0x1,-0x7ec(%rbp)
L131:
  cmpl   $0x63,-0x7ec(%rbp)
  jle    L164
  movl   $0x0,-0x7e8(%rbp)
  jmp    L33
L174:
  movl   $0x0,-0x7ec(%rbp)
  jmp    L25
L142:
  mov    -0x7e8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x7ec(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0x7e0,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <putchar@plt>
  addl   $0x1,-0x7ec(%rbp)
L25:
  cmpl   $0x63,-0x7ec(%rbp)
  jle    L142
  mov    $0xa,%edi
  call   <putchar@plt>
  addl   $0x1,-0x7e8(%rbp)
L33:
  cmpl   $0x13,-0x7e8(%rbp)
  jle    L174
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D7
data_type: f64

tool: D7: 10

assistant: ```c
void plot_sine() {
  char chart[100][20];
  int ix, iy;
  for (ix = 0; ix < 100; ix++) {
    for (iy = 0; iy < 20; iy++) {
      if (ix == 0 && iy == (20 / 2)) {
        chart[ix][iy] = '+';
      } else if (ix == 0) {
        chart[ix][iy] = '|';
      } else if (iy == (20 / 2)) {
        chart[ix][iy] = '-';
      } else {
        chart[ix][iy] = ' ';
      }
    }
  }
  for (ix = 0; ix < 100; ix++) {
    int val = floor(sin(ix / 10.0) * 10.0);
    chart[ix][val] = 'x';
  }
  for (iy = 0; iy < 20; iy++) {
    for (ix = 0; ix < 100; ix++) {
      printf("%c", chart[ix][iy]);
    }
    printf("\n");
  }
}
```