user: Demonstrate the C code that generates the assembly output below:

```asm
<add_u_v_term_2>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %edi,%r13d
  mov    %esi,%eax
  mov    %rdx,%rdi
  mov    %rcx,%rsi
  mov    %r8,%rdx
  mov    %r9,%rcx
  mov    0x60(%rsp),%r14
  mov    0x68(%rsp),%r15
  movq   %xmm0,%r12
  movq   %xmm1,%rbp
  movsd  %xmm2,0x8(%rsp)
  movq   %xmm3,%rbx
  imul   %eax,%r13d
  cmpl   $0x0,0xb0(%rsp)
  jne    L104
  sub    $0x8,%rsp
  push   %r15
  push   %r14
  push   %r13
  mov    0x78(%rsp),%r9
  mov    0x70(%rsp),%r8
  call   <dmat_mul_a2@plt>
  add    $0x20,%rsp
L91:
  movq   %r12,%xmm5
  ucomisd D19(%rip),%xmm5
  jp     L136
  jne    L136
L33:
  movq   %rbp,%xmm6
  ucomisd D19(%rip),%xmm6
  jp     L132
  jne    L132
L34:
  movsd  0x8(%rsp),%xmm4
  ucomisd D19(%rip),%xmm4
  jp     L100
  jne    L100
L9:
  movq   %rbx,%xmm7
  ucomisd D19(%rip),%xmm7
  jp     L1
  jne    L1
L66:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L104:
  sub    $0x8,%rsp
  push   $0x1
  push   $0xffffffffffffffff
  push   %r15
  push   %r14
  push   %r13
  mov    0x88(%rsp),%r9
  mov    0x80(%rsp),%r8
  call   <dmat_mul_a3@plt>
  add    $0x30,%rsp
  jmp    L91
L136:
  sub    $0x8,%rsp
  push   %r13
  movq   %r12,%xmm0
  mov    0x88(%rsp),%r9
  mov    0x80(%rsp),%r8
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    %r9,%rsi
  mov    %r8,%rdi
  call   <dmat_scale_add_1x2@plt>
  add    $0x10,%rsp
  jmp    L33
L132:
  sub    $0x8,%rsp
  push   %r13
  movq   %rbp,%xmm0
  mov    0x98(%rsp),%r9
  mov    0x90(%rsp),%r8
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    %r9,%rsi
  mov    %r8,%rdi
  call   <dmat_scale_add_1x2@plt>
  add    $0x10,%rsp
  jmp    L34
L100:
  sub    $0x8,%rsp
  push   %r13
  movsd  0x18(%rsp),%xmm0
  mov    0xa8(%rsp),%r9
  mov    0xa0(%rsp),%r8
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    %r9,%rsi
  mov    %r8,%rdi
  call   <dmat_scale_add_1x2@plt>
  add    $0x10,%rsp
  jmp    L9
L1:
  sub    $0x8,%rsp
  push   %r13
  movq   %rbx,%xmm0
  mov    0xb8(%rsp),%r9
  mov    0xb0(%rsp),%r8
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    %r9,%rsi
  mov    %r8,%rdi
  call   <dmat_scale_add_1x2@plt>
  add    $0x10,%rsp
  jmp    L66
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D19
type_infered: f64

tool: D19: 0

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