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

```asm
<bmv_>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %ecx,-0x28(%rbp)
  mov    %r8,-0x40(%rbp)
  mov    %r9,-0x48(%rbp)
  mov    -0x24(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x38(%rbp)
  mov    -0x24(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x30(%rbp)
  subq   $0x8,-0x48(%rbp)
  subq   $0x8,-0x40(%rbp)
  cmpl   $0x0,-0x28(%rbp)
  jne    L10
  mov    $0x0,%eax
  jmp    L156
L10:
  mov    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x48(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x2,-0x1c(%rbp)
  jmp    L57
L96:
  mov    -0x28(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movl   $0x1,-0x18(%rbp)
  jmp    L21
L137:
  mov    -0x18(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  addl   $0x1,-0x18(%rbp)
L21:
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L137
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x1c(%rbp)
L57:
  mov    -0x1c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jle    L96
  mov    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  lea    (%rdx,%rax,1),%rdi
  mov    -0x28(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    0x10(%rbp),%r9
  mov    $0x1,%r8d
  mov    %eax,%esi
  call   <dtrsl_@plt>
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L89
  mov    $0x0,%eax
  jmp    L156
L89:
  movl   $0x1,-0x1c(%rbp)
  jmp    L152
L26:
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x50(%rbp)
  mov    -0x1c(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm1
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x1c(%rbp)
L152:
  mov    -0x1c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jle    L26
  mov    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  lea    (%rdx,%rax,1),%rdi
  mov    -0x28(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    0x10(%rbp),%r9
  mov    $0x0,%r8d
  mov    %eax,%esi
  call   <dtrsl_@plt>
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L72
  mov    $0x0,%eax
  jmp    L156
L72:
  movl   $0x1,-0x1c(%rbp)
  jmp    L106
L71:
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D6(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x1c(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm1
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x1c(%rbp)
L106:
  mov    -0x1c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jle    L71
  movl   $0x1,-0x1c(%rbp)
  jmp    L45
L163:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  jmp    L35
L59:
  mov    -0x1c(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x1c(%rbp),%eax
  imul   -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  addl   $0x1,-0x18(%rbp)
L35:
  mov    -0x18(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jle    L59
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x1c(%rbp)
L45:
  mov    -0x1c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jle    L163
  mov    $0x0,%eax
L156:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D6
data_type: f32[2]

tool: {"D6": [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;
}
```