KeRemoveUmsThreadCidOwnership

INT64 __fastcall KeRemoveUmsThreadCidOwnership(INT64 a1, CHAR a2){
  _ETHREAD *CurrentThread; 
  signed __int64 v3; 
  signed __int64 v4; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  _m_prefetchw((const void *)(a1 + 1272));
  v3 = *(_QWORD *)(a1 + 1272);
  do
  {
    v4 = v3;
    v3 = _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 1272), v3 & 3, v3);
  }
  while( v4 != v3 );
  if( !a2 || (v3 & 0xFFFFFFFFFFFFFFFCui64) == *((_QWORD *)CurrentThread + 144) )
    return 0i64;
  else
    return 3221227292i64;
}

Referenced by:

KeUpdateUmsThreadState
PspDisassociateUmsThreadFromPrimary