PpmParkUpdateConcurrencyTracking
VOID __stdcall PpmParkUpdateConcurrencyTracking(UINT8 Enabled){
UINT8 v1;
unsigned __int16 i;
__int64 v3;
char v4;
char v5;
__int64 v6;
__int64 v7;
_BYTE *v8;
UINT64 *v9;
__int64 v10;
__int64 v11;
__int64 v12;
UINT64 a5;
UINT64 v14;
_KAFFINITY_EX TargetProcessors;
v1 = Enabled;
LOBYTE(a5) = Enabled;
memset(&TargetProcessors, 0i64, sizeof(TargetProcessors));
for( i = 0; i < (unsigned int)PpmParkNumNodes; ++i )
{
v3 = PpmParkNodes + 272i64 * i;
v4 = *(_BYTE *)(v3 + 146);
v5 = v4 & 8;
if( v1 )
{
if( !v5 )
{
v8 = (_BYTE *)(v3 + 128);
*(_BYTE *)(v3 + 146) = v4 | 8;
v9 = (UINT64 *)(v3 + 152);
v10 = 2i64;
do
{
if( *v8 )
{
*(_DWORD *)&TargetProcessors.Count = 1310721;
memset(&TargetProcessors.Reserved, 0i64, 0xA4u);
v11 = *(unsigned __int16 *)(v3 + 4);
v12 = *(v9 - 17);
if( (_WORD)v11 )
TargetProcessors.Count = v11 + 1;
TargetProcessors.Bitmap[v11] |= v12;
PopExecuteOnTargetProcessors(
&TargetProcessors,
(INT64 *)PpmIdleInstallConcurrency,
*(_KPRCB **)(v3 + 72),
*v9,
a5,
v14,
*(UINT64 *)&TargetProcessors.Count);
}
++v9;
++v8;
--v10;
}
while( v10 );
v1 = a5;
}
}
else if( v5 )
{
*(_BYTE *)(v3 + 146) = v4 & 0xF7;
*(_DWORD *)&TargetProcessors.Count = 1310721;
memset(&TargetProcessors.Reserved, 0i64, 0xA4u);
v6 = *(unsigned __int16 *)(v3 + 4);
v7 = *(_QWORD *)(v3 + 8);
if( (_WORD)v6 )
TargetProcessors.Count = v6 + 1;
TargetProcessors.Bitmap[v6] |= v7;
PopExecuteOnTargetProcessors(
&TargetProcessors,
(INT64 *)PpmIdleRemoveConcurrency,
0i64,
0i64,
a5,
v14,
*(UINT64 *)&TargetProcessors.Count);
}
}
}Referenced by:
PpmCheckReInit