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

```asm
<main>:
  endbr64
  push   %rbp
  lea    D9(%rip),%rdi
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x24(%rsp),%rcx
  lea    0x20(%rsp),%rdx
  lea    0x1c(%rsp),%rsi
  lea    D10(%rip),%rdi
  call   <scanf@plt>
  mov    0x1c(%rsp),%eax
  mov    0x20(%rsp),%ecx
  test   %eax,%eax
  jne    L0
  cmp    %ecx,%eax
  je     L47
L48:
  test   %eax,%eax
  jne    L0
  mov    0x24(%rsp),%eax
  pxor   %xmm0,%xmm0
  lea    D42(%rip),%rdi
  cltd
  idiv   %ecx
  neg    %eax
  cvtsi2ss %eax,%xmm0
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  mov    0x20(%rsp),%ecx
  mov    0x1c(%rsp),%eax
L0:
  imul   0x24(%rsp),%eax
  imul   %ecx,%ecx
  shl    $0x2,%eax
  sub    %eax,%ecx
  mov    %ecx,%ebp
  js     L58
L9:
  mov    %ebp,%esi
  lea    D19(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %ebp,%edi
  call   <sqrt@plt>
  mov    0x20(%rsp),%ebx
  pxor   %xmm0,%xmm0
  mov    %ebp,%edi
  sub    %ebx,%eax
  neg    %ebx
  mov    %eax,%edx
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  imul   0x1c(%rsp),%eax
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,0xc(%rsp)
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  movss  0xc(%rsp),%xmm0
  lea    D18(%rip),%rdi
  sub    %eax,%ebx
  mov    %ebx,%eax
  cvtss2sd %xmm0,%xmm0
  shr    $0x1f,%eax
  add    %ebx,%eax
  sar    %eax
  imul   0x1c(%rsp),%eax
  cvtsi2ss %eax,%xmm1
  mov    $0x2,%eax
  cvtss2sd %xmm1,%xmm1
  call   <printf@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L28
  add    $0x38,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
L58:
  lea    D20(%rip),%rdi
  call   <puts@plt>
  xor    %edi,%edi
  call   <exit@plt>
  jmp    L9
L47:
  lea    D6(%rip),%rdi
  call   <puts@plt>
  xor    %edi,%edi
  call   <exit@plt>
  mov    0x1c(%rsp),%eax
  mov    0x20(%rsp),%ecx
  jmp    L48
L28:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D9
type_guessed: string
name: parse_data
arguments: data_tag: D10
type_guessed: string
name: parse_data
arguments: data_tag: D42
type_guessed: string
name: parse_data
arguments: data_tag: D19
type_guessed: string
name: parse_data
arguments: data_tag: D18
type_guessed: string
name: parse_data
arguments: data_tag: D20
type_guessed: string
name: parse_data
arguments: data_tag: D6
type_guessed: string

tool: D9: Enter the value of a b c: 

tool: D10: %d %d %d

tool: D42: Only on Solution: X =%.2f 


tool: D19: temp =%d 


tool: D18: Roots are X1=%.2f X2=%.2f 


tool: D20: No Real Roots 

tool: D6: No Solution 

assistant: ```c
int main() {
  int a, b, c;
  float x1, x2;
  printf("Enter the value of a b c: ");
  scanf("%d %d %d", &a, &b, &c);
  if (a == b && a == 0) {
    printf("No Solution \n");
    exit(0);
  }
  if (a == 0) {
    x1 = -(c / b);
    printf("Only on Solution: X =%.2f \n", x1);
    exit(0);
  }
  int temp = b * b - 4 * a * c;
  if (temp < 0) {
    printf("No Real Roots \n");
    exit(0);
  }
  printf("temp =%d \n", temp);
  x1 = (-b + sqrt(temp)) / 2 * a;
  x2 = (-b - sqrt(temp)) / 2 * a;
  printf("Roots are X1=%.2f X2=%.2f \n", x1, x2);
  return 0;
}
```