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

```asm
<prints>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  mov    %rdx,-0x98(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x98(%rbp),%rax
  shl    $0x4,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fucomip %st(1),%st
  jp     L143
  fldz
  fucomip %st(1),%st
  fstp   %st(0)
  je     L138
  jmp    L101
L143:
  fstp   %st(0)
L101:
  mov    -0x98(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    -0x98(%rbp),%rax
  shl    $0x4,%rax
  lea    -0x10(%rax),%rcx
  mov    -0x90(%rbp),%rax
  add    %rcx,%rax
  fldt   (%rax)
  lea    -0x70(%rbp),%rax
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    D59(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  add    $0x10,%rsp
  lea    -0x70(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L138:
  mov    -0x98(%rbp),%rax
  sub    $0x2,%rax
  mov    %rax,-0x78(%rbp)
  jmp    L171
L79:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fucomip %st(1),%st
  jp     L91
  fldz
  fucomip %st(1),%st
  fstp   %st(0)
  je     L114
  jmp    L3
L91:
  fstp   %st(0)
L3:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L225
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fchs
  jmp    L42
L225:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
L42:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L211
  lea    D42(%rip),%rax
  jmp    L24
L211:
  lea    D23(%rip),%rax
L24:
  lea    -0x70(%rbp),%rcx
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  mov    %rax,%rdx
  lea    D1(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  add    $0x10,%rsp
  lea    -0x70(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  cmpq   $0x1,-0x78(%rbp)
  je     L80
  mov    -0x78(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  lea    D9(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L136
L80:
  lea    -0x70(%rbp),%rax
  lea    D70(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L136:
  lea    -0x70(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L114:
  subq   $0x1,-0x78(%rbp)
L171:
  cmpq   $0x0,-0x78(%rbp)
  jne    L79
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fucomip %st(1),%st
  jp     L15
  fldz
  fucomip %st(1),%st
  fstp   %st(0)
  je     L85
  jmp    L156
L15:
  fstp   %st(0)
L156:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L212
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fchs
  jmp    L33
L212:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
L33:
  mov    -0x78(%rbp),%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  fldt   (%rax)
  fldz
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L9
  lea    D42(%rip),%rax
  jmp    L127
L9:
  lea    D23(%rip),%rax
L127:
  lea    -0x70(%rbp),%rcx
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  mov    %rax,%rdx
  lea    D93(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  add    $0x10,%rsp
  jmp    L175
L85:
  lea    -0x70(%rbp),%rax
  lea    D72(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L175:
  lea    -0x70(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L204
  call   <__stack_chk_fail@plt>
L204:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D59
datatype: string
name: parse_data
arguments: tag: D42
datatype: string
name: parse_data
arguments: tag: D23
datatype: string
name: parse_data
arguments: tag: D1
datatype: string
name: parse_data
arguments: tag: D9
datatype: string
name: parse_data
arguments: tag: D70
datatype: string
name: parse_data
arguments: tag: D93
datatype: string
name: parse_data
arguments: tag: D72
datatype: string

tool: D59: %.4Lf*x**%lu

tool: D42:  - 

tool: D23:  + 

tool: D1: %s%.4Lf

tool: D9: *x**%lu

tool: D70: *x

tool: D93: %s%.4Lf


tool: D72: 


assistant: ```c
void prints(char function[], long double *degrees, unsigned long size) {
  unsigned long i;
  char trash[100];
  if (degrees[size - 1] != 0) {
    sprintf(trash, "%.4Lf*x**%lu", degrees[size - 1], size - 1);
    strcat(function, trash);
  }
  for (i = size - 2; i > 0; i--) {
    if (degrees[i] != 0) {
      sprintf(trash, "%s%.4Lf", ((degrees[i] < 0) ? " - " : " + "), ((degrees[i] < 0) ? -degrees[i] : degrees[i]));
      strcat(function, trash);
      if (i != 1)
        sprintf(trash, "*x**%lu", i);
      else
        sprintf(trash, "*x");
      strcat(function, trash);
    }
  }
  if (degrees[i] != 0)
    sprintf(trash, "%s%.4Lf\n", ((degrees[i] < 0) ? " - " : " + "), ((degrees[i] < 0) ? -degrees[i] : degrees[i]));
  else
    sprintf(trash, "\n");
  strcat(function, trash);
}
```