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

```asm
<header_checksum>:
  endbr64
  mov    %rdi,%rcx
  mov    %esi,%edx
  test   %rdi,%rdi
  je     L150
  test   %esi,%esi
  js     L150
  je     L203
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L195
  shr    $0x4,%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm4,%xmm4
  mov    %rdi,%rax
  sub    $0x1,%esi
  pxor   %xmm3,%xmm3
  shl    $0x4,%rsi
  lea    0x10(%rdi,%rsi,1),%rsi
  nopw   0x0(%rax,%rax,1)
L12:
  movdqu (%rax),%xmm1
  add    $0x10,%rax
  movdqa %xmm1,%xmm2
  punpckhbw %xmm4,%xmm1
  punpcklbw %xmm4,%xmm2
  movdqa %xmm2,%xmm5
  punpckhwd %xmm3,%xmm2
  punpcklwd %xmm3,%xmm5
  paddd  %xmm5,%xmm0
  paddd  %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  punpckhwd %xmm3,%xmm1
  punpcklwd %xmm3,%xmm2
  paddd  %xmm2,%xmm0
  paddd  %xmm1,%xmm0
  cmp    %rsi,%rax
  jne    L12
  movdqa %xmm0,%xmm1
  mov    %edx,%esi
  psrldq $0x8,%xmm1
  and    $0xfffffff0,%esi
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  test   $0xf,%dl
  je     L9
L130:
  movslq %esi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x1(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x2(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x3(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x4(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x5(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x6(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x7(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x8(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0x9(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0xa(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0xb(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0xc(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  lea    0xd(%rsi),%edi
  cmp    %edi,%edx
  jle    L192
  movslq %edi,%rdi
  add    $0xe,%esi
  movzbl (%rcx,%rdi,1),%edi
  add    %edi,%eax
  cmp    %esi,%edx
  jle    L192
  movslq %esi,%rsi
  movzbl (%rcx,%rsi,1),%edx
  add    %edx,%eax
  ret
  nop
L203:
  xor    %eax,%eax
L192:
  ret
L195:
  xor    %eax,%eax
  xor    %esi,%esi
  jmp    L130
L9:
  ret
L150:
  mov    $0xffffffff,%eax
  ret
```

assistant: ```c
int header_checksum(void *data, int len) {
  int i;
  int sum;
  sum = 0;
  if (data != NULL && len >= 0) {
    for (i = 0; i < len; ++i)
      sum += *(unsigned char *)(data + i);
    return sum;
  }
  return -1;
}
```