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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jne    L100
  mov    -0x14(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jne    L100
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L57
L100:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  je     L17
  mov    -0x14(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  je     L17
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jne    L111
L17:
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L57
L111:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jne    L76
  mov    -0x14(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jne    L76
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  je     L84
L76:
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L57
L84:
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L57:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L117
  call   <__stack_chk_fail@plt>
L117:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D109
datatype: string
name: disassemble_data
arguments: label: D107
datatype: string
name: disassemble_data
arguments: label: D32
datatype: string
name: disassemble_data
arguments: label: D15
datatype: string
name: disassemble_data
arguments: label: D102
datatype: string
name: disassemble_data
arguments: label: D78
datatype: string
name: disassemble_data
arguments: label: D105
datatype: string
name: disassemble_data
arguments: label: D57
datatype: string
name: disassemble_data
arguments: label: D12
datatype: string

tool: D109: 
introduzca el valor del lado A	

tool: D107: %d

tool: D32: 
introduzca el valor del lado B	

tool: D15: 
introduzca el valor del lado C	

tool: D102: 



tool: D78: el triangulo es equilatero


tool: D105: el triangulo es isosceles


tool: D57: el triangulo es escaleno

tool: D12: No es un triagulo


assistant: ```c
int main(int argc, char **argv) {
  int x, y, z;
  printf("\nintroduzca el valor del lado A\t");
  scanf("%d", &x);
  printf("\nintroduzca el valor del lado B\t");
  scanf("%d", &y);
  printf("\nintroduzca el valor del lado C\t");
  scanf("%d", &z);
  printf("\n\n");
  if (x == y && x == z) {
    printf("el triangulo es equilatero\n");
  } else if (x == y || x == z || y == z) {
    printf("el triangulo es isosceles\n");
  } else if (x != y || x != z || y != z) {
    printf("el triangulo es escaleno");
  } else {
    printf("No es un triagulo\n");
  }
  return 0;
}
```