user: What would the C source look like for the assembly code provided here:

```asm
<inc_date>:
  endbr64
  mov    %rdi,%rax
  mov    (%rdi),%edx
  cmp    $0x1b,%edx
  jg     L103
  add    $0x1,%edx
  mov    %edx,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  ret
L103:
  cmp    $0x1c,%edx
  je     L13
  cmp    $0x1d,%edx
  je     L91
  cmp    $0x1e,%edx
  je     L34
  movl   $0x1,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  mov    0x4(%rdi),%edx
  cmp    $0xb,%edx
  jg     L61
  add    $0x1,%edx
  mov    %edx,0x4(%rdi)
  ret
L13:
  cmpl   $0x2,0x4(%rdi)
  je     L20
  movl   $0x1d,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  ret
L20:
  mov    0x8(%rdi),%ecx
  movslq %ecx,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  sar    $0x27,%rdx
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%edx
  imul   $0x190,%edx,%edx
  cmp    %edx,%ecx
  je     L104
  test   $0x3,%cl
  jne    L47
  movslq %ecx,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  sar    $0x25,%rdx
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%edx
  imul   $0x64,%edx,%edx
  cmp    %edx,%ecx
  je     L47
L104:
  movl   $0x1d,(%rax)
  mov    0xc(%rax),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rax)
  ret
L47:
  movl   $0x1,(%rax)
  mov    0xc(%rax),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rax)
  movl   $0x3,0x4(%rax)
  ret
L91:
  cmpl   $0x2,0x4(%rdi)
  je     L23
  movl   $0x1e,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  ret
L23:
  movl   $0x1,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  movl   $0x3,0x4(%rdi)
  ret
L34:
  mov    0x4(%rdi),%edx
  mov    %edx,%ecx
  and    $0xfffffffd,%ecx
  cmp    $0x9,%ecx
  je     L67
  cmp    $0x4,%ecx
  jne    L110
L67:
  movl   $0x1,(%rax)
  mov    0xc(%rax),%esi
  lea    0x1(%rsi),%ecx
  cmp    $0x7,%esi
  mov    $0x1,%esi
  cmovge %esi,%ecx
  mov    %ecx,0xc(%rax)
  add    $0x1,%edx
  mov    %edx,0x4(%rax)
  ret
L110:
  movl   $0x1f,(%rdi)
  mov    0xc(%rdi),%ecx
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  ret
L61:
  movl   $0x1,0x4(%rdi)
  addl   $0x1,0x8(%rdi)
  ret
```

assistant: ```c
void inc_date(int *a) {
  if (a[0] < 28) {
    a[0] += 1;
    if (a[3] < 7)
      a[3] += 1;
    else
      a[3] = 1;
  } else {
    if (a[0] == 28) {
      if (a[1] == 2) {
        if ((!(a[2] % 400)) || ((!(a[2] % 4)) && ((a[2] % 100)))) {
          a[0] += 1;
          if (a[3] < 7)
            a[3] += 1;
          else
            a[3] = 1;
        } else {
          a[0] = 1;
          if (a[3] < 7)
            a[3] += 1;
          else
            a[3] = 1;
          a[1] += 1;
        }
      } else {
        a[0] += 1;
        if (a[3] < 7)
          a[3] += 1;
        else
          a[3] = 1;
      }
    } else {
      if (a[0] == 29) {
        if (a[1] == 2) {
          a[0] = 1;
          if (a[3] < 7)
            a[3] += 1;
          else
            a[3] = 1;
          a[1] += 1;
        } else {
          a[0] += 1;
          if (a[3] < 7)
            a[3] += 1;
          else
            a[3] = 1;
        }
      } else {
        if (a[0] == 30) {
          if ((a[1] == 4) || (a[1] == 6) || (a[1] == 9) || (a[1] == 11)) {
            a[0] = 1;
            if (a[3] < 7)
              a[3] += 1;
            else
              a[3] = 1;
            a[1] += 1;
          } else {
            a[0] += 1;
            if (a[3] < 7)
              a[3] += 1;
            else
              a[3] = 1;
          }
        } else {
          a[0] = 1;
          if (a[3] < 7)
            a[3] += 1;
          else
            a[3] = 1;
          if (a[1] < 12)
            a[1] += 1;
          else {
            a[1] = 1;
            a[2] += 1;
          }
        }
      }
    }
  }
}
```