user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x20(%rbp),%rax
  mov    %rax,%rsi
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x24(%rbp),%rax
  mov    %rax,%rsi
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x1c(%rbp),%esi
  mov    -0x24(%rbp),%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x28(%rbp),%eax
  mov    %esi,%r8d
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D135(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x20(%rbp),%eax
  mov    -0x1c(%rbp),%edx
  sub    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x28(%rbp),%eax
  mov    -0x24(%rbp),%edx
  sub    %edx,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x10(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0xc(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    -0x20(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mov    -0x28(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  mulss  -0x18(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd -0x18(%rbp),%xmm2
  movq   %xmm2,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0x14(%rbp),%xmm3
  movq   %xmm3,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x10(%rbp),%eax
  movq   %rcx,%xmm0
  mov    %eax,%esi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm4,%xmm4
  cvtss2sd -0x18(%rbp),%xmm4
  movq   %xmm4,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x10(%rbp),%eax
  movq   %rcx,%xmm0
  mov    %eax,%esi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%edx
  pxor   %xmm5,%xmm5
  cvtss2sd -0x18(%rbp),%xmm5
  movq   %xmm5,%rcx
  mov    -0x20(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%esi
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getch@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L9
  call   <__stack_chk_fail@plt>
L9:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D121
datatype: string
name: read_data
arguments: data_tag: D43
datatype: string
name: read_data
arguments: data_tag: D26
datatype: string
name: read_data
arguments: data_tag: D126
datatype: string
name: read_data
arguments: data_tag: D0
datatype: string
name: read_data
arguments: data_tag: D114
datatype: string
name: read_data
arguments: data_tag: D135
datatype: string
name: read_data
arguments: data_tag: D97
datatype: string
name: read_data
arguments: data_tag: D44
datatype: string
name: read_data
arguments: data_tag: D38
datatype: string
name: read_data
arguments: data_tag: D50
datatype: string

tool: D121: x1 = 

tool: D43: %d

tool: D26: y1 = 

tool: D126: x2 = 

tool: D0: y2 = 

tool: D114: Calculating Equation of (%d,%d) (%d,%d) ...

tool: D135: 
-----------Answer-----------

tool: D97: 
y = (%.3f)x + (%.3f)

tool: D44: 
y = %d/%d x + %.3f

tool: D38: 
Slope = %d/%d or %.3f

tool: D50: 
b = %d-(%.2f*%d) = %.3f

assistant: ```c
main() {
  int x1, x2, y1, y2, a, d;
  float slope = 0.0f;
  float b = 0.0f;
  printf("x1 = ");
  scanf("%d", &x1);
  printf("y1 = ");
  scanf("%d", &y1);
  printf("x2 = ");
  scanf("%d", &x2);
  printf("y2 = ");
  scanf("%d", &y2);
  printf("Calculating Equation of (%d,%d) (%d,%d) ...", x1, y1, x2, y2);
  printf("\n-----------Answer-----------");
  a = (y1 - y2);
  d = (x1 - x2);
  slope = (float)a / (float)d;
  b = y1 - (slope * x1);
  printf("\ny = (%.3f)x + (%.3f)", slope, b);
  printf("\ny = %d/%d x + %.3f", a, d, b);
  printf("\nSlope = %d/%d or %.3f", a, d, slope);
  printf("\nb = %d-(%.2f*%d) = %.3f", y1, slope, x1, b);
  getch();
}
```