月末を計算する

月をm(1-12)とすると、31にならない月は (4,6,9,11,2) 31になる月は (3,5,7,8,10,12,1)
m+9 で 12-23 になり、(13,15,18,20,11), (12,14,16,17,19,21,10)
(m+9)%12 で 0-11 になり、(1,3,6,8,11), (0,2,4,5,7,9,10)
((m+9)%12)%5 で (1,3,1,3,1), (0,2,4,0,2,4,0)
(((m+9)%12)%5)%2 で、31にならない月は1, 31になる月は 0 になります。
31-(((m+9)%12%5)%2 で、31にならない月は30, 31になる月は 31 になるので、2月を除いた月末の計算ができたことになります。
2月の場合は、28日になるので、30からさらに2を引きます。ただし、うるう年には29日になるので1足します。
うるう年は 4で割り切れ、100で割り切れないか、400で割り切れるか、という条件です。
まとめると、

leap = (y%4==0) && ( (y%400==0)||(y%100!=0) ) ? 1 : 0;
lastmday = 31-((m+9)%12%5)%2-(m==2?(2-leap):0;