CmpTraceSecurityChanging
INT64 __fastcall CmpTraceSecurityChanging(INT64 rcx0, VOID *a2, INT64 a3, VOID *a4, VOID *a1){
int v7;
NTSTATUS v8;
_UNICODE_STRING *v9;
unsigned int v10;
unsigned int v12;
unsigned int v13;
unsigned __int16 v14;
__int64 v15;
int Length;
_UNICODE_STRING *KeyPath[2];
struct _EVENT_DATA_DESCRIPTOR v18;
int *v19;
__int64 v20;
wchar_t *Buffer;
int v22[2];
int *v23;
__int64 v24;
VOID *v25;
int v26[2];
_UNICODE_STRING **v27;
__int64 v28;
int *v29;
__int64 v30;
VOID *v31;
int v32[2];
int *v33;
__int64 v34;
VOID *v35;
int v36[2];
KeyPath[0] = 0i64;
v7 = a3;
v8 = CmpConstructNameWithStatus((_CM_KEY_CONTROL_BLOCK *)rcx0, KeyPath);
v9 = KeyPath[0];
v10 = v8;
if( v8 >= 0 )
{
if( RtlFindUnicodeSubstring(&KeyPath[0]->Length, &CmMpsSvcKeySubstring, 1) )
{
v12 = RtlLengthSecurityDescriptorStrict(a2);
if( v12 > 0xFFFF )
LOWORD(v12) = -1;
v13 = RtlLengthSecurityDescriptorStrict(a4);
if( v13 > 0xFFFF )
LOWORD(v13) = -1;
RtlLengthSecurityDescriptorStrict(a1);
if( (unsigned int)dword_140C02130 > 5 && tlgKeywordOn((__int64)&dword_140C02130, 2i64) )
{
Length = v9->Length;
Buffer = v9->Buffer;
v23 = v26;
v19 = v22;
v26[0] = (unsigned __int16)v12;
v27 = KeyPath;
v29 = v32;
v32[0] = (unsigned __int16)v13;
v33 = v36;
v36[0] = v14;
v22[0] = Length;
v22[1] = 0;
v26[1] = 0;
v32[1] = 0;
v36[1] = 0;
v20 = v15;
v24 = v15;
v25 = a2;
LODWORD(KeyPath[0]) = v7;
v28 = 4i64;
v30 = v15;
v31 = a4;
v34 = v15;
v35 = a1;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C02130,
(unsigned __int8 *)&word_1400222E6,
0i64,
0i64,
0xBu,
&v18);
}
}
v10 = 0;
}
if( v9 )
CmpFreeTransientPoolWithTag(v9, 0x624E4D43ui64);
return v10;
}Referenced by:
CmpSetSecurityDescriptorInfo