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

```asm
<SolveQuadraticEq>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  %xmm1,-0x40(%rbp)
  movsd  %xmm2,-0x48(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D104(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x50(%rbp)
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  comisd -0x50(%rbp),%xmm0
  jae    L54
  pxor   %xmm0,%xmm0
  ucomisd -0x38(%rbp),%xmm0
  jp     L79
  pxor   %xmm0,%xmm0
  ucomisd -0x38(%rbp),%xmm0
  jne    L79
L54:
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  jp     L212
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  je     L94
L212:
  movsd  -0x48(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L94:
  pxor   %xmm0,%xmm0
  ucomisd -0x48(%rbp),%xmm0
  jp     L165
  pxor   %xmm0,%xmm0
  ucomisd -0x48(%rbp),%xmm0
  jne    L165
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L165:
  movsd  D122(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L79:
  pxor   %xmm0,%xmm0
  ucomisd -0x48(%rbp),%xmm0
  jp     L206
  pxor   %xmm0,%xmm0
  ucomisd -0x48(%rbp),%xmm0
  jne    L206
  movsd  -0x40(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L206:
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  jp     L71
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  jne    L71
  movsd  -0x48(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x8(%rbp),%xmm0
  jbe    L129
  movsd  D122(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D122(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L129:
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L71:
  movsd  -0x40(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  -0x38(%rbp),%xmm2
  movsd  D115(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  mulsd  -0x48(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L298
  movsd  D122(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D122(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L298:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0x10(%rbp),%xmm0
  jp     L40
  pxor   %xmm0,%xmm0
  ucomisd -0x10(%rbp),%xmm0
  jne    L40
  movsd  -0x40(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L40:
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L193
  movsd  -0x40(%rbp),%xmm0
  movq   D89(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  subsd  -0x10(%rbp),%xmm1
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  -0x40(%rbp),%xmm1
  movq   D89(%rip),%xmm2
  xorpd  %xmm2,%xmm1
  subsd  -0x10(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L142
L193:
  pxor   %xmm0,%xmm0
  comisd -0x40(%rbp),%xmm0
  jbe    L142
  movsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  subsd  -0x40(%rbp),%xmm1
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  -0x10(%rbp),%xmm1
  subsd  -0x40(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  nop
L142:
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L26
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
L26:
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L289
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L289:
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L44
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L44
  movsd  -0x20(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Min@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  jmp    L55
L44:
  movsd  -0x20(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Max@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
L55:
  movsd  -0x18(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D104
type: f64
name: parse_data
arguments: data_label: D89
type: f32[2]
name: parse_data
arguments: data_label: D122
type: f32[2]
name: parse_data
arguments: data_label: D115
type: f64

tool: D104: 1000000000000

tool: {"D89": [0.0,-0.0]}

tool: {"D122": [0.0,-6.1103515625]}

tool: D115: 4

assistant: ```c
double SolveQuadraticEq(double AA, double BB, double CC) {
  double X1 = 0.0, X2 = 0.0;
  double DD, TEMP;
  double Time = 0.0;
  if ((fabs(AA) * 1.0e12) <= fabs(BB) || (AA == 0.0)) {
    if (BB != 0.0) {
      X1 = -CC / BB;
      X2 = X1;
      goto ok15;
    } else {
      if (CC == 0.0) {
        X1 = 0.0;
        X2 = 0.0;
        goto ok15;
      }
      X1 = -1.0e4;
      X2 = X1;
      goto ok15;
    }
  }
  if (CC == 0) {
    X1 = -BB / AA;
    X2 = 0.0;
    goto ok15;
  }
  if (BB == 0.0) {
    TEMP = -CC / AA;
    if (TEMP < 0.0) {
      X1 = -1.0e4;
      X2 = -1.0e4;
      goto ok15;
    }
    X1 = sqrt(TEMP);
    X2 = -X1;
    goto ok15;
  }
  DD = BB * BB - 4.0 * AA * CC;
  if (DD < 0.0) {
    X1 = -1.0e4;
    X2 = -1.0e4;
    goto ok15;
  }
  DD = sqrt(DD);
  if (DD == 0.0) {
    X1 = -BB / (2.0 * AA);
    X2 = X1;
    goto ok15;
  }
  if (BB > 0.0) {
    X1 = (-BB - DD) / (2.0 * AA);
    X2 = (2.0 * CC) / (-BB - DD);
    goto ok15;
  }
  if (BB < 0.0) {
    X2 = (-BB + DD) / (2.0 * AA);
    X1 = (2.0 * CC) / (-BB + DD);
    goto ok15;
  }
ok15:
  if (fabs(X1) < 4e-10)
    X1 = 0.0;
  if (fabs(X2) < 4e-10)
    X2 = 0.0;
  if ((X1 > 0.0) && (X2 > 0.0)) {
    Time = Min(X1, X2);
  } else {
    Time = Max(X1, X2);
  }
  return Time;
}
```