user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x18(%rbp),%rax
  cmp    $0x270f,%rax
  jg     L10
  mov    -0x18(%rbp),%rax
  cqto
  shr    $0x3e,%rdx
  add    %rdx,%rax
  and    $0x3,%eax
  sub    %rdx,%rax
  lea    0x1(%rax),%rsi
  mov    $0x1,%eax
  cqto
  idiv   %rsi
  mov    %rax,%rdi
  mov    -0x18(%rbp),%rcx
  movabs $0xa3d70a3d70a3d70b,%rdx
  mov    %rcx,%rax
  imul   %rdx
  lea    (%rdx,%rcx,1),%rax
  sar    $0x6,%rax
  mov    %rcx,%rsi
  sar    $0x3f,%rsi
  sub    %rsi,%rax
  mov    %rax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  sub    %rax,%rcx
  mov    %rcx,%rdx
  lea    0x1(%rdx),%rsi
  mov    $0xffffffffffffffff,%rax
  cqto
  idiv   %rsi
  lea    (%rdi,%rax,1),%rsi
  mov    -0x18(%rbp),%rcx
  movabs $0xa3d70a3d70a3d70b,%rdx
  mov    %rcx,%rax
  imul   %rdx
  lea    (%rdx,%rcx,1),%rax
  sar    $0x8,%rax
  mov    %rcx,%rdi
  sar    $0x3f,%rdi
  sub    %rdi,%rax
  mov    %rax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x4,%rax
  sub    %rax,%rcx
  mov    %rcx,%rdx
  lea    0x1(%rdx),%rdi
  mov    $0x1,%eax
  cqto
  idiv   %rdi
  add    %rsi,%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  jne    L23
  lea    D0(%rip),%rax
  jmp    L24
L23:
  lea    D13(%rip),%rax
L24:
  mov    -0x18(%rbp),%rcx
  mov    %rax,%rdx
  mov    %rcx,%rsi
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L17
L10:
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L17:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L35
  call   <__stack_chk_fail@plt>
L35:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D24
type_guessed: string
name: parse_data
arguments: label: D51
type_guessed: string
name: parse_data
arguments: label: D0
type_guessed: string
name: parse_data
arguments: label: D13
type_guessed: string
name: parse_data
arguments: label: D29
type_guessed: string
name: parse_data
arguments: label: D1
type_guessed: string

tool: D24: 

		Bitte geben Sie ein Jahr ein (Beispiel: 2021 - max. 9999):

		> 

tool: D51: %ld

tool: D0: 

		Computer sagt: "Nein..."


tool: D13: 
		Computer sagt: "Ja..."


tool: D29: 
		Ist "%ld" ein Schaltjahr? %s



tool: D1: 
		Eingabe ist zu lang! 


assistant: ```c
int main(void) {
  long int AKTUELLES_JAHR, SCHALTJAHR;
  printf("\n\n\t\tBitte geben Sie ein Jahr ein (Beispiel: 2021 - max. 9999):\n\n\t\t> ");
  scanf("%ld", &AKTUELLES_JAHR);
  if (AKTUELLES_JAHR < 10000) {
    SCHALTJAHR = 1 / (1 + AKTUELLES_JAHR % 4) - 1 / (1 + AKTUELLES_JAHR % 100) + 1 / (1 + AKTUELLES_JAHR % 400);
    printf("\n\t\tIst \"%ld\" ein Schaltjahr? %s\n\n", AKTUELLES_JAHR, SCHALTJAHR == 0 ? "\n\n\t\tComputer sagt: \"Nein...\"\n" : "\n\t\tComputer sagt: \"Ja...\"\n");
  } else {
    printf("\n\t\tEingabe ist zu lang! \n\n");
  }
}
```