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

```asm
<DaysInterval>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x48(%rbp)
  movl   $0x0,-0x3c(%rbp)
  movl   $0x16d,-0x38(%rbp)
  mov    -0x58(%rbp),%rcx
  lea    -0xd(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x4(%rax),%rcx
  lea    -0x13(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x6(%rax),%rcx
  lea    -0x10(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  movb   $0x0,-0x9(%rbp)
  movb   $0x0,-0x11(%rbp)
  movb   $0x0,-0xe(%rbp)
  lea    -0xd(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x34(%rbp)
  lea    -0x13(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x30(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x2c(%rbp)
  mov    -0x60(%rbp),%rcx
  lea    -0xd(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x60(%rbp),%rax
  lea    0x4(%rax),%rcx
  lea    -0x13(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x60(%rbp),%rax
  lea    0x6(%rax),%rcx
  lea    -0x10(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  movb   $0x0,-0x9(%rbp)
  movb   $0x0,-0x11(%rbp)
  movb   $0x0,-0xe(%rbp)
  lea    -0xd(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x28(%rbp)
  lea    -0x13(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x24(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x34(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jne    L187
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%ecx
  mov    -0x34(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%ecx
  mov    -0x28(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  sub    -0x18(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  jmp    L203
L187:
  mov    -0x34(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jge    L77
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%ecx
  mov    -0x34(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x18(%rbp)
  mov    $0x16d,%eax
  sub    -0x18(%rbp),%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x34(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  jne    L20
  mov    -0x34(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L123
L20:
  mov    -0x34(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x7,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x190,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L113
L123:
  addl   $0x1,-0x44(%rbp)
L113:
  mov    -0x44(%rbp),%eax
  add    %eax,-0x48(%rbp)
  mov    -0x34(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  jmp    L4
L167:
  movl   $0x16d,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  jne    L176
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L2
L176:
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x7,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x190,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L91
L2:
  addl   $0x1,-0x38(%rbp)
L91:
  mov    -0x38(%rbp),%eax
  add    %eax,-0x48(%rbp)
L4:
  addl   $0x1,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L167
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%ecx
  mov    -0x28(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %eax,-0x48(%rbp)
  jmp    L203
L77:
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%ecx
  mov    -0x28(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x1c(%rbp)
  mov    $0x16d,%eax
  sub    -0x1c(%rbp),%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x28(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  jne    L67
  mov    -0x28(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L131
L67:
  mov    -0x28(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x7,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x190,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L88
L131:
  addl   $0x1,-0x40(%rbp)
L88:
  mov    -0x40(%rbp),%eax
  add    %eax,-0x48(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  jmp    L175
L64:
  movl   $0x16d,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  jne    L29
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L136
L29:
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x7,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x190,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L19
L136:
  addl   $0x1,-0x38(%rbp)
L19:
  mov    -0x38(%rbp),%eax
  add    %eax,-0x48(%rbp)
L175:
  addl   $0x1,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jl     L64
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%ecx
  mov    -0x34(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <daysFrom@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    %eax,-0x48(%rbp)
  negl   -0x48(%rbp)
L203:
  mov    -0x48(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L199
  call   <__stack_chk_fail@plt>
L199:
  leave
  ret
```

assistant: ```c
int DaysInterval(char *v1, char *v2) {
  char tmpYear[5];
  char tmpMonth[3];
  char tmpDay[3];
  int dayLong = 0;
  int year1, month1, day1;
  int year2, month2, day2;
  int from1;
  int from2;
  int totalDay1;
  int totalDay2;
  int i = 0;
  int tmpDays = 365;
  strncpy(tmpYear, v1, 4);
  strncpy(tmpMonth, v1 + 4, 2);
  strncpy(tmpDay, v1 + 6, 2);
  tmpYear[4] = '\0';
  tmpMonth[2] = '\0';
  tmpDay[2] = '\0';
  year1 = atoi(tmpYear);
  month1 = atoi(tmpMonth);
  day1 = atoi(tmpDay);
  strncpy(tmpYear, v2, 4);
  strncpy(tmpMonth, v2 + 4, 2);
  strncpy(tmpDay, v2 + 6, 2);
  tmpYear[4] = '\0';
  tmpMonth[2] = '\0';
  tmpDay[2] = '\0';
  year2 = atoi(tmpYear);
  month2 = atoi(tmpMonth);
  day2 = atoi(tmpDay);
  if (year1 == year2) {
    from1 = daysFrom(year1, month1, day1);
    from2 = daysFrom(year2, month2, day2);
    dayLong = from2 - from1;
  } else if (year1 < year2) {
    from1 = daysFrom(year1, month1, day1);
    totalDay1 = 365 - from1;
    if (((year1 % 4 == 0) && (year1 % 100 != 0)) || (year1 % 400 == 0))
      totalDay1 += 1;
    dayLong += totalDay1;
    i = year1;
    while (++i < year2) {
      tmpDays = 365;
      if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0))
        tmpDays += 1;
      dayLong += tmpDays;
    }
    from2 = daysFrom(year2, month2, day2);
    dayLong += from2;
  } else {
    from2 = daysFrom(year2, month2, day2);
    totalDay2 = 365 - from2;
    if (((year2 % 4 == 0) && (year2 % 100 != 0)) || (year2 % 400 == 0))
      totalDay2 += 1;
    dayLong += totalDay2;
    i = year2;
    while (++i < year1) {
      tmpDays = 365;
      if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0))
        tmpDays += 1;
      dayLong += tmpDays;
    }
    from1 = daysFrom(year1, month1, day1);
    dayLong += from1;
    dayLong *= -1;
  }
  return dayLong;
}
```