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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L74
L83:
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x18(%rbp),%eax
  cltd
  shr    $0x1e,%edx
  add    %edx,%eax
  and    $0x3,%eax
  sub    %edx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x5,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  mov    %edx,-0x10(%rbp)
  mov    -0x10(%rbp),%edx
  imul   $0x64,%edx,%edx
  sub    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x7,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  mov    %edx,-0xc(%rbp)
  mov    -0xc(%rbp),%edx
  imul   $0x190,%edx,%edx
  sub    %edx,%eax
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  jne    L52
  cmpl   $0x0,-0x10(%rbp)
  je     L51
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L97
L51:
  cmpl   $0x0,-0xc(%rbp)
  jne    L76
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L97
L76:
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L97
L52:
  cmpl   $0x0,-0xc(%rbp)
  jne    L25
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L97
L25:
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L97:
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
L74:
  mov    -0x18(%rbp),%eax
  cmp    $0x270f,%eax
  jne    L83
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L71
  call   <__stack_chk_fail@plt>
L71:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D16
type: string
name: disassemble_data
arguments: data_label: D36
type: string
name: disassemble_data
arguments: data_label: D61
type: string
name: disassemble_data
arguments: data_label: D37
type: string
name: disassemble_data
arguments: data_label: D19
type: string
name: disassemble_data
arguments: data_label: D27
type: string
name: disassemble_data
arguments: data_label: D42
type: string
name: disassemble_data
arguments: data_label: D45
type: string

tool: D16: VERIFICADOR DE ANO BISSEXTO



tool: D36: Insira o ano com 4 digitos (9999 para sair): 

tool: D61: %d

tool: D37: Ano Bissexto

tool: D19: O ano NAO e Bissexto

tool: D27: 



tool: D42: PAUSE

tool: D45: cls

assistant: ```c
main() {
  int ano, div4, div100, div400;
  while (ano != 9999) {
    printf("VERIFICADOR DE ANO BISSEXTO\n\n");
    printf("Insira o ano com 4 digitos (9999 para sair): ");
    scanf("%d", &ano);
    div4 = ano % 4;
    div100 = ano % 100;
    div400 = ano % 400;
    if (div4 == 0) {
      if (div100 != 0) {
        printf("Ano Bissexto");
      } else {
        if (div400 == 0) {
          printf("Ano Bissexto");
        } else {
          printf("O ano NAO e Bissexto");
        }
      }
    } else {
      if (div400 == 0) {
        printf("Ano Bissexto");
      } else {
        printf("O ano NAO e Bissexto");
      }
    }
    printf("\n\n");
    system("PAUSE");
    system("cls");
  }
}
```