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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x1c(%rsp),%rsi
  lea    D37(%rip),%rbx
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  mov    0x1c(%rsp),%ebp
  movslq %ebp,%rax
  imul   $0x14f8b589,%rax,%rdx
  sar    $0x2d,%rdx
  mov    %ebp,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  mov    %edx,0xc(%rsp)
  imul   $0x68db8bad,%rax,%rax
  sar    $0x2c,%rax
  sub    %ecx,%eax
  movslq %eax,%r12
  imul   $0x51eb851f,%r12,%r12
  sar    $0x25,%r12
  cltd
  sub    %edx,%r12d
  imul   $0x64,%r12d,%edx
  mov    %eax,%r12d
  sub    %edx,%r12d
  imul   $0x2710,%eax,%eax
  sub    %eax,%ebp
  cmpl   $0x0,0x20(%rsp)
  jle    L4
  mov    $0x0,%ebx
  lea    0x24(%rsp),%r14
  lea    D37(%rip),%r13
  lea    D32(%rip),%r15
  jmp    L135
L33:
  mov    %r15,%rdi
  call   <printf@plt>
L90:
  add    $0x1,%ebx
  cmp    %ebx,0x20(%rsp)
  jle    L4
L135:
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  mov    0x24(%rsp),%eax
  movslq %eax,%rdx
  imul   $0x68db8bad,%rdx,%rdx
  sar    $0x2c,%rdx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x2710,%edx,%edx
  mov    %eax,%ecx
  sub    %edx,%ecx
  mov    %ebp,%edx
  sub    %ecx,%edx
  cmp    $0x11,%edx
  jle    L33
  cmp    $0x12,%edx
  je     L52
  lea    D7(%rip),%rdi
  call   <printf@plt>
  jmp    L90
L52:
  movslq %eax,%rcx
  imul   $0x68db8bad,%rcx,%rcx
  sar    $0x2c,%rcx
  cltd
  sub    %edx,%ecx
  movslq %ecx,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  sar    $0x25,%rdx
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%edx
  imul   $0x64,%edx,%esi
  sub    %esi,%ecx
  cmp    %ecx,%r12d
  jg     L47
  jne    L35
  mov    $0x186a0,%ecx
  cltd
  idiv   %ecx
  cmp    %eax,0xc(%rsp)
  jl     L136
  lea    D7(%rip),%rdi
  call   <printf@plt>
  jmp    L90
L47:
  lea    D7(%rip),%rdi
  call   <printf@plt>
  jmp    L90
L136:
  mov    %r15,%rdi
  call   <printf@plt>
  jmp    L90
L35:
  mov    %r15,%rdi
  call   <printf@plt>
  jmp    L90
L4:
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L73
  mov    $0x0,%eax
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L73:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D37
type_infered: string
name: extract_symbolic_data
arguments: tag: D32
type_infered: string
name: extract_symbolic_data
arguments: tag: D7
type_infered: string

tool: D37: %d

tool: D32: NE


tool: D7: DA


assistant: ```c
int main() {
  int date;
  scanf("%d", &date);
  int n;
  scanf("%d", &n);
  int i;
  int day = date / 100000;
  int month = (date / 10000) % 100;
  int year = date % 10000;
  for (i = 0; i < n; ++i) {
    int d;
    scanf("%d", &d);
    int dd = d / 100000;
    int mm = (d / 10000) % 100;
    int yy = d % 10000;
    int years = year - yy;
    if (years < 18) {
      printf("NE\n");
    } else if (years == 18) {
      if (mm < month) {
        printf("DA\n");
      } else if (mm == month) {
        if (dd <= day) {
          printf("DA\n");
        } else {
          printf("NE\n");
        }
      } else {
        printf("NE\n");
      }
    } else if (years > 18) {
      printf("DA\n");
    }
  }
  return 0;
}
```