AuthzBasepDeleteSecurityAttributeValues
__int64 __fastcall AuthzBasepDeleteSecurityAttributeValues(__int64 a1, __int64 a2, _BYTE *a3, __int64 a4){
__int16 v4;
__int64 v8;
int v9;
int v10;
unsigned __int16 v11;
__int64 v12;
int v13;
unsigned int v14;
v4 = *(_WORD *)(a2 + 16);
v8 = 0i64;
v9 = 0;
*a3 = 0;
if( *(_WORD *)(a1 + 48) == v4 )
{
v10 = 0;
if( *(_DWORD *)(a2 + 24) )
{
while( 1 )
{
v11 = *(_WORD *)(a1 + 48);
if( v11 && (v11 <= 2u || v11 == 3 || v11 == 4 || v11 == 5 || v11 == 6 || v11 == 16) )
{
LOBYTE(v12) = AuthzBasepFindSecurityAttributeValue((PRTL_AVL_TABLE)a1);
v8 = v12;
}
else
{
v9 = -1073741811;
}
if( v9 < 0 )
break;
if( !v8 )
return(unsigned int)-1073741275;
v13 = *(_DWORD *)(v8 + 32);
if( (v13 & 4) != 0 )
return(unsigned int)-1073741275;
if( (v13 & 1) != 0 )
{
LOBYTE(a4) = 1;
*(_DWORD *)(v8 + 32) = v13 | 4;
AuthzBasepAddSecurityAttributeValueToLists(a1, v8, 0i64, a4);
++*(_DWORD *)(a1 + 64);
}
else
{
AuthzBasepRemoveSecurityAttributeValueFromLists((_DWORD *)a1, (INT64 *)v8, 0);
ExFreePoolWithTag((PVOID)v8, 0);
}
if( (unsigned int)++v10 >= *(_DWORD *)(a2 + 24) )
goto LABEL_20;
}
}
else
{
LABEL_20:
v14 = *(_DWORD *)(a1 + 60);
if( v14 == *(_DWORD *)(a1 + 64) && *(_DWORD *)(a1 + 88) <= v14 )
*a3 = 1;
}
}
else
{
return(unsigned int)-1073741811;
}
return(unsigned int)v9;
}Referenced by:
AuthzBasepDeleteSecurityAttribute