PspJobIoRateVolumeEntryInsert
INT64 __fastcall PspJobIoRateVolumeEntryInsert(INT64 a1, UINT64 a2){
INT64 *v2;
INT64 v4;
KIRQL v5;
UINT64 v6;
unsigned __int64 v7;
unsigned __int64 v8;
bool v9;
int v10;
unsigned __int64 v11;
INT64 result;
v2 = (INT64 *)(a1 + 1456);
v4 = a1 + 1464;
v5 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 1456));
v6 = *(_QWORD *)(a2 + 24);
v7 = *(_QWORD *)v4;
v8 = v5;
if( (*(_BYTE *)(v4 + 8) & 1) != 0 && v7 )
v7 ^= v4;
v9 = 0;
v10 = *(_BYTE *)(v4 + 8) & 1;
if( v7 )
{
while( 1 )
{
if( (int)MiLockTrackerCompare(v6, v7) < 0 )
{
v11 = *(_QWORD *)v7;
if( v10 )
{
if( !v11 )
goto LABEL_16;
v11 ^= v7;
}
if( !v11 )
{
LABEL_16:
v9 = 0;
break;
}
}
else
{
v11 = *(_QWORD *)(v7 + 8);
if( v10 )
{
if( !v11 )
goto LABEL_10;
v11 ^= v7;
}
if( !v11 )
{
LABEL_10:
v9 = 1;
break;
}
}
v7 = v11;
}
}
RtlRbInsertNodeEx((unsigned __int64 *)v4, v7, v9, a2);
ExReleaseSpinLockExclusiveFromDpcLevel(v2);
result = (unsigned int)KiIrqlFlags;
__writecr8(v8);
return result;
}Referenced by:
PspSetJobIoRateControlForVolume