user: What would the C source look like for the assembly code provided here?

```asm
<addRow>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  mov    0x40(%rbp),%eax
  movsd  %xmm0,-0x50(%rbp)
  mov    %al,-0x44(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  lea    0x2(%rax),%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L14
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  lea    0x20(%rax),%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%eax
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xrealloc@plt>
  cltq
  mov    %rax,%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xrealloc@plt>
  cltq
  mov    %rax,%rdx
  mov    0x18(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xrealloc@plt>
  cltq
  mov    %rax,%rdx
  mov    0x20(%rbp),%rax
  mov    %rdx,(%rax)
L14:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L13
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%eax
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xrealloc@plt>
  cltq
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xrealloc@plt>
  cltq
  mov    %rax,%rdx
  mov    0x10(%rbp),%rax
  mov    %rdx,(%rax)
L13:
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    0x10(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x30(%rbp),%rcx
  mov    -0x10(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  mov    0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  mov    0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cltq
  add    %rax,%rdx
  movzbl -0x44(%rbp),%eax
  mov    %al,(%rdx)
  mov    0x20(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cltq
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    0x28(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,(%rax)
  mov    0x48(%rbp),%r8
  mov    0x70(%rbp),%rdi
  mov    0x60(%rbp),%rcx
  mov    0x68(%rbp),%rdx
  mov    0x58(%rbp),%rsi
  mov    0x50(%rbp),%rax
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <addName@plt>
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  nop
  leave
  ret
```

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);
}
```