PspJobIoRateVolumeEntryReference
INT64 __fastcall PspJobIoRateVolumeEntryReference(INT64 a1, UINT64 a2){
volatile LONG *v2;
INT64 v5;
KIRQL v6;
INT64 v7;
unsigned __int64 v8;
bool v9;
signed __int64 Count;
int v11;
int v12;
struct EX_RUNDOWN_REF v13;
v2 = (volatile LONG *)(a1 + 1456);
v5 = 0i64;
v6 = ExAcquireSpinLockShared((PEX_SPIN_LOCK)(a1 + 1456));
v7 = a1 + 1464;
v8 = v6;
v9 = (*(_BYTE *)(a1 + 1472) & 1) == 0;
Count = *(_QWORD *)(a1 + 1464);
if( !v9 && Count )
Count ^= v7;
v11 = *(_BYTE *)(v7 + 8) & 1;
if( Count )
{
do
{
v12 = MiLockTrackerCompare(a2, Count);
if( v12 >= 0 )
{
if( v12 <= 0 )
break;
v13.Count = *(_QWORD *)(Count + 8);
}
else
{
v13.Count = *(_QWORD *)Count;
}
if( v11 && v13.Count )
Count ^= v13.Count;
else
Count = v13.Count;
}
while( Count );
if( Count )
{
v5 = Count;
PspIoRateEntryIoControlReference((struct EX_RUNDOWN_REF *)Count);
}
}
ExReleaseSpinLockSharedFromDpcLevel(v2);
__writecr8(v8);
return v5;
}Referenced by:
PsIoRateControlReference