#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int EXIT_SUCCESS;
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, int *, int *, int *);
int /*<<< orphan*/ swap(int *, int *);
int main() {
  int mbox[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  int usum[] = {334, 306, 275, 245, 214, 184, 153, 122, 92, 61, 31, 0};
  int dsum[] = {334, 304, 273, 243, 212, 181, 151, 120, 90, 59, 31, 0};
  int d1, m1, y1;
  int d2, m2, y2;
  int buff = 0, spent1, spent2, miss1, miss2;
  int days = 0;
  int bissexto = 0;
  int i = 0;
  for (i = 0; i < 5000; i++) {
    scanf(" %d/%d/%d", &d1, &m1, &y1);
    scanf(" %d/%d/%d", &d2, &m2, &y2);
    if (y1 > y2) {
      swap(&y1, &y2);
      swap(&m1, &m2);
      swap(&d1, &d2);
    } else if (m1 > m2) {
      swap(&m1, &m2);
      swap(&d1, &d2);
    } else if (d1 > d2) {
      swap(&d1, &d2);
    }
    bissexto = (y2 / 4 - (y1 - 1) / 4) + (y2 / 400 - (y1 - 1) / 400) -
               (y2 / 100 - (y1 - 1) / 100);
    if (bissexto > 0 && y2 - y1 > 4)
      bissexto -= 1;
    if (bissexto < 0)
      bissexto = 0;
    spent1 = usum[m1 - 1];
    spent2 = dsum[12 - m2];
    miss1 = mbox[m1 - 1] - d1;
    miss2 = d2;
    buff = y2 - y1 - 1;
    if (buff < 0) {
      days = spent1 - (365 - spent2) + miss1 + miss2;
      if (y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0)
        if (m1 <= 2) {
          days += 1;
        }
    } else if (buff == 0) {
      days = spent1 + miss1 + spent2 + miss2;
      if (y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0)
        if (m1 <= 2) {
          days += 1;
        }
      if (y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0)
        if (y2 % 4 == 0 && m2 >= 2) {
          days += 1;
        }
    } else {
      days = buff * 365 + spent1 + spent2 + miss1 + miss2 + bissexto;
      if (y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0)
        if (m1 <= 2) {
          days += 1;
        }
      if (y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0)
        if (m2 >= 2) {
          days += 1;
        }
    }
    printf("%d\n", days);
  }
  return EXIT_SUCCESS;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x40(%rbp),%rdi
lea    0xea3(%rip),%rsi
mov    $0x30,%edx
call   1040 <memcpy@plt>
lea    -0x70(%rbp),%rdi
lea    0xebe(%rip),%rsi
mov    $0x30,%edx
call   1040 <memcpy@plt>
lea    -0xa0(%rbp),%rdi
lea    0xed6(%rip),%rsi
mov    $0x30,%edx
call   1040 <memcpy@plt>
movl   $0x0,-0xbc(%rbp)
movl   $0x0,-0xd0(%rbp)
movl   $0x0,-0xd4(%rbp)
movl   $0x0,-0xd8(%rbp)
movl   $0x0,-0xd8(%rbp)
cmpl   $0x1388,-0xd8(%rbp)
jge    16fc <main+0x5bc>
lea    0xeb3(%rip),%rdi
lea    -0xa4(%rbp),%rsi
lea    -0xa8(%rbp),%rdx
lea    -0xac(%rbp),%rcx
call   1050 <scanf@plt>
lea    0xe92(%rip),%rdi
lea    -0xb0(%rbp),%rsi
lea    -0xb4(%rbp),%rdx
lea    -0xb8(%rbp),%rcx
call   1050 <scanf@plt>
mov    -0xac(%rbp),%eax
cmp    -0xb8(%rbp),%eax
jle    1268 <main+0x128>
lea    -0xac(%rbp),%rdi
lea    -0xb8(%rbp),%rsi
call   1060 <swap@plt>
lea    -0xa8(%rbp),%rdi
lea    -0xb4(%rbp),%rsi
call   1060 <swap@plt>
lea    -0xa4(%rbp),%rdi
lea    -0xb0(%rbp),%rsi
call   1060 <swap@plt>
jmp    12d4 <main+0x194>
mov    -0xa8(%rbp),%eax
cmp    -0xb4(%rbp),%eax
jle    12a5 <main+0x165>
lea    -0xa8(%rbp),%rdi
lea    -0xb4(%rbp),%rsi
call   1060 <swap@plt>
lea    -0xa4(%rbp),%rdi
lea    -0xb0(%rbp),%rsi
call   1060 <swap@plt>
jmp    12cf <main+0x18f>
mov    -0xa4(%rbp),%eax
cmp    -0xb0(%rbp),%eax
jle    12ca <main+0x18a>
lea    -0xa4(%rbp),%rdi
lea    -0xb0(%rbp),%rsi
call   1060 <swap@plt>
jmp    12cf <main+0x18f>
jmp    12d4 <main+0x194>
mov    -0xb8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0xe4(%rbp)
mov    -0xac(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xe4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xe0(%rbp)
mov    -0xb8(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xac(%rbp),%eax
sub    $0x1,%eax
mov    $0x190,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xe0(%rbp),%eax
sub    %edx,%ecx
add    %ecx,%eax
mov    %eax,-0xdc(%rbp)
mov    -0xb8(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xac(%rbp),%eax
sub    $0x1,%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xdc(%rbp),%eax
sub    %edx,%ecx
sub    %ecx,%eax
mov    %eax,-0xd4(%rbp)
cmpl   $0x0,-0xd4(%rbp)
jle    13a0 <main+0x260>
mov    -0xb8(%rbp),%eax
sub    -0xac(%rbp),%eax
cmp    $0x4,%eax
jle    13a0 <main+0x260>
mov    -0xd4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xd4(%rbp)
cmpl   $0x0,-0xd4(%rbp)
jge    13b7 <main+0x277>
movl   $0x0,-0xd4(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x70(%rbp,%rax,4),%eax
mov    %eax,-0xc0(%rbp)
mov    $0xc,%eax
sub    -0xb4(%rbp),%eax
cltq
mov    -0xa0(%rbp,%rax,4),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x40(%rbp,%rax,4),%eax
sub    -0xa4(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xb8(%rbp),%eax
sub    -0xac(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xbc(%rbp)
cmpl   $0x0,-0xbc(%rbp)
jge    14bf <main+0x37f>
mov    -0xc0(%rbp),%eax
mov    $0x16d,%ecx
sub    -0xc4(%rbp),%ecx
sub    %ecx,%eax
add    -0xc8(%rbp),%eax
add    -0xcc(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xac(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1482 <main+0x342>
mov    -0xac(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1499 <main+0x359>
mov    -0xac(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    14ba <main+0x37a>
cmpl   $0x2,-0xa8(%rbp)
jg     14b5 <main+0x375>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    14ba <main+0x37a>
jmp    16d6 <main+0x596>
cmpl   $0x0,-0xbc(%rbp)
jne    15d2 <main+0x492>
mov    -0xc0(%rbp),%eax
add    -0xc8(%rbp),%eax
add    -0xc4(%rbp),%eax
add    -0xcc(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xac(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1518 <main+0x3d8>
mov    -0xac(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    152f <main+0x3ef>
mov    -0xac(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1550 <main+0x410>
cmpl   $0x2,-0xa8(%rbp)
jg     154b <main+0x40b>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    1550 <main+0x410>
mov    -0xac(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    157e <main+0x43e>
mov    -0xac(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1595 <main+0x455>
mov    -0xac(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    15cd <main+0x48d>
mov    -0xb8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    15c8 <main+0x488>
cmpl   $0x2,-0xb4(%rbp)
jl     15c8 <main+0x488>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    15cd <main+0x48d>
jmp    16d1 <main+0x591>
imul   $0x16d,-0xbc(%rbp),%eax
add    -0xc0(%rbp),%eax
add    -0xc4(%rbp),%eax
add    -0xc8(%rbp),%eax
add    -0xcc(%rbp),%eax
add    -0xd4(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xac(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    162e <main+0x4ee>
mov    -0xac(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1645 <main+0x505>
mov    -0xac(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1666 <main+0x526>
cmpl   $0x2,-0xa8(%rbp)
jg     1661 <main+0x521>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    1666 <main+0x526>
mov    -0xac(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1694 <main+0x554>
mov    -0xac(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16ab <main+0x56b>
mov    -0xac(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16cc <main+0x58c>
cmpl   $0x2,-0xb4(%rbp)
jl     16c7 <main+0x587>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    16cc <main+0x58c>
jmp    16d1 <main+0x591>
jmp    16d6 <main+0x596>
mov    -0xd0(%rbp),%esi
lea    0x9b7(%rip),%rdi
call   1030 <printf@plt>
mov    -0xd8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd8(%rbp)
jmp    11c6 <main+0x86>
mov    0x28dd(%rip),%rax
mov    (%rax),%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    $0x1388,%r12d
lea    0xf45(%rip),%r15
lea    0x4(%rsp),%rbx
lea    0x14(%rsp),%r13
mov    %rsp,%rbp
jmp    1179 <main+0x49>
nopw   0x0(%rax,%rax,1)
add    $0x1,%esi
lea    0xf30(%rip),%rdi
call   1030 <printf@plt>
add    $0xffffffff,%r12d
je     14cb <main+0x39b>
mov    %r15,%rdi
lea    0x10(%rsp),%rsi
lea    0xc(%rsp),%rdx
mov    %rbx,%rcx
call   1040 <scanf@plt>
mov    %r15,%rdi
mov    %r13,%rsi
lea    0x8(%rsp),%rdx
mov    %rbp,%rcx
call   1040 <scanf@plt>
mov    0x4(%rsp),%eax
cmp    (%rsp),%eax
jle    11c0 <main+0x90>
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1050 <swap@plt>
jmp    11ce <main+0x9e>
nopw   0x0(%rax,%rax,1)
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jle    13a0 <main+0x270>
lea    0xc(%rsp),%rdi
lea    0x8(%rsp),%rsi
call   1050 <swap@plt>
lea    0x10(%rsp),%rdi
mov    %r13,%rsi
call   1050 <swap@plt>
movslq (%rsp),%r14
lea    0x3(%r14),%esi
test   %r14d,%r14d
cmovns %r14d,%esi
sar    $0x2,%esi
mov    0x4(%rsp),%r11d
lea    -0x1(%r11),%edi
lea    0x2(%r11),%edx
test   %edi,%edi
cmovns %edi,%edx
sar    $0x2,%edx
imul   $0x51eb851f,%r14,%rbp
mov    %rbp,%rbx
shr    $0x3f,%rbx
sar    $0x27,%rbp
add    %ebx,%ebp
movslq %edi,%rbx
imul   $0xffffffffae147ae1,%rbx,%rax
mov    %rax,%rdi
shr    $0x3f,%rdi
sar    $0x27,%rax
add    %edi,%eax
imul   $0xffffffffae147ae1,%r14,%rdi
mov    %rdi,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rdi
add    %ecx,%edi
add    %esi,%edi
add    %ebp,%edi
imul   $0x51eb851f,%rbx,%rbp
mov    %rbp,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rbp
add    %ecx,%ebp
add    %edi,%ebp
sub    %edx,%ebp
add    %eax,%ebp
test   %ebp,%ebp
setg   %al
mov    %r14d,%ecx
sub    %r11d,%ecx
cmp    $0x5,%ecx
setge  %cl
and    %al,%cl
movzbl %cl,%eax
sub    %eax,%ebp
jns    128a <main+0x15a>
xor    %ebp,%ebp
movslq 0xc(%rsp),%r9
lea    0xd9a(%rip),%rax
mov    -0x4(%rax,%r9,4),%edx
movslq 0x8(%rsp),%r8
mov    $0xc,%eax
sub    %r8,%rax
lea    0xd51(%rip),%rcx
mov    -0x4(%rcx,%r9,4),%edi
sub    0x10(%rsp),%edi
lea    0xda1(%rip),%rcx
mov    (%rcx,%rax,4),%esi
mov    0x14(%rsp),%r10d
mov    %r11d,%ebx
not    %ebx
add    %r14d,%ebx
js     1340 <main+0x210>
je     13c0 <main+0x290>
imul   $0x16d,%ebx,%eax
add    %edx,%esi
add    %eax,%esi
add    %edi,%esi
add    %r10d,%esi
add    %ebp,%esi
movslq %r11d,%rax
imul   $0x51eb851f,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
test   $0x3,%r11b
jne    140e <main+0x2de>
mov    %rcx,%rax
sar    $0x25,%rax
add    %edx,%eax
imul   $0x64,%eax,%eax
mov    %r11d,%edi
sub    %eax,%edi
je     140e <main+0x2de>
xor    %eax,%eax
cmp    $0x3,%r9d
setl   %al
add    %eax,%esi
cmp    $0x2,%r8d
lea    0x4(%rsp),%rbx
mov    %rsp,%rbp
jge    1160 <main+0x30>
jmp    1163 <main+0x33>
nopl   0x0(%rax)
add    %edx,%esi
add    %edi,%esi
add    %r10d,%esi
add    $0xfffffe93,%esi
test   $0x3,%r11b
jne    144e <main+0x31e>
movslq %r11d,%rax
imul   $0x51eb851f,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %r11d,%ecx
sub    %eax,%ecx
je     144e <main+0x31e>
cmp    $0x2,%r9d
lea    0x4(%rsp),%rbx
mov    %rsp,%rbp
jle    1160 <main+0x30>
jmp    1163 <main+0x33>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x10(%rsp),%eax
cmp    0x14(%rsp),%eax
jg     11dd <main+0xad>
jmp    11ea <main+0xba>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    %edx,%esi
add    %edi,%esi
add    %r10d,%esi
test   $0x3,%r11b
lea    0x4(%rsp),%rbx
mov    %rsp,%rbp
jne    147f <main+0x34f>
movslq %r11d,%rax
imul   $0x51eb851f,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %r11d,%ecx
sub    %eax,%ecx
je     147f <main+0x34f>
xor    %eax,%eax
cmp    $0x3,%r9d
setl   %al
add    %eax,%esi
jmp    14af <main+0x37f>
sar    $0x27,%rcx
add    %edx,%ecx
imul   $0x190,%ecx,%eax
cmp    %eax,%r11d
sete   %cl
cmp    $0x3,%r9d
setl   %dl
and    %cl,%dl
movzbl %dl,%ecx
add    %ecx,%esi
cmp    %eax,%r11d
lea    0x4(%rsp),%rbx
mov    %rsp,%rbp
jne    1163 <main+0x33>
cmp    $0x1,%r8d
jg     1160 <main+0x30>
jmp    1163 <main+0x33>
imul   $0xc28f5c29,%r11d,%eax
add    $0x51eb850,%eax
ror    $0x4,%eax
cmp    $0xa3d70a,%eax
lea    0x4(%rsp),%rbx
mov    %rsp,%rbp
ja     1163 <main+0x33>
cmp    $0x3,%r9d
jl     1160 <main+0x30>
jmp    1163 <main+0x33>
imul   $0xc28f5c29,%r11d,%eax
add    $0x51eb850,%eax
ror    $0x4,%eax
cmp    $0xa3d70b,%eax
setb   %cl
cmp    $0x3,%r9d
setl   %dl
and    %cl,%dl
movzbl %dl,%ecx
add    %ecx,%esi
cmp    $0xa3d70b,%eax
jae    1163 <main+0x33>
test   $0x3,%r14b
sete   %al
cmp    $0x2,%r8d
setge  %cl
and    %al,%cl
movzbl %cl,%eax
add    %esi,%eax
mov    %eax,%esi
jmp    1163 <main+0x33>
mov    0x2b0e(%rip),%rax
mov    (%rax),%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.mbox = [12 x i32] [i32 31, i32 28, i32 31, i32 30, i32 31, i32 30, i32 31, i32 31, i32 30, i32 31, i32 30, i32 31]
@__const.main.usum = [12 x i32] [i32 334, i32 306, i32 275, i32 245, i32 214, i32 184, i32 153, i32 122, i32 92, i32 61, i32 31, i32 0]
@__const.main.dsum = [12 x i32] [i32 334, i32 304, i32 273, i32 243, i32 212, i32 181, i32 151, i32 120, i32 90, i32 59, i32 31, i32 0]
@.str = [10 x i8] c" %d/%d/%d\00"
@.str.1 = [4 x i8] c"%d\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca [12 x i32]
%3 = alloca [12 x i32]
%4 = alloca [12 x i32]
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
store i32 0, i32* %1
%19 = bitcast [12 x i32]* %2 to i8*
%20 = bitcast [12 x i32]* %3 to i8*
%21 = bitcast [12 x i32]* %4 to i8*
store i32 0, i32* %11
store i32 0, i32* %16
store i32 0, i32* %17
store i32 0, i32* %18
store i32 0, i32* %18
br label %22
22: ; preds = %246, %0
%23 = load i32, i32* %18
%24 = icmp slt i32 %23, 5000
br i1 %24, label %25, label %249
25: ; preds = %22
%26 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32* %5, i32* %6, i32* %7)
%27 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32* %8, i32* %9, i32* %10)
%28 = load i32, i32* %7
%29 = load i32, i32* %10
%30 = icmp sgt i32 %28, %29
br i1 %30, label %31, label %35
31: ; preds = %25
%32 = call i32 @swap(i32* %7, i32* %10)
%33 = call i32 @swap(i32* %6, i32* %9)
%34 = call i32 @swap(i32* %5, i32* %8)
br label %50
35: ; preds = %25
%36 = load i32, i32* %6
%37 = load i32, i32* %9
%38 = icmp sgt i32 %36, %37
br i1 %38, label %39, label %42
39: ; preds = %35
%40 = call i32 @swap(i32* %6, i32* %9)
%41 = call i32 @swap(i32* %5, i32* %8)
br label %49
42: ; preds = %35
%43 = load i32, i32* %5
%44 = load i32, i32* %8
%45 = icmp sgt i32 %43, %44
br i1 %45, label %46, label %48
46: ; preds = %42
%47 = call i32 @swap(i32* %5, i32* %8)
br label %48
48: ; preds = %46, %42
br label %49
49: ; preds = %48, %39
br label %50
50: ; preds = %49, %31
%51 = load i32, i32* %10
%52 = sdiv i32 %51, 4
%53 = load i32, i32* %7
%54 = sub nsw i32 %53, 1
%55 = sdiv i32 %54, 4
%56 = sub nsw i32 %52, %55
%57 = load i32, i32* %10
%58 = sdiv i32 %57, 400
%59 = load i32, i32* %7
%60 = sub nsw i32 %59, 1
%61 = sdiv i32 %60, 400
%62 = sub nsw i32 %58, %61
%63 = add nsw i32 %56, %62
%64 = load i32, i32* %10
%65 = sdiv i32 %64, 100
%66 = load i32, i32* %7
%67 = sub nsw i32 %66, 1
%68 = sdiv i32 %67, 100
%69 = sub nsw i32 %65, %68
%70 = sub nsw i32 %63, %69
store i32 %70, i32* %17
%71 = load i32, i32* %17
%72 = icmp sgt i32 %71, 0
br i1 %72, label %73, label %81
73: ; preds = %50
%74 = load i32, i32* %10
%75 = load i32, i32* %7
%76 = sub nsw i32 %74, %75
%77 = icmp sgt i32 %76, 4
br i1 %77, label %78, label %81
78: ; preds = %73
%79 = load i32, i32* %17
%80 = sub nsw i32 %79, 1
store i32 %80, i32* %17
br label %81
81: ; preds = %78, %73, %50
%82 = load i32, i32* %17
%83 = icmp slt i32 %82, 0
br i1 %83, label %84, label %85
84: ; preds = %81
store i32 0, i32* %17
br label %85
85: ; preds = %84, %81
%86 = load i32, i32* %6
%87 = sub nsw i32 %86, 1
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [12 x i32], [12 x i32]* %3, i64 0, i64 %88
%90 = load i32, i32* %89
store i32 %90, i32* %12
%91 = load i32, i32* %9
%92 = sub nsw i32 12, %91
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [12 x i32], [12 x i32]* %4, i64 0, i64 %93
%95 = load i32, i32* %94
store i32 %95, i32* %13
%96 = load i32, i32* %6
%97 = sub nsw i32 %96, 1
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds [12 x i32], [12 x i32]* %2, i64 0, i64 %98
%100 = load i32, i32* %99
%101 = load i32, i32* %5
%102 = sub nsw i32 %100, %101
store i32 %102, i32* %14
%103 = load i32, i32* %8
store i32 %103, i32* %15
%104 = load i32, i32* %10
%105 = load i32, i32* %7
%106 = sub nsw i32 %104, %105
%107 = sub nsw i32 %106, 1
store i32 %107, i32* %11
%108 = load i32, i32* %11
%109 = icmp slt i32 %108, 0
br i1 %109, label %110, label %138
110: ; preds = %85
%111 = load i32, i32* %12
%112 = load i32, i32* %13
%113 = sub nsw i32 365, %112
%114 = sub nsw i32 %111, %113
%115 = load i32, i32* %14
%116 = add nsw i32 %114, %115
%117 = load i32, i32* %15
%118 = add nsw i32 %116, %117
store i32 %118, i32* %16
%119 = load i32, i32* %7
%120 = srem i32 %119, 4
%121 = icmp eq i32 %120, 0
br i1 %121, label %122, label %126
122: ; preds = %110
%123 = load i32, i32* %7
%124 = srem i32 %123, 100
%125 = icmp ne i32 %124, 0
br i1 %125, label %130, label %126
126: ; preds = %122, %110
%127 = load i32, i32* %7
%128 = srem i32 %127, 400
%129 = icmp eq i32 %128, 0
br i1 %129, label %130, label %137
130: ; preds = %126, %122
%131 = load i32, i32* %6
%132 = icmp sle i32 %131, 2
br i1 %132, label %133, label %136
133: ; preds = %130
%134 = load i32, i32* %16
%135 = add nsw i32 %134, 1
store i32 %135, i32* %16
br label %136
136: ; preds = %133, %130
br label %137
137: ; preds = %136, %126
br label %243
138: ; preds = %85
%139 = load i32, i32* %11
%140 = icmp eq i32 %139, 0
br i1 %140, label %141, label %191
141: ; preds = %138
%142 = load i32, i32* %12
%143 = load i32, i32* %14
%144 = add nsw i32 %142, %143
%145 = load i32, i32* %13
%146 = add nsw i32 %144, %145
%147 = load i32, i32* %15
%148 = add nsw i32 %146, %147
store i32 %148, i32* %16
%149 = load i32, i32* %7
%150 = srem i32 %149, 4
%151 = icmp eq i32 %150, 0
br i1 %151, label %152, label %156
152: ; preds = %141
%153 = load i32, i32* %7
%154 = srem i32 %153, 100
%155 = icmp ne i32 %154, 0
br i1 %155, label %160, label %156
156: ; preds = %152, %141
%157 = load i32, i32* %7
%158 = srem i32 %157, 400
%159 = icmp eq i32 %158, 0
br i1 %159, label %160, label %167
160: ; preds = %156, %152
%161 = load i32, i32* %6
%162 = icmp sle i32 %161, 2
br i1 %162, label %163, label %166
163: ; preds = %160
%164 = load i32, i32* %16
%165 = add nsw i32 %164, 1
store i32 %165, i32* %16
br label %166
166: ; preds = %163, %160
br label %167
167: ; preds = %166, %156
%168 = load i32, i32* %7
%169 = srem i32 %168, 4
%170 = icmp eq i32 %169, 0
br i1 %170, label %171, label %175
171: ; preds = %167
%172 = load i32, i32* %7
%173 = srem i32 %172, 100
%174 = icmp ne i32 %173, 0
br i1 %174, label %179, label %175
175: ; preds = %171, %167
%176 = load i32, i32* %7
%177 = srem i32 %176, 400
%178 = icmp eq i32 %177, 0
br i1 %178, label %179, label %190
179: ; preds = %175, %171
%180 = load i32, i32* %10
%181 = srem i32 %180, 4
%182 = icmp eq i32 %181, 0
br i1 %182, label %183, label %189
183: ; preds = %179
%184 = load i32, i32* %9
%185 = icmp sge i32 %184, 2
br i1 %185, label %186, label %189
186: ; preds = %183
%187 = load i32, i32* %16
%188 = add nsw i32 %187, 1
store i32 %188, i32* %16
br label %189
189: ; preds = %186, %183, %179
br label %190
190: ; preds = %189, %175
br label %242
191: ; preds = %138
%192 = load i32, i32* %11
%193 = mul nsw i32 %192, 365
%194 = load i32, i32* %12
%195 = add nsw i32 %193, %194
%196 = load i32, i32* %13
%197 = add nsw i32 %195, %196
%198 = load i32, i32* %14
%199 = add nsw i32 %197, %198
%200 = load i32, i32* %15
%201 = add nsw i32 %199, %200
%202 = load i32, i32* %17
%203 = add nsw i32 %201, %202
store i32 %203, i32* %16
%204 = load i32, i32* %7
%205 = srem i32 %204, 4
%206 = icmp eq i32 %205, 0
br i1 %206, label %207, label %211
207: ; preds = %191
%208 = load i32, i32* %7
%209 = srem i32 %208, 100
%210 = icmp ne i32 %209, 0
br i1 %210, label %215, label %211
211: ; preds = %207, %191
%212 = load i32, i32* %7
%213 = srem i32 %212, 400
%214 = icmp eq i32 %213, 0
br i1 %214, label %215, label %222
215: ; preds = %211, %207
%216 = load i32, i32* %6
%217 = icmp sle i32 %216, 2
br i1 %217, label %218, label %221
218: ; preds = %215
%219 = load i32, i32* %16
%220 = add nsw i32 %219, 1
store i32 %220, i32* %16
br label %221
221: ; preds = %218, %215
br label %222
222: ; preds = %221, %211
%223 = load i32, i32* %7
%224 = srem i32 %223, 4
%225 = icmp eq i32 %224, 0
br i1 %225, label %226, label %230
226: ; preds = %222
%227 = load i32, i32* %7
%228 = srem i32 %227, 100
%229 = icmp ne i32 %228, 0
br i1 %229, label %234, label %230
230: ; preds = %226, %222
%231 = load i32, i32* %7
%232 = srem i32 %231, 400
%233 = icmp eq i32 %232, 0
br i1 %233, label %234, label %241
234: ; preds = %230, %226
%235 = load i32, i32* %9
%236 = icmp sge i32 %235, 2
br i1 %236, label %237, label %240
237: ; preds = %234
%238 = load i32, i32* %16
%239 = add nsw i32 %238, 1
store i32 %239, i32* %16
br label %240
240: ; preds = %237, %234
br label %241
241: ; preds = %240, %230
br label %242
242: ; preds = %241, %190
br label %243
243: ; preds = %242, %137
%244 = load i32, i32* %16
%245 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32 %244)
br label %246
246: ; preds = %243
%247 = load i32, i32* %18
%248 = add nsw i32 %247, 1
store i32 %248, i32* %18
br label %22
249: ; preds = %22
%250 = load i32, i32* @EXIT_SUCCESS
ret i32 %250
}

LLVM IR (-O2):
@__const.main.mbox = [12 x i32] [i32 31, i32 28, i32 31, i32 30, i32 31, i32 30, i32 31, i32 31, i32 30, i32 31, i32 30, i32 31]
@__const.main.usum = [12 x i32] [i32 334, i32 306, i32 275, i32 245, i32 214, i32 184, i32 153, i32 122, i32 92, i32 61, i32 31, i32 0]
@__const.main.dsum = [12 x i32] [i32 334, i32 304, i32 273, i32 243, i32 212, i32 181, i32 151, i32 120, i32 90, i32 59, i32 31, i32 0]
@.str = [10 x i8] c" %d/%d/%d\00"
@.str.1 = [4 x i8] c"%d\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = bitcast i32* %1 to i8*
%8 = bitcast i32* %2 to i8*
%9 = bitcast i32* %3 to i8*
%10 = bitcast i32* %4 to i8*
%11 = bitcast i32* %5 to i8*
%12 = bitcast i32* %6 to i8*
br label %13
13: ; preds = %0, %153
%14 = phi i32 [ 0, %0 ], [ %156, %153 ]
%15 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32* %1, i32* %2, i32* %3)
%16 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32* %4, i32* %5, i32* %6)
%17 = load i32, i32* %3
%18 = load i32, i32* %6
%19 = icmp sgt i32 %17, %18
br i1 %19, label %20, label %22
20: ; preds = %13
%21 = call i32 @swap(i32* %3, i32* %6)
br label %30
22: ; preds = %13
%23 = load i32, i32* %2
%24 = load i32, i32* %5
%25 = icmp sgt i32 %23, %24
br i1 %25, label %30, label %26
26: ; preds = %22
%27 = load i32, i32* %1
%28 = load i32, i32* %4
%29 = icmp sgt i32 %27, %28
br i1 %29, label %32, label %34
30: ; preds = %22, %20
%31 = call i32 @swap(i32* %2, i32* %5)
br label %32
32: ; preds = %30, %26
%33 = call i32 @swap(i32* %1, i32* %4)
br label %34
34: ; preds = %32, %26
%35 = load i32, i32* %6
%36 = sdiv i32 %35, 4
%37 = load i32, i32* %3
%38 = add nsw i32 %37, -1
%39 = sdiv i32 %38, -4
%40 = sdiv i32 %35, 400
%41 = sdiv i32 %38, -400
%42 = sdiv i32 %35, -100
%43 = sdiv i32 %38, 100
%44 = add nsw i32 %36, %42
%45 = add nsw i32 %44, %40
%46 = add nsw i32 %45, %43
%47 = add nsw i32 %46, %39
%48 = add nsw i32 %47, %41
%49 = icmp sgt i32 %48, 0
%50 = sub nsw i32 %35, %37
%51 = icmp sgt i32 %50, 4
%52 = select i1 %49, i1 %51, i1 false
%53 = sext i1 %52 to i32
%54 = add nsw i32 %48, %53
%55 = icmp sgt i32 %54, 0
%56 = select i1 %55, i32 %54, i32 0
%57 = load i32, i32* %2
%58 = add nsw i32 %57, -1
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [12 x i32], [12 x i32]* @__const.main.usum, i64 0, i64 %59
%61 = load i32, i32* %60
%62 = load i32, i32* %5
%63 = sub nsw i32 12, %62
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [12 x i32], [12 x i32]* @__const.main.dsum, i64 0, i64 %64
%66 = load i32, i32* %65
%67 = getelementptr inbounds [12 x i32], [12 x i32]* @__const.main.mbox, i64 0, i64 %59
%68 = load i32, i32* %67
%69 = load i32, i32* %1
%70 = sub nsw i32 %68, %69
%71 = load i32, i32* %4
%72 = xor i32 %37, -1
%73 = add i32 %35, %72
%74 = icmp slt i32 %73, 0
br i1 %74, label %75, label %94
75: ; preds = %34
%76 = add i32 %66, %61
%77 = add i32 %76, -365
%78 = add i32 %77, %70
%79 = add i32 %78, %71
%80 = and i32 %37, 3
%81 = icmp ne i32 %80, 0
%82 = srem i32 %37, 100
%83 = icmp eq i32 %82, 0
%84 = or i1 %81, %83
br i1 %84, label %85, label %90
85: ; preds = %75
%86 = srem i32 %37, 400
%87 = icmp eq i32 %86, 0
%88 = icmp slt i32 %57, 3
%89 = select i1 %87, i1 %88, i1 false
br i1 %89, label %92, label %153
90: ; preds = %75
%91 = icmp slt i32 %57, 3
br i1 %91, label %92, label %153
92: ; preds = %85, %90
%93 = add nsw i32 %79, 1
br label %153
94: ; preds = %34
%95 = icmp eq i32 %73, 0
br i1 %95, label %96, label %124
96: ; preds = %94
%97 = add i32 %66, %61
%98 = add i32 %97, %70
%99 = add i32 %98, %71
%100 = and i32 %37, 3
%101 = icmp ne i32 %100, 0
%102 = srem i32 %37, 100
%103 = icmp eq i32 %102, 0
%104 = or i1 %101, %103
br i1 %104, label %105, label %112
105: ; preds = %96
%106 = srem i32 %37, 400
%107 = icmp eq i32 %106, 0
%108 = icmp slt i32 %57, 3
%109 = select i1 %107, i1 %108, i1 false
%110 = zext i1 %109 to i32
%111 = add nsw i32 %99, %110
br i1 %107, label %116, label %153
112: ; preds = %96
%113 = icmp slt i32 %57, 3
%114 = zext i1 %113 to i32
%115 = add nsw i32 %99, %114
br label %116
116: ; preds = %112, %105
%117 = phi i32 [ %111, %105 ], [ %115, %112 ]
%118 = and i32 %35, 3
%119 = icmp eq i32 %118, 0
%120 = icmp sgt i32 %62, 1
%121 = select i1 %119, i1 %120, i1 false
%122 = zext i1 %121 to i32
%123 = add nsw i32 %117, %122
br label %153
124: ; preds = %94
%125 = mul nsw i32 %73, 365
%126 = add i32 %66, %61
%127 = add i32 %126, %125
%128 = add i32 %127, %70
%129 = add i32 %128, %71
%130 = add i32 %129, %56
%131 = and i32 %37, 3
%132 = icmp ne i32 %131, 0
%133 = srem i32 %37, 100
%134 = icmp eq i32 %133, 0
%135 = or i1 %132, %134
br i1 %135, label %136, label %145
136: ; preds = %124
%137 = srem i32 %37, 400
%138 = icmp eq i32 %137, 0
%139 = icmp slt i32 %57, 3
%140 = select i1 %138, i1 %139, i1 false
%141 = zext i1 %140 to i32
%142 = add nsw i32 %130, %141
%143 = icmp sgt i32 %62, 1
%144 = select i1 %138, i1 %143, i1 false
br i1 %144, label %150, label %153
145: ; preds = %124
%146 = icmp slt i32 %57, 3
%147 = zext i1 %146 to i32
%148 = add nsw i32 %130, %147
%149 = icmp sgt i32 %62, 1
br i1 %149, label %150, label %153
150: ; preds = %136, %145
%151 = phi i32 [ %142, %136 ], [ %148, %145 ]
%152 = add nsw i32 %151, 1
br label %153
153: ; preds = %116, %105, %145, %150, %136, %85, %92, %90
%154 = phi i32 [ %93, %92 ], [ %79, %90 ], [ %79, %85 ], [ %111, %105 ], [ %152, %150 ], [ %148, %145 ], [ %142, %136 ], [ %123, %116 ]
%155 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32 %154)
%156 = add nuw nsw i32 %14, 1
%157 = icmp eq i32 %156, 5000
br i1 %157, label %158, label %13
158: ; preds = %153
%159 = load i32, i32* @EXIT_SUCCESS
ret i32 %159
}