user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<onemax>:
  endbr64
  mov    %rsi,%rdx
  test   %rsi,%rsi
  je     L71
  lea    -0x1(%rsi),%rax
  cmp    $0xe,%rax
  jbe    L25
  mov    %rsi,%rcx
  pxor   %xmm1,%xmm1
  pxor   %xmm5,%xmm5
  mov    %rdi,%rax
  and    $0xfffffffffffffff0,%rcx
  movdqa D1(%rip),%xmm6
  pxor   %xmm4,%xmm4
  add    %rdi,%rcx
  nop
L31:
  movdqu (%rax),%xmm0
  movdqa %xmm5,%xmm3
  add    $0x10,%rax
  pcmpeqb %xmm5,%xmm0
  pandn  %xmm6,%xmm0
  pcmpgtb %xmm0,%xmm3
  movdqa %xmm0,%xmm2
  punpcklbw %xmm3,%xmm2
  punpckhbw %xmm3,%xmm0
  movdqa %xmm4,%xmm3
  pcmpgtw %xmm2,%xmm3
  movdqa %xmm2,%xmm7
  punpcklwd %xmm3,%xmm7
  punpckhwd %xmm3,%xmm2
  movdqa %xmm0,%xmm3
  paddd  %xmm7,%xmm1
  paddd  %xmm2,%xmm1
  movdqa %xmm4,%xmm2
  pcmpgtw %xmm0,%xmm2
  punpcklwd %xmm2,%xmm3
  punpckhwd %xmm2,%xmm0
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  cmp    %rax,%rcx
  jne    L31
  movdqa %xmm1,%xmm0
  mov    %rdx,%rcx
  psrldq $0x8,%xmm0
  and    $0xfffffffffffffff0,%rcx
  paddd  %xmm0,%xmm1
  movdqa %xmm1,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm1
  movd   %xmm1,%eax
  test   $0xf,%dl
  je     L185
L159:
  cmpb   $0x1,(%rdi,%rcx,1)
  lea    0x1(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rdx,%rsi
  jae    L185
  cmpb   $0x1,0x1(%rdi,%rcx,1)
  lea    0x2(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x2(%rdi,%rcx,1)
  lea    0x3(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x3(%rdi,%rcx,1)
  lea    0x4(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x4(%rdi,%rcx,1)
  lea    0x5(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x5(%rdi,%rcx,1)
  lea    0x6(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x6(%rdi,%rcx,1)
  lea    0x7(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x7(%rdi,%rcx,1)
  lea    0x8(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x8(%rdi,%rcx,1)
  lea    0x9(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0x9(%rdi,%rcx,1)
  lea    0xa(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0xa(%rdi,%rcx,1)
  lea    0xb(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0xb(%rdi,%rcx,1)
  lea    0xc(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0xc(%rdi,%rcx,1)
  lea    0xd(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0xd(%rdi,%rcx,1)
  lea    0xe(%rcx),%rsi
  sbb    $0xffffffff,%eax
  cmp    %rsi,%rdx
  jbe    L185
  cmpb   $0x1,0xe(%rdi,%rcx,1)
  sbb    $0xffffffff,%eax
L185:
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  ret
  nopl   (%rax)
L71:
  pxor   %xmm0,%xmm0
  ret
L25:
  xor    %ecx,%ecx
  xor    %eax,%eax
  jmp    L159
```

tool_calls: name: disassemble_data
arguments: label: D1
type_infered: byte[16]

tool: {"D1": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

assistant: ```c
double onemax(const char *data, size_t len) {
  int result = 0;
  size_t i;
  for (i = 0; i < len; i++)
    if (data[i])
      result++;
  return result;
}
```