user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0xc(%rbp),%rcx
  lea    -0x10(%rbp),%rdx
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L116
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jl     L63
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jne    L116
L63:
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L116:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jge    L61
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jg     L42
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jne    L61
L42:
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L61:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jge    L152
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L152
  mov    -0x10(%rbp),%eax
  mov    -0xc(%rbp),%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  mov    -0x10(%rbp),%ecx
  sub    %ecx,%eax
  cmp    %eax,%edx
  jle    L169
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L169:
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L152:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L124
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jle    L124
  mov    -0x10(%rbp),%eax
  mov    -0xc(%rbp),%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  mov    -0x10(%rbp),%ecx
  sub    %ecx,%eax
  cmp    %eax,%edx
  jge    L43
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L43:
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L124:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jne    L47
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L113
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L113:
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L47:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L24
  call   <__stack_chk_fail@plt>
L24:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D45
datatype: string
name: parse_data
arguments: data_tag: D58
datatype: string
name: parse_data
arguments: data_tag: D78
datatype: string

tool: D45: %d %d %d

tool: D58: :)


tool: D78: :(


assistant: ```c
int main(void) {
  int dia1, dia2, dia3;
  scanf("%d %d %d", &dia1, &dia2, &dia3);
  if (((dia1) > (dia2)) && (((dia2) < (dia3)) || ((dia2) == (dia3)))) {
    printf(":)\n");
  } else if (((dia1) < (dia2)) && (((dia2) > (dia3)) || ((dia2) == (dia3)))) {
    printf(":(\n");
  } else if (((dia1) < (dia2)) && ((dia2) < (dia3))) {
    if (((dia2) - (dia3)) > ((dia1) - (dia2))) {
      printf(":(\n");
    } else {
      printf(":)\n");
    }
  } else if (((dia1) > (dia2)) && ((dia2) > (dia3))) {
    if (((dia2) - (dia3)) < ((dia1) - (dia2))) {
      printf(":)\n");
    } else {
      printf(":(\n");
    }
  } else if (((dia1) == (dia2))) {
    if (((dia2) < (dia3))) {
      printf(":)\n");
    } else {
      printf(":(\n");
    }
  }
  return 0;
}
```