PopDirectedDripsInitializeBroadcast

INT64 __fastcall PopDirectedDripsInitializeBroadcast(volatile INT32 *rcx0){
  char v2; 
  char v3; 
  CHAR v4; 
  int v5; 
  volatile signed __int32 *v6; 
  volatile signed __int32 *i; 
  unsigned int v8; 
  volatile signed __int32 *v9; 
  volatile INT32 *v10; 
  int v11; 
  int v12; 
  char v13; 
  PVOID v14; 
  _QWORD *j; 
  __int64 v16; 
  __int64 v17; 
  _QWORD *v18; 
  volatile INT32 *v20[2]; 
  INT64 a3; 
  int v22; 
  int a1; 
  int a2; 
  a2 = 0;
  *(_OWORD *)v20 = 0i64;
  a1 = 0;
  LODWORD(a3) = 0;
  _InterlockedOr(rcx0, 0);
  v2 = 0;
  PopDirectedDripsQueryMitigationStatus(&a1, &a2, &a3);
  v3 = a3;
  v4 = a3 | a2 & a1;
  if( (unsigned int)a3 | a2 & a1 )
  {
    IoControlPnpDeviceActionQueue(1u);
    v6 = (volatile signed __int32 *)IopRootDeviceNode;
    for( i = (volatile signed __int32 *)*((_QWORD *)IopRootDeviceNode + 1);
          i;
          i = (volatile signed __int32 *)*((_QWORD *)i + 1) )
    {
      v6 = i;
    }
    if( v6 != IopRootDeviceNode )
    {
      do
      {
        _InterlockedAnd(v6 + 74, 0xFFFFFEFF);
        *((_QWORD *)v6 + 92) = v6 + 182;
        *((_QWORD *)v6 + 94) = v6 + 186;
        *((_QWORD *)v6 + 93) = v6 + 186;
        v8 = v6[190] & 0xFFF8FFFF;
        *((_QWORD *)v6 + 91) = v6 + 182;
        *((_DWORD *)v6 + 190) = v8;
        *((_DWORD *)v6 + 191) = 0;
        v9 = *(volatile signed __int32 **)v6;
        if( *(_QWORD *)v6 )
        {
          do
          {
            v6 = v9;
            v9 = (volatile signed __int32 *)*((_QWORD *)v9 + 1);
          }
          while( v9 );
        }
        else
        {
          v6 = (volatile signed __int32 *)*((_QWORD *)v6 + 2);
        }
      }
      while( v6 != IopRootDeviceNode );
      v3 = a3;
    }
    PopFxBuildDirectedDripsCandidateDeviceList(v20);
    v10 = v20[0];
    v22 = 0;
    v11 = 0;
    if( (volatile INT32 **)v20[0] == v20 )
      goto LABEL_42;
    do
    {
      v12 = PopDirectedDripsBuildBroadcastTreePartial(*((_QWORD *)v10 - 103), v4, &v22);
      v5 = v12;
      if( v12 < 0 )
      {
        if( v12 != -1073741637 )
          goto LABEL_43;
      }
      else
      {
        ++v11;
      }
      v10 = *(volatile INT32 **)v10;
    }
    while( v10 != (volatile INT32 *)v20 );
    if( v11 && (v13 = v22, v22) )
    {
      if( (v22 & 1) != 0 && (v3 & 1) == 0 )
      {
        _InterlockedOr(rcx0, 0x400u);
        v3 = a3;
        v13 = v22;
      }
      if( (v13 & 2) != 0 && (v3 & 2) == 0 )
      {
        v2 = 1;
        v5 = -1073741267;
      }
      else
      {
        v14 = IopRootDeviceNode;
        for( j = (_QWORD *)*((_QWORD *)IopRootDeviceNode + 1); j; j = (_QWORD *)j[1] )
          v14 = j;
        while( v14 != IopRootDeviceNode )
        {
          if( (*((_DWORD *)v14 + 190) & 0x30000) != 0 )
          {
            if( (*((_DWORD *)v14 + 190) & 0x20000) != 0 )
            {
              v16 = *((_QWORD *)v14 + 97);
              if( v16 )
                ++*(_DWORD *)(v16 + 160);
            }
            else if( (*((_DWORD *)v14 + 190) & 0x10000) != 0 )
            {
              v17 = *((_QWORD *)v14 + 97);
              if( v17 )
                ++*(_DWORD *)(v17 + 156);
            }
            _InterlockedOr((volatile signed __int32 *)v14 + 74, 0x100u);
          }
          v18 = *(_QWORD **)v14;
          if( *(_QWORD *)v14 )
          {
            do
            {
              v14 = v18;
              v18 = (_QWORD *)v18[1];
            }
            while( v18 );
          }
          else
          {
            v14 = (PVOID)*((_QWORD *)v14 + 2);
          }
        }
        v5 = PoInitializeBroadcast();
      }
    }
    else
    {
LABEL_42:
      v5 = -1073741823;
    }
LABEL_43:
    PopFxDestroyDirectedDripsCandidateDeviceList(v20);
    if( v5 < 0 )
      IoControlPnpDeviceActionQueue(0);
    if( v2 )
    {
      PopAcquirePolicyLock();
      PopPowerAggregatorHandleIntent(4ui64, 0i64, 0x2Aui64);
      PopReleasePolicyLock();
    }
  }
  else
  {
    return(unsigned int)-1073741823;
  }
  return(unsigned int)v5;
}

Referenced by:

PopDirectedDripsSuspendDevices