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

```asm
<gabswp2>:
  endbr64
  test   %esi,%esi
  jle    L154
  mov    %rdi,%rdx
  mov    %esi,%edi
  lea    -0x1(%rsi),%esi
  sub    $0x150,%rsp
  lea    0x1(%rdx),%rcx
  cmp    $0xf,%esi
  jbe    L129
  mov    %esi,%r8d
  mov    %rdx,%rax
  shr    $0x4,%r8d
  sub    $0x1,%r8d
  shl    $0x6,%r8
  lea    0x40(%rdx,%r8,1),%r9
  nop
L22:
  movdqu (%rax),%xmm3
  movdqu 0x10(%rax),%xmm2
  add    $0x40,%rax
  movdqu -0x10(%rax),%xmm0
  movdqu -0x20(%rax),%xmm1
  movaps %xmm3,0x138(%rsp)
  movzbl 0x139(%rsp),%r8d
  mov    %r8b,-0x40(%rax)
  movaps %xmm3,0x128(%rsp)
  movzbl 0x12d(%rsp),%r8d
  mov    %r8b,-0x3c(%rax)
  movaps %xmm3,0x118(%rsp)
  movzbl 0x121(%rsp),%r8d
  mov    %r8b,-0x38(%rax)
  movaps %xmm3,0x108(%rsp)
  movzbl 0x115(%rsp),%r8d
  mov    %r8b,-0x34(%rax)
  movaps %xmm2,0xf8(%rsp)
  movzbl 0xf9(%rsp),%r8d
  mov    %r8b,-0x30(%rax)
  movaps %xmm2,0xe8(%rsp)
  movzbl 0xed(%rsp),%r8d
  mov    %r8b,-0x2c(%rax)
  movaps %xmm2,0xd8(%rsp)
  movzbl 0xe1(%rsp),%r8d
  mov    %r8b,-0x28(%rax)
  movaps %xmm2,0xc8(%rsp)
  movzbl 0xd5(%rsp),%r8d
  mov    %r8b,-0x24(%rax)
  movaps %xmm1,0xb8(%rsp)
  movzbl 0xb9(%rsp),%r8d
  mov    %r8b,-0x20(%rax)
  movaps %xmm1,0xa8(%rsp)
  movzbl 0xad(%rsp),%r8d
  mov    %r8b,-0x1c(%rax)
  movaps %xmm1,0x98(%rsp)
  movzbl 0xa1(%rsp),%r8d
  mov    %r8b,-0x18(%rax)
  movaps %xmm1,0x88(%rsp)
  movzbl 0x95(%rsp),%r8d
  mov    %r8b,-0x14(%rax)
  movaps %xmm0,0x78(%rsp)
  movzbl 0x79(%rsp),%r8d
  mov    %r8b,-0x10(%rax)
  movaps %xmm0,0x68(%rsp)
  movzbl 0x6d(%rsp),%r8d
  mov    %r8b,-0xc(%rax)
  movaps %xmm0,0x58(%rsp)
  movzbl 0x61(%rsp),%r8d
  mov    %r8b,-0x8(%rax)
  movaps %xmm0,0x48(%rsp)
  movzbl 0x55(%rsp),%r8d
  mov    %r8b,-0x4(%rax)
  movd   %xmm3,%r8d
  mov    %r8b,-0x3f(%rax)
  movaps %xmm3,0x38(%rsp)
  movzbl 0x3c(%rsp),%r8d
  mov    %r8b,-0x3b(%rax)
  movaps %xmm3,0x28(%rsp)
  movzbl 0x30(%rsp),%r8d
  mov    %r8b,-0x37(%rax)
  movaps %xmm3,0x18(%rsp)
  movzbl 0x24(%rsp),%r8d
  mov    %r8b,-0x33(%rax)
  movd   %xmm2,%r8d
  mov    %r8b,-0x2f(%rax)
  movaps %xmm2,0x8(%rsp)
  movzbl 0xc(%rsp),%r8d
  mov    %r8b,-0x2b(%rax)
  movaps %xmm2,-0x8(%rsp)
  movzbl (%rsp),%r8d
  mov    %r8b,-0x27(%rax)
  movaps %xmm2,-0x18(%rsp)
  movzbl -0xc(%rsp),%r8d
  mov    %r8b,-0x23(%rax)
  movd   %xmm1,%r8d
  mov    %r8b,-0x1f(%rax)
  movaps %xmm1,-0x28(%rsp)
  movzbl -0x24(%rsp),%r8d
  mov    %r8b,-0x1b(%rax)
  movaps %xmm1,-0x38(%rsp)
  movzbl -0x30(%rsp),%r8d
  mov    %r8b,-0x17(%rax)
  movaps %xmm1,-0x48(%rsp)
  movzbl -0x3c(%rsp),%r8d
  mov    %r8b,-0x13(%rax)
  movd   %xmm0,%r8d
  mov    %r8b,-0xf(%rax)
  movaps %xmm0,-0x58(%rsp)
  movzbl -0x54(%rsp),%r8d
  mov    %r8b,-0xb(%rax)
  movaps %xmm0,-0x68(%rsp)
  movzbl -0x60(%rsp),%r8d
  mov    %r8b,-0x7(%rax)
  movaps %xmm0,-0x78(%rsp)
  movzbl -0x6c(%rsp),%r8d
  mov    %r8b,-0x3(%rax)
  cmp    %r9,%rax
  jne    L22
  and    $0xfffffff0,%esi
  mov    %esi,%eax
  shl    $0x2,%rax
  add    %rax,%rdx
  add    %rax,%rcx
L75:
  movzbl (%rdx),%eax
  movzbl (%rcx),%r8d
  mov    %r8b,(%rdx)
  mov    %al,(%rcx)
  lea    0x1(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x4(%rdx),%eax
  movzbl 0x4(%rcx),%r8d
  mov    %r8b,0x4(%rdx)
  mov    %al,0x4(%rcx)
  lea    0x2(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x8(%rdx),%eax
  movzbl 0x8(%rcx),%r8d
  mov    %r8b,0x8(%rdx)
  mov    %al,0x8(%rcx)
  lea    0x3(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0xc(%rdx),%eax
  movzbl 0xc(%rcx),%r8d
  mov    %r8b,0xc(%rdx)
  mov    %al,0xc(%rcx)
  lea    0x4(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x10(%rdx),%eax
  movzbl 0x10(%rcx),%r8d
  mov    %r8b,0x10(%rdx)
  mov    %al,0x10(%rcx)
  lea    0x5(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x14(%rdx),%eax
  movzbl 0x14(%rcx),%r8d
  mov    %r8b,0x14(%rdx)
  mov    %al,0x14(%rcx)
  lea    0x6(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x18(%rdx),%eax
  movzbl 0x18(%rcx),%r8d
  mov    %r8b,0x18(%rdx)
  mov    %al,0x18(%rcx)
  lea    0x7(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x1c(%rdx),%eax
  movzbl 0x1c(%rcx),%r8d
  mov    %r8b,0x1c(%rdx)
  mov    %al,0x1c(%rcx)
  lea    0x8(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x20(%rdx),%eax
  movzbl 0x20(%rcx),%r8d
  mov    %r8b,0x20(%rdx)
  mov    %al,0x20(%rcx)
  lea    0x9(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x24(%rdx),%eax
  movzbl 0x24(%rcx),%r8d
  mov    %r8b,0x24(%rdx)
  mov    %al,0x24(%rcx)
  lea    0xa(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x28(%rdx),%eax
  movzbl 0x28(%rcx),%r8d
  mov    %r8b,0x28(%rdx)
  mov    %al,0x28(%rcx)
  lea    0xb(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x2c(%rdx),%eax
  movzbl 0x2c(%rcx),%r8d
  mov    %r8b,0x2c(%rdx)
  mov    %al,0x2c(%rcx)
  lea    0xc(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x30(%rdx),%eax
  movzbl 0x30(%rcx),%r8d
  mov    %r8b,0x30(%rdx)
  mov    %al,0x30(%rcx)
  lea    0xd(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x34(%rdx),%eax
  movzbl 0x34(%rcx),%r8d
  mov    %r8b,0x34(%rdx)
  mov    %al,0x34(%rcx)
  lea    0xe(%rsi),%eax
  cmp    %eax,%edi
  jle    L180
  movzbl 0x38(%rdx),%eax
  movzbl 0x38(%rcx),%r8d
  add    $0xf,%esi
  mov    %r8b,0x38(%rdx)
  mov    %al,0x38(%rcx)
  cmp    %esi,%edi
  jle    L180
  movzbl 0x3c(%rdx),%eax
  movzbl 0x3c(%rcx),%esi
  mov    %sil,0x3c(%rdx)
  mov    %al,0x3c(%rcx)
L180:
  add    $0x150,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L154:
  ret
L129:
  xor    %esi,%esi
  jmp    L75
```

assistant: ```c
void gabswp2(void *r, int cnt) {
  int i;
  char *ch1, *ch2, cc1;
  ch1 = (char *)r;
  ch2 = ch1 + 1;
  for (i = 0; i < cnt; i++) {
    cc1 = *ch1;
    *ch1 = *ch2;
    *ch2 = cc1;
    ch1 += 4;
    ch2 += 4;
  }
}
```