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

```asm
<inc_date>:
  endbr64
  mov    (%rdi),%edx
  mov    0xc(%rdi),%ecx
  mov    %rdi,%rax
  cmp    $0x1b,%edx
  jg     L161
  add    $0x1,%edx
  mov    %edx,(%rdi)
  cmp    $0x6,%ecx
  jg     L151
L27:
  add    $0x1,%ecx
  mov    %ecx,0xc(%rax)
  ret
  nopw   0x0(%rax,%rax,1)
L36:
  cmp    $0x2,%esi
  je     L127
L47:
  movl   $0x1d,(%rax)
  cmp    $0x6,%ecx
  jle    L27
L151:
  movl   $0x1,0xc(%rax)
  ret
  nopl   0x0(%rax)
L161:
  mov    0x4(%rdi),%esi
  cmp    $0x1c,%edx
  je     L36
  cmp    $0x1d,%edx
  je     L109
  cmp    $0x1e,%edx
  je     L15
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  movl   $0x1,(%rdi)
  cmovge %ecx,%edx
  mov    %edx,0xc(%rdi)
  cmp    $0xb,%esi
  jg     L16
  add    $0x1,%esi
  mov    %esi,0x4(%rdi)
  ret
  nopl   (%rax)
L15:
  mov    %esi,%edx
  and    $0xfffffffd,%edx
  cmp    $0x4,%edx
  je     L30
  cmp    $0x9,%edx
  je     L30
  movl   $0x1f,(%rdi)
  cmp    $0x6,%ecx
  jg     L151
  jmp    L27
  nop
L30:
  cmp    $0x7,%ecx
  lea    0x1(%rcx),%edx
  mov    $0x1,%ecx
  movl   $0x1,(%rax)
  cmovge %ecx,%edx
  add    $0x1,%esi
  mov    %esi,0x4(%rax)
  mov    %edx,0xc(%rax)
  ret
  xchg   %ax,%ax
L109:
  cmp    $0x2,%esi
  je     L167
  movl   $0x1e,(%rdi)
  cmp    $0x6,%ecx
  jg     L151
  jmp    L27
  nopl   0x0(%rax)
L16:
  addl   $0x1,0x8(%rdi)
  movl   $0x1,0x4(%rdi)
  ret
  nopl   0x0(%rax)
L127:
  mov    0x8(%rdi),%esi
  imul   $0xc28f5c29,%esi,%edx
  add    $0x51eb850,%edx
  mov    %edx,%edi
  ror    $0x4,%edi
  cmp    $0xa3d70a,%edi
  jbe    L47
  and    $0x3,%esi
  jne    L167
  ror    $0x2,%edx
  cmp    $0x28f5c28,%edx
  ja     L47
L167:
  lea    0x1(%rcx),%edx
  cmp    $0x7,%ecx
  mov    $0x1,%ecx
  movl   $0x1,(%rax)
  cmovge %ecx,%edx
  movl   $0x3,0x4(%rax)
  mov    %edx,0xc(%rax)
  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;
          }
        }
      }
    }
  }
}
```