user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<trans>:
  endbr64
  mov    %esi,%eax
  mov    %rdi,%rdx
  mov    %esi,%ecx
  push   %r14
  sar    $0x1f,%eax
  push   %rbx
  mov    %esi,%r8d
  shr    $0x1e,%eax
  lea    (%rsi,%rax,1),%edi
  and    $0x3,%edi
  sub    %eax,%edi
  sub    %edi,%ecx
  test   %ecx,%ecx
  jle    L78
  lea    -0x1(%rcx),%eax
  mov    %eax,%esi
  shr    $0x2,%esi
  add    $0x1,%esi
  cmp    $0x3b,%eax
  jbe    L92
  mov    %esi,%r9d
  movdqa D1(%rip),%xmm3
  mov    %rdx,%rax
  shr    $0x4,%r9d
  sub    $0x1,%r9d
  shl    $0x6,%r9
  lea    0x40(%rdx,%r9,1),%r9
  nopl   0x0(%rax)
L197:
  movdqu (%rax),%xmm0
  movdqu 0x10(%rax),%xmm1
  movdqa %xmm3,%xmm6
  add    $0x40,%rax
  movdqu -0x30(%rax),%xmm2
  movdqu -0x20(%rax),%xmm4
  pand   %xmm3,%xmm1
  pand   %xmm3,%xmm0
  movdqu -0x10(%rax),%xmm5
  packuswb %xmm1,%xmm0
  movdqu -0x40(%rax),%xmm1
  psrlw  $0x8,%xmm2
  pand   %xmm3,%xmm4
  psrlw  $0x8,%xmm5
  psrlw  $0x8,%xmm1
  packuswb %xmm2,%xmm1
  movdqu -0x10(%rax),%xmm2
  pand   %xmm3,%xmm2
  packuswb %xmm2,%xmm4
  movdqu -0x20(%rax),%xmm2
  pand   %xmm4,%xmm6
  psrlw  $0x8,%xmm4
  psrlw  $0x8,%xmm2
  packuswb %xmm5,%xmm2
  movdqa %xmm3,%xmm5
  pand   %xmm0,%xmm5
  psrlw  $0x8,%xmm0
  packuswb %xmm6,%xmm5
  packuswb %xmm4,%xmm0
  movdqa %xmm3,%xmm6
  movdqa %xmm3,%xmm4
  pand   %xmm2,%xmm6
  pand   %xmm1,%xmm4
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm1
  packuswb %xmm6,%xmm4
  packuswb %xmm2,%xmm1
  movdqa %xmm0,%xmm2
  punpckhbw %xmm5,%xmm0
  punpcklbw %xmm5,%xmm2
  movdqa %xmm1,%xmm5
  punpckhbw %xmm4,%xmm1
  punpcklbw %xmm4,%xmm5
  movdqa %xmm2,%xmm4
  punpckhbw %xmm5,%xmm2
  punpcklbw %xmm5,%xmm4
  movups %xmm2,-0x30(%rax)
  movdqa %xmm0,%xmm2
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm2
  movups %xmm4,-0x40(%rax)
  movups %xmm2,-0x20(%rax)
  movups %xmm0,-0x10(%rax)
  cmp    %rax,%r9
  jne    L197
  mov    %esi,%r9d
  and    $0xfffffff0,%r9d
  lea    0x0(,%r9,4),%eax
  cmp    %r9d,%esi
  je     L67
L117:
  movslq %eax,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x4(%rax),%r9d
  cmp    %ecx,%r9d
  jge    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x8(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0xc(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x10(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x14(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x18(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x1c(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x20(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x24(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x28(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x2c(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x30(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r9),%ebx
  movzbl (%r10),%r11d
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  lea    0x34(%rax),%r9d
  cmp    %r9d,%ecx
  jle    L67
  movslq %r9d,%r9
  add    $0x38,%eax
  lea    (%rdx,%r9,1),%r11
  lea    0x2(%rdx,%r9,1),%r10
  movzbl (%r11),%ebx
  movzbl (%r10),%r14d
  mov    %r14b,(%r11)
  mov    %bl,(%r10)
  lea    0x1(%rdx,%r9,1),%r10
  lea    0x3(%rdx,%r9,1),%r9
  movzbl (%r10),%r11d
  movzbl (%r9),%ebx
  mov    %bl,(%r10)
  mov    %r11b,(%r9)
  cmp    %eax,%ecx
  jle    L67
  cltq
  lea    (%rdx,%rax,1),%r9
  lea    0x2(%rdx,%rax,1),%rcx
  movzbl (%r9),%r10d
  movzbl (%rcx),%r11d
  mov    %r11b,(%r9)
  mov    %r10b,(%rcx)
  lea    0x1(%rdx,%rax,1),%rcx
  lea    0x3(%rdx,%rax,1),%rax
  movzbl (%rcx),%r9d
  movzbl (%rax),%r10d
  mov    %r10b,(%rcx)
  mov    %r9b,(%rax)
  nopl   (%rax)
L67:
  shl    $0x2,%esi
L145:
  and    $0x3,%r8d
  je     L140
  cmp    $0x2,%edi
  je     L81
  cmp    $0x3,%edi
  je     L115
L140:
  pop    %rbx
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L115:
  movslq %esi,%rsi
  lea    (%rdx,%rsi,1),%rcx
  lea    0x2(%rdx,%rsi,1),%rax
  movzbl (%rcx),%edi
  movzbl (%rax),%edx
  mov    %dl,(%rcx)
  mov    %dil,(%rax)
  pop    %rbx
  pop    %r14
  ret
  nopl   0x0(%rax,%rax,1)
L81:
  movslq %esi,%rsi
  lea    (%rdx,%rsi,1),%rcx
  lea    0x1(%rdx,%rsi,1),%rax
  movzbl (%rcx),%edi
  movzbl (%rax),%edx
  mov    %dl,(%rcx)
  mov    %dil,(%rax)
  pop    %rbx
  pop    %r14
  ret
  nopl   0x0(%rax,%rax,1)
L78:
  xor    %esi,%esi
  jmp    L145
L92:
  xor    %eax,%eax
  jmp    L117
```

tool_calls: name: extract_symbolic_data
arguments: tag: D1
type_infered: byte[16]

tool: {"D1": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

assistant: ```c
void trans(char *text, int textLength) {
  char temp;
  int i;
  int lastQuad = textLength % 4;
  for (i = 0; i < (textLength - lastQuad); i += 4) {
    temp = text[i];
    text[i] = text[i + 2];
    text[i + 2] = temp;
    temp = text[i + 1];
    text[i + 1] = text[i + 3];
    text[i + 3] = temp;
  }
  if (lastQuad != 0)
    switch (lastQuad) {
    case 1:
      break;
    case 2:
      temp = text[i];
      text[i] = text[i + 1];
      text[i + 1] = temp;
      break;
    case 3:
      temp = text[i];
      text[i] = text[i + 2];
      text[i + 2] = temp;
      break;
    }
}
```