PopDirectedDripsQueryMitigationStatus

INT64 __fastcall PopDirectedDripsQueryMitigationStatus(_DWORD *a1, _DWORD *a2, INT64 *a3){
  char v3; 
  INT64 result; 
  int v6; 
  int v7; 
  __int16 v8; 
  v3 = dword_140C24A10;
  _m_prefetchw(&PopDirectedDripsState);
  LODWORD(result) = PopDirectedDripsState;
  v6 = 0;
  do
  {
    v7 = result;
    result = (unsigned int)_InterlockedCompareExchange(
                             (volatile signed __int32 *)&PopDirectedDripsState,
                             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 )
  {
    *(_DWORD *)a3 = 0;
    if( (v8 & 0x400) != 0 )
    {
      *(_DWORD *)a3 = 1;
      v6 = 1;
    }
    if( (v8 & 0x800) != 0 )
      *(_DWORD *)a3 = v6 | 2;
  }
  return result;
}

Referenced by:

PopDirectedDripsInitializeBroadcast
PopDirectedDripsNotify
PopDirectedDripsSendSessionData
PopDirectedDripsUmQueryCapabilities