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

```asm
<calcSC_ak1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x14(%rbp)
  movsd  %xmm0,-0x20(%rbp)
  movsd  %xmm1,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  mov    %r9,-0x50(%rbp)
  movsd  %xmm2,-0x58(%rbp)
  movsd  %xmm3,-0x60(%rbp)
  movl   $0x3,-0x4(%rbp)
  mov    -0x50(%rbp),%r8
  mov    -0x48(%rbp),%rcx
  mov    0x38(%rbp),%rdx
  mov    0x30(%rbp),%rsi
  movsd  -0x60(%rbp),%xmm0
  mov    -0x58(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <QuadSD_ak1@plt>
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D74(%rip),%xmm1
  andpd  %xmm0,%xmm1
  mov    -0x14(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D74(%rip),%xmm2
  andpd  %xmm0,%xmm2
  movsd  D73(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jb     L7
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D74(%rip),%xmm1
  andpd  %xmm0,%xmm1
  mov    -0x14(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D74(%rip),%xmm2
  andpd  %xmm0,%xmm2
  movsd  D73(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jb     L7
  mov    -0x4(%rbp),%eax
  jmp    L15
L7:
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  mov    0x28(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D74(%rip),%xmm1
  andpd  %xmm1,%xmm0
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm1
  movq   D74(%rip),%xmm2
  andpd  %xmm2,%xmm1
  comisd %xmm1,%xmm0
  jb     L36
  movl   $0x2,-0x4(%rbp)
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x20(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  mov    0x10(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  mov    0x18(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x58(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  addsd  -0x20(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  mov    0x28(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm3
  movsd  -0x28(%rbp),%xmm0
  divsd  %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x38(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  mov    -0x30(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x28(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  addsd  -0x58(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x40(%rbp),%rax
  movsd  %xmm0,(%rax)
  jmp    L33
L36:
  movl   $0x1,-0x4(%rbp)
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x20(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  mov    0x10(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  mov    0x18(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    0x28(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm3
  divsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x38(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mov    -0x30(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    0x28(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  addsd  -0x20(%rbp),%xmm0
  mov    -0x40(%rbp),%rax
  movsd  %xmm0,(%rax)
L33:
  mov    -0x4(%rbp),%eax
L15:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D74
data_type: qword
name: unpack_data
arguments: data_label: D73
data_type: byte[8]

tool: D74: 9223372036854775807

tool: {"D73": [0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x3d]}

assistant: ```c
int calcSC_ak1(int N, double a, double b, double *a1, double *a3, double *a7, double *c, double *d, double *e, double *f, double *g, double *h, double K[100 + 1], double u, double v, double qk[100 + 1]) {
  int dumFlag = 3;
  QuadSD_ak1(N, u, v, K, qk, c, d);
  if (fabs((*c)) <= (100.0 * 2.2204460492503131e-016 * fabs(K[N - 1]))) {
    if (fabs((*d)) <= (100.0 * 2.2204460492503131e-016 * fabs(K[N - 2])))
      return dumFlag;
  }
  *h = v * b;
  if (fabs((*d)) >= fabs((*c))) {
    dumFlag = 2;
    *e = a / (*d);
    *f = (*c) / (*d);
    *g = u * b;
    *a3 = (*e) * ((*g) + a) + (*h) * (b / (*d));
    *a1 = -a + (*f) * b;
    *a7 = (*h) + ((*f) + u) * a;
  } else {
    dumFlag = 1;
    *e = a / (*c);
    *f = (*d) / (*c);
    *g = (*e) * u;
    *a3 = (*e) * a + ((*g) + (*h) / (*c)) * b;
    *a1 = -(a * ((*d) / (*c))) + b;
    *a7 = (*g) * (*d) + (*h) * (*f) + a;
  }
  return dumFlag;
}
```