PopPepInitializeDebuggerMasks

VOID __stdcall PopPepInitializeDebuggerMasks(_POP_PEP_DEVICE *Device, UINT64 PlatformStateCount){
  ULONG_PTR v2; 
  _QWORD *v3; 
  __int64 v4; 
  ULONG_PTR v5; 
  UINT8 *v6; 
  _BYTE *v7; 
  __int64 v8; 
  int v9; 
  int v10; 
  UINT8 *v11; 
  UINT8 TransitionRequirements[16]; 
  __int128 v13; 

  v2 = PlatformStateCount;
  if( *(_DWORD *)(PpmPlatformStates + 4) )
  {
    v3 = (_QWORD *)*((_QWORD *)Device + 4);
    v10 = 0;
    *(_OWORD *)TransitionRequirements = 0i64;
    v13 = 0i64;
    v4 = v3[8];
    if( v4 == *(_QWORD *)&PopFxProcessorPlugin )
    {
      if( v4 )
      {
        v8 = v3[9];
        v11 = TransitionRequirements;
        v9 = PlatformStateCount;
        if( (*(unsigned __int8(__fastcall **)(__int64, __int64 *))(v4 + 96))(35i64, &v8) )
        {
          v5 = 0;
          if( v2 )
          {
            v6 = TransitionRequirements;
            v7 = (_BYTE *)(PopPepPlatformState + 56);
            do
            {
              if( *v6 )
              {
                if( !v7[1] )
                  PopFxBugCheck(0x61Fu, (ULONG_PTR)v3, v5, 0);
                *v7 = 1;
                PopAutomaticDebuggerTransitions = 1;
              }
              ++v5;
              ++v6;
              v7 += 384;
            }
            while( v5 < v2 );
          }
          PopDiagTraceDebuggerTransitionRequirements(v3, TransitionRequirements, v2);
        }
      }
    }
  }
}

Referenced by:

PopPepInitializeVetoMasks