PopPepInitializeVetoMasks

VOID __fastcall PopPepInitializeVetoMasks(INT64 a1, UINT64 a2){
  __int64 v2; 
  UINT64 v4; 
  int v5; 
  char v6; 
  __int64 v7; 
  __int128 v8; 
  int *v9; 
  unsigned int i; 
  int v11; 
  unsigned __int64 v12; 
  _DWORD *v13; 
  KIRQL v14; 
  __int64 v15; 
  int v16; 
  __int64 v17; 
  unsigned int v18; 
  unsigned int *v19; 
  int v20; 
  unsigned int v21; 
  __int64 v22; 
  _DWORD *v23; 
  unsigned int v24; 
  unsigned int v25; 
  __int64 v26; 
  int v27; 
  __int64 v28; 
  char v29; 
  unsigned int v30; 
  __int64 v31; 
  __int64 v32; 
  unsigned int *v33; 
  int v34; 
  unsigned int v35; 
  INT64 v36; 
  _DWORD *v37; 
  __int64 v38; 
  unsigned int v39; 
  _DWORD *v40; 
  UINT8 v41; 
  char v42; 
  KIRQL v43; 
  INT64 UpdatedAccountingLevel; 
  int DeepSleepPlatformStateIndex; 
  __int128 *v46; 
  INT64 v47; 
  DEVICE_OBJECT *Pdo; 
  __int128 v49; 
  INT64 result; 
  __int128 v51; 
  int v52; 
  char v53; 
  _DWORD v54[16]; 
  _DWORD v55[16]; 
  v2 = (unsigned int)a2;
  HIDWORD(UpdatedAccountingLevel) = 0;
  v49 = 0i64;
  memset((INT64)&result, 0i64);
  v4 = *(_QWORD *)(a1 + 32);
  v46 = 0i64;
  if( *(_QWORD *)(v4 + 48) )
  {
    v5 = v52;
    v7 = (v6 + 120) & 4;
    *(_BYTE *)(a1 + 384) = 0;
    v8 = *(_OWORD *)(v4 + 216);
    v9 = &v52;
    if( ((v6 + 120) & 4) != 0 )
      v5 = 1;
    v52 = v5;
    if( ((v6 + 120) & 4) != 0 )
      v9 = (int *)&v53;
    v51 = v8;
    memset64(v9, 0x100000001ui64, 16i64 - ((unsigned int)v7 != 0i64));
    if( ((v6 + 120) & 4) != 0 )
      *(int *)((char *)v9 + (-(__int64)(v7 != 0) & 0xFFFFFFFFFFFFFFFCui64) + 124) = 1;
    for( i = 0; i < (unsigned int)v2; ++i )
    {
      LODWORD(result) = i;
      *(_QWORD *)&v49 = &result;
      DWORD2(v49) = 8;
      v46 = &v49;
      EmClientRuleEvaluate(
        &GUID_EM_PEP_UPADTE_DEVICE_CONTRAINT,
        (__int64)&v46,
        1,
        (_DWORD *)&UpdatedAccountingLevel + 1);
      if( HIDWORD(UpdatedAccountingLevel) == 2 )
        *(_BYTE *)(a1 + 384) = 1;
    }
    Pdo = *(DEVICE_OBJECT **)(*(_QWORD *)(v4 + 48) + 32i64);
    PopFxActivateDevice(Pdo, 0);
    v11 = v54[0];
    v12 = (unsigned __int64)v54 & 4;
    v13 = v54;
    if( ((unsigned __int8)v54 & 4) != 0 )
      v11 = 1;
    v54[0] = v11;
    if( ((unsigned __int8)v54 & 4) != 0 )
      v13 = v55;
    memset64(v13, 0x100000001ui64, 16i64 - ((unsigned int)v12 != 0i64));
    if( ((unsigned __int8)v54 & 4) != 0 )
      *(_DWORD *)((char *)v13 + (-(__int64)(v12 != 0) & 0xFFFFFFFFFFFFFFFCui64) + 124) = 1;
    v14 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 64));
    v43 = v14;
    v15 = 0i64;
    DeepSleepPlatformStateIndex = PpmGetDeepSleepPlatformStateIndex();
    v41 = 0;
    LODWORD(UpdatedAccountingLevel) = _InterlockedCompareExchange(&PopFxDeviceAccountingLevel, 0, 0);
    v16 = UpdatedAccountingLevel;
    KxAcquireSpinLock((UINT64 *)(v4 + 600));
    *(_DWORD *)(v4 + 616) = UpdatedAccountingLevel;
    memset(v4 + 632, 0i64);
    *(_BYTE *)(v4 + 608) = 0;
    if( PopPluginRequestDeviceIdleConstraints(*(_QWORD *)(a1 + 32), (__int64)v54, v2) || *(_BYTE *)(a1 + 384) )
    {
      v41 = PopFxEnableEnhancedAccounting(&UpdatedAccountingLevel);
      if( *(_BYTE *)(a1 + 384) && (_DWORD)v2 )
      {
        v17 = 0i64;
        v15 = v2;
        do
        {
          v18 = *(int *)((char *)&v52 + v17 * 4);
          if( v54[v17] < v18 )
            v54[v17] = v18;
          ++v17;
          --v15;
        }
        while( v15 );
      }
      v19 = v54;
      v20 = 1;
      v21 = v15;
      if( (_DWORD)v2 )
      {
        v22 = v15;
        v23 = v54;
        do
        {
          if( *(_BYTE *)(v22 + PopPepPlatformState + 57) == (_BYTE)v15 && *v23 != 1 )
            PopFxBugCheck(0x620ui64, v4, v21, 0i64);
          v24 = *v19;
          v25 = 1;
          do
          {
            if( v25 >= v24 )
              break;
            v26 = v25++ - 1;
            *(_DWORD *)(a1 + 4 * v26 + 144) |= v20;
          }
          while( v25 <= 3 );
          if( DeepSleepPlatformStateIndex != -1 && v21 == DeepSleepPlatformStateIndex && v24 > 1 )
          {
            *(_DWORD *)(v4 + 612) = v24;
            *(_QWORD *)(v4 + 624) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
            *(_BYTE *)(v4 + 608) = 1;
            _InterlockedOr((volatile signed __int32 *)(v4 + 824), 0x10u);
          }
          ++v19;
          v20 *= 2;
          ++v21;
          v22 += 384i64;
          ++v23;
          LODWORD(v15) = 0;
        }
        while( v21 < (unsigned int)v2 );
      }
      v27 = *(_DWORD *)(a1 + 152);
      v16 = UpdatedAccountingLevel;
      *(_QWORD *)(a1 + 156) = *(_QWORD *)(a1 + 144);
      *(_DWORD *)(a1 + 164) = v27;
    }
    *(_DWORD *)(v4 + 616) = v16;
    KxReleaseSpinLock((UINT64 *)(v4 + 600));
    v28 = *(int *)(a1 + 168);
    if( (_DWORD)v28 != 4 )
      PopPepUpdateIdleStateRefCount(0i64, *(unsigned int *)(a1 + 4 * v28 + 140), 1i64);
    v29 = *(_BYTE *)(a1 + 124);
    if( v29 )
    {
      v30 = v15;
      v42 = v15;
      if( *(_DWORD *)(a1 + 180) > (unsigned int)v15 )
      {
        while( 1 )
        {
          v47 = a1 + 200i64 * v30;
          v31 = *(_QWORD *)(*(_QWORD *)(v4 + 832) + 8i64 * v30);
          memset((INT64)v54, 0i64);
          v32 = v31 + 200;
          KxAcquireSpinLock((UINT64 *)v32);
          *(_DWORD *)(v32 + 16) = v16;
          memset(v32 + 32, 0i64);
          *(_BYTE *)(v32 + 8) = 0;
          if( PopPluginRequestComponentIdleConstraints(*(_QWORD *)(a1 + 32), v30, (__int64)v54, v2) )
          {
            v41 = PopFxEnableEnhancedAccounting(&UpdatedAccountingLevel);
            v33 = v54;
            v34 = 1;
            v35 = 0;
            if( (_DWORD)v2 )
            {
              v36 = v47;
              v37 = v54;
              v38 = 0i64;
              do
              {
                if( !*(_BYTE *)(v38 + PopPepPlatformState + 57) && *v37 )
                  PopFxBugCheck(0x621ui64, v4, v30, v35);
                v39 = 0;
                if( *(_DWORD *)(v36 + 372) )
                {
                  v40 = (_DWORD *)(*(_QWORD *)(v36 + 376) + 16i64);
                  do
                  {
                    if( v39 >= *v33 )
                      break;
                    *v40 |= v34;
                    ++v39;
                    v40 += 6;
                  }
                  while( v39 < *(_DWORD *)(v36 + 372) );
                }
                if( DeepSleepPlatformStateIndex != -1 && v35 == DeepSleepPlatformStateIndex && *v33 )
                {
                  *(_DWORD *)(v32 + 12) = *v33;
                  *(_QWORD *)(v32 + 24) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
                  *(_BYTE *)(v32 + 8) = 1;
                  v42 = 1;
                  _InterlockedOr((volatile signed __int32 *)(v4 + 824), 0x10u);
                }
                ++v33;
                v34 *= 2;
                ++v35;
                v38 += 384i64;
                ++v37;
              }
              while( v35 < (unsigned int)v2 );
            }
            v16 = UpdatedAccountingLevel;
          }
          *(_DWORD *)(v32 + 16) = v16;
          KxReleaseSpinLock((UINT64 *)v32);
          PopPepUpdateIdleStateRefCount(
            0i64,
            *(unsigned int *)(*(_QWORD *)(v47 + 376) + 24i64 * *(unsigned int *)(v47 + 360) + 16),
            1i64);
          LOBYTE(v15) = 0;
          if( v42 )
            _InterlockedOr((volatile signed __int32 *)(v4 + 824), 0x100u);
          else
            _InterlockedAnd((volatile signed __int32 *)(v4 + 824), 0xFFFFFEFF);
          if( ++v30 >= *(_DWORD *)(a1 + 180) )
            break;
          v16 = UpdatedAccountingLevel;
        }
        v29 = *(_BYTE *)(a1 + 124);
      }
      v14 = v43;
      if( v29 )
        goto LABEL_70;
    }
    if( *(_BYTE *)(a1 + 384) != (_BYTE)v15 )
LABEL_70:
      *(_DWORD *)(a1 + 172) = 2;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(a1 + 64));
    __writecr8(v14);
    PoFxIdleDevice(Pdo);
    if( v41 != (_BYTE)v15 )
      PopPepResetDeviceAccountingLevel();
  }
  else if( (*(_DWORD *)(v4 + 824) & 2) != 0 )
  {
    PopPepInitializeDebuggerMasks(a1, (unsigned int)v2);
  }
}

Referenced by:

PopPepDeviceStarted
PopPepPlatformStateRegistered