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

```asm
<bmv_>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  movslq %ecx,%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %edi,0x8(%rsp)
  mov    %rsi,0x20(%rsp)
  mov    %rdx,0x10(%rsp)
  test   %r13d,%r13d
  je     L48
  movslq %r13d,%r10
  lea    -0x8(%r9),%rax
  lea    0x1(%rdi),%ebx
  mov    %r8,%r12
  lea    0x8(,%r10,8),%rcx
  mov    %rax,0x38(%rsp)
  movslq %ebx,%rbx
  mov    %r9,%rbp
  movsd  -0x8(%r8,%rcx,1),%xmm0
  add    %rcx,%rax
  mov    %rcx,0x30(%rsp)
  shl    $0x3,%rbx
  mov    %rax,0x18(%rsp)
  movsd  %xmm0,(%rax)
  cmp    $0x1,%r13d
  jle    L108
  lea    0x8(%rsi),%r9
  lea    0x1(%r13),%r15d
  pxor   %xmm3,%xmm3
  mov    %rsi,%rax
  lea    -0x8(%rbx),%rdi
  lea    0x8(%r8),%rsi
  mov    $0x2,%r8d
  lea    -0x8(%rax),%r14
  lea    -0x8(%rbp,%rcx,1),%r11
  nopl   0x0(%rax,%rax,1)
L144:
  mov    %r14,%rcx
  mov    %r12,%rax
  movapd %xmm3,%xmm1
  mov    %r9,%rdx
  nopl   (%rax)
L110:
  movsd  (%rdx),%xmm0
  mulsd  (%rax),%xmm0
  add    $0x8,%rax
  add    %rdi,%rdx
  divsd  0x8(%rcx),%xmm0
  add    %rbx,%rcx
  addsd  %xmm0,%xmm1
  cmp    %rax,%rsi
  jne    L110
  addsd  (%rsi,%r10,8),%xmm1
  add    $0x8,%r9
  add    $0x8,%rsi
  movsd  %xmm1,-0x8(%r11,%r8,8)
  add    $0x1,%r8
  cmp    %r15,%r8
  jne    L144
  mov    0x90(%rsp),%r9
  mov    0x18(%rsp),%rcx
  mov    %r13d,%edx
  mov    $0x1,%r8d
  mov    0x8(%rsp),%esi
  mov    0x10(%rsp),%rdi
  movsd  %xmm3,0x28(%rsp)
  call   <dtrsl_@plt>
  mov    0x90(%rsp),%rax
  movsd  0x28(%rsp),%xmm3
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L48
L83:
  mov    0x20(%rsp),%rax
  mov    $0x1,%r15d
  mov    %rax,%r14
  xchg   %ax,%ax
L57:
  movsd  (%rax),%xmm0
  movsd  -0x8(%r12,%r15,8),%xmm1
  ucomisd %xmm0,%xmm3
  ja     L7
  sqrtsd %xmm0,%xmm0
L10:
  divsd  %xmm0,%xmm1
  add    %rbx,%rax
  movsd  %xmm1,-0x8(%rbp,%r15,8)
  add    $0x1,%r15
  cmp    %r15d,%r13d
  jge    L57
  mov    0x18(%rsp),%rcx
  mov    0x8(%rsp),%esi
  mov    %r13d,%edx
  xor    %r8d,%r8d
  mov    0x90(%rsp),%r9
  mov    0x10(%rsp),%rdi
  movsd  %xmm3,0x28(%rsp)
  call   <dtrsl_@plt>
  mov    0x90(%rsp),%rax
  mov    (%rax),%edx
  test   %edx,%edx
  jne    L48
  movq   D1(%rip),%xmm4
  movsd  0x28(%rsp),%xmm3
  mov    $0x1,%r12d
  nopl   (%rax)
L185:
  movsd  (%r14),%xmm2
  movsd  -0x8(%rbp,%r12,8),%xmm0
  ucomisd %xmm2,%xmm3
  movapd %xmm0,%xmm1
  xorpd  %xmm4,%xmm1
  ja     L52
  sqrtsd %xmm2,%xmm2
L116:
  divsd  %xmm2,%xmm1
  add    %rbx,%r14
  movsd  %xmm1,-0x8(%rbp,%r12,8)
  add    $0x1,%r12
  cmp    %r12d,%r13d
  jge    L185
  mov    0x20(%rsp),%rdx
  mov    0x30(%rsp),%rax
  mov    $0x2,%esi
  lea    -0x8(%rbx),%r8
  sub    $0x8,%rdx
  lea    -0x8(%rbp,%rax,1),%rcx
  mov    %rdx,%rdi
  cmp    %esi,%r13d
  jl     L60
  nopl   (%rax)
L62:
  movsd  0x8(%rdi),%xmm2
  mov    %rsi,%rax
  movapd %xmm3,%xmm1
  nopl   0x0(%rax)
L44:
  movsd  (%rdx,%rax,8),%xmm0
  mulsd  -0x8(%rcx,%rax,8),%xmm0
  add    $0x1,%rax
  divsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %eax,%r13d
  jge    L44
  addsd  -0x10(%rbp,%rsi,8),%xmm1
  add    %r8,%rdx
  add    %rbx,%rdi
  movsd  %xmm1,-0x10(%rbp,%rsi,8)
  add    $0x1,%rsi
  cmp    %esi,%r13d
  jge    L62
L60:
  test   %r13d,%r13d
  mov    $0x1,%eax
  mov    0x38(%rsp),%rdi
  cmovg  %r13,%rax
  lea    (%rdi,%rax,8),%rax
  addsd  (%rax),%xmm3
  movsd  %xmm3,(%rax)
L48:
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L108:
  mov    0x18(%rsp),%rcx
  mov    0x90(%rsp),%r9
  mov    %r13d,%edx
  mov    $0x1,%r8d
  mov    0x8(%rsp),%esi
  mov    0x10(%rsp),%rdi
  call   <dtrsl_@plt>
  mov    0x90(%rsp),%rax
  mov    (%rax),%ecx
  test   %ecx,%ecx
  jne    L48
  cmp    $0x1,%r13d
  je     L151
  mov    0x18(%rsp),%rcx
  mov    0x8(%rsp),%esi
  xor    %r8d,%r8d
  mov    %r13d,%edx
  mov    0x90(%rsp),%r9
  mov    0x10(%rsp),%rdi
  call   <dtrsl_@plt>
  jmp    L48
L7:
  mov    %rax,0x40(%rsp)
  movsd  %xmm3,0x48(%rsp)
  movsd  %xmm1,0x28(%rsp)
  call   <sqrt@plt>
  movsd  0x48(%rsp),%xmm3
  mov    0x40(%rsp),%rax
  movsd  0x28(%rsp),%xmm1
  jmp    L10
L52:
  movapd %xmm2,%xmm0
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x10(%rsp),%xmm3
  movq   D1(%rip),%xmm4
  movsd  0x8(%rsp),%xmm1
  movapd %xmm0,%xmm2
  jmp    L116
L151:
  pxor   %xmm3,%xmm3
  jmp    L83
```

