RtlpComputeMergedAcl
__int64 __fastcall RtlpComputeMergedAcl(
_BYTE *a1,
__int16 a2,
unsigned __int8 *a3,
__int16 a4,
__int64 a5,
__int64 a6,
__int64 a7,
int a8,
__int64 a9,
__int64 a10){
unsigned int v10;
int v15;
struct _ACL *Acl;
unsigned int v17;
__int64 v19;
v10 = 1024;
LODWORD(v19) = 1024;
v15 = 0;
while( 1 )
{
Acl = (struct _ACL *)ExAllocatePoolWithTag(PagedPool, v10, 0x63416553ui64);
*(_QWORD *)a9 = Acl;
if( !Acl )
break;
v17 = RtlpComputeMergedAcl2(a1, a2, a3, a4, a5, a6, a7, a8, (__int64)&v19, Acl, a10);
if( (v17 & 0x80000000) == 0 )
{
if( !(_DWORD)v19 )
{
ExFreePoolWithTag(*(PVOID *)a9, 0);
*(_QWORD *)a9 = 0i64;
}
return v17;
}
ExFreePoolWithTag(*(PVOID *)a9, 0);
*(_QWORD *)a9 = 0i64;
if( v17 != -1073741789 )
return v17;
if( (unsigned int)++v15 >= 2 )
return v17;
v10 = v19;
}
return 3221225495i64;
}Referenced by:
RtlpNewSecurityObject
RtlpSetSecurityObject