root/src/system/libroot/posix/musl/time/__year_to_secs.c
long long __year_to_secs(long long year, int *is_leap)
{
        if (year-2ULL <= 136) {
                int y = year;
                int leaps = (y-68)>>2;
                if (!((y-68)&3)) {
                        leaps--;
                        if (is_leap) *is_leap = 1;
                } else if (is_leap) *is_leap = 0;
                return 31536000*(y-70) + 86400*leaps;
        }

        {
        int cycles, centuries, leaps, rem, dummy;

        if (!is_leap) is_leap = &dummy;
        cycles = (year-100) / 400;
        rem = (year-100) % 400;
        if (rem < 0) {
                cycles--;
                rem += 400;
        }
        if (!rem) {
                *is_leap = 1;
                centuries = 0;
                leaps = 0;
        } else {
                if (rem >= 200) {
                        if (rem >= 300) centuries = 3, rem -= 300;
                        else centuries = 2, rem -= 200;
                } else {
                        if (rem >= 100) centuries = 1, rem -= 100;
                        else centuries = 0;
                }
                if (!rem) {
                        *is_leap = 0;
                        leaps = 0;
                } else {
                        leaps = rem / 4U;
                        rem %= 4U;
                        *is_leap = !rem;
                }
        }

        leaps += 97*cycles + 24*centuries - *is_leap;

        return (year-100) * 31536000LL + leaps * 86400LL + 946684800 + 86400;
        }
}