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

```asm
<do_linear_regress>:
  endbr64
  push   %rbx
  mov    %esi,%ecx
  mov    %rdx,%rbx
  test   %esi,%esi
  jle    L51
  lea    -0x1(%rsi),%eax
  cmp    $0x2,%eax
  jbe    L82
  mov    %esi,%edx
  pxor   %xmm5,%xmm5
  mov    %rdi,%rax
  movdqa D11(%rip),%xmm6
  movaps %xmm5,%xmm4
  shr    $0x2,%edx
  movaps %xmm5,%xmm0
  movaps %xmm5,%xmm9
  sub    $0x1,%edx
  movdqa D17(%rip),%xmm7
  movaps %xmm5,%xmm8
  shl    $0x4,%rdx
  lea    0x10(%rdi,%rdx,1),%rdx
  nopl   0x0(%rax)
L15:
  movdqa %xmm6,%xmm3
  add    $0x10,%rax
  paddd  %xmm7,%xmm6
  cvtdq2ps %xmm3,%xmm10
  movaps %xmm10,%xmm2
  movaps %xmm10,%xmm1
  addss  %xmm4,%xmm2
  shufps $0x55,%xmm10,%xmm1
  movaps %xmm10,%xmm4
  unpckhps %xmm10,%xmm4
  addss  %xmm2,%xmm1
  addss  %xmm1,%xmm4
  movaps %xmm10,%xmm1
  shufps $0xff,%xmm10,%xmm1
  addss  %xmm1,%xmm4
  movups -0x10(%rax),%xmm1
  movaps %xmm1,%xmm2
  addss  %xmm5,%xmm2
  movaps %xmm1,%xmm5
  shufps $0x55,%xmm1,%xmm5
  addss  %xmm5,%xmm2
  movaps %xmm1,%xmm5
  unpckhps %xmm1,%xmm5
  addss  %xmm5,%xmm2
  movaps %xmm1,%xmm5
  shufps $0xff,%xmm1,%xmm5
  addss  %xmm2,%xmm5
  movdqa %xmm3,%xmm2
  pmuludq %xmm3,%xmm2
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm3
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm3,%xmm3
  punpckldq %xmm3,%xmm2
  cvtdq2ps %xmm2,%xmm2
  movaps %xmm2,%xmm3
  addss  %xmm8,%xmm3
  movaps %xmm2,%xmm8
  shufps $0x55,%xmm2,%xmm8
  addss  %xmm8,%xmm3
  movaps %xmm2,%xmm8
  unpckhps %xmm2,%xmm8
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm8,%xmm3
  addss  %xmm2,%xmm3
  movaps %xmm3,%xmm8
  movaps %xmm1,%xmm3
  mulps  %xmm1,%xmm3
  mulps  %xmm10,%xmm1
  movaps %xmm3,%xmm2
  addss  %xmm9,%xmm2
  movaps %xmm3,%xmm9
  addss  %xmm1,%xmm0
  shufps $0x55,%xmm3,%xmm9
  addss  %xmm9,%xmm2
  movaps %xmm3,%xmm9
  unpckhps %xmm3,%xmm9
  shufps $0xff,%xmm3,%xmm3
  addss  %xmm9,%xmm2
  addss  %xmm3,%xmm2
  movaps %xmm2,%xmm9
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    %rdx,%rax
  jne    L15
  mov    %ecx,%eax
  and    $0xfffffffc,%eax
  test   $0x3,%cl
  je     L57
L73:
  movslq %eax,%rdx
  pxor   %xmm3,%xmm3
  pxor   %xmm1,%xmm1
  movss  (%rdi,%rdx,4),%xmm2
  cvtsi2ss %eax,%xmm1
  lea    0x0(,%rdx,4),%rsi
  mov    %eax,%edx
  imul   %eax,%edx
  addss  %xmm2,%xmm5
  cvtsi2ss %edx,%xmm3
  addss  %xmm1,%xmm4
  mulss  %xmm2,%xmm1
  lea    0x1(%rax),%edx
  addss  %xmm3,%xmm8
  movaps %xmm2,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm1,%xmm0
  addss  %xmm3,%xmm9
  cmp    %edx,%ecx
  jle    L57
  pxor   %xmm1,%xmm1
  pxor   %xmm3,%xmm3
  movss  0x4(%rdi,%rsi,1),%xmm2
  add    $0x2,%eax
  cvtsi2ss %edx,%xmm1
  imul   %edx,%edx
  addss  %xmm2,%xmm5
  cvtsi2ss %edx,%xmm3
  addss  %xmm1,%xmm4
  mulss  %xmm2,%xmm1
  addss  %xmm3,%xmm8
  movaps %xmm2,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm1,%xmm0
  addss  %xmm3,%xmm9
  cmp    %eax,%ecx
  jle    L57
  pxor   %xmm2,%xmm2
  pxor   %xmm3,%xmm3
  movss  0x8(%rdi,%rsi,1),%xmm1
  cvtsi2ss %eax,%xmm2
  imul   %eax,%eax
  addss  %xmm1,%xmm5
  cvtsi2ss %eax,%xmm3
  addss  %xmm2,%xmm4
  addss  %xmm3,%xmm8
  movaps %xmm1,%xmm3
  mulss  %xmm1,%xmm3
  mulss  %xmm2,%xmm1
  addss  %xmm3,%xmm9
  addss  %xmm1,%xmm0
L57:
  pxor   %xmm1,%xmm1
  cvtsi2ss %ecx,%xmm1
  divss  %xmm1,%xmm5
  movaps %xmm1,%xmm2
  divss  %xmm1,%xmm4
  mulss  %xmm5,%xmm1
  mulss  %xmm5,%xmm1
  subss  %xmm1,%xmm9
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm9,%xmm1
  mulss  %xmm4,%xmm2
  mulss  %xmm2,%xmm4
  mulss  %xmm5,%xmm2
  subss  %xmm4,%xmm8
  subss  %xmm2,%xmm0
  movsd  D13(%rip),%xmm2
  comisd %xmm1,%xmm2
  jb     L3
  movl   $0x3f800000,(%rbx)
L3:
  mulss  %xmm9,%xmm8
  mulss  %xmm0,%xmm0
  divss  %xmm8,%xmm0
  call   <sqrt@plt>
  call   <sqrt@plt>
  movss  %xmm0,(%rbx)
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L51:
  pxor   %xmm5,%xmm5
  movaps %xmm5,%xmm4
  movaps %xmm5,%xmm0
  movaps %xmm5,%xmm9
  movaps %xmm5,%xmm8
  jmp    L57
L82:
  pxor   %xmm5,%xmm5
  xor    %eax,%eax
  movaps %xmm5,%xmm4
  movaps %xmm5,%xmm0
  movaps %xmm5,%xmm9
  movaps %xmm5,%xmm8
  jmp    L73
```

