user: 请将以下的汇编代码转换成C语言代码：

```asm
<isaac_mix>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L13
L17:
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%esi
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    D9(%rip),%rcx
  movzbl (%rax,%rcx,1),%eax
  movzbl %al,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  xor    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x4(%rbp),%eax
  add    $0x3,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  add    $0x3,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x4(%rbp),%eax
  add    $0x2,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%esi
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    D9(%rip),%rcx
  movzbl (%rax,%rcx,1),%eax
  movzbl %al,%eax
  mov    %eax,%ecx
  shr    %cl,%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  xor    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x4(%rbp),%eax
  add    $0x3,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  add    $0x3,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x4(%rbp),%eax
  add    $0x2,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  and    $0x7,%eax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x4(%rbp)
L13:
  cmpl   $0x7,-0x4(%rbp)
  jle    L17
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void isaac_mix(unsigned _x[8]) {
  static const unsigned char SHIFT[8] = {11, 2, 8, 16, 10, 4, 8, 9};
  int i;
  for (i = 0; i < 8; i++) {
    _x[i] ^= _x[i + 1 & 7] << SHIFT[i];
    _x[i + 3 & 7] += _x[i];
    _x[i + 1 & 7] += _x[i + 2 & 7];
    i++;
    _x[i] ^= _x[i + 1 & 7] >> SHIFT[i];
    _x[i + 3 & 7] += _x[i];
    _x[i + 1 & 7] += _x[i + 2 & 7];
  }
}
```