PopFxInitializeSocSubsystemStaticInfo

NTSTATUS __stdcall PopFxInitializeSocSubsystemStaticInfo(UINT64 PlatformIdleStateIndex, UINT64 Flags){
  int v2; 
  __int64 v3; 
  int v4; 
  unsigned int Flink_high; 
  _LIST_ENTRY *v6; 
  __int64 v7; 
  VOID **PoolWithTag; 
  __int64 v9; 
  unsigned int v10; 
  __int64 v11; 
  __int128 v12; 
  char v13; 
  ULONG_PTR v14; 
  ULONG_PTR v15; 
  __int64 v16; 
  int v17; 
  WCHAR *v18; 
  __int64 v19; 
  int v20; 
  GUID *v21; 
  unsigned __int16 v22; 
  _LIST_ENTRY *v23; 
  char v25; 
  __int128 v26; 
  __int128 v27; 
  __int128 v28; 
  __int64 v29; 
  int v30; 
  __int64 v31; 
  WCHAR pszDest[64]; 

  v2 = PlatformIdleStateIndex;
  v29 = 0i64;
  v26 = 0i64;
  v27 = 0i64;
  v28 = 0i64;
  memset(pszDest, 0i64, sizeof(pszDest));
  if( !*(_QWORD *)&PopFxProcessorPlugin )
    return -1073741822;
  v30 = v2;
  v31 = 0i64;
  if( !(unsigned __int8)PopPluginQuerySocSubsystemCount(v3, (__int64)&v30) )
    return -1073741822;
  Flink_high = v31;
  v6 = PopFxLookupSocSubsystemsByPlatformIdleState(v2);
  if( v6 )
  {
    v4 = -1073741585;
LABEL_29:
    ExFreePoolWithTag(v6, 0x4D584650u);
    return v4;
  }
  v7 = (int)(344 * Flink_high);
  PoolWithTag = ExAllocatePoolWithTag(1ui64, v7 + 24, 1297630800i64);
  v6 = (_LIST_ENTRY *)PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  memset(PoolWithTag, 0i64, v7 + 24);
  LODWORD(v6[1].Flink) = v2;
  v10 = 0;
  HIDWORD(v6[1].Flink) = Flink_high;
  if( Flink_high )
  {
    while( 1 )
    {
      v11 = 344i64 * v10;
      *(char **)((char *)&v6[2].Flink + v11) = (char *)v6 + v11 + 108;
      *(_DWORD *)((char *)&v6[1].Blink + v11) = 0x800000;
      *(_WORD *)((char *)&v6[2].Blink + v11) = 0;
      *(char **)((char *)&v6[3].Flink + v11) = (char *)v6 + v11 + 236;
      *(_WORD *)((char *)&v6[2].Blink + v11 + 2) = 128;
      *(_DWORD *)((char *)&v6[3].Blink + v11) = v10;
      LODWORD(v26) = v2;
      *((_QWORD *)&v26 + 1) = 0i64;
      DWORD1(v26) = *(_DWORD *)((char *)&v6[3].Blink + v11);
      v27 = *(_OWORD *)((char *)&v6[1].Blink + v11);
      v12 = *(_OWORD *)((char *)&v6[2].Blink + v11);
      v29 = 0i64;
      v28 = v12;
      PopPluginInitializeSocSubsystemStaticInfo(v9, (__int64)&v26);
      *(_WORD *)((char *)&v6[2].Blink + v11) = v28;
      *(_WORD *)((char *)&v6[1].Blink + v11) = v27;
      *(_LIST_ENTRY **)((char *)&v6[4].Flink + v11) = (_LIST_ENTRY *)*((_QWORD *)&v26 + 1);
      *(_DWORD *)((char *)&v6[6].Blink + v11) = v29;
      v4 = RtlHashUnicodeString(
             (const _UNICODE_STRING *)((char *)&v6[2].Blink + v11),
             0,
             0i64,
             (UINT64 *)((char *)&v6[3].Blink + v11 + 4));
      if( v4 < 0 )
        break;
      Flink_high = HIDWORD(v6[1].Flink);
      if( ++v10 >= Flink_high )
        goto LABEL_11;
    }
  }
  else
  {
LABEL_11:
    v25 = 0;
    v13 = 0;
    v14 = 0;
    if( Flink_high )
    {
      while( 1 )
      {
        v15 = 0;
        v16 = 344i64 * v14;
        v17 = *(_DWORD *)((char *)&v6[3].Blink + v16);
        *(GUID *)((char *)&v6[4].Blink + v16) = GUID_SLEEPSTUDY_BLOCKER_TOP_LEVEL_SOC_SUBSYSTEM;
        *(_WORD *)((char *)&v6[4].Blink + v16 + 4) = v2;
        *(_WORD *)((char *)&v6[4].Blink + v16 + 6) = v17 + 1;
        v18 = *(WCHAR **)((char *)&v6[2].Flink + v16);
        if( HIDWORD(v6[1].Flink) )
        {
          while( 1 )
          {
            v19 = 344i64 * v15;
            if( v15 != v14
              && !wcsncmp(
                    *(const WCHAR **)((char *)&v6[3].Flink + v16),
                    *(const WCHAR **)((char *)&v6[3].Flink + v19),
                    0x40u) )
            {
              PopFxBugCheck(0x706u, 0x25u, 0x4E616D65u, v15);
            }
            if( !wcsncmp(v18, *(const WCHAR **)((char *)&v6[3].Flink + v19), 0x40u) )
              break;
            if( ++v15 >= HIDWORD(v6[1].Flink) )
            {
              v13 = v25;
              goto LABEL_18;
            }
          }
          v20 = *(_DWORD *)((char *)&v6[3].Blink + v19) + 1;
          v21 = (GUID *)((char *)&v6[5].Blink + v16);
          v22 = v2;
        }
        else
        {
LABEL_18:
          if( v13 )
          {
            if( wcsncmp(v18, pszDest, 0x40u) )
              PopFxBugCheck(0x706u, 0x25u, 0x50617265u, v14);
          }
          else
          {
            RtlStringCchCopyW(pszDest, 0x40ui64, v18);
            v25 = 1;
          }
          LOWORD(v20) = 0;
          v21 = (GUID *)((char *)&v6[5].Blink + v16);
          v22 = 0;
        }
        ++v14;
        *v21 = GUID_SLEEPSTUDY_BLOCKER_TOP_LEVEL_SOC_SUBSYSTEM;
        v21->Data2 = v22;
        v21->Data3 = v20;
        if( v14 >= HIDWORD(v6[1].Flink) )
          break;
        v13 = v25;
      }
    }
    v4 = 0;
  }
  if( v4 )
    goto LABEL_29;
  v23 = (_LIST_ENTRY *)*(&stru_140C23628 + 528);
  if( (_UNKNOWN *)**(&stru_140C23628 + 528) != (_UNKNOWN *)((char *)&stru_140C23628 + 4216) )
    __fastfail(3u);
  v6->Flink = (_LIST_ENTRY *)((char *)&stru_140C23628 + 4216);
  v6->Blink = v23;
  v23->Flink = v6;
  *(&stru_140C23628 + 528) = v6;
  return v4;
}

Referenced by:

PopFxEnablePlatformStates