tool_calls: name: unpack_data
arguments: data_label: D1
type_guessed: f32[2]

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

assistant: ```c
int bmv_(int m, double *sy, double *wt, int col, double *v, double *p, int *info) {
  int sy_offset, wt_offset;
  int i, k, icol;
  double sum;
  wt_offset = 1 + m;
  wt -= wt_offset;
  sy_offset = 1 + m;
  sy -= sy_offset;
  --p;
  --v;
  if (col == 0) {
    return 0;
  }
  p[col + 1] = v[col + 1];
  for (i = 2; i <= col; ++i) {
    icol = col + i;
    sum = 0.0;
    for (k = 1; k < i; ++k) {
      sum += sy[i + k * m] * v[k] / sy[k + k * m];
    }
    p[icol] = v[icol] + sum;
  }
  dtrsl_(&wt[wt_offset], m, col, &p[col + 1], 1, info);
  if (*info != 0) {
    return 0;
  }
  for (i = 1; i <= col; ++i) {
    p[i] = v[i] / sqrt(sy[i + i * m]);
  }
  dtrsl_(&wt[wt_offset], m, col, &p[col + 1], 0, info);
  if (*info != 0) {
    return 0;
  }
  for (i = 1; i <= col; ++i) {
    p[i] = -p[i] / sqrt(sy[i + i * m]);
  }
  for (i = 1; i <= col; ++i) {
    sum = 0.0;
    for (k = i + 1; k <= col; ++k) {
      sum += sy[k + i * m] * p[col + k] / sy[i + i * m];
    }
    p[i] += sum;
  }
  return 0;
}
```