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

```asm
<CDFkernelBDS_YR07>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movsd  %xmm0,-0x28(%rbp)
  movsd  %xmm1,-0x30(%rbp)
  movsd  %xmm2,-0x38(%rbp)
  movsd  %xmm3,-0x40(%rbp)
  movsd  %xmm4,-0x48(%rbp)
  movsd  %xmm5,-0x50(%rbp)
  movsd  D94(%rip),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movq   D64(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L31
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x30(%rbp),%xmm1
  movsd  D33(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  movsd  D33(%rip),%xmm1
  addsd  %xmm2,%xmm1
  mulsd  -0x30(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L1
L31:
  movsd  -0x48(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  movsd  D49(%rip),%xmm0
  comisd -0x8(%rbp),%xmm0
  jbe    L39
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x38(%rbp),%xmm1
  movsd  D33(%rip),%xmm0
  subsd  -0x8(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x50(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x40(%rbp),%xmm2
  movsd  D33(%rip),%xmm1
  subsd  -0x50(%rbp),%xmm1
  mulsd  -0x40(%rbp),%xmm1
  subsd  -0x48(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L1
L39:
  movsd  D33(%rip),%xmm0
  divsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x38(%rbp),%xmm1
  movsd  -0x8(%rbp),%xmm0
  movsd  D33(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x50(%rbp),%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  movsd  D33(%rip),%xmm1
  subsd  -0x50(%rbp),%xmm1
  mulsd  -0x40(%rbp),%xmm1
  subsd  -0x48(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L1:
  movsd  -0x18(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D94
data_type: byte[8]
name: disassemble_data
arguments: tag: D64
data_type: qword
name: disassemble_data
arguments: tag: D33
data_type: byte[8]
name: disassemble_data
arguments: tag: D49
data_type: f64

tool: {"D94": [0x23,0x42,0x92,0x0c,0xa1,0x9c,0xc7,0x3b]}

tool: D64: 9223372036854775807

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

tool: D49: 10000000000

assistant: ```c
double CDFkernelBDS_YR07(double t, double t1, double vt1, double lambda, double mu, double rho) {
  double cdf, expmlt, small = 1e-20;
  if (fabs(lambda - mu) < small)
    cdf = (1 + rho * lambda * t1) * t / (t1 * (1 + rho * lambda * t));
  else {
    expmlt = exp((mu - lambda) * t);
    if (expmlt < 1e10)
      cdf = rho * lambda / vt1 * (1 - expmlt) / (rho * lambda + (lambda * (1 - rho) - mu) * expmlt);
    else {
      expmlt = 1 / expmlt;
      cdf = rho * lambda / vt1 * (expmlt - 1) / (rho * lambda * expmlt + (lambda * (1 - rho) - mu));
    }
  }
  return (cdf);
}
```