PopDirectedDripsQueryMitigationStatus

__int64 __fastcall PopDirectedDripsQueryMitigationStatus(_DWORD *a1, _DWORD *a2, int *a3){
  char v3; 
  __int64 result; 
  int v6; 
  int v7; 
  __int16 v8; 

  v3 = *(&stru_140C23628 + 5096);
  _m_prefetchw((char *)&stru_140C23628 + 5048);
  LODWORD(result) = *(&stru_140C23628 + 1262);
  v6 = 0;
  do
  {
    v7 = result;
    result = (unsigned int)_InterlockedCompareExchange((_DWORD *)&stru_140C23628 + 1262, result, result);
  }
  while( v7 != (_DWORD)result );
  v8 = result;
  if( a1 )
  {
    *a1 = 0;
    result = 0i64;
    if( (v3 & 1) != 0 )
    {
      *a1 = 1;
      result = 1i64;
    }
    if( (v3 & 2) != 0 )
    {
      result = (unsigned int)result | 2;
      *a1 = result;
    }
  }
  if( a2 )
  {
    *a2 = 0;
    result = 0i64;
    if( (v8 & 0x1000) != 0 )
    {
      *a2 = 1;
      result = 1i64;
    }
    if( (v8 & 0x2000) != 0 )
    {
      result = (unsigned int)result | 2;
      *a2 = result;
    }
  }
  if( a3 )
  {
    *a3 = 0;
    if( (v8 & 0x400) != 0 )
    {
      *a3 = 1;
      v6 = 1;
    }
    if( (v8 & 0x800) != 0 )
      *a3 = v6 | 2;
  }
  return result;
}

Referenced by:

PopDirectedDripsInitializeBroadcast
PopDirectedDripsNotify
PopDirectedDripsSendSessionData
PopDirectedDripsUmQueryCapabilities