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

```asm
<print_equation3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  mov    %edx,-0xc(%rbp)
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  cmpl   $0x0,-0x4(%rbp)
  jne    L71
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L136
L71:
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D120(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L136:
  cmpl   $0x0,-0x4(%rbp)
  je     L144
  cmpl   $0x1,-0x8(%rbp)
  jne    L144
  cmpl   $0x0,-0xc(%rbp)
  je     L144
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L209
L144:
  cmpl   $0x0,-0x4(%rbp)
  je     L69
  cmpl   $0xffffffff,-0x8(%rbp)
  jne    L69
  cmpl   $0x0,-0xc(%rbp)
  je     L69
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L209
L69:
  cmpl   $0x0,-0x4(%rbp)
  je     L96
  cmpl   $0x1,-0x8(%rbp)
  jne    L96
  cmpl   $0x0,-0xc(%rbp)
  jne    L96
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L209
L96:
  cmpl   $0x0,-0x4(%rbp)
  je     L31
  cmpl   $0xffffffff,-0x8(%rbp)
  jne    L31
  cmpl   $0x0,-0xc(%rbp)
  jne    L31
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L209
L31:
  cmpl   $0x0,-0xc(%rbp)
  je     L101
  cmpl   $0x1,-0x8(%rbp)
  jne    L101
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L209
L101:
  cmpl   $0x0,-0xc(%rbp)
  je     L142
  cmpl   $0xffffffff,-0x8(%rbp)
  jne    L142
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L209
L142:
  cmpl   $0x1,-0x8(%rbp)
  jne    L255
  cmpl   $0x0,-0xc(%rbp)
  jne    L255
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L209
L255:
  cmpl   $0xffffffff,-0x8(%rbp)
  jne    L209
  cmpl   $0x0,-0xc(%rbp)
  jne    L209
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L209:
  cmpl   $0x0,-0xc(%rbp)
  jle    L289
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L151
L289:
  cmpl   $0x0,-0xc(%rbp)
  jns    L151
  mov    -0xc(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  mov    %eax,%esi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L151:
  cmpl   $0x0,-0x4(%rbp)
  jle    L6
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L324
L6:
  cmpl   $0x0,-0x4(%rbp)
  jns    L324
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  nop
L324:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D59
datatype: string
name: retrieve_data
arguments: tag: D28
datatype: string
name: retrieve_data
arguments: tag: D120
datatype: string
name: retrieve_data
arguments: tag: D7
datatype: string
name: retrieve_data
arguments: tag: D21
datatype: string
name: retrieve_data
arguments: tag: D58
datatype: string
name: retrieve_data
arguments: tag: D56
datatype: string
name: retrieve_data
arguments: tag: D82
datatype: string
name: retrieve_data
arguments: tag: D61
datatype: string
name: retrieve_data
arguments: tag: D2
datatype: string
name: retrieve_data
arguments: tag: D24
datatype: string
name: retrieve_data
arguments: tag: D62
datatype: string
name: retrieve_data
arguments: tag: D30
datatype: string
name: retrieve_data
arguments: tag: D109
datatype: string
name: retrieve_data
arguments: tag: D8
datatype: string

tool: D59: 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

tool: D28: The equation is y = 

tool: D120: The equation is y = %dx^2 

tool: D7: + x 

tool: D21: - x 

tool: D58: + x

tool: D56: - x

tool: D82: x 

tool: D61: -x 

tool: D2: x

tool: D24: -x

tool: D62: + %d


tool: D30: - %d


tool: D109: The parabola opens upward.

tool: D8: The parabola opens downward.

assistant: ```c
void print_equation3(int CoeffA, int CoeffB, int CoeffC) {
  printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  if (CoeffA == 0)
    printf("The equation is y = ");
  else
    printf("The equation is y = %dx^2 ", CoeffA);
  if (!(CoeffA == 0) && CoeffB == 1 && !(CoeffC == 0))
    printf("+ x ");
  else if (!(CoeffA == 0) && CoeffB == -1 && !(CoeffC == 0))
    printf("- x ");
  else if (!(CoeffA == 0) && CoeffB == 1 && CoeffC == 0)
    printf("+ x\n");
  else if (!(CoeffA == 0) && CoeffB == -1 && CoeffC == 0)
    printf("- x\n");
  else if (!(CoeffC == 0) && CoeffB == 1)
    printf("x ");
  else if (!(CoeffC == 0) && CoeffB == -1)
    printf("-x ");
  else if (CoeffB == 1 && CoeffC == 0)
    printf("x\n");
  else if (CoeffB == -1 && CoeffC == 0)
    printf("-x\n");
  if (CoeffC > 0)
    printf("+ %d\n", CoeffC);
  else if (CoeffC < 0)
    printf("- %d\n", abs(CoeffC));
  if (CoeffA > 0)
    printf("The parabola opens upward.\n");
  else if (CoeffA < 0)
    printf("The parabola opens downward.\n");
  return;
}
```