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

```asm
<ldumat>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  mov    %edx,%edi
  push   %r14
  mov    %edx,%r14d
  push   %r13
  mov    %rsi,%r13
  mov    $0x8,%esi
  push   %r12
  mov    %r14d,%r12d
  push   %rbp
  imul   %r14d,%r12d
  push   %rbx
  mov    %ecx,%ebx
  sub    $0x58,%rsp
  call   <calloc@plt>
  mov    %rax,%rbp
  test   %r12d,%r12d
  je     L314
  movslq %r12d,%r12
  xor    %esi,%esi
  mov    %r13,%rdi
  lea    0x0(,%r12,8),%rdx
  call   <memset@plt>
L213:
  mov    %ebx,%eax
  lea    -0x8(%r13,%r12,8),%rcx
  lea    -0x1(%rbx),%r8d
  mov    %r14d,%esi
  imul   %ebx,%eax
  sub    %ebx,%esi
  cltq
  lea    -0x8(%r15,%rax,8),%r10
  test   %esi,%esi
  jle    L140
  movslq %r14d,%rax
  mov    $0xfffffffffffffff8,%rdi
  movsd  D22(%rip),%xmm3
  mov    %rcx,%rdx
  shl    $0x3,%rax
  sub    %rax,%rdi
  xor    %eax,%eax
  nopl   0x0(%rax)
L455:
  add    $0x1,%eax
  movsd  %xmm3,(%rdx)
  add    %rdi,%rdx
  cmp    %eax,%esi
  jne    L455
  movslq %esi,%rax
  imul   %rdi,%rax
  add    %rax,%rcx
L180:
  test   %r8d,%r8d
  js     L131
  movslq %ebx,%rdi
  mov    $0xfffffffffffffff8,%rdx
  movslq %r14d,%r12
  shl    $0x3,%rdi
  mov    %rdx,%r15
  lea    0x0(,%r12,8),%rax
  sub    %rdi,%r15
  sub    %rax,%rdx
  cmp    $0x1,%ebx
  mov    %r15,0x8(%rsp)
  lea    0x1(%r8),%ebx
  mov    %rdx,%r15
  jne    L218
  cmp    $0x1,%r14d
  jne    L218
  lea    0x8(%rbp),%rdx
  mov    %ebx,0x10(%rsp)
  lea    (%rcx,%rax,1),%r14
  shl    $0x4,%r12
  mov    %rdx,0x20(%rsp)
  lea    0x7(%rbp),%rdx
  lea    -0x1(%rsi),%ebx
  pxor   %xmm4,%xmm4
  mov    %rdx,0x28(%rsp)
  lea    0x10(%rbp),%rdx
  movsd  D22(%rip),%xmm3
  mov    %rdx,0x30(%rsp)
  movq   D32(%rip),%xmm5
  nopl   0x0(%rax,%rax,1)
L116:
  movsd  (%r10),%xmm0
  lea    0x8(%rcx),%rdx
  ucomisd %xmm4,%xmm0
  jp     L401
  je     L372
L401:
  lea    (%r10,%rdi,1),%r11
  test   %esi,%esi
  jle    L243
  mov    0x20(%rsp),%r9
  mov    %ebx,%r8d
  mov    %rbp,%rdx
  lea    (%r9,%r8,8),%r9
  mov    %rbp,%r8
  nopl   0x0(%rax,%rax,1)
L244:
  movsd  (%r11),%xmm0
  add    $0x8,%r8
  add    %rdi,%r11
  movsd  %xmm0,-0x8(%r8)
  cmp    %r8,%r9
  jne    L244
  movslq %esi,%r13
  mov    %rax,%r11
  mov    %r9,0x18(%rsp)
  mov    0x28(%rsp),%r9
  sub    $0x1,%r13
  movsd  (%r10),%xmm0
  movapd %xmm3,%xmm1
  lea    (%rcx,%rax,1),%r8
  imul   %r13,%r11
  lea    (%r9,%r13,8),%r9
  xor    %r13d,%r13d
  test   %rax,%rax
  subsd  %xmm0,%xmm1
  cmovs  %r11,%r13
  movsd  %xmm1,(%rcx)
  movapd %xmm0,%xmm1
  add    %rax,%r13
  xorpd  %xmm5,%xmm1
  add    %rcx,%r13
  cmp    %r13,%r9
  mov    $0x7,%r9d
  setb   %r13b
  add    $0x7,%r11
  test   %rax,%rax
  cmovs  %r9,%r11
  add    %rax,%r11
  add    %rcx,%r11
  cmp    %r11,%rbp
  seta   %r11b
  or     %r13b,%r11b
  je     L264
  cmp    $0x8,%ebx
  jbe    L264
  mov    %esi,%r9d
  movapd %xmm1,%xmm2
  shr    %r9d
  unpcklpd %xmm2,%xmm2
  lea    -0x1(%r9),%r11d
  mov    %r14,%r9
  shl    $0x4,%r11
  add    0x30(%rsp),%r11
  nopl   (%rax)
L373:
  movupd (%rdx),%xmm0
  add    $0x10,%rdx
  mulpd  %xmm2,%xmm0
  movlpd %xmm0,(%r9)
  movhpd %xmm0,(%r9,%rax,1)
  add    %r12,%r9
  cmp    %r11,%rdx
  jne    L373
  mov    %esi,%r9d
  and    $0xfffffffe,%r9d
  mov    %r9d,%edx
  mov    %rdx,%r11
  imul   %rax,%r11
  add    %r11,%r8
  cmp    %esi,%r9d
  je     L27
  mulsd  0x0(%rbp,%rdx,8),%xmm1
  movsd  %xmm1,(%r8)
L27:
  add    $0x1,%esi
  add    0x8(%rsp),%r10
  add    %r15,%rcx
  add    $0x1,%ebx
  add    %r15,%r14
  subl   $0x1,0x10(%rsp)
  jne    L116
L131:
  add    $0x58,%rsp
  mov    %rbp,%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <free@plt>
  nopl   (%rax)
L372:
  movsd  %xmm3,(%rcx)
  lea    (%rax,%rcx,1),%r8
  test   %esi,%esi
  jle    L27
  mov    %ebx,%r9d
  lea    0x10(%rcx,%r9,8),%r9
  nopl   0x0(%rax)
L320:
  add    $0x8,%rdx
  movq   $0x0,-0x8(%rdx)
  movq   $0x0,(%r8)
  add    %rax,%r8
  cmp    %rdx,%r9
  jne    L320
  jmp    L27
L264:
  mov    0x18(%rsp),%r9
  nopw   0x0(%rax,%rax,1)
L162:
  movsd  (%rdx),%xmm0
  add    $0x8,%rdx
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%r8)
  add    %rax,%r8
  cmp    %rdx,%r9
  jne    L162
  jmp    L27
L140:
  jne    L180
  mov    $0xfffffffffffffff8,%rax
  movslq %ebx,%rdx
  lea    -0x2(%rbx),%r8d
  shl    $0x3,%rdx
  mov    %rax,%rsi
  sub    %rdx,%rsi
  movslq %r14d,%rdx
  add    %rsi,%r10
  shl    $0x3,%rdx
  mov    D22(%rip),%rsi
  sub    %rdx,%rax
  mov    %rsi,(%rcx)
  add    %rax,%rcx
  mov    $0x1,%esi
  jmp    L180
L243:
  movapd %xmm3,%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rcx)
  jmp    L27
L218:
  lea    (%rcx,%rax,1),%rdx
  shl    $0x4,%r12
  movq   D32(%rip),%xmm5
  movsd  D22(%rip),%xmm3
  mov    %rdx,0x18(%rsp)
  lea    -0x1(%r14),%edx
  lea    -0x1(%rsi),%r13d
  pxor   %xmm4,%xmm4
  mov    %edx,0x28(%rsp)
  lea    0x8(%rbp),%rdx
  movapd %xmm5,%xmm6
  mov    %rdx,0x20(%rsp)
  lea    0x7(%rbp),%rdx
  mov    %rdx,0x30(%rsp)
  lea    0x10(%rbp),%rdx
  mov    %r12,0x40(%rsp)
  mov    %rdx,0x48(%rsp)
  mov    %r14d,0x3c(%rsp)
  mov    %ebx,%r14d
L339:
  movsd  (%r10),%xmm7
  lea    0x8(%rcx),%rdx
  ucomisd %xmm4,%xmm7
  jp     L253
  je     L434
L253:
  lea    (%r10,%rdi,1),%rbx
  test   %esi,%esi
  jle    L12
  mov    0x20(%rsp),%r11
  mov    %r13d,%r9d
  mov    %rbp,%r8
  lea    (%r11,%r9,8),%r9
  mov    %rbp,%r11
  nopl   (%rax)
L33:
  movsd  (%rbx),%xmm0
  add    $0x8,%r11
  add    %rdi,%rbx
  movsd  %xmm0,-0x8(%r11)
  cmp    %r9,%r11
  jne    L33
  movslq %esi,%r12
  lea    (%rcx,%rax,1),%rbx
  mov    %rax,%r11
  movsd  (%r10),%xmm7
  sub    $0x1,%r12
  mov    %rbx,0x10(%rsp)
  mov    0x30(%rsp),%rbx
  movapd %xmm3,%xmm0
  imul   %r12,%r11
  subsd  %xmm7,%xmm0
  movapd %xmm7,%xmm1
  lea    (%rbx,%r12,8),%rbx
  xor    %r12d,%r12d
  xorpd  %xmm6,%xmm1
  test   %rax,%rax
  cmovs  %r11,%r12
  movsd  %xmm0,(%rcx)
  add    %rax,%r12
  add    %rcx,%r12
  cmp    %r12,%rbx
  mov    $0x7,%ebx
  setb   %r12b
  add    $0x7,%r11
  test   %rax,%rax
  cmovs  %rbx,%r11
  add    %rax,%r11
  add    %rcx,%r11
  cmp    %r11,%rbp
  seta   %r11b
  or     %r12b,%r11b
  je     L304
  cmp    $0x8,%r13d
  jbe    L304
  mov    %esi,%r9d
  movapd %xmm1,%xmm2
  mov    0x10(%rsp),%rbx
  mov    0x40(%rsp),%r12
  shr    %r9d
  unpcklpd %xmm2,%xmm2
  lea    -0x1(%r9),%r11d
  mov    0x18(%rsp),%r9
  shl    $0x4,%r11
  add    0x48(%rsp),%r11
  nopl   0x0(%rax,%rax,1)
L441:
  movupd (%r8),%xmm0
  add    $0x10,%r8
  mulpd  %xmm2,%xmm0
  movlpd %xmm0,(%r9)
  movhpd %xmm0,(%r9,%rax,1)
  add    %r12,%r9
  cmp    %r11,%r8
  jne    L441
  mov    %esi,%r11d
  mov    %rbx,0x10(%rsp)
  and    $0xfffffffe,%r11d
  mov    %r11d,%r9d
  mov    %r9,%r8
  imul   %rax,%r8
  add    %rbx,%r8
  cmp    %esi,%r11d
  je     L395
  mulsd  0x0(%rbp,%r9,8),%xmm1
  movsd  %xmm1,(%r8)
L395:
  cmp    %r14d,0x3c(%rsp)
  jle    L410
  mov    0x28(%rsp),%r8d
  mov    0x20(%rsp),%rbx
  sub    %r14d,%r8d
  lea    0x10(%rcx,%r8,8),%r12
  mov    %r13d,%r8d
  lea    (%rbx,%r8,8),%rbx
  xchg   %ax,%ax
L71:
  lea    (%rdx,%rax,1),%r8
  test   %esi,%esi
  jle    L375
  mov    %rbp,%r9
  mov    %r8,%r11
  movapd %xmm4,%xmm1
  cs nopw 0x0(%rax,%rax,1)
L446:
  movsd  (%r9),%xmm0
  mulsd  (%r11),%xmm0
  add    $0x8,%r9
  add    %rax,%r11
  addsd  %xmm0,%xmm1
  cmp    %rbx,%r9
  jne    L446
  mulsd  %xmm7,%xmm1
  mov    %rbp,%r9
  nopl   0x0(%rax)
L406:
  movsd  (%r9),%xmm2
  movsd  (%r8),%xmm0
  add    $0x8,%r9
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%r8)
  add    %rax,%r8
  cmp    %rbx,%r9
  jne    L406
L242:
  add    $0x8,%rdx
  xorpd  %xmm5,%xmm1
  movsd  %xmm1,-0x8(%rdx)
  cmp    %r12,%rdx
  jne    L71
L410:
  add    %r15,0x18(%rsp)
  add    $0x1,%esi
  add    0x8(%rsp),%r10
  add    %r15,%rcx
  add    $0x1,%r13d
  sub    $0x1,%r14d
  jne    L339
  jmp    L131
L434:
  movsd  %xmm3,(%rcx)
  lea    (%rax,%rcx,1),%r8
  test   %esi,%esi
  jle    L410
  mov    %r13d,%r9d
  lea    0x10(%rcx,%r9,8),%r9
  nopl   0x0(%rax)
L151:
  add    $0x8,%rdx
  movq   $0x0,-0x8(%rdx)
  movq   $0x0,(%r8)
  add    %rax,%r8
  cmp    %r9,%rdx
  jne    L151
  jmp    L410
L375:
  movapd %xmm7,%xmm1
  mulsd  %xmm4,%xmm1
  jmp    L242
L304:
  mov    0x10(%rsp),%rbx
L49:
  movsd  (%r8),%xmm0
  add    $0x8,%r8
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rbx)
  add    %rax,%rbx
  cmp    %r9,%r8
  jne    L49
  jmp    L395
L314:
  xor    %r12d,%r12d
  jmp    L213
L12:
  movapd %xmm3,%xmm0
  subsd  %xmm7,%xmm0
  movsd  %xmm0,(%rcx)
  jmp    L395
```

