user: 这段汇编代码用C语言表示是什么样的：

```asm
<addnod_>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  movslq (%rsi),%rax
  mov    %rdx,0x8(%rsp)
  mov    0x60(%rsp),%r15
  mov    %rcx,0x10(%rsp)
  mov    %r8,0x18(%rsp)
  mov    %eax,D390(%rip)
  cmp    $0x3,%eax
  jle    L307
  lea    -0x1(%rax),%edx
  mov    %r9,%r14
  lea    -0x8(%r8),%r12
  mov    %r8,%r9
  mov    %edx,D163(%rip)
  mov    (%rdi),%ecx
  lea    D339(%rip),%r11
  lea    D393(%rip),%r10
  mov    0x10(%rsp),%r8
  lea    D272(%rip),%r13
  lea    D167(%rip),%rsi
  test   %ecx,%ecx
  lea    D287(%rip),%rdi
  cmovg  %ecx,%edx
  mov    0x8(%rsp),%rcx
  lea    -0x8(%r8),%rbp
  sub    $0x8,%rsp
  lea    -0x8(%rcx),%rbx
  mov    %edx,D516(%rip)
  lea    D163(%rip),%rdx
  movsd  (%rbx,%rax,8),%xmm0
  movsd  %xmm0,D516(%rip)
  movsd  0x0(%rbp,%rax,8),%xmm0
  movsd  %xmm0,D516(%rip)
  movsd  (%r12,%rax,8),%xmm0
  lea    D61(%rip),%rax
  push   %r11
  push   %r10
  push   %r13
  push   %rax
  lea    D438(%rip),%rax
  push   %rax
  lea    D246(%rip),%rax
  push   %rax
  push   0xa0(%rsp)
  push   %r15
  push   %r14
  movsd  %xmm0,D400(%rip)
  call   <trfind_@plt>
  mov    D272(%rip),%eax
  add    $0x50,%rsp
  lea    D393(%rip),%r10
  lea    D339(%rip),%r11
  test   %eax,%eax
  je     L140
  mov    D339(%rip),%edx
  test   %edx,%edx
  je     L149
  movslq %eax,%rcx
  movsd  D516(%rip),%xmm0
  mov    %eax,D166(%rip)
  ucomisd (%rbx,%rcx,8),%xmm0
  jp     L242
  jne    L242
  movsd  D516(%rip),%xmm1
  ucomisd 0x0(%rbp,%rcx,8),%xmm1
  jp     L242
  jne    L242
  movsd  D400(%rip),%xmm1
  ucomisd (%r12,%rcx,8),%xmm1
  jp     L242
  je     L201
  nop
L242:
  movslq D393(%rip),%rcx
  ucomisd (%rbx,%rcx,8),%xmm0
  mov    %ecx,D187(%rip)
  mov    %rcx,%rax
  jp     L40
  jne    L40
  movsd  D516(%rip),%xmm1
  ucomisd 0x0(%rbp,%rcx,8),%xmm1
  jp     L40
  jne    L40
  movsd  D400(%rip),%xmm1
  ucomisd (%r12,%rcx,8),%xmm1
  jp     L40
  je     L201
  nopl   0x0(%rax)
L40:
  movslq %edx,%rax
  mov    %edx,D187(%rip)
  ucomisd (%rbx,%rax,8),%xmm0
  jp     L72
  jne    L72
  movsd  D516(%rip),%xmm0
  ucomisd 0x0(%rbp,%rax,8),%xmm0
  jp     L72
  jne    L72
  movsd  D400(%rip),%xmm0
  ucomisd (%r12,%rax,8),%xmm0
  jp     L72
  jne    L72
L266:
  mov    0x78(%rsp),%rax
  mov    %edx,(%rax)
  jmp    L86
  nopw   0x0(%rax,%rax,1)
L140:
  mov    0x78(%rsp),%rax
  movl   $0xfffffffe,(%rax)
L86:
  add    $0x28,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L307:
  mov    0x78(%rsp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L86
  nopl   (%rax)
L72:
  push   0x70(%rsp)
  mov    %r13,%rsi
  mov    %r15,%r9
  mov    %r14,%r8
  push   0x70(%rsp)
  lea    D390(%rip),%r13
  mov    %r11,%rcx
  mov    %r10,%rdx
  mov    %r13,%rdi
  call   <intadd_@plt>
  pop    %rbx
  pop    %rbp
L268:
  mov    0x68(%rsp),%rax
  mov    0x68(%rsp),%rsi
  lea    -0x4(%r15),%r12
  lea    -0x4(%r14),%rbx
  lea    D187(%rip),%rbp
  sub    $0x4,%rax
  mov    %rax,(%rsp)
  mov    0x78(%rsp),%rax
  movl   $0x0,(%rax)
  movslq D390(%rip),%rax
  movslq -0x4(%rsi,%rax,4),%rax
  movslq (%r12,%rax,4),%rax
  mov    (%rbx,%rax,4),%edx
  mov    %eax,D384(%rip)
  mov    %edx,D55(%rip)
  movslq (%r12,%rax,4),%rax
  mov    %eax,D55(%rip)
  mov    (%rbx,%rax,4),%edx
  mov    %edx,%eax
  neg    %eax
  cmovs  %edx,%eax
  mov    %eax,D362(%rip)
  jmp    L301
  nop
L8:
  movslq D55(%rip),%rdx
L43:
  cmp    %edx,D134(%rip)
  je     L86
  mov    (%rbx,%rdx,4),%eax
  test   %eax,%eax
  js     L86
  mov    D362(%rip),%eax
  mov    %eax,D134(%rip)
  movslq (%r12,%rdx,4),%rax
  mov    %eax,D134(%rip)
  mov    (%rbx,%rax,4),%edx
  mov    %edx,%eax
  neg    %eax
  cmovs  %edx,%eax
L164:
  mov    %eax,D134(%rip)
L301:
  mov    (%rsp),%rsi
  cltq
  mov    %r14,%rdx
  mov    %r15,%rcx
  lea    (%rsi,%rax,4),%rdi
  mov    %rbp,%rsi
  call   <lstptr_@plt>
  movslq D134(%rip),%rdx
  cltq
  mov    (%rbx,%rax,4),%r9d
  test   %r9d,%r9d
  js     L43
  movslq (%r12,%rax,4),%rax
  mov    %edx,D134(%rip)
  lea    D212(%rip),%rdi
  mov    %r13,%rsi
  lea    D134(%rip),%rdx
  mov    (%rbx,%rax,4),%ecx
  mov    %ecx,%eax
  neg    %eax
  cmovs  %ecx,%eax
  sub    $0x8,%rsp
  mov    %rbp,%rcx
  push   0x20(%rsp)
  mov    0x20(%rsp),%r9
  mov    0x18(%rsp),%r8
  mov    %eax,D266(%rip)
  call   <swptst_@plt>
  pop    %rdi
  pop    %r8
  test   %eax,%eax
  je     L8
  lea    D134(%rip),%rax
  mov    %rbp,%rcx
  mov    %r13,%rsi
  mov    %r15,%r9
  push   %rax
  lea    D134(%rip),%rdx
  mov    %r14,%r8
  lea    D266(%rip),%rdi
  push   0x70(%rsp)
  call   <swap_@plt>
  mov    D134(%rip),%esi
  pop    %rdx
  pop    %rcx
  test   %esi,%esi
  jne    L10
  movslq D134(%rip),%rdx
  mov    %edx,D266(%rip)
  jmp    L43
  nopw   0x0(%rax,%rax,1)
L10:
  mov    D266(%rip),%eax
  jmp    L164
  nopl   0x0(%rax,%rax,1)
L149:
  cmp    D393(%rip),%eax
  je     L237
  sub    $0x8,%rsp
  mov    %r13,%rsi
  mov    %r10,%rdx
  mov    %r15,%r8
  push   0x78(%rsp)
  lea    D390(%rip),%r13
  mov    0x78(%rsp),%r9
  mov    %r14,%rcx
  mov    %r13,%rdi
  call   <bdyadd_@plt>
  pop    %r10
  pop    %r11
  jmp    L268
  nopl   0x0(%rax)
L237:
  mov    %r13,%rsi
  mov    0x70(%rsp),%r9
  mov    0x68(%rsp),%r8
  mov    %r15,%rcx
  lea    D390(%rip),%r13
  mov    %r14,%rdx
  mov    %r13,%rdi
  call   <covsph_@plt>
  jmp    L268
  nopw   0x0(%rax,%rax,1)
L201:
  mov    %eax,%edx
  jmp    L266
```

