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

```asm
<bdyadd_>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rcx,%r14
  mov    %r8,%r15
  mov    0x40(%rsp),%rbx
  lea    -0x4(%r9),%r12
  lea    -0x4(%r8),%r13
  lea    -0x4(%rcx),%rbp
  mov    (%rdi),%eax
  mov    %eax,D144(%rip)
  mov    (%rsi),%eax
  mov    %eax,D157(%rip)
  mov    (%rdx),%edx
  mov    %edx,D61(%rip)
  cltq
  lea    (%r12,%rax,4),%rcx
  mov    (%rcx),%eax
  mov    %eax,D203(%rip)
  cltq
  lea    0x0(%r13,%rax,4),%rdx
  mov    (%rdx),%esi
  mov    (%rbx),%eax
  mov    %eax,(%rdx)
  cltq
  mov    D144(%rip),%edx
  neg    %edx
  mov    %edx,0x0(%rbp,%rax,4)
  movslq (%rbx),%rax
  mov    %esi,0x0(%r13,%rax,4)
  mov    (%rbx),%eax
  mov    %eax,(%rcx)
  add    $0x1,%eax
  mov    %eax,(%rbx)
  movslq D203(%rip),%rax
  lea    0x0(%rbp,%rax,4),%rdx
  mov    (%rdx),%eax
  neg    %eax
  mov    %eax,D118(%rip)
  mov    %eax,(%rdx)
  mov    %eax,D174(%rip)
  jmp    L28
L25:
  movslq D203(%rip),%rax
  lea    0x0(%rbp,%rax,4),%rdx
  mov    (%rdx),%eax
  neg    %eax
  mov    %eax,D117(%rip)
  mov    %eax,(%rdx)
L28:
  movslq D117(%rip),%rax
  mov    (%r12,%rax,4),%eax
  mov    %eax,D117(%rip)
  mov    %rbx,%r8
  mov    %r15,%rcx
  mov    %r14,%rdx
  lea    D117(%rip),%rsi
  lea    D144(%rip),%rdi
  call   <insert_@plt>
  mov    D61(%rip),%ecx
  cmp    %ecx,D117(%rip)
  jne    L25
  mov    (%rbx),%edi
  movslq %edi,%rax
  mov    D157(%rip),%edx
  mov    %edx,0x0(%rbp,%rax,4)
  mov    (%rbx),%eax
  movslq %eax,%rdx
  add    $0x1,%eax
  mov    %eax,0x0(%r13,%rdx,4)
  addl   $0x1,(%rbx)
  mov    D174(%rip),%eax
  mov    %eax,D117(%rip)
  cmp    %eax,%ecx
  je     L23
L33:
  movslq (%rbx),%rdx
  mov    %eax,0x0(%rbp,%rdx,4)
  mov    (%rbx),%edx
  movslq %edx,%rsi
  add    $0x1,%edx
  mov    %edx,0x0(%r13,%rsi,4)
  addl   $0x1,(%rbx)
  cltq
  mov    (%r12,%rax,4),%eax
  mov    %eax,D117(%rip)
  cltq
  mov    0x0(%rbp,%rax,4),%eax
  cmp    %eax,%ecx
  jne    L33
  mov    %eax,D117(%rip)
L23:
  movslq (%rbx),%rax
  neg    %ecx
  mov    %ecx,0x0(%rbp,%rax,4)
  movslq (%rbx),%rax
  mov    %edi,0x0(%r13,%rax,4)
  mov    (%rbx),%eax
  movslq D144(%rip),%rdx
  mov    %eax,(%r12,%rdx,4)
  add    $0x1,%eax
  mov    %eax,(%rbx)
  mov    $0x0,%eax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
int bdyadd_(int *kk, int *i1, int *i2, int *list, int *lptr, int *lend, int *lnew) {
  static int k, n1, n2, lp, lsav, nsav, next;
  --lend;
  --lptr;
  --list;
  k = *kk;
  n1 = *i1;
  n2 = *i2;
  lp = lend[n1];
  lsav = lptr[lp];
  lptr[lp] = *lnew;
  list[*lnew] = -k;
  lptr[*lnew] = lsav;
  lend[n1] = *lnew;
  ++(*lnew);
  next = -list[lp];
  list[lp] = next;
  nsav = next;
L1:
  lp = lend[next];
  insert_(&k, &lp, &list[1], &lptr[1], lnew);
  if (next == n2) {
    goto L2;
  }
  next = -list[lp];
  list[lp] = next;
  goto L1;
L2:
  lsav = *lnew;
  list[*lnew] = n1;
  lptr[*lnew] = *lnew + 1;
  ++(*lnew);
  next = nsav;
L3:
  if (next == n2) {
    goto L4;
  }
  list[*lnew] = next;
  lptr[*lnew] = *lnew + 1;
  ++(*lnew);
  lp = lend[next];
  next = list[lp];
  goto L3;
L4:
  list[*lnew] = -n2;
  lptr[*lnew] = lsav;
  lend[k] = *lnew;
  ++(*lnew);
  return 0;
}
```