user: What is the c source code of the assembly code below?

```asm
<fibFP>:
  endbr64
  movsd  D94(%rip),%xmm3
  comisd %xmm0,%xmm3
  jbe    L34
  movsd  D5(%rip),%xmm0
  ret
  nopl   0x0(%rax,%rax,1)
L34:
  movapd %xmm0,%xmm2
  sub    $0x38,%rsp
  movapd %xmm0,%xmm1
  subsd  %xmm3,%xmm2
  comisd %xmm2,%xmm3
  ja     L182
  movapd %xmm2,%xmm5
  subsd  %xmm3,%xmm5
  comisd %xmm5,%xmm3
  jbe    L83
  movsd  D5(%rip),%xmm4
  movapd %xmm4,%xmm6
L13:
  subsd  %xmm4,%xmm2
  movapd %xmm4,%xmm5
  comisd %xmm2,%xmm3
  ja     L119
  movapd %xmm2,%xmm5
  movapd %xmm4,%xmm7
  subsd  %xmm3,%xmm5
  comisd %xmm5,%xmm3
  ja     L125
  movapd %xmm5,%xmm0
  movsd  %xmm1,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm5
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm5
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm5,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm7
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm6
  addsd  %xmm0,%xmm7
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L125:
  subsd  %xmm4,%xmm2
  movapd %xmm4,%xmm5
  comisd %xmm2,%xmm3
  ja     L52
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm2
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm2
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm2,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm5
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm7
  addsd  %xmm0,%xmm5
  movsd  0x10(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L52:
  addsd  %xmm7,%xmm5
L119:
  addsd  %xmm6,%xmm5
  jmp    L166
  nopl   0x0(%rax)
L182:
  movsd  D5(%rip),%xmm4
  movapd %xmm4,%xmm5
L166:
  subsd  %xmm4,%xmm1
  movapd %xmm4,%xmm0
  comisd %xmm1,%xmm3
  ja     L198
  movapd %xmm1,%xmm2
  movapd %xmm4,%xmm6
  subsd  %xmm3,%xmm2
  comisd %xmm2,%xmm3
  jbe    L158
  subsd  %xmm4,%xmm1
  movapd %xmm4,%xmm0
  comisd %xmm1,%xmm3
  jbe    L209
L14:
  addsd  %xmm6,%xmm0
L198:
  addsd  %xmm5,%xmm0
  add    $0x38,%rsp
  ret
  nopl   0x0(%rax,%rax,1)
L209:
  movapd %xmm1,%xmm2
  movapd %xmm4,%xmm7
  subsd  %xmm3,%xmm2
  comisd %xmm2,%xmm3
  ja     L203
  movapd %xmm2,%xmm0
  movsd  %xmm6,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm2
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm2
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm2,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm7
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm5
  addsd  %xmm0,%xmm7
  movsd  0x10(%rsp),%xmm1
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L203:
  subsd  %xmm4,%xmm1
  comisd %xmm1,%xmm3
  ja     L50
  movapd %xmm1,%xmm0
  movsd  %xmm7,0x28(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <fibFP>
  movsd  0x20(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm1
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm1
  movapd %xmm1,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm4
  movsd  0x28(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  addsd  %xmm0,%xmm4
L50:
  addsd  %xmm7,%xmm4
  movapd %xmm4,%xmm0
  jmp    L14
  nopl   0x0(%rax)
L158:
  movapd %xmm2,%xmm6
  movapd %xmm4,%xmm7
  subsd  %xmm3,%xmm6
  comisd %xmm6,%xmm3
  ja     L189
  movapd %xmm6,%xmm0
  movsd  %xmm5,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm6
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm6
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm6,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm7
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm2
  addsd  %xmm0,%xmm7
  movsd  0x10(%rsp),%xmm1
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L189:
  subsd  %xmm4,%xmm2
  movapd %xmm4,%xmm6
  comisd %xmm2,%xmm3
  ja     L99
  movapd %xmm2,%xmm0
  movsd  %xmm7,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm2
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm2
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm2,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm6
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm5
  addsd  %xmm0,%xmm6
  movsd  0x10(%rsp),%xmm1
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L99:
  subsd  %xmm4,%xmm1
  addsd  %xmm7,%xmm6
  movapd %xmm4,%xmm0
  comisd %xmm1,%xmm3
  ja     L14
  jmp    L209
  nopl   0x0(%rax,%rax,1)
L83:
  movapd %xmm5,%xmm6
  subsd  %xmm3,%xmm6
  comisd %xmm6,%xmm3
  ja     L100
  movsd  %xmm0,0x20(%rsp)
  movapd %xmm6,%xmm0
  subsd  %xmm3,%xmm0
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <fibFP>
  movsd  D5(%rip),%xmm4
  movsd  0x8(%rsp),%xmm6
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm6
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm6,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm7
  mov    D94(%rip),%rax
  movsd  0x8(%rsp),%xmm4
  movsd  0x10(%rsp),%xmm2
  addsd  %xmm0,%xmm7
  movsd  0x18(%rsp),%xmm5
  movsd  0x20(%rsp),%xmm1
  movq   %rax,%xmm3
L113:
  subsd  %xmm4,%xmm5
  movapd %xmm4,%xmm6
  comisd %xmm5,%xmm3
  ja     L126
  movapd %xmm5,%xmm0
  movsd  %xmm1,0x20(%rsp)
  subsd  %xmm3,%xmm0
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <fibFP>
  movsd  0x28(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm5
  movsd  %xmm0,(%rsp)
  subsd  %xmm4,%xmm5
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm5,%xmm0
  call   <fibFP>
  movsd  (%rsp),%xmm6
  mov    D94(%rip),%rax
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm7
  addsd  %xmm0,%xmm6
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm4
  movq   %rax,%xmm3
L126:
  addsd  %xmm7,%xmm6
  jmp    L13
  nopl   (%rax)
L100:
  movsd  D5(%rip),%xmm4
  movapd %xmm4,%xmm7
  jmp    L113
```

tool_calls: name: read_data
arguments: label: D94
data_type: f64
name: read_data
arguments: label: D5
data_type: f64

tool: D94: 2

tool: D5: 1

assistant: ```c
double fibFP(double n) {
  if (n < 2.0) {
    return 1.0;
  }
  return fibFP(n - 2.0) + fibFP(n - 1.0);
}
```