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

```asm
<print_equation3>:
  endbr64
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  mov    %edi,%ebx
  lea    D120(%rip),%rdi
  call   <puts@plt>
  test   %ebx,%ebx
  jne    L205
  xor    %eax,%eax
  lea    D51(%rip),%rdi
  call   <printf@plt>
  cmp    $0x1,%r12d
  sete   %al
  cmp    $0xffffffff,%r12d
  sete   %dl
  mov    %eax,%ecx
  mov    %edx,%esi
  test   %ebp,%ebp
  je     L38
  test   %al,%al
  jne    L91
  test   %dl,%dl
  jne    L216
L4:
  test   %ebp,%ebp
  je     L38
L7:
  test   %ebp,%ebp
  jg     L0
  je     L23
  nopl   (%rax)
L121:
  mov    %ebp,%esi
  xor    %eax,%eax
  lea    D92(%rip),%rdi
  neg    %esi
  call   <printf@plt>
  test   %ebx,%ebx
  jle    L93
L143:
  pop    %rbx
  lea    D42(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    1060 <puts@plt>
  xchg   %ax,%ax
L205:
  xor    %eax,%eax
  mov    %ebx,%esi
  lea    D30(%rip),%rdi
  call   <printf@plt>
  cmp    $0x1,%r12d
  jne    L159
  test   %ebp,%ebp
  jne    L222
  lea    D114(%rip),%rdi
  call   <puts@plt>
  nopw   0x0(%rax,%rax,1)
L23:
  test   %ebx,%ebx
  jg     L143
L93:
  jne    L63
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L38:
  test   %cl,%cl
  je     L228
  lea    D77(%rip),%rdi
  call   <puts@plt>
  jmp    L23
  nopw   0x0(%rax,%rax,1)
L222:
  lea    D1(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L137:
  test   %ebp,%ebp
  jle    L121
L0:
  mov    %ebp,%esi
  lea    D61(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L23
L91:
  lea    D70(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L137
L63:
  pop    %rbx
  lea    D18(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    1060 <puts@plt>
L228:
  test   %sil,%sil
  je     L7
  lea    D79(%rip),%rdi
  call   <puts@plt>
  jmp    L23
L216:
  lea    D24(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L137
L159:
  add    $0x1,%r12d
  jne    L37
  test   %ebp,%ebp
  jne    L189
  lea    D20(%rip),%rdi
  call   <puts@plt>
  jmp    L23
  nopl   (%rax)
L189:
  lea    D73(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L137
L37:
  xor    %esi,%esi
  xor    %ecx,%ecx
  jmp    L4
```

tool_calls: name: retrieve_data
arguments: data_tag: D120
type_guessed: string
name: retrieve_data
arguments: data_tag: D51
type_guessed: string
name: retrieve_data
arguments: data_tag: D92
type_guessed: string
name: retrieve_data
arguments: data_tag: D42
type_guessed: string
name: retrieve_data
arguments: data_tag: D30
type_guessed: string
name: retrieve_data
arguments: data_tag: D114
type_guessed: string
name: retrieve_data
arguments: data_tag: D77
type_guessed: string
name: retrieve_data
arguments: data_tag: D1
type_guessed: string
name: retrieve_data
arguments: data_tag: D61
type_guessed: string
name: retrieve_data
arguments: data_tag: D70
type_guessed: string
name: retrieve_data
arguments: data_tag: D18
type_guessed: string
name: retrieve_data
arguments: data_tag: D79
type_guessed: string
name: retrieve_data
arguments: data_tag: D24
type_guessed: string
name: retrieve_data
arguments: data_tag: D20
type_guessed: string
name: retrieve_data
arguments: data_tag: D73
type_guessed: string

tool: D120: 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

tool: D51: The equation is y = 

tool: D92: - %d


tool: D42: The parabola opens upward.

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

tool: D114: + x

tool: D77: x

tool: D1: + x 

tool: D61: + %d


tool: D70: x 

tool: D18: The parabola opens downward.

tool: D79: -x

tool: D24: -x 

tool: D20: - x

tool: D73: - x 

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;
}
```