INT64 __fastcall HalpDpGetInterruptReplayState(INT64 a1, INT64 *a2){
unsigned __int32 v3;
INT64 result;
INT64 v5;
v3 = _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 4), 1u);
if( v3 < *(_DWORD *)a1 )
{
v5 = *(_QWORD *)(a1 + 32) + v3 * *(_DWORD *)(a1 + 40);
result = HalpInterruptSaveReplayState(v5);
if( (int)result >= 0 )
{
*a2 = v5;
return 0i64;
}
}
else
{
if( a2 )
*a2 = 0i64;
return 3221225626i64;
}
return result;
}