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

```asm
<CPU_BCV>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %edx,-0x44(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L26
L13:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L26:
  cmpl   $0xff,-0x28(%rbp)
  jle    L13
  movl   $0x0,-0x24(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L48
L3:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x28(%rbp),%eax
  add    %eax,-0x24(%rbp)
  addl   $0x1,-0x28(%rbp)
L48:
  cmpl   $0xff,-0x28(%rbp)
  jle    L3
  movl   $0x0,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  movl   $0x0,-0x18(%rbp)
  mov    -0x24(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L84
L68:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x28(%rbp),%eax
  add    %eax,-0x18(%rbp)
  mov    -0x24(%rbp),%eax
  sub    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x20(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x14(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x1c(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  je     L85
  movss  -0x10(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0xc(%rbp),%xmm1
  movss  -0x8(%rbp),%xmm0
  subss  -0x4(%rbp),%xmm0
  mulss  %xmm0,%xmm1
  movss  -0x8(%rbp),%xmm0
  subss  -0x4(%rbp),%xmm0
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  cmpl   $0x0,-0x20(%rbp)
  jne    L60
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
L60:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  add    %eax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  sub    -0x20(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  addl   $0x1,-0x28(%rbp)
L84:
  cmpl   $0xff,-0x28(%rbp)
  jle    L68
  jmp    L78
L85:
  nop
L78:
  nop
  pop    %rbp
  ret
```

assistant: ```c
void CPU_BCV(int *histogram, float *BCVtable, int size) {
  int i;
  for (i = 0; i < 256; i++) {
    BCVtable[i] = 0;
  }
  int wsumtotal = 0;
  for (i = 0; i < 256; i++) {
    wsumtotal = wsumtotal + i * histogram[i];
  }
  int sumb = 0;
  int sumf = size;
  int wsumb = 0;
  int wsumf = wsumtotal;
  float wb;
  float wf;
  float meanb;
  float meanf;
  for (i = 0; i < 256; i++) {
    wsumb = wsumb + i * histogram[i];
    wsumf = wsumtotal - wsumb;
    wb = sumb / (float)size;
    wf = sumf / (float)size;
    meanb = wsumb / (float)sumb;
    meanf = wsumf / (float)sumf;
    if (sumf == 0) {
      break;
    }
    BCVtable[i] = wb * wf * (meanb - meanf) * (meanb - meanf);
    if (sumb == 0) {
      BCVtable[i] = 0;
    }
    sumb = sumb + histogram[i];
    sumf = size - sumb;
  }
}
```