PsRootSiloInformation

__int64 __fastcall PsRootSiloInformation(_DWORD *a1, unsigned int a2, unsigned int *a3){
  unsigned __int64 v3; 
  unsigned int v5; 
  _EJOB *CurrentSilo; 
  __int64 v8; 
  int v9; 
  _EJOB *i; 
  _EJOB *NextSilo; 
  _EJOB *v12; 

  v3 = a2;
  v5 = 4;
  if( a2 < 4 )
    return 3221225507i64;
  CurrentSilo = PsGetCurrentSilo();
  v8 = 0i64;
  v9 = 0;
  for( i = 0i64; ; i = v12 )
  {
    NextSilo = PspGetNextSilo(i, 0);
    v12 = NextSilo;
    if( !NextSilo )
      break;
    if( NextSilo != CurrentSilo && PspIsSiloInSilo(NextSilo, CurrentSilo) )
    {
      if( (unsigned __int64)v5 + 4 > v3 )
      {
        v9 = -1073741789;
        ObfDereferenceObjectWithTag(v12, 0x6E457350ui64);
        break;
      }
      a1[v8 + 1] = *((_DWORD *)v12 + 309);
      v5 += 4;
      v8 = (unsigned int)(v8 + 1);
    }
  }
  if( v9 >= 0 )
  {
    *a1 = v8;
    *a3 = v5;
  }
  return(unsigned int)v9;
}

Referenced by:

ExpQuerySystemInformation