PopInternalUpdateActiveStopWatchesCollectionState
CHAR __stdcall PopInternalUpdateActiveStopWatchesCollectionState(INT64 a1){
bool v2;
__int64 v3;
CHAR result;
unsigned __int64 v5;
v2 = _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 48), 0) > 0 && *(_QWORD *)(a1 + 16);
v3 = *(_QWORD *)(a1 + 32);
result = v3 != 0;
if( v2 != (v3 != 0) )
{
result = KUSER_SHARED_DATA.InterruptTime.LowPart;
if( v2 )
{
*(_QWORD *)(a1 + 32) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
}
else
{
v5 = *(_QWORD *)(a1 + 40) - v3 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
result = -1;
if( v5 < *(_QWORD *)(a1 + 40) )
v5 = -1i64;
*(_QWORD *)(a1 + 32) = 0i64;
*(_QWORD *)(a1 + 40) = v5;
}
}
return result;
}Referenced by:
PoArmStopWatchCollection
PoPauseStopWatch
PoStartStopWatch
PoUnarmStopWatchCollection