CmpSetAccessStateForBackupRestore
INT64 __fastcall CmpSetAccessStateForBackupRestore(_DWORD *a1, INT8 a2, VOID *a3, CHAR a4){
UINT8 v8;
int v9;
a1[5] = 0;
if( SeSinglePrivilegeCheckEx(*(_QWORD *)&SeBackupPrivilege, (SECURITY_SUBJECT_CONTEXT *)a1 + 1, a2) )
{
a1[3] |= 2u;
a1[5] |= 0x1020019u;
}
v8 = SeSinglePrivilegeCheckEx(*(_QWORD *)&SeRestorePrivilege, (SECURITY_SUBJECT_CONTEXT *)a1 + 1, a2);
v9 = a1[5];
if( v8 )
{
a1[3] |= 4u;
v9 |= 0x10F0006u;
a1[5] = v9;
}
if( a4 )
a1[6] = v9;
if( !v9 )
return 3221225506i64;
SepAdjustAccessStateForConstraints((INT64)CmKeyObjectType, a3, 1, (INT64)a1);
a1[4] = ~a1[5] & a1[6];
return 0i64;
}Referenced by:
CmpCheckCreateAccessOnKcbStack
CmpCheckKeySecurityDescriptorAccess
CmpCheckOpenAccessOnKeyBody