user: 下面的汇编指令对应的C源代码是什么：

```asm
<check_t_terms>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  movsd  %xmm0,-0x58(%rbp)
  mov    %rdi,-0x60(%rbp)
  mov    %rsi,-0x68(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1,-0x50(%rbp)
  movl   $0x0,-0x48(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movsd  D14(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x60(%rbp),%rax
  lea    D47(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strpbrk@plt>
  mov    %rax,-0x40(%rbp)
  cmpq   $0x0,-0x40(%rbp)
  je     L139
  movl   $0x1,-0x48(%rbp)
L139:
  mov    -0x60(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x68(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movsd  D82(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movl   $0x0,-0x4c(%rbp)
  jmp    L157
L51:
  addq   $0x1,-0x40(%rbp)
L157:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L64
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L51
L64:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L257
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L162
L257:
  cmpl   $0x0,-0x4c(%rbp)
  jle    L103
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm0
  addsd  -0x38(%rbp),%xmm0
  mov    -0x68(%rbp),%rax
  movsd  %xmm0,(%rax)
L103:
  movl   $0x1,-0x50(%rbp)
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L206
  movl   $0xffffffff,-0x50(%rbp)
L206:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L45
  mov    -0x48(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L119
  jmp    L150
L45:
  addq   $0x1,-0x40(%rbp)
  jmp    L85
L223:
  addq   $0x1,-0x40(%rbp)
L162:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L266
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L223
L266:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L237
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L237
  addq   $0x1,-0x40(%rbp)
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L271
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L271
  movsd  -0x30(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L15
L271:
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x44(%rbp)
  cmpl   $0x4,-0x44(%rbp)
  jg     L15
  cmpl   $0x0,-0x44(%rbp)
  js     L15
  mov    -0x44(%rbp),%eax
  cltq
  movsd  -0x30(%rbp,%rax,8),%xmm0
  movsd  -0x38(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L15
L237:
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <atof@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm2
  ucomisd %xmm0,%xmm2
  jp     L247
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm3
  ucomisd %xmm0,%xmm3
  jne    L247
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x30,%al
  jne    L0
L247:
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <atof@plt>
  movsd  -0x38(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L0
L15:
  nop
  jmp    L0
L299:
  addq   $0x1,-0x40(%rbp)
L0:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L85
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L299
L85:
  addl   $0x1,-0x4c(%rbp)
  jmp    L157
L150:
  call   <__stack_chk_fail@plt>
L119:
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D14
data_type: byte[8]
name: read_data
arguments: tag: D47
data_type: string
name: read_data
arguments: tag: D82
data_type: byte[8]
name: read_data
arguments: tag: D72
data_type: string
name: read_data
arguments: tag: D68
data_type: string
name: read_data
arguments: tag: D15
data_type: string
name: read_data
arguments: tag: D69
data_type: string

tool: {"D14": [0x00,0x00,0x00,0x00,0xa0,0xd5,0xe1,0x40]}

tool: D47: +-

tool: {"D82": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D72:  	

tool: D68: * 	

tool: D15: tT

tool: D69: 0123456789.

assistant: ```c
int check_t_terms(double t, char *sinp, double *doutp) {
  int i, isgn = 1, z;
  int retc = 0;
  char *sp;
  double tt[5], fac;
  tt[0] = t / 36525;
  tt[1] = tt[0];
  tt[2] = tt[1] * tt[1];
  tt[3] = tt[2] * tt[1];
  tt[4] = tt[3] * tt[1];
  if ((sp = strpbrk(sinp, "+-")) != NULL)
    retc = 1;
  sp = sinp;
  *doutp = 0;
  fac = 1;
  z = 0;
  while (1) {
    while (*sp != '\0' && strchr(" \t", *sp) != NULL)
      sp++;
    if (strchr("+-", *sp) || *sp == '\0') {
      if (z > 0)
        *doutp += fac;
      isgn = 1;
      if (*sp == '-')
        isgn = -1;
      fac = 1 * isgn;
      if (*sp == '\0')
        return retc;
      sp++;
    } else {
      while (*sp != '\0' && strchr("* \t", *sp) != NULL)
        sp++;
      if (*sp != '\0' && strchr("tT", *sp) != NULL) {
        sp++;
        if (*sp != '\0' && strchr("+-", *sp))
          fac *= tt[0];
        else if ((i = atoi(sp)) <= 4 && i >= 0)
          fac *= tt[i];
      } else {
        if (atof(sp) != 0 || *sp == '0')
          fac *= atof(sp);
      }
      while (*sp != '\0' && strchr("0123456789.", *sp))
        sp++;
    }
    z++;
  }
  return retc;
}
```