tool_calls: name: read_data
arguments: data_label: D11
type_infered: byte[16]
name: read_data
arguments: data_label: D17
type_infered: byte[16]
name: read_data
arguments: data_label: D13
type_infered: byte[8]

tool: {"D11": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D17": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D13": [0x16,0x56,0xe7,0x9e,0xaf,0x03,0xd2,0x3c]}

assistant: ```c
void do_linear_regress(float *dbspec, int len, float *r) {
  int i;
  float ssx;
  float ssy;
  float sxy;
  float ssxx;
  float ssyy;
  float ssxy;
  float avx;
  float avy;
  float rsq;
  ssx = 0.0f;
  ssy = 0.0f;
  sxy = 0.0f;
  avx = 0.0f;
  avy = 0.0f;
  for (i = 0; i < len; i++) {
    avx += i;
    avy += dbspec[i];
    ssx += i * i;
    ssy += dbspec[i] * dbspec[i];
    sxy += i * dbspec[i];
  }
  avx /= (float)len;
  avy /= (float)len;
  ssxx = ssx - (float)len * avx * avx;
  ssyy = ssy - (float)len * avy * avy;
  ssxy = sxy - (float)len * avx * avy;
  if (ssyy <= 0.0f + 1e-15) {
    *r = 1.0f;
  }
  rsq = (ssxy * ssxy) / (ssxx * ssyy);
  *r = (float)sqrt(sqrt(rsq));
}
```