IsTrustletCreateAttributeWellFormed

CHAR __fastcall IsTrustletCreateAttributeWellFormed(_QWORD *a1, INT64 a2){
  __int64 v2; 
  unsigned int v3; 
  unsigned int v4; 
  unsigned int v5; 
  __int64 *v6; 
  unsigned int i; 
  if( a2 != 8 )
  {
    if( (a2 & 7) != 0 || (unsigned __int64)(a2 - 24) > 0x70 || !*a1 )
      return 0;
    v2 = 0i64;
    v3 = (unsigned int)(a2 - 8) >> 3;
    v4 = 0;
    if( v3 )
    {
      while( 1 )
      {
        v5 = HIDWORD(a1[v2 + 1]);
        if( (_BYTE)v5 || v5 >= 0x100 || (a1[v2 + 1] & 0xF0000000i64) != 0 )
          return 0;
        v6 = `IsTrustletCreateAttributeWellFormed'::`2'::KnownAttributeTypes;
        for( i = 0; i < 4; ++i )
        {
          if( LODWORD(a1[v2 + 1]) == *(_DWORD *)*v6 )
            break;
          ++v6;
        }
        if( i == 4 )
          return 0;
        ++v4;
        v2 = (unsigned int)BYTE1(a1[v2 + 1]) + (_DWORD)v2 + 1;
        if( (unsigned int)v2 >= v3 )
        {
          if( v4 > 4 )
            return 0;
          break;
        }
      }
    }
    if( (_DWORD)v2 != v3 )
      return 0;
  }
  return 1;
}

Referenced by:

PspBuildCreateProcessContext