RtlpTimeToTimeFieldsNoLeapSeconds
INT64 __fastcall RtlpTimeToTimeFieldsNoLeapSeconds(LARGE_INTEGER *a1, _WORD *a2){
int v3;
unsigned int v4;
unsigned int v5;
unsigned int v6;
__int64 v7;
__int64 v8;
__int16 v9;
unsigned int v10;
unsigned int v11;
INT64 result;
UINT64 v13;
UINT64 v14;
LODWORD(v13) = 0;
LODWORD(v14) = 0;
TimeToDaysAndFraction(a1, &v13, &v14);
v3 = v13;
v4 = v13;
a2[7] = ((int)v13 + 1) % 7u;
v5 = (100 * ((-36524 * ((100 * (v4 % 0x23AB1) + 75) / 0x37BB49) + v4 % 0x23AB1) % 0x5B5) + 75) / 0x8EAD
+ 4
* ((-36524 * ((100 * (v4 % 0x23AB1) + 75) / 0x37BB49) + v4 % 0x23AB1) / 0x5B5
+ 25 * ((100 * (v4 % 0x23AB1) + 75) / 0x37BB49 + 4 * (v4 / 0x23AB1)));
v6 = v5 + 1;
v7 = v5 / 0x64 + -365 * v5 - v5 / 0x190 - (v5 >> 2) + v3;
if( v5 + 1 != 400 * ((v5 + 1) / 0x190) && (v6 == 100 * (v6 / 0x64) || (v6 & 3) != 0) )
{
v8 = *((unsigned __int8 *)NormalYearDayToMonth + v7);
v9 = NormalYearDaysPrecedingMonth[v8];
}
else
{
v8 = *((unsigned __int8 *)LeapYearDayToMonth + v7);
v9 = LeapYearDaysPrecedingMonth[v8];
}
v10 = v14;
a2[1] = v8 + 1;
*a2 = v5 + 1601;
a2[2] = v7 - v9 + 1;
a2[6] = v10 % 0x3E8;
v11 = v10 / 0x3E8 / 0x3C;
a2[3] = v11 / 0x3C;
a2[4] = v11 % 0x3C;
result = (unsigned int)(__int16)v11;
a2[5] = v10 / 0x3E8 % 0x3C;
return result;
}Referenced by:
RtlpTimeToTimeFields