user: What is the c source code of the assembly code below?

```asm
<date_tester>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  mov    $0x1323ed5,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x132664a,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1328dbf,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x132b534,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x132dca9,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x133067c,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1324385,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1324340,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1326a50,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x132dace,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13240e7,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13242db,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x132401f,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1359c47,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x5f5bd93,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x3936393,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1326665,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1328d75,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x132b485,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x132db95,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13302a5,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x15ef4a5,%edi
  call   <is_valid_date@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x16e36e5,%edi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x13240d3,%edi
  call   <get_day_of_week@plt>
  cmp    $0x1,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13240d4,%edi
  call   <get_day_of_week@plt>
  cmp    $0x2,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13240d2,%edi
  call   <get_day_of_week@plt>
  test   %eax,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13240d5,%edi
  call   <get_day_of_week@plt>
  cmp    $0x3,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13265e5,%edi
  call   <get_day_of_week@plt>
  cmp    $0x2,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1326665,%edi
  call   <get_day_of_week@plt>
  cmp    $0x5,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13265fd,%edi
  call   <get_day_of_week@plt>
  cmp    $0x5,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x132433f,%edi
  call   <add_a_day@plt>
  cmp    $0x13265e5,%rax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x13265e5,%edi
  call   <subtract_a_day@plt>
  cmp    $0x132433f,%rax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    $0x1323ed5,%ebx
L44:
  mov    %rbx,%rdi
  call   <add_a_day@plt>
  mov    %rax,%rdi
  call   <subtract_a_day@plt>
  cmp    %rbx,%rax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    %rbx,%rdi
  call   <add_a_day@plt>
  mov    %rax,%rbx
  cmp    $0x16e13bd,%rax
  jle    L44
  mov    $0x5e7b095,%ebx
L29:
  mov    %rbx,%rdi
  call   <subtract_a_day@plt>
  mov    %rax,%rdi
  call   <add_a_day@plt>
  cmp    %rbx,%rax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    %rbx,%rdi
  call   <add_a_day@plt>
  mov    %rax,%rbx
  cmp    $0x5f5bebd,%rax
  jle    L29
  mov    $0xb2b60,%ebp
  mov    $0x1323ed5,%ebx
  lea    0x14(%rsp),%r12
L40:
  mov    %rbx,%rdi
  call   <get_day_of_week@plt>
  mov    %eax,%r13d
  mov    %rbx,%rdi
  call   <add_a_day@plt>
  mov    %rax,%rbx
  mov    %rax,%rdi
  call   <is_valid_date@plt>
  mov    %eax,%edi
  call   <assert@plt>
  mov    %rbx,%rdi
  call   <get_day_of_week@plt>
  mov    %eax,%edx
  lea    0x1(%r13),%ecx
  movslq %ecx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %ecx,%eax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  lea    0x0(,%rax,8),%esi
  sub    %eax,%esi
  sub    %esi,%ecx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  lea    0x0(,%rax,8),%esi
  sub    %eax,%esi
  sub    %esi,%edx
  cmp    %edx,%ecx
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  lea    0x10(%rsp),%rdx
  lea    0xc(%rsp),%rsi
  mov    %r12,%rcx
  mov    %rbx,%rdi
  call   <long_to_date@plt>
  mov    0x14(%rsp),%edx
  mov    0x10(%rsp),%esi
  mov    0xc(%rsp),%edi
  call   <date_to_long@plt>
  cmp    %rbx,%rax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  sub    $0x1,%ebp
  jne    L40
  mov    $0xb2b60,%r12d
L32:
  mov    %rbx,%rdi
  call   <get_day_of_week@plt>
  mov    %eax,%ebp
  mov    %rbx,%rdi
  call   <subtract_a_day@plt>
  mov    %rax,%rbx
  mov    %rax,%rdi
  call   <get_day_of_week@plt>
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x2,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  lea    0x0(,%rdx,8),%ecx
  sub    %edx,%ecx
  sub    %ecx,%eax
  movslq %ebp,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %ebp,%edx
  sar    $0x2,%edx
  mov    %ebp,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  lea    0x0(,%rdx,8),%ecx
  sub    %edx,%ecx
  sub    %ecx,%ebp
  cmp    %ebp,%eax
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  sub    $0x1,%r12d
  jne    L32
  lea    0x14(%rsp),%rcx
  lea    0x10(%rsp),%rdx
  lea    0xc(%rsp),%rsi
  mov    %rbx,%rdi
  call   <long_to_date@plt>
  cmpl   $0x7d7,0xc(%rsp)
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  cmpl   $0x1,0x10(%rsp)
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  cmpl   $0x1,0x14(%rsp)
  sete   %dil
  movzbl %dil,%edi
  call   <assert@plt>
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L13
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L13:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void date_tester() {
  int i;
  long l;
  assert(is_valid_date(20070101));
  assert(is_valid_date(20080202));
  assert(is_valid_date(20090303));
  assert(is_valid_date(20100404));
  assert(is_valid_date(20110505));
  assert(is_valid_date(20121212));
  assert(!is_valid_date(20071301));
  assert(!is_valid_date(20071232));
  assert(!is_valid_date(20081232));
  assert(!is_valid_date(20110030));
  assert(!is_valid_date(20070631));
  assert(!is_valid_date(20071131));
  assert(!is_valid_date(20070431));
  assert(!is_valid_date(20290631));
  assert(!is_valid_date(99990931));
  assert(!is_valid_date(59990931));
  assert(is_valid_date(20080229));
  assert(!is_valid_date(20090229));
  assert(!is_valid_date(20100229));
  assert(!is_valid_date(20110229));
  assert(is_valid_date(20120229));
  assert(!is_valid_date(23000229));
  assert(is_valid_date(24000229));
  assert(get_day_of_week(20070611) == 1);
  assert(get_day_of_week(20070612) == 2);
  assert(get_day_of_week(20070610) == 0);
  assert(get_day_of_week(20070613) == 3);
  assert(get_day_of_week(20080101) == 2);
  assert(get_day_of_week(20080229) == 5);
  assert(get_day_of_week(20080125) == 5);
  assert(add_a_day(20071231) == 20080101);
  assert(subtract_a_day(20080101) == 20071231);
  for (l = 20070101; l < 23991230; l = add_a_day(l))
    assert(subtract_a_day(add_a_day(l)) == l);
  for (l = 99070101; l < 99991230; l = add_a_day(l))
    assert(add_a_day(subtract_a_day(l)) == l);
  l = 20070101;
  for (i = 0; i < 366 * 2000; ++i) {
    int dow1 = get_day_of_week(l);
    l = add_a_day(l);
    assert(is_valid_date(l));
    int dow2 = get_day_of_week(l);
    assert((dow1 + 1) % 7 == dow2 % 7);
    int y, m, d;
    long_to_date(l, &y, &m, &d);
    assert(l == date_to_long(y, m, d));
  }
  for (i = 0; i < 366 * 2000; ++i) {
    int dow1 = get_day_of_week(l);
    l = subtract_a_day(l);
    int dow2 = get_day_of_week(l);
    assert((dow2 + 1) % 7 == dow1 % 7);
  }
  int y2, m2, d2;
  long_to_date(l, &y2, &m2, &d2);
  assert(y2 == 2007);
  assert(m2 == 1);
  assert(d2 == 1);
}
```