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

```asm
<dmat_scale_add_1x2>:
  endbr64
  push   %r15
  ucomisd D11(%rip),%xmm0
  mov    %rdi,%r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,-0x38(%rsp)
  mov    %rdx,-0x30(%rsp)
  mov    %rcx,-0x28(%rsp)
  mov    %r8,-0x20(%rsp)
  mov    %r9,-0x18(%rsp)
  jp     L105
  jne    L105
  mov    0x38(%rsp),%ecx
  test   %ecx,%ecx
  jle    L114
  mov    0x38(%rsp),%eax
  mov    0x38(%rsp),%r14d
  xor    %r11d,%r11d
  sub    $0x1,%eax
  mov    %eax,-0x10(%rsp)
  mov    0x38(%rsp),%eax
  shr    %eax
  lea    -0x1(%rax),%ebx
  mov    0x38(%rsp),%eax
  add    $0x1,%rbx
  and    $0xfffffffe,%eax
  shl    $0x4,%rbx
  mov    %eax,-0xc(%rsp)
  shl    $0x3,%rax
  nopl   (%rax)
L65:
  mov    -0x18(%rsp),%rdx
  mov    -0x20(%rsp),%rsi
  mov    (%r15,%r11,8),%r8
  mov    -0x30(%rsp),%rdi
  mov    (%rdx,%r11,8),%rdx
  mov    (%rsi,%r11,8),%rcx
  lea    0x8(%r8),%r10
  mov    (%rdi,%r11,8),%r9
  mov    -0x38(%rsp),%rdi
  cmp    %r10,%rdx
  lea    0xf(%rcx),%rbp
  setne  %r12b
  cmp    %r10,%rcx
  lea    0x8(%r9),%r13
  mov    (%rdi,%r11,8),%rsi
  setne  %r10b
  mov    -0x28(%rsp),%rdi
  and    %r12d,%r10d
  cmpl   $0x1,-0x10(%rsp)
  seta   %r12b
  mov    (%rdi,%r11,8),%rdi
  and    %r10d,%r12d
  cmp    %r13,%rcx
  setne  %r10b
  and    %r12d,%r10d
  cmp    %r13,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rcx),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rsi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rdi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  mov    %rbp,%r12
  sub    %rsi,%r12
  cmp    $0x1e,%r12
  seta   %r12b
  test   %r12b,%r10b
  je     L156
  sub    %rdi,%rbp
  xor    %r10d,%r10d
  cmp    $0x1e,%rbp
  jbe    L156
  nop
L70:
  movupd (%r8,%r10,1),%xmm0
  movupd (%r9,%r10,1),%xmm3
  addpd  %xmm3,%xmm0
  movups %xmm0,(%rcx,%r10,1)
  movupd (%rsi,%r10,1),%xmm0
  movupd (%rdi,%r10,1),%xmm4
  addpd  %xmm4,%xmm0
  movups %xmm0,(%rdx,%r10,1)
  add    $0x10,%r10
  cmp    %rbx,%r10
  jne    L70
  mov    -0xc(%rsp),%r10d
  cmp    0x38(%rsp),%r10d
  je     L152
  movsd  (%r9,%rax,1),%xmm0
  addsd  (%r8,%rax,1),%xmm0
  movsd  %xmm0,(%rcx,%rax,1)
  movsd  (%rdi,%rax,1),%xmm0
  addsd  (%rsi,%rax,1),%xmm0
  movsd  %xmm0,(%rdx,%rax,1)
L152:
  add    $0x1,%r11
  cmp    %r11,%r14
  jne    L65
L114:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L105:
  ucomisd D16(%rip),%xmm0
  jp     L151
  je     L189
L151:
  mov    0x38(%rsp),%edx
  test   %edx,%edx
  jle    L114
  mov    0x38(%rsp),%eax
  movapd %xmm0,%xmm2
  mov    0x38(%rsp),%r14d
  xor    %r11d,%r11d
  unpcklpd %xmm2,%xmm2
  sub    $0x1,%eax
  mov    %eax,-0x10(%rsp)
  mov    0x38(%rsp),%eax
  shr    %eax
  lea    -0x1(%rax),%ebx
  mov    0x38(%rsp),%eax
  add    $0x1,%rbx
  and    $0xfffffffe,%eax
  shl    $0x4,%rbx
  mov    %eax,-0xc(%rsp)
  shl    $0x3,%rax
  nopl   0x0(%rax,%rax,1)
L68:
  mov    -0x30(%rsp),%rcx
  mov    (%r15,%r11,8),%r8
  mov    -0x18(%rsp),%rdx
  mov    -0x38(%rsp),%rsi
  mov    (%rcx,%r11,8),%r9
  mov    -0x20(%rsp),%rcx
  lea    0x8(%r8),%r10
  mov    (%rdx,%r11,8),%rdx
  mov    (%rsi,%r11,8),%rsi
  mov    (%rcx,%r11,8),%rcx
  lea    0x8(%r9),%r13
  mov    -0x28(%rsp),%rdi
  cmp    %r10,%rcx
  mov    (%rdi,%r11,8),%rdi
  lea    0xf(%rcx),%rbp
  setne  %r12b
  cmp    %r10,%rdx
  setne  %r10b
  and    %r12d,%r10d
  cmpl   $0x1,-0x10(%rsp)
  seta   %r12b
  and    %r10d,%r12d
  cmp    %r13,%rcx
  setne  %r10b
  and    %r12d,%r10d
  cmp    %r13,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rcx),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rsi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rdi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  mov    %rbp,%r12
  sub    %rsi,%r12
  cmp    $0x1e,%r12
  seta   %r12b
  test   %r12b,%r10b
  je     L41
  sub    %rdi,%rbp
  xor    %r10d,%r10d
  cmp    $0x1e,%rbp
  jbe    L41
  nopw   0x0(%rax,%rax,1)
L12:
  movupd (%r9,%r10,1),%xmm1
  movupd (%r8,%r10,1),%xmm7
  mulpd  %xmm2,%xmm1
  addpd  %xmm7,%xmm1
  movups %xmm1,(%rcx,%r10,1)
  movupd (%rdi,%r10,1),%xmm1
  movupd (%rsi,%r10,1),%xmm5
  mulpd  %xmm2,%xmm1
  addpd  %xmm5,%xmm1
  movups %xmm1,(%rdx,%r10,1)
  add    $0x10,%r10
  cmp    %rbx,%r10
  jne    L12
  mov    -0xc(%rsp),%r10d
  cmp    %r10d,0x38(%rsp)
  je     L235
  movsd  (%r9,%rax,1),%xmm1
  mulsd  %xmm0,%xmm1
  addsd  (%r8,%rax,1),%xmm1
  movsd  %xmm1,(%rcx,%rax,1)
  movsd  (%rdi,%rax,1),%xmm1
  mulsd  %xmm0,%xmm1
  addsd  (%rsi,%rax,1),%xmm1
  movsd  %xmm1,(%rdx,%rax,1)
L235:
  add    $0x1,%r11
  cmp    %r14,%r11
  jne    L68
  jmp    L114
  nopl   0x0(%rax)
L156:
  xor    %r10d,%r10d
  nopl   0x0(%rax,%rax,1)
L136:
  movsd  (%r9,%r10,8),%xmm0
  addsd  (%r8,%r10,8),%xmm0
  movsd  %xmm0,(%rcx,%r10,8)
  movsd  (%rdi,%r10,8),%xmm0
  addsd  (%rsi,%r10,8),%xmm0
  movsd  %xmm0,(%rdx,%r10,8)
  add    $0x1,%r10
  cmp    %r10,%r14
  jne    L136
  jmp    L152
  nopw   0x0(%rax,%rax,1)
L41:
  xor    %r10d,%r10d
  nopl   0x0(%rax,%rax,1)
L94:
  movsd  (%r9,%r10,8),%xmm1
  mulsd  %xmm0,%xmm1
  addsd  (%r8,%r10,8),%xmm1
  movsd  %xmm1,(%rcx,%r10,8)
  movsd  (%rdi,%r10,8),%xmm1
  mulsd  %xmm0,%xmm1
  addsd  (%rsi,%r10,8),%xmm1
  movsd  %xmm1,(%rdx,%r10,8)
  add    $0x1,%r10
  cmp    %r14,%r10
  jne    L94
  jmp    L235
L189:
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  jle    L114
  mov    0x38(%rsp),%eax
  mov    0x38(%rsp),%r14d
  xor    %r11d,%r11d
  sub    $0x1,%eax
  mov    %eax,-0x10(%rsp)
  mov    0x38(%rsp),%eax
  shr    %eax
  lea    -0x1(%rax),%ebx
  mov    0x38(%rsp),%eax
  add    $0x1,%rbx
  and    $0xfffffffe,%eax
  shl    $0x4,%rbx
  mov    %eax,-0xc(%rsp)
  shl    $0x3,%rax
  nopl   0x0(%rax)
L264:
  mov    -0x30(%rsp),%rsi
  mov    (%r15,%r11,8),%r8
  mov    -0x18(%rsp),%rdx
  mov    -0x28(%rsp),%rdi
  mov    (%rsi,%r11,8),%r9
  mov    -0x20(%rsp),%rsi
  lea    0x8(%r8),%r10
  mov    (%rdx,%r11,8),%rdx
  mov    (%rdi,%r11,8),%rdi
  mov    (%rsi,%r11,8),%rcx
  lea    0x8(%r9),%r13
  mov    -0x38(%rsp),%rsi
  cmp    %r10,%rcx
  mov    (%rsi,%r11,8),%rsi
  lea    0xf(%rcx),%rbp
  setne  %r12b
  cmp    %r10,%rdx
  setne  %r10b
  and    %r12d,%r10d
  cmpl   $0x1,-0x10(%rsp)
  seta   %r12b
  and    %r10d,%r12d
  cmp    %r13,%rcx
  setne  %r10b
  and    %r12d,%r10d
  cmp    %r13,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rcx),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rsi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  lea    0x8(%rdi),%r12
  cmp    %r12,%rdx
  setne  %r12b
  and    %r12d,%r10d
  mov    %rbp,%r12
  sub    %rsi,%r12
  cmp    $0x1e,%r12
  seta   %r12b
  test   %r12b,%r10b
  je     L117
  sub    %rdi,%rbp
  xor    %r10d,%r10d
  cmp    $0x1e,%rbp
  jbe    L117
  nopl   0x0(%rax,%rax,1)
L296:
  movupd (%r8,%r10,1),%xmm0
  movupd (%r9,%r10,1),%xmm5
  subpd  %xmm5,%xmm0
  movups %xmm0,(%rcx,%r10,1)
  movupd (%rsi,%r10,1),%xmm0
  movupd (%rdi,%r10,1),%xmm6
  subpd  %xmm6,%xmm0
  movups %xmm0,(%rdx,%r10,1)
  add    $0x10,%r10
  cmp    %rbx,%r10
  jne    L296
  mov    -0xc(%rsp),%r10d
  cmp    %r10d,0x38(%rsp)
  je     L163
  movsd  (%r8,%rax,1),%xmm0
  subsd  (%r9,%rax,1),%xmm0
  movsd  %xmm0,(%rcx,%rax,1)
  movsd  (%rsi,%rax,1),%xmm0
  subsd  (%rdi,%rax,1),%xmm0
  movsd  %xmm0,(%rdx,%rax,1)
L163:
  add    $0x1,%r11
  cmp    %r11,%r14
  jne    L264
  jmp    L114
  nopl   0x0(%rax)
L117:
  xor    %r10d,%r10d
  nopl   0x0(%rax,%rax,1)
L259:
  movsd  (%r8,%r10,8),%xmm0
  subsd  (%r9,%r10,8),%xmm0
  movsd  %xmm0,(%rcx,%r10,8)
  movsd  (%rsi,%r10,8),%xmm0
  subsd  (%rdi,%r10,8),%xmm0
  movsd  %xmm0,(%rdx,%r10,8)
  add    $0x1,%r10
  cmp    %r14,%r10
  jne    L259
  jmp    L163
```

tool_calls: name: read_data
arguments: tag: D11
type_guessed: f64
name: read_data
arguments: tag: D16
type_guessed: byte[8]

tool: D11: 1

tool: {"D16": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

assistant: ```c
void dmat_scale_add_1x2(double **a11, double **a12, double **b11, double **b12, double **P11, double **P12, double alpha, int n) {
  int i;
  int j;
  if (alpha == 1.) {
    for (i = 0; i < n; ++i) {
      for (j = 0; j < n; ++j) {
        P11[i][j] = a11[i][j] + b11[i][j];
        P12[i][j] = a12[i][j] + b12[i][j];
      }
    }
  } else if (alpha == -1.) {
    for (i = 0; i < n; ++i) {
      for (j = 0; j < n; ++j) {
        P11[i][j] = a11[i][j] - b11[i][j];
        P12[i][j] = a12[i][j] - b12[i][j];
      }
    }
  } else {
    for (i = 0; i < n; ++i) {
      for (j = 0; j < n; ++j) {
        P11[i][j] = a11[i][j] + b11[i][j] * alpha;
        P12[i][j] = a12[i][j] + b12[i][j] * alpha;
      }
    }
  }
}
```