tool_calls: name: read_data
arguments: label: D22
datatype: f64
name: read_data
arguments: label: D32
datatype: f32[2]

tool: D22: 1

tool: {"D32": [0.0,-0.0]}

assistant: ```c
void ldumat(double *a, double *u, int m, int n) {
  double *p0, *q0, *p, *q, *w;
  int i, j, k, mm;
  double s, h;
  w = (double *)calloc(m, sizeof(double));
  for (i = 0, mm = m * m, q = u; i < mm; ++i)
    *q++ = 0.;
  p0 = a + n * n - 1;
  q0 = u + m * m - 1;
  mm = m - n;
  i = n - 1;
  for (j = 0; j < mm; ++j, q0 -= m + 1)
    *q0 = 1.;
  if (mm == 0) {
    p0 -= n + 1;
    *q0 = 1.;
    q0 -= m + 1;
    --i;
    ++mm;
  }
  for (; i >= 0; --i, ++mm, p0 -= n + 1, q0 -= m + 1) {
    if (*p0 != 0.) {
      for (j = 0, p = p0 + n, h = 1.; j < mm; p += n)
        w[j++] = *p;
      h = *p0;
      *q0 = 1. - h;
      for (j = 0, q = q0 + m; j < mm; q += m)
        *q = -h * w[j++];
      for (k = i + 1, q = q0 + 1; k < m; ++k) {
        for (j = 0, p = q + m, s = 0.; j < mm; p += m)
          s += w[j++] * *p;
        s *= h;
        for (j = 0, p = q + m; j < mm; p += m)
          *p -= s * w[j++];
        *q++ = -s;
      }
    } else {
      *q0 = 1.;
      for (j = 0, p = q0 + 1, q = q0 + m; j < mm; ++j, q += m)
        *q = *p++ = 0.;
    }
  }
  free(w);
}
```