CmpLogTransactionAbortedWithChildName

void __fastcall CmpLogTransactionAbortedWithChildName(
        __int64 a1,
        const UNICODE_STRING *a2,
        int a3,
        __int64 a4,
        unsigned int a5){
  struct _PRIVILEGE_SET *Buffer; 
  __int64 v9; 
  _CHILD_LIST *v10; 
  UNICODE_STRING *v11; 
  int v12; 
  unsigned __int64 v13; 
  wchar_t *v14; 
  UNICODE_STRING *p_DestinationString; 
  struct _UNICODE_STRING DestinationString; 
  PCUNICODE_STRING SourceString; 
  SourceString = 0i64;
  DestinationString = 0i64;
  RtlInitUnicodeString(&DestinationString, 0i64, a3);
  if( !a5 || (unsigned int)dword_140C02130 <= 4 || !tlgKeywordOn((__int64)&dword_140C02130, 1i64) )
  {
    Buffer = (struct _PRIVILEGE_SET *)DestinationString.Buffer;
    goto LABEL_3;
  }
  CmpConstructNameFromKcbNameBlocks((_CM_KEY_CONTROL_BLOCK *)a1, (_UNICODE_STRING **)&SourceString);
  v11 = (UNICODE_STRING *)SourceString;
  if( v12 < 0 )
    goto LABEL_14;
  if( !a2 )
  {
    p_DestinationString = (UNICODE_STRING *)SourceString;
LABEL_13:
    CmpLogTransactionAbortedByName(&p_DestinationString->Length, a3, v9, a5);
    goto LABEL_14;
  }
  v13 = SourceString->Length + 2i64 + a2->Length;
  if( v13 <= 0xFFFF )
  {
    DestinationString.MaximumLength = SourceString->Length + 2 + a2->Length;
    CmpAllocateTransientPoolWithTag((_HHIVE *)1, (unsigned __int16)v13, 0x624E4D43ui64, v10);
    DestinationString.Buffer = v14;
    Buffer = (struct _PRIVILEGE_SET *)v14;
    if( !v14 )
      goto LABEL_15;
    RtlUnicodeStringCopy(&DestinationString, v11);
    RtlUnicodeStringCatString(&DestinationString, (PWCHAR)L"\\");
    RtlUnicodeStringCat(&DestinationString, a2);
    p_DestinationString = &DestinationString;
    goto LABEL_13;
  }
LABEL_14:
  Buffer = (struct _PRIVILEGE_SET *)DestinationString.Buffer;
LABEL_15:
  if( v11 )
    CmpFreeTransientPoolWithTag(v11, 0x624E4D43ui64);
LABEL_3:
  if( Buffer )
    CmSiFreeMemory(Buffer);
}

Referenced by:

CmpCreateChild
CmpLogTransactionAborted
CmpLogTransactionAbortedForRollbackPacket