user: 请将以下的汇编代码转换成C语言代码:

```asm
<quaddobl_Littlewood_Richardson_homotopies>:
  endbr64
  push   %rbp
  mov    %esi,%r10d
  mov    %rcx,%r11
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x38,%rsp
  mov    0x28(%rbp),%rbx
  mov    0x10(%rbp),%eax
  mov    %rsp,%r13
  mov    0x18(%rbp),%rcx
  mov    0x20(%rbp),%r15
  mov    %rbx,-0x58(%rbp)
  lea    -0x2(%rdx),%ebx
  imul   %edi,%ebx
  mov    %fs:0x28,%rsi
  mov    %rsi,-0x38(%rbp)
  xor    %esi,%esi
  imul   %edi,%ebx
  shl    $0x3,%ebx
  lea    0x1(%rbx),%r14d
  movslq %r14d,%rsi
  lea    0xf(,%rsi,8),%rsi
  mov    %rsi,%r12
  and    $0xfffffffffffff000,%rsi
  sub    %rsi,%r13
  and    $0xfffffffffffffff0,%r12
  cmp    %r13,%rsp
  je     L247
L78:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %r13,%rsp
  jne    L78
L247:
  and    $0xfff,%r12d
  sub    %r12,%rsp
  test   %r12,%r12
  jne    L61
L223:
  movd   %r8d,%xmm7
  movd   %edx,%xmm1
  movd   %edi,%xmm0
  punpckldq %xmm7,%xmm1
  movd   %r10d,%xmm7
  lea    0x7(%rsp),%r12
  punpckldq %xmm7,%xmm0
  mov    %r12,%rsi
  movd   %eax,%xmm7
  and    $0xfffffffffffffff8,%r12
  punpcklqdq %xmm1,%xmm0
  shr    $0x3,%rsi
  movaps %xmm0,-0x50(%rbp)
  movd   %r9d,%xmm0
  punpckldq %xmm7,%xmm0
  mov    %rsi,-0x60(%rbp)
  movq   %xmm0,-0x40(%rbp)
  test   %eax,%eax
  jle    L244
  lea    -0x1(%rax),%edx
  cmp    $0xe,%edx
  jbe    L0
  mov    %eax,%edi
  mov    %rcx,%rsi
  pxor   %xmm5,%xmm5
  mov    %r12,%rdx
  shr    $0x4,%edi
  pxor   %xmm4,%xmm4
  sub    $0x1,%edi
  shl    $0x4,%rdi
  lea    0x10(%rcx,%rdi,1),%rdi
  nopl   0x0(%rax)
L190:
  movdqu (%rsi),%xmm1
  movdqa %xmm5,%xmm2
  movdqa %xmm4,%xmm6
  add    $0x10,%rsi
  sub    $0xffffffffffffff80,%rdx
  pcmpgtb %xmm1,%xmm2
  movdqa %xmm1,%xmm0
  punpcklbw %xmm2,%xmm0
  punpckhbw %xmm2,%xmm1
  movdqa %xmm4,%xmm2
  pcmpgtw %xmm0,%xmm2
  pcmpgtw %xmm1,%xmm6
  movdqa %xmm0,%xmm3
  punpcklwd %xmm2,%xmm3
  punpckhwd %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  punpcklwd %xmm6,%xmm2
  punpckhwd %xmm6,%xmm1
  cvtdq2pd %xmm3,%xmm6
  movups %xmm6,-0x80(%rdx)
  pshufd $0xee,%xmm3,%xmm3
  cvtdq2pd %xmm3,%xmm3
  movups %xmm3,-0x70(%rdx)
  cvtdq2pd %xmm0,%xmm3
  pshufd $0xee,%xmm0,%xmm0
  cvtdq2pd %xmm0,%xmm0
  movups %xmm0,-0x50(%rdx)
  cvtdq2pd %xmm2,%xmm0
  pshufd $0xee,%xmm2,%xmm2
  movups %xmm0,-0x40(%rdx)
  cvtdq2pd %xmm1,%xmm0
  pshufd $0xee,%xmm1,%xmm1
  cvtdq2pd %xmm2,%xmm2
  cvtdq2pd %xmm1,%xmm1
  movups %xmm3,-0x60(%rdx)
  movups %xmm2,-0x30(%rdx)
  movups %xmm0,-0x20(%rdx)
  movups %xmm1,-0x10(%rdx)
  cmp    %rdi,%rsi
  jne    L190
  mov    %eax,%edx
  and    $0xfffffff0,%edx
  test   $0xf,%al
  je     L244
L169:
  movslq %edx,%rdi
  pxor   %xmm0,%xmm0
  lea    (%r12,%rdi,8),%rsi
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x1(%rdx),%edi
  movsd  %xmm0,(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x2(%rdx),%edi
  movsd  %xmm0,0x8(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x3(%rdx),%edi
  movsd  %xmm0,0x10(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x4(%rdx),%edi
  movsd  %xmm0,0x18(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x5(%rdx),%edi
  movsd  %xmm0,0x20(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x6(%rdx),%edi
  movsd  %xmm0,0x28(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x7(%rdx),%edi
  movsd  %xmm0,0x30(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x8(%rdx),%edi
  movsd  %xmm0,0x38(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0x9(%rdx),%edi
  movsd  %xmm0,0x40(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0xa(%rdx),%edi
  movsd  %xmm0,0x48(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0xb(%rdx),%edi
  movsd  %xmm0,0x50(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0xc(%rdx),%edi
  movsd  %xmm0,0x58(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  lea    0xd(%rdx),%edi
  movsd  %xmm0,0x60(%rsi)
  cmp    %edi,%eax
  jle    L244
  movslq %edi,%rdi
  pxor   %xmm0,%xmm0
  add    $0xe,%edx
  movsbl (%rcx,%rdi,1),%edi
  cvtsi2sd %edi,%xmm0
  movsd  %xmm0,0x68(%rsi)
  cmp    %edx,%eax
  jle    L244
  movslq %edx,%rdx
  pxor   %xmm0,%xmm0
  movsbl (%rcx,%rdx,1),%eax
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,0x70(%rsi)
  nopl   0x0(%rax,%rax,1)
L244:
  lea    -0x50(%rbp),%rsi
  mov    %r12,%rcx
  mov    %r11,%rdx
  mov    $0xb5,%edi
  call   <_ada_use_c2phc@plt>
  mov    %eax,%r13d
  mov    -0x60(%rbp),%rax
  cvttsd2si 0x0(,%rax,8),%eax
  mov    %eax,(%r15)
  cmp    $0x1,%r14d
  jle    L60
  lea    -0x1(%rbx),%eax
  mov    -0x58(%rbp),%rdi
  lea    0x8(%r12),%rsi
  lea    0x8(,%rax,8),%rdx
  call   <memcpy@plt>
L60:
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L41
  lea    -0x28(%rbp),%rsp
  mov    %r13d,%eax
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
  nop
L61:
  orq    $0x0,-0x8(%rsp,%r12,1)
  jmp    L223
L0:
  xor    %edx,%edx
  jmp    L169
L41:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int quaddobl_Littlewood_Richardson_homotopies(int n, int k, int c, int *brackets, int verbose, int verify, int nbchar, char *filename, int *r, double *flags) {
  int fail, i;
  int size = 8 * (c - 2) * n * n + 1;
  double rc[size];
  int dim[6];
  dim[0] = n;
  dim[1] = k;
  dim[2] = c;
  dim[3] = verbose;
  dim[4] = verify;
  dim[5] = nbchar;
  for (i = 0; i < nbchar; i++)
    rc[i] = (double)filename[i];
  fail = _ada_use_c2phc(181, dim, brackets, rc);
  (*r) = (int)rc[0];
  for (i = 1; i < size; i++)
    flags[i - 1] = rc[i];
  return fail;
}
```