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

```asm
<add_u_v_term_2>:
  endbr64
  push   %r15
  mov    %edi,%r11d
  mov    %rdx,%rdi
  mov    %r8,%rdx
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %esi,%ebx
  mov    %rcx,%rsi
  mov    %r9,%rcx
  imul   %r11d,%ebx
  sub    $0x58,%rsp
  mov    0xc0(%rsp),%rax
  mov    0xf0(%rsp),%r11d
  movsd  %xmm1,0x8(%rsp)
  mov    0xb8(%rsp),%r10
  mov    0x90(%rsp),%r8
  movsd  %xmm2,0x10(%rsp)
  mov    %rax,0x20(%rsp)
  mov    0xc8(%rsp),%rax
  test   %r11d,%r11d
  mov    %r10,0x40(%rsp)
  mov    0x98(%rsp),%r9
  mov    %rax,0x28(%rsp)
  mov    0xd0(%rsp),%rax
  mov    0xa0(%rsp),%r12
  mov    0xa8(%rsp),%r13
  movsd  %xmm3,0x18(%rsp)
  mov    %rax,0x30(%rsp)
  mov    0xd8(%rsp),%rax
  mov    0xb0(%rsp),%r15
  mov    0xe0(%rsp),%rbp
  movsd  %xmm0,0x48(%rsp)
  mov    %rax,0x38(%rsp)
  mov    0xe8(%rsp),%r14
  jne    L57
  sub    $0x8,%rsp
  push   %r13
  push   %r12
  push   %rbx
  call   <dmat_mul_a2@plt>
  mov    0x60(%rsp),%r10
  movsd  0x68(%rsp),%xmm0
  add    $0x20,%rsp
L85:
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L92
  jne    L92
L63:
  movsd  0x8(%rsp),%xmm4
  ucomisd %xmm1,%xmm4
  jp     L74
  jne    L74
L23:
  movsd  0x10(%rsp),%xmm5
  ucomisd %xmm1,%xmm5
  jp     L67
  jne    L67
L118:
  movsd  0x18(%rsp),%xmm6
  ucomisd %xmm1,%xmm6
  jp     L40
  jne    L40
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L57:
  sub    $0x8,%rsp
  push   $0x1
  push   $0xffffffffffffffff
  push   %r13
  push   %r12
  push   %rbx
  call   <dmat_mul_a3@plt>
  add    $0x30,%rsp
  movsd  0x48(%rsp),%xmm0
  mov    0x40(%rsp),%r10
  jmp    L85
  cs nopw 0x0(%rax,%rax,1)
L92:
  sub    $0x8,%rsp
  mov    %r15,%r8
  mov    %r15,%rdi
  mov    %r10,%r9
  push   %rbx
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    %r10,%rsi
  call   <dmat_scale_add_1x2@plt>
  pop    %rdi
  pxor   %xmm1,%xmm1
  pop    %r8
  jmp    L63
  nopl   0x0(%rax,%rax,1)
L40:
  mov    %ebx,0x90(%rsp)
  mov    %r14,%r9
  mov    %rbp,%r8
  mov    %r13,%rcx
  movsd  0x18(%rsp),%xmm0
  add    $0x58,%rsp
  mov    %r12,%rdx
  mov    %r14,%rsi
  pop    %rbx
  mov    %rbp,%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1080 <dmat_scale_add_1x2@plt>
  nopw   0x0(%rax,%rax,1)
L67:
  sub    $0x8,%rsp
  mov    %r12,%rdx
  mov    %r13,%rcx
  push   %rbx
  mov    0x48(%rsp),%rsi
  mov    0x40(%rsp),%rdi
  movsd  0x20(%rsp),%xmm0
  mov    %rsi,%r9
  mov    %rdi,%r8
  call   <dmat_scale_add_1x2@plt>
  pop    %rax
  pxor   %xmm1,%xmm1
  pop    %rdx
  jmp    L118
  nopl   0x0(%rax)
L74:
  sub    $0x8,%rsp
  mov    %r13,%rcx
  mov    %r12,%rdx
  push   %rbx
  mov    0x38(%rsp),%rsi
  mov    0x30(%rsp),%rdi
  movsd  0x18(%rsp),%xmm0
  mov    %rsi,%r9
  mov    %rdi,%r8
  call   <dmat_scale_add_1x2@plt>
  pop    %rcx
  pxor   %xmm1,%xmm1
  pop    %rsi
  jmp    L23
```

assistant: ```c
void add_u_v_term_2(int n_quad, int n_stokes, double **a11, double **a12, double **b11, double **b12, double **b21, double **b22, double **c11, double **c12, double **u11, double **u12, double **v11, double **v12, double **w11, double **w12, double **x11, double **x12, double c0, double c1, double c2, double c3, int symmetric) {
  int n_quad_v;
  n_quad_v = n_quad * n_stokes;
  if (!symmetric)
    dmat_mul_a2(a11, a12, b11, b12, b21, b22, n_quad_v, c11, c12);
  else
    dmat_mul_a3(a11, a12, b11, b12, b21, b22, n_quad_v, c11, c12, -1., 1);
  if (c0 != 0.)
    dmat_scale_add_1x2(u11, u12, c11, c12, u11, u12, c0, n_quad_v);
  if (c1 != 0.)
    dmat_scale_add_1x2(v11, v12, c11, c12, v11, v12, c1, n_quad_v);
  if (c2 != 0.)
    dmat_scale_add_1x2(w11, w12, c11, c12, w11, w12, c2, n_quad_v);
  if (c3 != 0.)
    dmat_scale_add_1x2(x11, x12, c11, c12, x11, x12, c3, n_quad_v);
}
```