user: 下面的汇编指令对应的C源代码是什么：

```asm
<cswapc2n>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rsi,%r11
  mov    %ecx,%r13d
  mov    %r9d,-0x14(%rsp)
  mov    0x48(%rsp),%r10d
  test   %edx,%edx
  js     L218
  jle    L176
  lea    -0x1(%r8),%esi
  mov    %esi,-0x28(%rsp)
  cmp    -0x14(%rsp),%esi
  jge    L176
  mov    %r10d,%eax
  imul   0x38(%rsp),%eax
  lea    (%rax,%rax,1),%edx
  movslq %edx,%rdi
  mov    %rdi,-0x20(%rsp)
  imul   %esi,%eax
  mov    %eax,%r9d
  add    %r9d,%r9d
  movslq %r9d,%r9
  lea    (%r10,%r10,1),%eax
  mov    %eax,-0x18(%rsp)
  cltq
  mov    %rax,-0x30(%rsp)
  shl    $0x2,%rax
  mov    %rax,-0x38(%rsp)
  lea    -0x1(%r10),%ecx
  lea    0x8(%r11,%rcx,8),%rax
  mov    %rax,-0x10(%rsp)
  jmp    L169
L218:
  lea    -0x1(%r8),%esi
  mov    %esi,-0x20(%rsp)
  cmp    %esi,%r9d
  jle    L176
  mov    %r10d,%eax
  imul   0x38(%rsp),%eax
  lea    (%rax,%rax,1),%edx
  movslq %edx,%rdi
  mov    %rdi,-0x10(%rsp)
  imul   %esi,%eax
  add    %eax,%eax
  cltq
  mov    %rax,-0x30(%rsp)
  lea    (%r10,%r10,1),%eax
  mov    %eax,-0x18(%rsp)
  cltq
  mov    %rax,-0x28(%rsp)
  shl    $0x2,%rax
  mov    %rax,-0x38(%rsp)
  lea    -0x1(%r10),%edx
  lea    0x8(%r11,%rdx,8),%rax
  mov    %rax,-0x8(%rsp)
  jmp    L214
L225:
  mov    %eax,%r15d
L236:
  test   %r10d,%r10d
  jle    L250
  lea    (%r11,%r8,4),%rax
  movslq %r9d,%rbp
  lea    0x0(%rbp,%r12,1),%rcx
  lea    (%rbx,%rcx,4),%rcx
  mov    %r8,%rdi
  sub    %rbp,%rdi
L125:
  movss  (%rcx,%rdi,4),%xmm0
  movss  %xmm0,(%rax)
  movss  (%rcx),%xmm0
  movss  %xmm0,0x4(%rax)
  add    $0x8,%rax
  add    $0x4,%rcx
  cmp    %rsi,%rax
  jne    L125
L250:
  lea    0x1(%r15),%eax
  add    -0x18(%rsp),%r9d
  add    -0x28(%rsp),%r8
  add    -0x38(%rsp),%rsi
  cmp    %eax,%r13d
  jne    L225
  mov    -0x30(%rsp),%rax
  lea    (%rbx,%rax,4),%rdi
  mov    %r11,%rsi
  mov    %r10d,%r14d
  mov    $0x0,%r12d
  mov    $0x0,%ebp
  jmp    L298
L244:
  movss  (%r9,%rax,4),%xmm0
  movss  %xmm0,(%r8,%rax,4)
  mov    %rax,%rcx
  add    $0x1,%rax
  cmp    %rdx,%rcx
  jne    L244
L130:
  lea    0x1(%rbp),%eax
  mov    -0x18(%rsp),%ecx
  add    %ecx,%r14d
  add    %ecx,%r12d
  mov    -0x38(%rsp),%rcx
  add    %rcx,%rsi
  add    %rcx,%rdi
  cmp    %ebp,%r15d
  je     L208
  mov    %eax,%ebp
L298:
  test   %r10d,%r10d
  jle    L130
  mov    $0x0,%eax
L260:
  movss  (%rsi,%rax,4),%xmm0
  movss  %xmm0,(%rdi,%rax,4)
  mov    %rax,%rcx
  add    $0x1,%rax
  cmp    %rdx,%rcx
  jne    L260
  lea    (%r10,%r12,1),%eax
  cltq
  lea    (%r11,%rax,4),%r9
  movslq %r14d,%rax
  add    -0x30(%rsp),%rax
  lea    (%rbx,%rax,4),%r8
  mov    $0x0,%eax
  jmp    L244
L208:
  addl   $0x1,-0x20(%rsp)
  mov    -0x20(%rsp),%eax
  mov    -0x10(%rsp),%rdi
  add    %rdi,-0x30(%rsp)
  cmp    %eax,-0x14(%rsp)
  je     L176
L214:
  test   %r13d,%r13d
  jle    L208
  mov    -0x8(%rsp),%rsi
  mov    %r10d,%r9d
  mov    $0x0,%r8d
  mov    $0x0,%r15d
  mov    -0x30(%rsp),%r12
  jmp    L236
L222:
  movss  (%r12,%rax,4),%xmm0
  movss  %xmm0,0x0(%rbp,%rax,4)
  mov    %rax,%rdx
  add    $0x1,%rax
  cmp    %rdx,%rcx
  jne    L222
L66:
  lea    0x1(%r8),%eax
  mov    -0x18(%rsp),%edx
  add    %edx,%r15d
  add    %edx,%r14d
  mov    -0x38(%rsp),%rdx
  add    %rdx,%rdi
  add    %rdx,%rsi
  cmp    %eax,%r13d
  je     L54
  mov    %eax,%r8d
L44:
  test   %r10d,%r10d
  jle    L66
  mov    $0x0,%eax
L63:
  movss  (%rdi,%rax,4),%xmm0
  movss  %xmm0,(%rsi,%rax,4)
  mov    %rax,%rdx
  add    $0x1,%rax
  cmp    %rdx,%rcx
  jne    L63
  movslq %r15d,%rax
  add    %r9,%rax
  lea    (%rbx,%rax,4),%r12
  lea    (%r10,%r14,1),%eax
  cltq
  lea    (%r11,%rax,4),%rbp
  mov    $0x0,%eax
  jmp    L222
L54:
  mov    -0x10(%rsp),%rsi
  mov    %r10d,%r14d
  mov    $0x0,%ebp
  mov    $0x0,%r12d
  jmp    L93
L90:
  mov    %eax,%r12d
L93:
  test   %r10d,%r10d
  jle    L151
  lea    (%r11,%rbp,4),%rax
  movslq %r14d,%r15
  lea    (%r15,%r9,1),%rdx
  lea    (%rbx,%rdx,4),%rdx
  mov    %rbp,%rdi
  sub    %r15,%rdi
L287:
  movss  (%rax),%xmm0
  movss  %xmm0,(%rdx,%rdi,4)
  movss  0x4(%rax),%xmm0
  movss  %xmm0,(%rdx)
  add    $0x8,%rax
  add    $0x4,%rdx
  cmp    %rsi,%rax
  jne    L287
L151:
  lea    0x1(%r12),%eax
  add    -0x18(%rsp),%r14d
  add    -0x30(%rsp),%rbp
  add    -0x38(%rsp),%rsi
  cmp    %r12d,%r8d
  jne    L90
L59:
  addl   $0x1,-0x28(%rsp)
  mov    -0x28(%rsp),%eax
  add    -0x20(%rsp),%r9
  cmp    %eax,-0x14(%rsp)
  je     L176
L169:
  test   %r13d,%r13d
  jle    L59
  lea    (%rbx,%r9,4),%rdi
  mov    %r11,%rsi
  mov    %r10d,%r15d
  mov    $0x0,%r14d
  mov    $0x0,%r8d
  jmp    L44
L176:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void cswapc2n(float f[], float s[], int isign, int nxh, int nyi, int nyt, int nxhd, int nyd, int ndim) {
  int i, j, k, ioff, nk;
  if (isign < 0) {
    for (k = nyi - 1; k < nyt; k++) {
      nk = 2 * ndim * nxhd * k;
      for (j = 0; j < nxh; j++) {
        ioff = 2 * ndim * j;
        for (i = 0; i < ndim; i++) {
          s[2 * i + ioff] = f[i + ndim * (2 * j) + nk];
          s[2 * i + ioff + 1] = f[i + ndim * (2 * j + 1) + nk];
        }
      }
      for (j = 0; j < nxh; j++) {
        ioff = 2 * ndim * j;
        for (i = 0; i < ndim; i++) {
          f[i + ndim * (2 * j) + nk] = s[i + ioff];
        }
        ioff += ndim;
        for (i = 0; i < ndim; i++) {
          f[i + ndim * (2 * j + 1) + nk] = s[i + ioff];
        }
      }
    }
  } else if (isign > 0) {
    for (k = nyi - 1; k < nyt; k++) {
      nk = 2 * ndim * nxhd * k;
      for (j = 0; j < nxh; j++) {
        ioff = 2 * ndim * j;
        for (i = 0; i < ndim; i++) {
          s[i + ioff] = f[i + ndim * (2 * j) + nk];
        }
        ioff += ndim;
        for (i = 0; i < ndim; i++) {
          s[i + ioff] = f[i + ndim * (2 * j + 1) + nk];
        }
      }
      for (j = 0; j < nxh; j++) {
        ioff = 2 * ndim * j;
        for (i = 0; i < ndim; i++) {
          f[i + ndim * (2 * j) + nk] = s[2 * i + ioff];
          f[i + ndim * (2 * j + 1) + nk] = s[2 * i + ioff + 1];
        }
      }
    }
  }
  return;
}
```