KeAndAffinityEx
UINT64 __stdcall KeAndAffinityEx(_KAFFINITY_EX *Affinity1, _KAFFINITY_EX *Affinity2, _KAFFINITY_EX *Result){
INT64 *v6;
unsigned __int16 Count;
unsigned int v8;
unsigned __int16 v9;
__int64 v10;
bool v11;
__int64 v12;
INT64 result[22];
memset((INT64)result, 0i64);
v6 = result;
Count = Affinity2->Count;
if( Result )
v6 = (INT64 *)Result;
v8 = 0;
v9 = 0;
if( Affinity1->Count < Count )
Count = Affinity1->Count;
*(_WORD *)v6 = Count;
if( Count )
{
do
{
v10 = v9;
v11 = (Affinity2->Bitmap[v10] & Affinity1->Bitmap[v10]) == 0;
v6[v10 + 1] = Affinity2->Bitmap[v10] & Affinity1->Bitmap[v10];
if( !v11 )
v8 = 1;
++v9;
}
while( v9 < *(_WORD *)v6 );
}
if( v6 != result )
{
*((_DWORD *)v6 + 1) = 0;
*((_WORD *)v6 + 1) = 20;
if( v9 < 0x14u )
{
do
{
v12 = v9++;
v6[v12 + 1] = 0i64;
}
while( v9 < *((_WORD *)v6 + 1) );
}
}
return v8;
}Referenced by:
KeInitializeProfile
KeIsSubsetAffinityEx
KeQueryLogicalProcessorRelationship
KiGetDeepIdleProcessors
PpmParkReportParkedCores
PpmParkSteerInterrupts
PspSetEffectiveJobLimits