PspUpdateSingleProcessAffinity

void __fastcall PspUpdateSingleProcessAffinity(__int64 a1, __int64 a2, unsigned __int16 *a3){
  INT64 *v6; 
  int v7; 
  int v8; 
  if( (*(_DWORD *)(a2 + 1120) & 0x80000) != 0 )
  {
    v6 = (INT64 *)(a2 + 1080);
    v8 = 0;
    v7 = 0;
    ExAcquirePushLockSharedEx(a2 + 1080, 0i64);
    if( (*(_DWORD *)(a2 + 1120) & 0x80000) != 0 )
      v7 = PspSetProcessAffinitySafe(a2, 2, a3, 0i64, &v8);
    if( _InterlockedCompareExchange64(v6, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared(v6);
    KeAbPostRelease(v6);
    if( v7 >= 0 )
    {
      if( v8 )
        PspWritePebAffinityInfo(a1, (struct _EX_RUNDOWN_REF *)a2);
    }
  }
}

Referenced by:

PsUpdateActiveProcessAffinity
PspSetProcessAffinityUpdateMode