KeXorAffinityEx

INT64 __fastcall KeXorAffinityEx(UINT16 *a1, UINT16 *a2, UINT16 *a3){
  UINT16 v3; 
  UINT16 *v4; 
  UINT16 v5; 
  UINT16 *v6; 
  unsigned int v8; 
  __int64 v9; 
  unsigned int v10; 
  __int64 v11; 
  __int64 v12; 
  unsigned int v13; 
  __int64 v14; 
  v3 = *a1;
  v4 = a2;
  v5 = *a2;
  v6 = a1;
  if( *a1 <= *a2 )
    v6 = a2;
  if( v3 <= v5 )
    v4 = a1;
  v8 = 0;
  v9 = 0i64;
  v10 = 0;
  if( v3 <= v5 )
    v5 = *a1;
  if( v5 )
  {
    do
    {
      v11 = v10++;
      v12 = *(_QWORD *)&v6[4 * v11 + 4] ^ *(_QWORD *)&v4[4 * v11 + 4];
      *(_QWORD *)&a3[4 * v11 + 4] = v12;
      v9 |= v12;
    }
    while( v10 < *v4 );
  }
  v13 = *v6;
  *a3 = v13;
  while( v10 < v13 )
  {
    v14 = v10++;
    *(_QWORD *)&a3[4 * v14 + 4] = *(_QWORD *)&v6[4 * v14 + 4];
    v13 = *a3;
  }
  *((_DWORD *)a3 + 1) = 0;
  a3[1] = 20;
  if( v10 < 0x14 )
    memset((INT64)&a3[4 * v10 + 4], 0i64);
  LOBYTE(v8) = v9 != 0;
  return v8;
}

Referenced by:

PpmParkComputeDiff
PpmParkReportParkedCores