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

```asm
<drift_kepu_stumpff>:
  endbr64
  movq   D129(%rip),%xmm3
  movsd  D110(%rip),%xmm2
  movapd %xmm0,%xmm1
  xor    %eax,%eax
  movsd  D82(%rip),%xmm4
  andpd  %xmm3,%xmm1
  comisd %xmm2,%xmm1
  jb     L39
  nopl   0x0(%rax)
L9:
  mulsd  %xmm4,%xmm0
  add    $0x1,%eax
  movapd %xmm0,%xmm1
  andpd  %xmm3,%xmm1
  comisd %xmm2,%xmm1
  jae    L9
L39:
  movsd  D9(%rip),%xmm2
  movapd %xmm0,%xmm3
  divsd  D115(%rip),%xmm3
  movapd %xmm2,%xmm1
  movapd %xmm2,%xmm4
  subsd  %xmm3,%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm0,%xmm1
  divsd  D104(%rip),%xmm1
  subsd  %xmm1,%xmm3
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm3
  divsd  D103(%rip),%xmm3
  subsd  %xmm3,%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm0,%xmm1
  divsd  D35(%rip),%xmm1
  subsd  %xmm1,%xmm3
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm3
  divsd  D8(%rip),%xmm3
  subsd  %xmm3,%xmm1
  movsd  D64(%rip),%xmm3
  mulsd  %xmm0,%xmm1
  divsd  D153(%rip),%xmm1
  subsd  %xmm1,%xmm4
  movapd %xmm0,%xmm1
  divsd  D107(%rip),%xmm1
  mulsd  %xmm3,%xmm4
  movsd  %xmm4,(%rdx)
  movapd %xmm2,%xmm4
  subsd  %xmm1,%xmm4
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm4
  divsd  D92(%rip),%xmm4
  subsd  %xmm4,%xmm1
  movapd %xmm2,%xmm4
  mulsd  %xmm0,%xmm1
  divsd  D97(%rip),%xmm1
  subsd  %xmm1,%xmm4
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm4
  divsd  D155(%rip),%xmm4
  subsd  %xmm4,%xmm1
  movapd %xmm2,%xmm4
  mulsd  %xmm0,%xmm1
  divsd  D176(%rip),%xmm1
  subsd  %xmm1,%xmm4
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm4
  divsd  D32(%rip),%xmm4
  subsd  %xmm4,%xmm1
  movapd %xmm2,%xmm4
  divsd  D59(%rip),%xmm1
  movsd  %xmm1,(%rcx)
  mulsd  %xmm0,%xmm1
  subsd  %xmm1,%xmm4
  movsd  %xmm4,(%rsi)
  movsd  (%rdx),%xmm1
  movsd  D82(%rip),%xmm4
  mulsd  %xmm0,%xmm1
  movapd %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdi)
  test   %eax,%eax
  je     L18
  nopl   0x0(%rax)
L10:
  mulsd  (%rcx),%xmm0
  addsd  (%rdx),%xmm0
  mulsd  %xmm4,%xmm0
  movsd  %xmm0,(%rcx)
  movsd  (%rsi),%xmm0
  mulsd  %xmm0,%xmm0
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,(%rdx)
  movsd  (%rsi),%xmm0
  mulsd  (%rdi),%xmm0
  movsd  %xmm0,(%rsi)
  movsd  (%rdi),%xmm1
  movapd %xmm1,%xmm0
  addsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rdi)
  sub    $0x1,%eax
  jne    L10
L18:
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D129
type_infered: qword
name: extract_symbolic_data
arguments: label: D110
type_infered: f64
name: extract_symbolic_data
arguments: label: D82
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D9
type_infered: f64
name: extract_symbolic_data
arguments: label: D115
type_infered: f64
name: extract_symbolic_data
arguments: label: D104
type_infered: f64
name: extract_symbolic_data
arguments: label: D103
type_infered: f64
name: extract_symbolic_data
arguments: label: D35
type_infered: f64
name: extract_symbolic_data
arguments: label: D8
type_infered: f64
name: extract_symbolic_data
arguments: label: D64
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D153
type_infered: f64
name: extract_symbolic_data
arguments: label: D107
type_infered: f64
name: extract_symbolic_data
arguments: label: D92
type_infered: f64
name: extract_symbolic_data
arguments: label: D97
type_infered: f64
name: extract_symbolic_data
arguments: label: D155
type_infered: f64
name: extract_symbolic_data
arguments: label: D176
type_infered: f64
name: extract_symbolic_data
arguments: label: D32
type_infered: f64
name: extract_symbolic_data
arguments: label: D59
type_infered: f64

tool: D129: 9223372036854775807

tool: D110: 0.1

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

tool: D9: 1

tool: D115: 182

tool: D104: 132

tool: D103: 90

tool: D35: 56

tool: D8: 30

tool: {"D64": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: D153: 12

tool: D107: 210

tool: D92: 156

tool: D97: 110

tool: D155: 72

tool: D176: 42

tool: D32: 20

tool: D59: 6

assistant: ```c
void drift_kepu_stumpff(double x, double *c0, double *c1, double *c2, double *c3) {
  int n = 0;
  double xm = 0.1;
  while (fabs(x) >= xm) {
    n++;
    x = x / 4.;
  }
  *c2 = (1. - x * (1. - x * (1. - x * (1. - x * (1. - x * (1. - x / 182.) / 132.) / 90.) / 56.) / 30.) / 12.) / 2.;
  *c3 = (1. - x * (1. - x * (1. - x * (1. - x * (1. - x * (1. - x / 210.) / 156.) / 110.) / 72.) / 42.) / 20.) / 6.;
  *c1 = 1. - x * (*c3);
  *c0 = 1. - x * (*c2);
  for (int i = n; i >= 1; i--) {
    *c3 = ((*c2) + (*c0) * (*c3)) / 4.;
    *c2 = (*c1) * (*c1) / 2.;
    *c1 = (*c0) * (*c1);
    *c0 = 2. * (*c0) * (*c0) - 1.;
    x = x * 4.;
  }
}
```