RtlpCapabilityCheckSystemCapability

INT64 __stdcall RtlpCapabilityCheckSystemCapability(HANDLE ExistingTokenHandle, PCUNICODE_STRING Source){
  _BYTE *v2; 
  _BYTE *v4; 
  int PolicyValueForSystemCapability; 
  int IsAppContainer; 
  UINT64 v7; 
  UINT64 v8; 
  INT64 IsMember; 
  INT64 v11; 
  UNICODE_STRING String1; 
  char Sid[16]; 
  HIDWORD(IsMember) = 0;
  LOWORD(v11) = 1280;
  LOWORD(IsMember) = 0;
  v4 = v2;
  String1 = 0i64;
  PolicyValueForSystemCapability = RtlpGetPolicyValueForSystemCapability(Source, &String1);
  IsAppContainer = PolicyValueForSystemCapability;
  if( PolicyValueForSystemCapability == -1073741772 )
  {
    IsAppContainer = 0;
  }
  else
  {
    *v4 = 0;
    if( PolicyValueForSystemCapability >= 0 )
    {
      if( (unsigned int)RtlCompareUnicodeString(&String1, &stru_140009658, 0) )
      {
        if( (unsigned int)RtlCompareUnicodeString(&String1, &stru_140009638, 0) )
        {
          IsAppContainer = -1073741823;
          goto LABEL_14;
        }
        LOBYTE(v8) = 1;
        RtlInitializeSid(Sid, (SID_IDENTIFIER_AUTHORITY *)((char *)&IsMember + 4), v8);
        *RtlSubAuthoritySid(Sid, 0i64) = 4;
      }
      else
      {
        LOBYTE(v7) = 2;
        RtlInitializeSid(Sid, (SID_IDENTIFIER_AUTHORITY *)((char *)&IsMember + 4), v7);
        *RtlSubAuthoritySid(Sid, 0i64) = 32;
        *RtlSubAuthoritySid(Sid, 1ui64) = 583;
      }
      IsAppContainer = RtlCheckTokenMembershipEx(
                         ExistingTokenHandle,
                         Sid,
                         2ui64,
                         (UINT8 *)&IsMember,
                         IsMember,
                         v11,
                         *(INT64 *)&String1.Length,
                         (INT64)String1.Buffer);
      if( IsAppContainer >= 0 )
      {
        if( (_BYTE)IsMember )
        {
          IsAppContainer = RtlpIsAppContainer(ExistingTokenHandle, (BOOL *)((char *)&IsMember + 1));
          if( IsAppContainer >= 0 )
          {
            if( BYTE1(IsMember) )
              *v4 = 1;
          }
        }
      }
    }
  }
LABEL_14:
  RtlFreeAnsiString(&String1);
  return(unsigned int)IsAppContainer;
}

Referenced by:

RtlCapabilityCheck