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    D29(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xc(%rbp),%rdi
  lea    -0x10(%rbp),%rsi
  lea    -0x14(%rbp),%rcx
  lea    -0x18(%rbp),%rdx
  lea    -0x1c(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rax,%rsi
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  jle    L217
  mov    -0x1c(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jle    L217
  mov    -0x1c(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L217
  mov    -0x1c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jle    L217
  mov    -0x1c(%rbp),%eax
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L153
L217:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jle    L5
  mov    -0x18(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L5
  mov    -0x18(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jle    L5
  mov    -0x18(%rbp),%eax
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L153
L5:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L126
  mov    -0x14(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jle    L126
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L153
L126:
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jle    L138
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L153
L138:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L153:
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  jge    L214
  mov    -0x1c(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jge    L214
  mov    -0x1c(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jge    L214
  mov    -0x1c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L214
  mov    -0x1c(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L185
L214:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jge    L171
  mov    -0x18(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jge    L171
  mov    -0x18(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L171
  mov    -0x18(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L185
L171:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jge    L22
  mov    -0x14(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L22
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L185
L22:
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  jge    L91
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L185
L91:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L185:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L81
  call   <__stack_chk_fail@plt>
L81:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D29
datatype: string
name: read_data
arguments: data_label: D91
datatype: string
name: read_data
arguments: data_label: D114
datatype: string
name: read_data
arguments: data_label: D70
datatype: string

tool: D29: entre 5 inteiros: 

tool: D91: %i%i%i%i%i

tool: D114: 
Maior: %i

tool: D70: 
Menor: %i

assistant: ```c
int main() {
  int a, b, c, d, e;
  printf("entre 5 inteiros: ");
  scanf("%i%i%i%i%i", &a, &b, &c, &d, &e);
  if (a > b && a > c && a > d && a > e) {
    printf("\nMaior: %i", a);
  } else if (b > c && b > d && b > e) {
    printf("\nMaior: %i", b);
  } else if (c > d && c > e) {
    printf("\nMaior: %i", c);
  } else if (d > e) {
    printf("\nMaior: %i", d);
  } else {
    printf("\nMaior: %i", e);
  }
  if (a < b && a < c && a < d && a < e) {
    printf("\nMenor: %i", a);
  } else if (b < c && b < d && b < e) {
    printf("\nMenor: %i", b);
  } else if (c < d && c < e) {
    printf("\nMenor: %i", c);
  } else if (d < e) {
    printf("\nMenor: %i", d);
  } else {
    printf("\nMenor: %i", e);
  }
}
```