assistant: ```c
int addnod_(int *nst, int *k, double *x, double *y, double *z__, int *list, int *lptr, int *lend, int *lnew, int *ier) {
  int i__1;
  static int l;
  static double p[3], b1, b2, b3;
  static int i1, i2, i3, kk, lp, in1, io1, io2, km1, lpf, ist, lpo1;
  static int lpo1s;
  --lend;
  --z__;
  --y;
  --x;
  --list;
  --lptr;
  kk = *k;
  if (kk < 4) {
    goto L3;
  }
  km1 = kk - 1;
  ist = *nst;
  if (ist < 1) {
    ist = km1;
  }
  p[0] = x[kk];
  p[1] = y[kk];
  p[2] = z__[kk];
  trfind_(&ist, p, &km1, &x[1], &y[1], &z__[1], &list[1], &lptr[1], &lend[1], &b1, &b2, &b3, &i1, &i2, &i3);
  if (i1 == 0) {
    goto L4;
  }
  if (i3 != 0) {
    l = i1;
    if (p[0] == x[l] && p[1] == y[l] && p[2] == z__[l]) {
      goto L5;
    }
    l = i2;
    if (p[0] == x[l] && p[1] == y[l] && p[2] == z__[l]) {
      goto L5;
    }
    l = i3;
    if (p[0] == x[l] && p[1] == y[l] && p[2] == z__[l]) {
      goto L5;
    }
    intadd_(&kk, &i1, &i2, &i3, &list[1], &lptr[1], &lend[1], lnew);
  } else {
    if (i1 != i2) {
      bdyadd_(&kk, &i1, &i2, &list[1], &lptr[1], &lend[1], lnew);
    } else {
      covsph_(&kk, &i1, &list[1], &lptr[1], &lend[1], lnew);
    }
  }
  *ier = 0;
  lp = lend[kk];
  lpf = lptr[lp];
  io2 = list[lpf];
  lpo1 = lptr[lpf];
  io1 = (i__1 = list[lpo1], ((i__1) >= 0 ? (i__1) : -(i__1)));
L1:
  lp = lstptr_(&lend[io1], &io2, &list[1], &lptr[1]);
  if (list[lp] < 0) {
    goto L2;
  }
  lp = lptr[lp];
  in1 = (i__1 = list[lp], ((i__1) >= 0 ? (i__1) : -(i__1)));
  lpo1s = lpo1;
  if (!swptst_(&in1, &kk, &io1, &io2, &x[1], &y[1], &z__[1])) {
    goto L2;
  }
  swap_(&in1, &kk, &io1, &io2, &list[1], &lptr[1], &lend[1], &lpo1);
  if (lpo1 == 0) {
    lpo1 = lpo1s;
    goto L2;
  }
  io1 = in1;
  goto L1;
L2:
  if (lpo1 == lpf || list[lpo1] < 0) {
    return 0;
  }
  io2 = io1;
  lpo1 = lptr[lpo1];
  io1 = (i__1 = list[lpo1], ((i__1) >= 0 ? (i__1) : -(i__1)));
  goto L1;
L3:
  *ier = -1;
  return 0;
L4:
  *ier = -2;
  return 0;
L5:
  *ier = l;
  return 0;
}
```