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

```asm
<siphash_nocase>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  mov    %rdx,-0x58(%rbp)
  movl   $0x70736575,-0x3c(%rbp)
  movl   $0x6e646f6d,-0x38(%rbp)
  movl   $0x6e657261,-0x34(%rbp)
  movl   $0x79746573,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x20(%rax),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x50(%rbp),%rax
  and    $0xfffffffffffffffc,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x50(%rbp),%rax
  and    $0x7,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %eax,%edx
  mov    $0x38,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x24(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x28(%rbp),%eax
  xor    %eax,-0x34(%rbp)
  mov    -0x24(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    -0x28(%rbp),%eax
  xor    %eax,-0x3c(%rbp)
  jmp    L12
L6:
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x8,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x10,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x18,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x20,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x28,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x30,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,%ebx
  mov    -0x48(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x38,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %ebx,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%esi
  mov    $0x33,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%esi
  mov    $0x30,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x15,%eax
  mov    %eax,%esi
  mov    $0x2b,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0x11,%eax
  mov    %eax,%esi
  mov    $0x2f,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x1c(%rbp),%eax
  xor    %eax,-0x3c(%rbp)
  addq   $0x20,-0x48(%rbp)
L12:
  mov    -0x48(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jne    L6
  cmpl   $0x7,-0x20(%rbp)
  ja     L14
  mov    -0x20(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D16(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D16(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x48(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x30,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x28,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  mov    %eax,%edx
  mov    $0x20,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x18,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x10,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  shl    $0x8,%eax
  or     %eax,-0x2c(%rbp)
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <siptlw@plt>
  or     %eax,-0x2c(%rbp)
  jmp    L14
  nop
L14:
  mov    -0x2c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%esi
  mov    $0x33,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%esi
  mov    $0x30,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x15,%eax
  mov    %eax,%esi
  mov    $0x2b,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0x11,%eax
  mov    %eax,%esi
  mov    $0x2f,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x2c(%rbp),%eax
  xor    %eax,-0x3c(%rbp)
  xorl   $0xff,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%esi
  mov    $0x33,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%esi
  mov    $0x30,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x15,%eax
  mov    %eax,%esi
  mov    $0x2b,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0x11,%eax
  mov    %eax,%esi
  mov    $0x2f,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%esi
  mov    $0x33,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%esi
  mov    $0x30,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,-0x3c(%rbp)
  mov    -0x30(%rbp),%eax
  shl    $0x15,%eax
  mov    %eax,%esi
  mov    $0x2b,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  add    %eax,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0x11,%eax
  mov    %eax,%esi
  mov    $0x2f,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x34(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%esi
  mov    $0x20,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%ecx
  sar    %cl,%eax
  or     %esi,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x3c(%rbp),%eax
  xor    -0x38(%rbp),%eax
  xor    -0x34(%rbp),%eax
  xor    -0x30(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
uint64_t siphash_nocase(const uint8_t *in, const size_t inlen, const uint8_t *k) {
  uint64_t v0 = 0x736f6d6570736575ULL;
  uint64_t v1 = 0x646f72616e646f6dULL;
  uint64_t v2 = 0x6c7967656e657261ULL;
  uint64_t v3 = 0x7465646279746573ULL;
  uint64_t k0 = (*((uint64_t *)(k)));
  uint64_t k1 = (*((uint64_t *)(k + 8)));
  uint64_t m;
  const uint8_t *end = in + inlen - (inlen % sizeof(uint64_t));
  const int left = inlen & 7;
  uint64_t b = ((uint64_t)inlen) << 56;
  v3 ^= k1;
  v2 ^= k0;
  v1 ^= k1;
  v0 ^= k0;
  for (; in != end; in += 8) {
    m = (((uint64_t)(siptlw((in)[0]))) | ((uint64_t)(siptlw((in)[1])) << 8) | ((uint64_t)(siptlw((in)[2])) << 16) | ((uint64_t)(siptlw((in)[3])) << 24) | ((uint64_t)(siptlw((in)[4])) << 32) | ((uint64_t)(siptlw((in)[5])) << 40) | ((uint64_t)(siptlw((in)[6])) << 48) | ((uint64_t)(siptlw((in)[7])) << 56));
    v3 ^= m;
    do {
      v0 += v1;
      v1 = (uint64_t)(((v1) << (13)) | ((v1) >> (64 - (13))));
      v1 ^= v0;
      v0 = (uint64_t)(((v0) << (32)) | ((v0) >> (64 - (32))));
      v2 += v3;
      v3 = (uint64_t)(((v3) << (16)) | ((v3) >> (64 - (16))));
      v3 ^= v2;
      v0 += v3;
      v3 = (uint64_t)(((v3) << (21)) | ((v3) >> (64 - (21))));
      v3 ^= v0;
      v2 += v1;
      v1 = (uint64_t)(((v1) << (17)) | ((v1) >> (64 - (17))));
      v1 ^= v2;
      v2 = (uint64_t)(((v2) << (32)) | ((v2) >> (64 - (32))));
    } while (0);
    v0 ^= m;
  }
  switch (left) {
  case 7:
    b |= ((uint64_t)siptlw(in[6])) << 48;
  case 6:
    b |= ((uint64_t)siptlw(in[5])) << 40;
  case 5:
    b |= ((uint64_t)siptlw(in[4])) << 32;
  case 4:
    b |= ((uint64_t)siptlw(in[3])) << 24;
  case 3:
    b |= ((uint64_t)siptlw(in[2])) << 16;
  case 2:
    b |= ((uint64_t)siptlw(in[1])) << 8;
  case 1:
    b |= ((uint64_t)siptlw(in[0]));
    break;
  case 0:
    break;
  }
  v3 ^= b;
  do {
    v0 += v1;
    v1 = (uint64_t)(((v1) << (13)) | ((v1) >> (64 - (13))));
    v1 ^= v0;
    v0 = (uint64_t)(((v0) << (32)) | ((v0) >> (64 - (32))));
    v2 += v3;
    v3 = (uint64_t)(((v3) << (16)) | ((v3) >> (64 - (16))));
    v3 ^= v2;
    v0 += v3;
    v3 = (uint64_t)(((v3) << (21)) | ((v3) >> (64 - (21))));
    v3 ^= v0;
    v2 += v1;
    v1 = (uint64_t)(((v1) << (17)) | ((v1) >> (64 - (17))));
    v1 ^= v2;
    v2 = (uint64_t)(((v2) << (32)) | ((v2) >> (64 - (32))));
  } while (0);
  v0 ^= b;
  v2 ^= 0xff;
  do {
    v0 += v1;
    v1 = (uint64_t)(((v1) << (13)) | ((v1) >> (64 - (13))));
    v1 ^= v0;
    v0 = (uint64_t)(((v0) << (32)) | ((v0) >> (64 - (32))));
    v2 += v3;
    v3 = (uint64_t)(((v3) << (16)) | ((v3) >> (64 - (16))));
    v3 ^= v2;
    v0 += v3;
    v3 = (uint64_t)(((v3) << (21)) | ((v3) >> (64 - (21))));
    v3 ^= v0;
    v2 += v1;
    v1 = (uint64_t)(((v1) << (17)) | ((v1) >> (64 - (17))));
    v1 ^= v2;
    v2 = (uint64_t)(((v2) << (32)) | ((v2) >> (64 - (32))));
  } while (0);
  do {
    v0 += v1;
    v1 = (uint64_t)(((v1) << (13)) | ((v1) >> (64 - (13))));
    v1 ^= v0;
    v0 = (uint64_t)(((v0) << (32)) | ((v0) >> (64 - (32))));
    v2 += v3;
    v3 = (uint64_t)(((v3) << (16)) | ((v3) >> (64 - (16))));
    v3 ^= v2;
    v0 += v3;
    v3 = (uint64_t)(((v3) << (21)) | ((v3) >> (64 - (21))));
    v3 ^= v0;
    v2 += v1;
    v1 = (uint64_t)(((v1) << (17)) | ((v1) >> (64 - (17))));
    v1 ^= v2;
    v2 = (uint64_t)(((v2) << (32)) | ((v2) >> (64 - (32))));
  } while (0);
  b = v0 ^ v1 ^ v2 ^ v3;
  return b;
}
```