user: 这段汇编代码用C语言表示是什么样的？

```asm
<bp_sw_Linefit>:
  endbr64
  push   %rbx
  pxor   %xmm1,%xmm1
  mov    %r9,%rbx
  cvtsi2ss %edx,%xmm1
  sub    $0x10,%rsp
  test   %edx,%edx
  jle    L5
  lea    -0x1(%rdx),%r10d
  cmp    $0x2,%r10d
  jbe    L113
  mov    %edx,%r9d
  pxor   %xmm2,%xmm2
  xor    %eax,%eax
  shr    $0x2,%r9d
  movaps %xmm2,%xmm6
  movaps %xmm2,%xmm7
  shl    $0x4,%r9
  nopl   0x0(%rax)
L146:
  movups (%rdi,%rax,1),%xmm0
  movaps %xmm0,%xmm4
  movaps %xmm0,%xmm3
  addss  %xmm7,%xmm4
  shufps $0x55,%xmm0,%xmm3
  addss  %xmm3,%xmm4
  movaps %xmm0,%xmm3
  unpckhps %xmm0,%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm3,%xmm4
  movaps %xmm4,%xmm7
  addss  %xmm0,%xmm7
  movups (%rsi,%rax,1),%xmm0
  add    $0x10,%rax
  movaps %xmm0,%xmm5
  movaps %xmm0,%xmm3
  addss  %xmm6,%xmm5
  shufps $0x55,%xmm0,%xmm3
  addss  %xmm3,%xmm5
  movaps %xmm0,%xmm3
  unpckhps %xmm0,%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm3,%xmm5
  movaps %xmm5,%xmm6
  addss  %xmm0,%xmm6
  cmp    %rax,%r9
  jne    L146
  mov    %edx,%eax
  and    $0xfffffffc,%eax
  cmp    %eax,%edx
  je     L128
L141:
  movslq %eax,%r11
  addss  (%rdi,%r11,4),%xmm7
  movss  (%rsi,%r11,4),%xmm5
  lea    0x0(,%r11,4),%r9
  lea    0x1(%rax),%r11d
  addss  %xmm6,%xmm5
  movaps %xmm7,%xmm4
  cmp    %edx,%r11d
  jge    L72
  add    $0x2,%eax
  addss  0x4(%rdi,%r9,1),%xmm4
  addss  0x4(%rsi,%r9,1),%xmm5
  cmp    %eax,%edx
  jle    L72
  addss  0x8(%rdi,%r9,1),%xmm4
  addss  0x8(%rsi,%r9,1),%xmm5
L72:
  divss  %xmm1,%xmm4
  divss  %xmm1,%xmm5
  cmp    $0x2,%r10d
  jbe    L89
L66:
  mov    %edx,%r9d
  movaps %xmm4,%xmm6
  movaps %xmm5,%xmm7
  xor    %eax,%eax
  shr    $0x2,%r9d
  movaps %xmm2,%xmm8
  movaps %xmm2,%xmm3
  shufps $0x0,%xmm6,%xmm6
  shl    $0x4,%r9
  shufps $0x0,%xmm7,%xmm7
  nopw   0x0(%rax,%rax,1)
L57:
  movups (%rdi,%rax,1),%xmm9
  subps  %xmm6,%xmm9
  movaps %xmm9,%xmm0
  mulps  %xmm9,%xmm0
  addss  %xmm0,%xmm3
  movaps %xmm0,%xmm1
  shufps $0x55,%xmm0,%xmm1
  addss  %xmm3,%xmm1
  movaps %xmm0,%xmm3
  unpckhps %xmm0,%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm1,%xmm3
  addss  %xmm0,%xmm3
  movups (%rsi,%rax,1),%xmm0
  add    $0x10,%rax
  movaps %xmm0,%xmm1
  subps  %xmm6,%xmm0
  subps  %xmm7,%xmm1
  mulps  %xmm1,%xmm0
  mulps  %xmm9,%xmm1
  addss  %xmm0,%xmm8
  movaps %xmm0,%xmm10
  shufps $0x55,%xmm0,%xmm10
  addss  %xmm1,%xmm2
  addss  %xmm8,%xmm10
  movaps %xmm0,%xmm8
  unpckhps %xmm0,%xmm8
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm10,%xmm8
  addss  %xmm0,%xmm8
  movaps %xmm1,%xmm0
  shufps $0x55,%xmm1,%xmm0
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm0,%xmm2
  addss  %xmm1,%xmm2
  cmp    %r9,%rax
  jne    L57
  mov    %edx,%r9d
  and    $0xfffffffc,%r9d
  mov    %r9d,%eax
  cmp    %edx,%r9d
  je     L50
L90:
  sub    %r9d,%edx
  cmp    $0x1,%edx
  je     L15
  movq   (%rdi,%r9,4),%xmm0
  movaps %xmm4,%xmm6
  movaps %xmm5,%xmm9
  shufps $0xe0,%xmm6,%xmm6
  shufps $0xe0,%xmm9,%xmm9
  subps  %xmm6,%xmm0
  movaps %xmm0,%xmm1
  mulps  %xmm0,%xmm1
  movaps %xmm1,%xmm7
  shufps $0xe5,%xmm1,%xmm1
  addss  %xmm3,%xmm7
  movaps %xmm1,%xmm3
  movq   (%rsi,%r9,4),%xmm1
  mov    %edx,%r9d
  and    $0xfffffffe,%r9d
  add    %r9d,%eax
  addss  %xmm7,%xmm3
  movaps %xmm1,%xmm7
  subps  %xmm6,%xmm1
  subps  %xmm9,%xmm7
  mulps  %xmm7,%xmm1
  mulps  %xmm7,%xmm0
  movaps %xmm1,%xmm6
  shufps $0xe5,%xmm1,%xmm1
  addss  %xmm8,%xmm6
  addss  %xmm6,%xmm1
  movaps %xmm1,%xmm8
  movaps %xmm0,%xmm1
  shufps $0xe5,%xmm0,%xmm0
  addss  %xmm2,%xmm1
  movaps %xmm0,%xmm2
  addss  %xmm1,%xmm2
  cmp    %r9d,%edx
  je     L50
L15:
  cltq
  movss  (%rdi,%rax,4),%xmm0
  subss  %xmm4,%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm0,%xmm1
  addss  %xmm1,%xmm3
  movss  (%rsi,%rax,4),%xmm1
  movaps %xmm1,%xmm6
  subss  %xmm4,%xmm1
  subss  %xmm5,%xmm6
  mulss  %xmm6,%xmm1
  mulss  %xmm6,%xmm0
  addss  %xmm1,%xmm8
  addss  %xmm0,%xmm2
L50:
  movaps %xmm2,%xmm0
  movss  %xmm2,0x8(%rsp)
  divss  %xmm3,%xmm0
  movss  %xmm8,0xc(%rsp)
  movss  %xmm0,(%r8)
  mulss  %xmm4,%xmm0
  subss  %xmm0,%xmm5
  movaps %xmm3,%xmm0
  movss  %xmm5,(%rcx)
  call   <sqrt@plt>
  movss  0xc(%rsp),%xmm8
  movss  %xmm0,0x4(%rsp)
  movaps %xmm8,%xmm0
  call   <sqrt@plt>
  mulss  0x4(%rsp),%xmm0
  movss  0x8(%rsp),%xmm2
  mov    $0x1,%eax
  divss  %xmm0,%xmm2
  movss  %xmm2,(%rbx)
  add    $0x10,%rsp
  pop    %rbx
  ret
  nopl   (%rax)
L128:
  divss  %xmm1,%xmm7
  movaps %xmm6,%xmm5
  divss  %xmm1,%xmm5
  movaps %xmm7,%xmm4
  jmp    L66
  nopl   0x0(%rax,%rax,1)
L5:
  pxor   %xmm2,%xmm2
  movaps %xmm2,%xmm4
  movaps %xmm2,%xmm8
  movaps %xmm2,%xmm3
  divss  %xmm1,%xmm4
  movaps %xmm4,%xmm5
  jmp    L50
L89:
  xor    %r9d,%r9d
  movaps %xmm2,%xmm8
  movaps %xmm2,%xmm3
  xor    %eax,%eax
  jmp    L90
L113:
  pxor   %xmm2,%xmm2
  xor    %eax,%eax
  movaps %xmm2,%xmm6
  movaps %xmm2,%xmm7
  jmp    L141
```

assistant: ```c
int bp_sw_Linefit(float *x, float *y, int N, float *ret_a, float *ret_b, float *ret_r) {
  float xavg, yavg;
  float sxx, syy, sxy;
  int i;
  xavg = yavg = 0.0;
  for (i = 0; i < N; i++) {
    xavg += x[i];
    yavg += y[i];
  }
  xavg /= (float)N;
  yavg /= (float)N;
  sxx = syy = sxy = 0.0;
  for (i = 0; i < N; i++) {
    sxx += (x[i] - xavg) * (x[i] - xavg);
    syy += (y[i] - yavg) * (y[i] - xavg);
    sxy += (x[i] - xavg) * (y[i] - yavg);
  }
  *ret_b = sxy / sxx;
  *ret_a = yavg - xavg * (*ret_b);
  *ret_r = sxy / (sqrt(sxx) * sqrt(syy));
  return 1;
}
```