PopInternalUpdateStopWatchState

CHAR __fastcall PopInternalUpdateStopWatchState(INT64 a1){
  bool v2; 
  __int64 v3; 
  CHAR result; 
  unsigned __int64 v5; 
  v2 = _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 40), 0) > 0 && *(_QWORD *)(*(_QWORD *)a1 + 16i64);
  v3 = *(_QWORD *)(a1 + 24);
  result = v3 != 0;
  if( v2 != (v3 != 0) )
  {
    result = KUSER_SHARED_DATA.InterruptTime.LowPart;
    if( v2 )
    {
      *(_QWORD *)(a1 + 24) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
    }
    else
    {
      v5 = *(_QWORD *)(a1 + 32) - v3 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
      result = -1;
      if( v5 < *(_QWORD *)(a1 + 32) )
        v5 = -1i64;
      *(_QWORD *)(a1 + 24) = 0i64;
      *(_QWORD *)(a1 + 32) = v5;
    }
  }
  return result;
}

Referenced by:

PoArmStopWatchCollection
PoPauseStopWatch
PoStartStopWatch
PoUnarmStopWatchCollection