AuthzBasepDeviceMemberOf

__int64 __fastcall AuthzBasepDeviceMemberOf(__int64 a1, __int64 a2, INT64 a3, char a4, char a5, _BYTE *a6){
  char v7; 
  UINT8 v8; 
  int NextValue; 
  int v12; 
  UINT64 v13; 
  __int64 v14; 
  UINT8 v15; 
  INT64 v17[2]; 
  __int128 v18; 
  void *Src; 
  UINT8 dst[80]; 
  Src = 0i64;
  v7 = a5 != 0;
  v8 = a3;
  *a6 = 0;
  *(_OWORD *)v17 = 0i64;
  v18 = 0i64;
  while( 1 )
  {
    NextValue = AuthzBasepGetNextValue(a1, (INT64)v17, a3);
    v12 = NextValue;
    if( NextValue == -2147483622 )
      break;
    if( NextValue < 0 )
      return(unsigned int)v12;
    v13 = DWORD2(v18);
    if( DWORD2(v18) >= 0x44 )
      v13 = 68i64;
    memmove(dst, (UINT8 *)Src, v13);
    v14 = *(_QWORD *)(a2 + 1096);
    if( v14 )
      v15 = SepSidInTokenSidHash((SID_AND_ATTRIBUTES_HASH *)(v14 + 32 + (a4 != 0 ? 0x110 : 0)), 0i64, dst, v8, a4, 0);
    else
      v15 = 0;
    if( a5 )
    {
      v7 &= v15;
      if( !v7 )
        goto LABEL_15;
    }
    else
    {
      v7 |= v15;
      if( v7 )
        goto LABEL_15;
    }
  }
  v12 = 0;
LABEL_15:
  if( v12 >= 0 )
    *a6 = v7;
  return(unsigned int)v12;
}

Referenced by:

AuthzBasepEvaluateAceCondition