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

```asm
<Rotate>:
  endbr64
  mov    %rsi,%rax
  mov    %edx,%esi
  test   %ecx,%ecx
  jne    L9
  lea    -0x1(%rdx),%r9d
  test   %edx,%edx
  jle    L28
  mov    %ecx,%edx
  movslq %esi,%rcx
  mov    %esi,%r10d
  push   %rbx
  shl    $0x2,%rcx
  shl    $0x2,%r10
  mov    %rcx,%r11
  lea    (%rax,%r10,1),%rbx
  lea    -0x4(%rcx),%r8
  sub    %r10,%r11
  lea    (%rdi,%r11,1),%r10
  lea    (%rdi,%rcx,1),%r11
  cmp    %r10,%rbx
  setbe  %r10b
  cmp    %r11,%rax
  setae  %r11b
  or     %r11b,%r10b
  je     L44
  cmp    $0x2,%r9d
  jbe    L44
  mov    %esi,%r10d
  lea    -0x10(%rdi,%rcx,1),%rcx
  mov    %rax,%r8
  shr    $0x2,%r10d
  mov    %rcx,%r11
  sub    $0x1,%r10d
  shl    $0x4,%r10
  sub    %r10,%r11
  lea    -0x10(%r11),%r10
  cs nopw 0x0(%rax,%rax,1)
L141:
  movdqu (%rcx),%xmm1
  sub    $0x10,%rcx
  add    $0x10,%r8
  pshufd $0x1b,%xmm1,%xmm0
  movups %xmm0,-0x10(%r8)
  cmp    %r10,%rcx
  jne    L141
  mov    %esi,%ecx
  and    $0xfffffffc,%ecx
  sub    %ecx,%r9d
  cmp    %ecx,%esi
  je     L205
  movslq %r9d,%r11
  mov    %ecx,%r8d
  sub    $0x1,%r9d
  mov    (%rdi,%r11,4),%r11d
  lea    0x0(,%r8,4),%r10
  mov    %r11d,(%rax,%r8,4)
  lea    0x1(%rcx),%r8d
  cmp    %r8d,%esi
  jle    L205
  movslq %r9d,%r9
  add    $0x2,%ecx
  mov    (%rdi,%r9,4),%r8d
  lea    0x0(,%r9,4),%r11
  mov    %r8d,0x4(%rax,%r10,1)
  cmp    %esi,%ecx
  jge    L205
  mov    -0x4(%rdi,%r11,1),%ecx
  mov    %ecx,0x8(%rax,%r10,1)
L205:
  test   %esi,%esi
  jle    L113
  nopl   0x0(%rax,%rax,1)
L23:
  movslq (%rax),%rcx
  add    $0x4,%rax
  mov    %edx,(%rdi,%rcx,4)
  add    $0x1,%edx
  cmp    %edx,%esi
  jne    L23
L113:
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L9:
  test   %edx,%edx
  jle    L140
  lea    0x4(%rdi),%rcx
  mov    %rax,%rdx
  sub    %rcx,%rdx
  cmp    $0x8,%rdx
  lea    -0x1(%rsi),%edx
  jbe    L11
  cmp    $0x2,%edx
  jbe    L11
  mov    %esi,%r8d
  xor    %ecx,%ecx
  shr    $0x2,%r8d
  shl    $0x4,%r8
  nopl   (%rax)
L182:
  movdqu (%rdi,%rcx,1),%xmm2
  movups %xmm2,(%rax,%rcx,1)
  add    $0x10,%rcx
  cmp    %r8,%rcx
  jne    L182
  mov    %esi,%ecx
  and    $0xfffffffc,%ecx
  test   $0x3,%sil
  je     L98
  movslq %ecx,%r10
  mov    %ecx,%r8d
  mov    (%rdi,%r10,4),%r10d
  lea    0x0(,%r8,4),%r9
  mov    %r10d,(%rax,%r8,4)
  lea    0x1(%rcx),%r8d
  cmp    %r8d,%esi
  jle    L98
  movslq %r8d,%r8
  add    $0x2,%ecx
  lea    0x0(,%r8,4),%r10
  mov    (%rdi,%r8,4),%r8d
  mov    %r8d,0x4(%rax,%r9,1)
  cmp    %ecx,%esi
  jle    L98
  mov    0x4(%rdi,%r10,1),%ecx
  mov    %ecx,0x8(%rax,%r9,1)
  nopl   0x0(%rax)
L98:
  movslq (%rax),%rcx
  add    $0x4,%rax
  mov    %edx,(%rdi,%rcx,4)
  sub    $0x1,%edx
  cmp    $0xffffffff,%edx
  jne    L98
  ret
L28:
  ret
L140:
  ret
L44:
  add    %rdi,%r8
  mov    %rax,%rcx
  lea    0x4(%rax,%r9,4),%r10
L75:
  mov    (%r8),%r9d
  add    $0x4,%rcx
  sub    $0x4,%r8
  mov    %r9d,-0x4(%rcx)
  cmp    %r10,%rcx
  jne    L75
  jmp    L205
L11:
  mov    %esi,%esi
  xor    %ecx,%ecx
  nopl   (%rax)
L157:
  mov    (%rdi,%rcx,4),%r8d
  mov    %r8d,(%rax,%rcx,4)
  add    $0x1,%rcx
  cmp    %rsi,%rcx
  jne    L157
  jmp    L98
```

assistant: ```c
void Rotate(int R[], int C[], int N, int Neg) {
  int Idx, Jdx;
  Jdx = Neg ? 0 : N - 1;
  for (Idx = 0; Idx < N; Neg ? Jdx++ : Jdx--)
    C[Idx++] = R[Jdx];
  Jdx = Neg ? N - 1 : 0;
  for (Idx = 0; Idx < N; Neg ? Jdx-- : Jdx++)
    R[C[Idx++]] = Jdx;
}
```