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

```asm
<addRow>:
  endbr64
  push   %r15
  push   %r14
  mov    %rcx,%r14
  push   %r13
  mov    %rdx,%r13
  push   %r12
  mov    %r8,%r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x28,%rsp
  mov    (%rdi),%eax
  mov    (%rsi),%ecx
  mov    0x78(%rsp),%ebp
  mov    0x90(%rsp),%r15d
  movsd  %xmm0,0x8(%rsp)
  add    $0x2,%eax
  cmp    %ecx,%eax
  jge    L10
  movslq 0x0(%r13),%rcx
  mov    (%r14),%eax
  lea    (%rcx,%rbp,1),%esi
  cmp    %eax,%esi
  jge    L31
L22:
  mov    0x60(%rsp),%rax
  mov    (%rax),%r11
L24:
  mov    (%r9),%rax
  movslq %ebp,%r14
  mov    %r11,0x18(%rsp)
  mov    0x80(%rsp),%rsi
  lea    0x0(,%r14,4),%rdx
  mov    %rcx,0x10(%rsp)
  lea    (%rax,%rcx,4),%rdi
  call   <memcpy@plt>
  mov    0x10(%rsp),%rcx
  mov    0x18(%rsp),%r11
  lea    0x0(,%r14,8),%rdx
  mov    0x88(%rsp),%rsi
  lea    (%r11,%rcx,8),%rdi
  call   <memcpy@plt>
  mov    0x68(%rsp),%rdi
  movslq (%rbx),%rax
  movsd  0x8(%rsp),%xmm1
  mov    0x98(%rsp),%r9
  mov    (%rdi),%rdx
  mov    0x70(%rsp),%rdi
  mov    0xc0(%rsp),%r8
  mov    0xa8(%rsp),%rsi
  mov    %r15b,(%rdx,%rax,1)
  movslq (%rbx),%rax
  mov    (%rdi),%rdx
  mov    0xa0(%rsp),%rdi
  movsd  %xmm1,(%rdx,%rax,8)
  mov    (%r12),%rdx
  mov    (%rdx,%rax,4),%ecx
  add    %ebp,%ecx
  mov    %ecx,0x4(%rdx,%rax,4)
  mov    0xb0(%rsp),%rcx
  xor    %eax,%eax
  add    %ebp,0x0(%r13)
  mov    0xb8(%rsp),%rdx
  call   <addName@plt>
  addl   $0x1,(%rbx)
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L10:
  mov    %rsi,%r11
  lea    0x20(%rcx),%esi
  add    %ecx,%ecx
  mov    (%r8),%rdi
  cmp    %ecx,%esi
  mov    %r9,0x18(%rsp)
  cmovl  %ecx,%esi
  xor    %eax,%eax
  mov    %r11,0x10(%rsp)
  mov    %esi,(%r11)
  add    $0x1,%esi
  movslq %esi,%rsi
  shl    $0x2,%rsi
  call   <xrealloc@plt>
  mov    0x10(%rsp),%r11
  cltq
  mov    %rax,(%r12)
  mov    0x68(%rsp),%rax
  movslq (%r11),%rsi
  mov    (%rax),%rdi
  xor    %eax,%eax
  call   <xrealloc@plt>
  mov    0x68(%rsp),%rdi
  mov    0x10(%rsp),%r11
  cltq
  mov    %rax,(%rdi)
  mov    0x70(%rsp),%rax
  movslq (%r11),%rsi
  mov    (%rax),%rdi
  xor    %eax,%eax
  shl    $0x3,%rsi
  call   <xrealloc@plt>
  mov    0x70(%rsp),%rdi
  movslq 0x0(%r13),%rcx
  cltq
  mov    0x18(%rsp),%r9
  mov    %rax,(%rdi)
  mov    (%r14),%eax
  lea    (%rcx,%rbp,1),%esi
  cmp    %eax,%esi
  jl     L22
L31:
  add    %eax,%eax
  mov    (%r9),%rdi
  mov    %r9,0x10(%rsp)
  cmp    %esi,%eax
  cmovl  %esi,%eax
  mov    %eax,(%r14)
  cltq
  lea    0x0(,%rax,4),%rsi
  xor    %eax,%eax
  call   <xrealloc@plt>
  mov    0x10(%rsp),%r9
  movslq (%r14),%rsi
  cltq
  mov    %rax,(%r9)
  mov    0x60(%rsp),%rax
  shl    $0x3,%rsi
  mov    (%rax),%rdi
  xor    %eax,%eax
  call   <xrealloc@plt>
  movslq 0x0(%r13),%rcx
  mov    0x10(%rsp),%r9
  movslq %eax,%r11
  mov    0x60(%rsp),%rax
  mov    %r11,(%rax)
  jmp    L24
```

assistant: ```c
void addRow(int *nrRows, int *nrCapRows, int *nrNz, int *nrCapNz, int **nrStart, int **nrIdx, double **nrCoef, char **nrSense, double **nrRhs, int nz, const int idx[], const double coef[], char sense, double rhs, const char *rowName, char ***rowNames, int *nrLines, int *nrCap, int *nrChars, int *nrCharsCap) {
  if ((*nrRows) + 2 >= (*nrCapRows)) {
    (*nrCapRows) = ((2 * (*nrCapRows)) > ((*nrCapRows) + 32) ? (2 * (*nrCapRows)) : ((*nrCapRows) + 32));
    (*nrStart) = xrealloc((*nrStart), sizeof(int) * ((*nrCapRows) + 1));
    (*nrSense) = xrealloc((*nrSense), sizeof(char) * ((*nrCapRows)));
    (*nrRhs) = xrealloc((*nrRhs), sizeof(double) * (*nrCapRows));
  }
  if (((*nrNz) + nz) >= (*nrCapNz)) {
    (*nrCapNz) = (((*nrCapNz) * 2) > (((*nrNz) + nz)) ? ((*nrCapNz) * 2) : (((*nrNz) + nz)));
    (*nrIdx) = xrealloc((*nrIdx), sizeof(int) * (*nrCapNz));
    (*nrCoef) = xrealloc((*nrCoef), sizeof(double) * (*nrCapNz));
  }
  int *pidx = (*nrIdx) + (*nrNz);
  double *pcoef = (*nrCoef) + (*nrNz);
  memcpy(pidx, idx, sizeof(int) * nz);
  memcpy(pcoef, coef, sizeof(double) * nz);
  (*nrSense)[(*nrRows)] = sense;
  (*nrRhs)[(*nrRows)] = rhs;
  (*nrStart)[(*nrRows) + 1] = (*nrStart)[(*nrRows)] + nz;
  (*nrNz) += nz;
  addName(rowNames, nrLines, nrChars, nrCap, nrCharsCap, rowName);
  ++(*nrRows);
}
```