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

```asm
<blind_shiftc>:
  endbr64
  push   %r13
  mov    %rdi,%r11
  mov    %rdx,%r10
  mov    %ecx,%edi
  push   %r12
  lea    (%rdx,%rdx,1),%rcx
  push   %rbp
  push   %rbx
  test   %r8d,%r8d
  js     L26
  movslq %r8d,%rax
  xor    %edx,%edx
  div    %rcx
  cmp    %r10,%rdx
  jae    L72
  mov    %r10,%rax
  mov    %edx,%r12d
  sub    %rdx,%rax
  je     L73
L145:
  lea    0x4(,%rdx,4),%r8
  mov    %rsi,%rbx
  lea    -0x1(%rax),%rcx
  lea    (%r11,%r8,1),%rbp
  sub    %rbp,%rbx
  cmp    $0x8,%rbx
  jbe    L88
  cmp    $0x2,%rcx
  jbe    L88
  mov    %rax,%rbx
  lea    -0x4(%r11,%r8,1),%rbp
  xor    %r8d,%r8d
  shr    $0x2,%rbx
  shl    $0x4,%rbx
  nopl   0x0(%rax)
L38:
  movdqu 0x0(%rbp,%r8,1),%xmm2
  movups %xmm2,(%rsi,%r8,1)
  add    $0x10,%r8
  cmp    %rbx,%r8
  jne    L38
  mov    %rax,%r8
  and    $0xfffffffffffffffc,%r8
  test   $0x3,%al
  je     L100
  lea    (%r12,%r8,1),%ebx
  movslq %ebx,%rbx
  mov    (%r11,%rbx,4),%ebx
  mov    %ebx,(%rsi,%r8,4)
  lea    0x1(%r8),%ebx
  movslq %ebx,%r13
  cmp    %rax,%r13
  jae    L100
  add    %r12d,%ebx
  add    $0x2,%r8d
  lea    0x0(,%r13,4),%rbp
  movslq %ebx,%rbx
  mov    (%r11,%rbx,4),%ebx
  mov    %ebx,(%rsi,%r13,4)
  movslq %r8d,%rbx
  cmp    %rax,%rbx
  jae    L100
  add    %r12d,%r8d
  movslq %r8d,%r8
  mov    (%r11,%r8,4),%r8d
  mov    %r8d,0x4(%rsi,%rbp,1)
L100:
  add    $0x1,%ecx
L117:
  cmp    %rax,%r10
  jbe    L41
L287:
  sub    %r10,%rdx
  movslq %ecx,%rcx
  lea    (%r11,%rdx,4),%r8
  jmp    L236
  nopl   0x0(%rax)
L204:
  mov    %rax,%rcx
L236:
  mov    %edi,%edx
  sub    (%r8,%rcx,4),%edx
  mov    %edx,(%rsi,%rax,4)
  lea    0x1(%rcx),%rax
  cmp    %rax,%r10
  ja     L204
L180:
  xor    %ecx,%ecx
  nop
L210:
  mov    (%rsi,%rcx,4),%eax
  imul   %r9d,%eax
  cltd
  idiv   %edi
  mov    %edx,(%r11,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%r10
  ja     L210
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  xchg   %ax,%ax
L72:
  mov    %edx,%r12d
  mov    %edi,%eax
  sub    %r9d,%eax
  sub    %r10d,%r12d
  mov    %eax,%r9d
  movslq %r12d,%rdx
  mov    %r10,%rax
  sub    %rdx,%rax
  jne    L145
  xor    %ecx,%ecx
  jmp    L117
  nopl   0x0(%rax)
L26:
  neg    %r8d
  xor    %edx,%edx
  movslq %r8d,%rax
  div    %rcx
  cmp    %r10,%rdx
  jb     L148
  mov    %edi,%eax
  sub    %r10d,%edx
  sub    %r9d,%eax
  mov    %eax,%r9d
L148:
  test   %edx,%edx
  jle    L29
  mov    %edx,%eax
  mov    %rsi,%r8
  neg    %eax
  cltq
  add    %r10,%rax
  lea    0x4(,%rax,4),%rcx
  lea    (%r11,%rcx,1),%rbx
  sub    %rbx,%r8
  cmp    $0x8,%r8
  jbe    L133
  lea    -0x1(%rdx),%r8d
  cmp    $0x2,%r8d
  jbe    L133
  lea    -0x4(%r11,%rcx,1),%r8
  mov    %edx,%ecx
  movd   %edi,%xmm4
  xor    %eax,%eax
  shr    $0x2,%ecx
  pshufd $0x0,%xmm4,%xmm1
  shl    $0x4,%rcx
  nopw   0x0(%rax,%rax,1)
L103:
  movdqu (%r8,%rax,1),%xmm3
  movdqa %xmm1,%xmm0
  psubd  %xmm3,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L103
  mov    %edx,%eax
  and    $0xfffffffc,%eax
  test   $0x3,%dl
  je     L218
  mov    %eax,%ecx
  mov    %eax,%ebx
  mov    %edi,%ebp
  sub    %edx,%ecx
  lea    0x0(,%rbx,4),%r8
  movslq %ecx,%rcx
  add    %r10,%rcx
  sub    (%r11,%rcx,4),%ebp
  lea    0x1(%rax),%ecx
  mov    %ebp,(%rsi,%rbx,4)
  cmp    %ecx,%edx
  jle    L218
  sub    %edx,%ecx
  mov    %edi,%ebx
  add    $0x2,%eax
  movslq %ecx,%rcx
  add    %r10,%rcx
  sub    (%r11,%rcx,4),%ebx
  mov    %ebx,0x4(%rsi,%r8,1)
  cmp    %eax,%edx
  jle    L218
  sub    %edx,%eax
  mov    %edi,%ebx
  cltq
  add    %r10,%rax
  sub    (%r11,%rax,4),%ebx
  mov    %ebx,0x8(%rsi,%r8,1)
L218:
  movslq %edx,%rax
  movslq %edx,%rcx
L138:
  cmp    %rax,%r10
  jbe    L41
  movslq %edx,%rdx
  neg    %rdx
  lea    (%r11,%rdx,4),%r8
  jmp    L229
  nopl   0x0(%rax)
L125:
  mov    %rax,%rcx
L229:
  mov    (%r8,%rcx,4),%edx
  mov    %edx,(%rsi,%rax,4)
  lea    0x1(%rcx),%rax
  cmp    %rax,%r10
  ja     L125
  jmp    L180
  nopl   0x0(%rax,%rax,1)
L41:
  test   %r10,%r10
  jne    L180
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L88:
  lea    -0x4(%r11,%r8,1),%rbp
  lea    0x0(,%rax,4),%r12
  xor    %r8d,%r8d
L305:
  mov    0x0(%rbp,%r8,1),%ebx
  mov    %ebx,(%rsi,%r8,1)
  add    $0x4,%r8
  cmp    %r12,%r8
  jne    L305
  jmp    L100
L133:
  lea    (%r11,%rax,4),%r8
  mov    %edx,%ebx
  xor    %eax,%eax
  nop
L242:
  mov    %edi,%ecx
  sub    (%r8,%rax,4),%ecx
  mov    %ecx,(%rsi,%rax,4)
  add    $0x1,%rax
  cmp    %rbx,%rax
  jne    L242
  jmp    L218
L29:
  xor    %eax,%eax
  xor    %ecx,%ecx
  jmp    L138
L73:
  xor    %ecx,%ecx
  jmp    L287
```

assistant: ```c
void blind_shiftc(int32_t v[], int32_t t[], size_t n, int32_t q, int st, int32_t c) {
  int i;
  if (st >= 0) {
    st %= 2 * n;
    if (st >= n) {
      c = q - c;
      st -= n;
    }
    for (i = 0; i < n - st; i++)
      t[i] = v[i + st];
    for (; i < n; i++)
      t[i] = q - v[i + st - n];
  } else {
    st = (-st) % (2 * n);
    if (st >= n) {
      c = q - c;
      st -= n;
    }
    for (i = 0; i < st; i++)
      t[i] = q - v[i - st + n];
    for (; i < n; i++)
      t[i] = v[i - st];
  }
  for (i = 0; i < n; i++)
    v[i] = (c * t[i]) % q;
}
```