PspJobIoRateVolumeEntryRemoveAll
VOID __stdcall PspJobIoRateVolumeEntryRemoveAll(_EJOB *Job, _LIST_ENTRY *ListHead){
INT64 *v2;
unsigned __int64 v4;
unsigned __int8 v5;
_RTL_BALANCED_NODE *v6;
unsigned __int64 v7;
char v8;
int v9;
_RTL_BALANCED_NODE *v10;
unsigned __int64 v11;
_RTL_BALANCED_NODE *v12;
unsigned __int64 v13;
v2 = (INT64 *)((char *)Job + 1456);
v4 = (unsigned __int64)Job + 1464;
v5 = ExAcquireSpinLockExclusive((INT64 *)Job + 182);
v6 = *(_RTL_BALANCED_NODE **)v4;
v7 = v5;
if( (*(_BYTE *)(v4 + 8) & 1) != 0 && v6 )
v6 = (_RTL_BALANCED_NODE *)(v4 ^ (unsigned __int64)v6);
v8 = *(_BYTE *)(v4 + 8);
v9 = v8 & 1;
if( v6 )
{
while( 1 )
{
while( 1 )
{
while( v6->Children[0] )
{
v10 = v6;
if( v9 )
v6 = (_RTL_BALANCED_NODE *)((unsigned __int64)v6->Children[0] ^ (unsigned __int64)v6);
else
v6 = v6->Children[0];
v10->Children[0] = 0i64;
}
v11 = (unsigned __int64)v6->Children[1];
if( !v11 )
break;
v12 = v6;
if( v9 )
v6 = (_RTL_BALANCED_NODE *)(v11 ^ (unsigned __int64)v6);
else
v6 = v6->Children[1];
v12->Children[1] = 0i64;
}
v13 = v6->ParentValue & 0xFFFFFFFFFFFFFFFCui64;
if( v9 && v13 )
v13 ^= (unsigned __int64)v6;
PspIoRateEntryVolumeDelete(v6, ListHead);
if( !v13 )
break;
v6 = (_RTL_BALANCED_NODE *)v13;
}
v8 = *(_BYTE *)(v4 + 8);
}
*(_QWORD *)v4 = 0i64;
*(_QWORD *)(v4 + 8) = 0i64;
if( (v8 & 1) != 0 )
*(_BYTE *)(v4 + 8) = 1;
ExReleaseSpinLockExclusiveFromDpcLevel(v2);
__writecr8(v7);
}Referenced by:
PspJobIoRateControlDisable