AuthzBasepGetNextValue
INT64 __fastcall AuthzBasepGetNextValue(INT64 a1, INT64 a2, INT64 a3){
unsigned int ConstantOperand;
__int64 v6;
__int64 v7;
unsigned int v9;
INT64 v10;
ConstantOperand = 0;
LODWORD(v10) = 0;
v6 = *(unsigned int *)(a1 + 8);
if( *(_DWORD *)(a1 + 12) == 1 )
{
if( *(_BYTE *)(a1 + 4) )
{
v9 = *(_DWORD *)(a1 + 24);
if( (unsigned int)v6 < v9 )
{
ConstantOperand = AuthzBasepGetConstantOperand(
(CHAR *)(*(_QWORD *)(a1 + 32) + v6),
v9 - (unsigned int)v6,
a2,
&v10);
if( *(_BYTE *)(a2 + 4) )
return(unsigned int)-1073741406;
else
*(_DWORD *)(a1 + 8) += v10;
return ConstantOperand;
}
}
else if( !(_DWORD)v6 )
{
*(_DWORD *)(a1 + 8) = *(_DWORD *)(a1 + 24);
*(_OWORD *)a2 = *(_OWORD *)a1;
*(_OWORD *)(a2 + 16) = *(_OWORD *)(a1 + 16);
*(_QWORD *)(a2 + 32) = *(_QWORD *)(a1 + 32);
return ConstantOperand;
}
return(unsigned int)-2147483622;
}
if( (_DWORD)v6 || !*(_DWORD *)(a1 + 4) )
{
if( (unsigned int)v6 >= *(_DWORD *)(a1 + 4) )
return(_DWORD)v6 != 0 ? -2147483622 : -1073741275;
ConstantOperand = AuthzBasepQuerySecurityAttributeAndValues(*(_QWORD *)(a1 + 16), a2, a3);
*(_WORD *)a2 = *(_WORD *)a1;
*(_BYTE *)(a2 + 4) = *(_BYTE *)(a1 + 4);
*(_DWORD *)(a2 + 24) = *(_DWORD *)(a1 + 24);
v7 = *(_QWORD *)(a1 + 16);
*(_QWORD *)(a2 + 32) = 0i64;
*(_QWORD *)(a2 + 16) = v7;
*(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 12);
}
else
{
*(_OWORD *)a2 = *(_OWORD *)a1;
*(_OWORD *)(a2 + 16) = *(_OWORD *)(a1 + 16);
*(_QWORD *)(a2 + 32) = *(_QWORD *)(a1 + 32);
}
++*(_DWORD *)(a1 + 8);
return ConstantOperand;
}Referenced by:
AuthzBasepDeviceMemberOf
AuthzBasepEvaluateSetRelationship
AuthzBasepMemberOf
AuthzBasepValueInSet