user: Please show me the C implementation that matches the assembly code listed below:

```asm
<__add__>:
  endbr64
  mov    %ecx,%r11d
  mov    %rdi,%r8
  mov    %rsi,%r9
  mov    %rdx,%rdi
  and    $0x7,%r11d
  sar    $0x3,%ecx
  je     L15
  lea    0x3f(%rsi),%rax
  sub    %rdx,%rax
  cmp    $0x7e,%rax
  jbe    L41
  lea    0x3f(%r8),%rax
  sub    %rdx,%rax
  cmp    $0x7e,%rax
  jbe    L41
  lea    -0x1(%rcx),%r10d
  mov    %rdx,%rax
  mov    %r8,%rdx
  shl    $0x6,%r10
  lea    0x40(%rdi,%r10,1),%r10
  nopw   0x0(%rax,%rax,1)
L43:
  movupd 0x10(%rsi),%xmm2
  movupd 0x10(%rdx),%xmm4
  add    $0x40,%rax
  add    $0x40,%rsi
  movupd 0x20(%rdx),%xmm5
  movupd 0x30(%rdx),%xmm6
  add    $0x40,%rdx
  movupd -0x20(%rsi),%xmm1
  movupd -0x10(%rsi),%xmm0
  addpd  %xmm4,%xmm2
  movupd -0x40(%rsi),%xmm3
  movupd -0x40(%rdx),%xmm7
  addpd  %xmm5,%xmm1
  addpd  %xmm6,%xmm0
  addpd  %xmm7,%xmm3
  movups %xmm2,-0x30(%rax)
  movups %xmm1,-0x20(%rax)
  movups %xmm3,-0x40(%rax)
  movups %xmm0,-0x10(%rax)
  cmp    %r10,%rax
  jne    L43
L32:
  shl    $0x3,%ecx
L15:
  lea    D2(%rip),%rdx
  mov    %r11d,%r11d
  movslq (%rdx,%r11,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  (%r8,%rax,8),%xmm0
  addsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movslq %ecx,%rcx
  movsd  (%r8,%rcx,8),%xmm0
  addsd  (%r9,%rcx,8),%xmm0
  movsd  %xmm0,(%rdi,%rcx,8)
  ret
  nop
L41:
  lea    -0x1(%rcx),%r10d
  mov    %r8,%rax
  mov    %r9,%rsi
  mov    %rdi,%rdx
  shl    $0x6,%r10
  lea    0x40(%r8,%r10,1),%r10
  cs nopw 0x0(%rax,%rax,1)
L29:
  movsd  (%rsi),%xmm0
  addsd  (%rax),%xmm0
  add    $0x40,%rax
  add    $0x40,%rsi
  add    $0x40,%rdx
  movsd  %xmm0,-0x40(%rdx)
  movsd  -0x38(%rsi),%xmm0
  addsd  -0x38(%rax),%xmm0
  movsd  %xmm0,-0x38(%rdx)
  movsd  -0x30(%rsi),%xmm0
  addsd  -0x30(%rax),%xmm0
  movsd  %xmm0,-0x30(%rdx)
  movsd  -0x28(%rsi),%xmm0
  addsd  -0x28(%rax),%xmm0
  movsd  %xmm0,-0x28(%rdx)
  movsd  -0x20(%rsi),%xmm0
  addsd  -0x20(%rax),%xmm0
  movsd  %xmm0,-0x20(%rdx)
  movsd  -0x18(%rsi),%xmm0
  addsd  -0x18(%rax),%xmm0
  movsd  %xmm0,-0x18(%rdx)
  movsd  -0x10(%rsi),%xmm0
  addsd  -0x10(%rax),%xmm0
  movsd  %xmm0,-0x10(%rdx)
  movsd  -0x8(%rsi),%xmm0
  addsd  -0x8(%rax),%xmm0
  movsd  %xmm0,-0x8(%rdx)
  cmp    %r10,%rax
  jne    L29
  jmp    L32
```

assistant: ```c
void __add__(dp1, dp2, out, len) register double *dp1, *dp2, *out;
register int len;
{
  register int i;
  register int j, k;
  i = len >> 3;
  j = 0;
  k = len & 7;
  while (i--) {
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
    out[j] = dp1[j] + dp2[j];
    j++;
  }
  switch (k) {
  case 7:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 6:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 5:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 4:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 3:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 2:
    out[j] = dp1[j] + dp2[j];
    j++;
  case 1:
    out[j] = dp1[j] + dp2[j];
    j++;
  }
}
```