CmLoadAppKey

NTSTATUS __stdcall CmLoadAppKey(
        OBJECT_ATTRIBUTES *TargetKey,
        UNICODE_STRING *SourceFile,
        UINT64 Flags,
        CM_KEY_BODY *KeyBody,
        KEVENT *UserEvent,
        UNICODE_STRING **PathToRoot,
        PVOID *LoadKeyContext){
  __int16 v7; 
  _UNICODE_STRING *ObjectName; 
  char v11; 
  volatile signed __int32 *LastHive; 
  unsigned int Length; 
  __int64 v14; 
  _UNICODE_STRING *v15; 
  _PRIVILEGE_SET *TransientPoolWithTag; 
  _PRIVILEGE_SET *v18; 
  _ETHREAD *CurrentThread; 
  int v20; 
  int v21; 
  int v22; 
  NTSTATUS v23; 
  NTSTATUS KeyCommon; 
  NTSTATUS v25; 
  _ADAPTER_OBJECT *v26; 
  _ETHREAD *v27; 
  __int64 *v28; 
  __int64 v29; 
  _QWORD *v30; 
  __int64 v31; 
  _EX_RUNDOWN_REF *v32; 
  UINT8 *v33; 
  unsigned int v34; 
  NTSTATUS v35; 
  _CMHIVE *i; 
  _CMHIVE *NextHive; 
  __int64 v38; 
  void *v39; 
  int v40; 
  int v41; 
  INT64 v42; 
  _CM_KEY_CONTROL_BLOCK *v43; 
  _UNICODE_STRING **v44; 
  _ETHREAD *v45; 
  __int64 v46; 
  __int64 v47; 
  __int64 v48; 
  __int64 v49; 
  _QWORD *v50; 
  _QWORD *v51; 
  __int64 v52; 
  unsigned __int8 *v53; 
  unsigned __int8 v54; 
  _EVENT_DATA_DESCRIPTOR *v55; 
  unsigned int v56; 
  int v57; 
  int LowPart_high; 
  int v59; 
  __int64 p_HighPart; 
  int v61; 
  int v62; 
  UINT64 Point; 
  UINT64 Pointa; 
  POBJECT_HANDLE_INFORMATION HandleInformation; 
  POBJECT_HANDLE_INFORMATION HandleInformationa; 
  VOID **NeedRmLogStart; 
  UINT8 Allocate; 
  char v69; 
  char v70; 
  char v71; 
  _FILE_OBJECT *FileObject; 
  int CompareAddress; 
  __int16 v74; 
  __int16 v75; 
  __int16 v76; 
  unsigned __int16 LowPart; 
  __int16 v78; 
  __int16 v79; 
  _HANDLE Handle[2]; 
  int v81; 
  volatile unsigned int HandleClosePending; 
  int SupplementalFlags; 
  int SupplementalFlags_4; 
  CMHIVE *NewHive; 
  PVOID P; 
  NTSTATUS v87; 
  NTSTATUS v88; 
  NTSTATUS v89; 
  NTSTATUS v90; 
  unsigned int Flagsa; 
  int Flags_4; 
  int v93; 
  UINT8 *v94; 
  __int64 v95[10]; 
  PVOID Object; 
  PVOID v97; 
  _UNICODE_STRING *KeyPath; 
  __int64 v99; 
  UINT8 v100[8]; 
  _UNICODE_STRING **v101; 
  KEVENT *v102; 
  CM_KEY_BODY *TrustClassKeyBody; 
  __int64 v104; 
  __int64 v105; 
  __int64 v106; 
  __int64 v107; 
  __int64 v108; 
  __int64 v109; 
  _KAPC_STATE ApcState; 
  _EVENT_DATA_DESCRIPTOR v111; 
  __int64 *v112; 
  __int64 v113; 
  int *v114; 
  __int64 v115; 
  __int16 *v116; 
  __int64 v117; 
  __int16 *v118; 
  __int64 v119; 
  __int16 *v120; 
  __int64 v121; 
  unsigned __int16 *v122; 
  __int64 v123; 
  unsigned __int16 *v124; 
  int v125; 
  int v126; 
  unsigned __int16 *v127; 
  __int64 v128; 
  unsigned __int16 *Privilege; 
  int v130; 
  int v131; 
  unsigned __int16 *v132; 
  __int64 v133; 
  unsigned __int16 *p_Attributes; 
  int v135; 
  int v136; 
  __int64 *v137; 
  __int64 v138; 
  _EVENT_DATA_DESCRIPTOR v139; 
  int *v140; 
  __int64 v141; 
  unsigned __int16 *p_LowPart; 
  __int64 v143; 
  __int16 *v144; 
  __int64 v145; 
  __int16 *v146; 
  __int64 v147; 
  unsigned __int16 *v148; 
  __int64 v149; 
  __int64 v150; 
  int v151; 
  int v152; 
  unsigned __int16 *v153; 
  __int64 v154; 
  unsigned __int16 *v155; 
  int v156; 
  int v157; 
  unsigned __int16 *v158; 
  __int64 v159; 
  unsigned __int16 *v160; 
  int v161; 
  int v162; 
  char v163; 
  __int64 *v164; 
  __int64 v165; 
  int *v166; 
  __int64 v167; 
  char *v168; 
  __int64 v169; 
  __int64 *v170; 
  __int64 v171; 
  _EVENT_DATA_DESCRIPTOR v172; 
  __int64 *v173; 
  __int64 v174; 
  int *v175; 
  __int64 v176; 
  __int64 *v177; 
  __int64 v178; 
  _UNICODE_STRING **v179; 
  __int64 v180; 

  v7 = Flags;
  v102 = UserEvent;
  v101 = v179;
  Flagsa = Flags;
  *(_QWORD *)v100 = v180;
  TrustClassKeyBody = KeyBody;
  v94 = (UINT8 *)PathToRoot;
  v81 = 0;
  *(_QWORD *)Handle = 0i64;
  memset(v95, 0i64, sizeof(v95));
  ObjectName = TargetKey->ObjectName;
  memset(&ApcState, 0, sizeof(ApcState));
  v69 = 0;
  v11 = 0;
  v70 = 0;
  LastHive = 0i64;
  Length = ObjectName->Length;
  P = 0i64;
  v99 = 0i64;
  FileObject = 0i64;
  if( (unsigned __int16)Length >= 2u )
  {
    LODWORD(v14) = Length >> 1;
    if( Length >> 1 )
    {
      do
      {
        v15 = TargetKey->ObjectName;
        v14 = (unsigned int)(v14 - 1);
        if( v15->Buffer[v14] != 92 )
          break;
        v15->Length -= 2;
      }
      while( (_DWORD)v14 );
    }
  }
  if( TargetKey->ObjectName->Length < 2u )
    return -1073741811;
  TransientPoolWithTag = (_PRIVILEGE_SET *)CmpAllocateTransientPoolWithTag(1ui64, 0x1B0ui64);
  v18 = TransientPoolWithTag;
  if( !TransientPoolWithTag )
    return -1073741670;
  memset(TransientPoolWithTag, 0i64, 0x1B0u);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  if( !ExAcquireRundownProtection((_EX_RUNDOWN_REF *)&CmpDummyThreadEvent + 132) )
  {
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    CmSiFreeMemory(v18);
    return -1073741431;
  }
  Flags_4 = v7 & 0x20;
  v20 = (Flags_4 != 0 ? 119078913 : 51970049) | 0x8000000;
  if( (v7 & 0x80u) == 0 )
    v20 = Flags_4 != 0 ? 119078913 : 51970049;
  v21 = v20 | 0x10000000;
  if( (v7 & 0x200) == 0 )
    v21 = v20;
  SupplementalFlags_4 = v21;
  v93 = v7 & 0x2000;
  v22 = (v93 != 0) | 0x20;
  if( (v7 & 0x8000) == 0 )
    v22 = (v7 & 0x2000) != 0;
  SupplementalFlags = v22;
  v23 = CmpOpenHiveFile(SourceFile, 0, (VOID **)Handle, &v81, 8, (__int64)PathToRoot, 0i64, 0i64, (__int64)&P);
  KeyCommon = v23;
  if( v23 == -1073741772 )
  {
    v69 = 1;
    v95[4] = (__int64)SourceFile;
    LOBYTE(v95[5]) = 1;
  }
  else
  {
    if( v23 < 0 )
    {
      LODWORD(Point) = 16;
      SetFailureLocation((_HIVE_LOAD_FAILURE *)v18, 0i64, _CmLoadAppKey, (unsigned int)v23, Point);
      goto LABEL_103;
    }
    Object = 0i64;
    v25 = ObReferenceObjectByHandle(
            *(VOID **)Handle,
            0i64,
            (_OBJECT_TYPE *)**(&CmpDummyThreadEvent + 344),
            0,
            &Object,
            0i64);
    v26 = (_ADAPTER_OBJECT *)Object;
    KeyCommon = v25;
    FileObject = (_FILE_OBJECT *)Object;
    ZwClose(Handle[0]);
    if( KeyCommon < 0 )
    {
      LODWORD(Point) = 32;
      SetFailureLocation((_HIVE_LOAD_FAILURE *)v18, 0i64, _CmLoadAppKey, (unsigned int)KeyCommon, Point);
      goto LABEL_101;
    }
    v95[4] = (__int64)v26->AdapterObject.ContiguousTranslations;
    LOBYTE(v95[5]) = 0;
  }
  KeInitializeEvent((INT64)&v95[6], 0, 0);
  ExInitializePushLock((PULONG_PTR)&v95[9]);
  v95[3] = (__int64)&v95[2];
  v95[2] = (__int64)&v95[2];
  v27 = (_ETHREAD *)KeGetCurrentThread();
  --v27->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 110, 0i64);
  v28 = (__int64 *)*(&CmpDummyThreadEvent + 108);
  if( (_UNKNOWN *)*(&CmpDummyThreadEvent + 108) == (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 864) )
  {
LABEL_32:
    if( (_UNKNOWN *)**(&CmpDummyThreadEvent + 109) == (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 864) )
    {
      v95[0] = (__int64)&CmpDummyThreadEvent + 864;
      v95[1] = *(&CmpDummyThreadEvent + 109);
      **(&CmpDummyThreadEvent + 109) = v95;
      *(&CmpDummyThreadEvent + 109) = v95;
      ExReleasePushLockEx((ULONG_PTR)&CmpDummyThreadEvent + 880, 0);
      KeLeaveCriticalRegionThread(KeGetCurrentThread());
      goto LABEL_34;
    }
    goto LABEL_124;
  }
  v29 = v95[4];
  while( 1 )
  {
    if( !*((_BYTE *)v28 + 40) )
    {
      if( v28[4] == v29 )
        break;
      goto LABEL_31;
    }
    if( (unsigned __int8)RtlEqualUnicodeString((PCUNICODE_STRING)v28[4], SourceFile, 1u) )
      break;
LABEL_31:
    v28 = (__int64 *)*v28;
    if( v28 == (__int64 *)((char *)&CmpDummyThreadEvent + 864) )
      goto LABEL_32;
  }
  v30 = (_QWORD *)v28[3];
  v31 = (__int64)(v28 + 2);
  if( *v30 != v31 )
    goto LABEL_124;
  v95[3] = (__int64)v30;
  v95[2] = v31;
  *v30 = &v95[2];
  *(_QWORD *)(v31 + 8) = &v95[2];
  v32 = (_EX_RUNDOWN_REF *)v95[3];
  ExAcquireRundownProtection((_EX_RUNDOWN_REF *)(v95[3] + 56));
  ExReleasePushLockEx((ULONG_PTR)&CmpDummyThreadEvent + 880, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  KeWaitForSingleObject((UINT64)&v32[4], 0, 0, 0, 0i64);
  ExReleaseRundownProtection(v32 + 7);
LABEL_34:
  v33 = v94;
  NewHive = 0i64;
  LODWORD(Point) = SupplementalFlags_4;
  LODWORD(HandleInformation) = SupplementalFlags;
  Allocate = 1;
  v34 = CmpCmdHiveOpen(SourceFile, 1u, &Allocate, &NewHive, Point, (UINT64)HandleInformation, v94);
  while( 1 )
  {
    KeyCommon = v34;
    if( !v34 )
    {
      LOBYTE(NeedRmLogStart) = (_BYTE)LoadKeyContext;
      KeyCommon = CmpLoadKeyCommon(
                    NewHive,
                    TargetKey,
                    Flagsa,
                    TrustClassKeyBody,
                    0i64,
                    v102,
                    NeedRmLogStart,
                    v100[0],
                    Allocate);
      goto LABEL_90;
    }
    if( v34 != -1073741757 || Flags_4 || v11 )
    {
      LODWORD(Pointa) = 48;
      SetFailureLocation((_HIVE_LOAD_FAILURE *)v18, 0i64, _CmLoadAppKey, v34, Pointa);
      goto LABEL_90;
    }
    if( v69 )
    {
      KeyCommon = CmpOpenHiveFile(SourceFile, 0, (VOID **)Handle, &v81, 8, (__int64)v33, 0i64, 0i64, (__int64)&P);
      if( KeyCommon < 0 )
      {
        LODWORD(Pointa) = 64;
        if( KeyCommon == -1073741772 )
          KeyCommon = -1073741757;
LABEL_77:
        v42 = (unsigned int)KeyCommon;
LABEL_78:
        SetFailureLocation((_HIVE_LOAD_FAILURE *)v18, 0i64, _CmLoadAppKey, v42, Pointa);
        goto LABEL_90;
      }
      v97 = 0i64;
      v35 = ObReferenceObjectByHandle(
              *(VOID **)Handle,
              0i64,
              (_OBJECT_TYPE *)**(&CmpDummyThreadEvent + 344),
              0,
              &v97,
              0i64);
      v26 = (_ADAPTER_OBJECT *)v97;
      KeyCommon = v35;
      FileObject = (_FILE_OBJECT *)v97;
      ZwClose(Handle[0]);
      if( KeyCommon < 0 )
      {
        LODWORD(Pointa) = 80;
        SetFailureLocation((_HIVE_LOAD_FAILURE *)v18, 0i64, _CmLoadAppKey, (unsigned int)KeyCommon, Pointa);
        goto LABEL_91;
      }
      v33 = v94;
    }
    LOCK_HIVE_LOAD();
    CmpLockRegistryFreezeAware(1u);
    LastHive = (volatile signed __int32 *)CmpGetLastHive();
    if( LastHive )
      break;
LABEL_73:
    CmpUnlockRegistry();
    UNLOCK_HIVE_LOAD();
    LODWORD(Pointa) = SupplementalFlags_4;
    LODWORD(HandleInformationa) = SupplementalFlags;
    Allocate = 1;
    NewHive = 0i64;
    v34 = CmpCmdHiveOpen(SourceFile, 1u, &Allocate, &NewHive, Pointa, (UINT64)HandleInformationa, v33);
    v11 = 1;
  }
LABEL_44:
  for( CompareAddress = *(&CmpDummyThreadEvent + 222); CompareAddress; CompareAddress = *(&CmpDummyThreadEvent + 222) )
  {
    CmpUnlockRegistry();
    UNLOCK_HIVE_LOAD();
    ExBlockOnAddressPushLock(
      (_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 112,
      (char *)&CmpDummyThreadEvent + 888,
      &CompareAddress,
      4ui64,
      0i64);
    LOCK_HIVE_LOAD();
    CmpLockRegistryFreezeAware(1u);
  }
  for( i = 0i64; ; i = (_CMHIVE *)v38 )
  {
    NextHive = CmpGetNextHive(i);
    v38 = (__int64)NextHive;
    if( !NextHive )
      break;
    HandleClosePending = NextHive->HandleClosePending;
    if( HandleClosePending )
    {
      CmpUnlockRegistry();
      UNLOCK_HIVE_LOAD();
      ExBlockOnAddressPushLock(
        (_EX_PUSH_LOCK *)(v38 + 4816),
        (VOID *)(v38 + 4808),
        (VOID *)&HandleClosePending,
        4ui64,
        0i64);
      LOCK_HIVE_LOAD();
      CmpLockRegistryFreezeAware(1u);
      if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
        CmpDeleteHive((PVOID)v38);
      if( (volatile signed __int32 *)v38 == LastHive )
        break;
      goto LABEL_44;
    }
    v39 = NextHive->FileHandles[0];
    if( v39 && CmpIsThisSameFile(FileObject, v39) )
    {
      v40 = *(_DWORD *)(v38 + 4152);
      v41 = *(_DWORD *)(v38 + 160) & 0x8000;
      if( (v40 & 0x20) == 0 || (v40 & 0x40) != 0 )
      {
        CmpUnlockRegistry();
        UNLOCK_HIVE_LOAD();
        if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
          CmpDeleteHive((PVOID)v38);
        v42 = 3221225539i64;
        LODWORD(Pointa) = 96;
        KeyCommon = -1073741757;
        goto LABEL_78;
      }
      if( v93 )
      {
        if( !v41 && !CmpCheckHivePrimaryFileReadWriteAccess(P) )
        {
          CmpUnlockRegistry();
          UNLOCK_HIVE_LOAD();
          if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
            CmpDeleteHive((PVOID)v38);
          KeyCommon = -1073741790;
          LODWORD(Pointa) = 128;
          goto LABEL_77;
        }
      }
      else if( v41 )
      {
        CmpUnlockRegistry();
        UNLOCK_HIVE_LOAD();
        if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
          CmpDeleteHive((PVOID)v38);
        v42 = 3221225539i64;
        LODWORD(Pointa) = 112;
        KeyCommon = -1073741757;
        goto LABEL_78;
      }
      CmpAttachToRegistryProcess(&ApcState);
      v43 = *(_CM_KEY_CONTROL_BLOCK **)(v38 + 2928);
      v99 = v38;
      KeyPath = 0i64;
      CmpConstructNameWithStatus(v43, &KeyPath);
      v44 = v101;
      *v101 = KeyPath;
      CmpDetachFromRegistryProcess(&ApcState);
      if( !*v44 )
      {
        CmpUnlockRegistry();
        UNLOCK_HIVE_LOAD();
        KeyCommon = -1073741670;
        if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
          CmpDeleteHive((PVOID)v38);
        goto LABEL_90;
      }
      CmpReferenceKeyControlBlockUnsafe(*(volatile INT64 **)(v38 + 2928));
      **(_QWORD **)v100 = *(_QWORD *)(v38 + 2928);
      CmpUnlockRegistry();
      UNLOCK_HIVE_LOAD();
      KeyCommon = 0;
LABEL_69:
      if( _InterlockedExchangeAdd((volatile signed __int32 *)(v38 + 4272), 0xFFFFFFFF) == 1 )
        CmpDeleteHive((PVOID)v38);
      break;
    }
    if( (volatile signed __int32 *)v38 == LastHive )
      goto LABEL_69;
  }
  if( !v99 )
  {
    v33 = v94;
    goto LABEL_73;
  }
  v70 = 1;
LABEL_90:
  v26 = (_ADAPTER_OBJECT *)FileObject;
LABEL_91:
  v45 = (_ETHREAD *)KeGetCurrentThread();
  --v45->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 110, 0i64);
  v46 = v95[0];
  v47 = v95[1];
  if( *(__int64 **)(v95[0] + 8) != v95 || *(__int64 **)v95[1] != v95 )
    goto LABEL_124;
  *(_QWORD *)v95[1] = v95[0];
  *(_QWORD *)(v46 + 8) = v47;
  v48 = v95[2];
  if( (__int64 *)v95[2] == &v95[2] )
    goto LABEL_98;
  v49 = v95[3];
  v50 = (_QWORD *)(v95[2] - 16);
  if( *(__int64 **)(v95[2] + 8) != &v95[2]
    || *(__int64 **)v95[3] != &v95[2]
    || (*(_QWORD *)v95[3] = v95[2],
        *(_QWORD *)(v48 + 8) = v49,
        v51 = (_QWORD *)*(&CmpDummyThreadEvent + 109),
        (_UNKNOWN *)**(&CmpDummyThreadEvent + 109) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 864)) )
  {
LABEL_124:
    __fastfail(3u);
  }
  *v50 = (char *)&CmpDummyThreadEvent + 864;
  v50[1] = v51;
  *v51 = v50;
  *(&CmpDummyThreadEvent + 109) = v50;
LABEL_98:
  ExReleasePushLockEx((ULONG_PTR)&CmpDummyThreadEvent + 880, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  KeSetEvent((PRKEVENT)&v95[6], 0, 0);
  ExWaitForRundownProtectionRelease((_EX_RUNDOWN_REF *)&v95[9]);
  if( LastHive && _InterlockedExchangeAdd(LastHive + 1068, 0xFFFFFFFF) == 1 )
    CmpDeleteHive((PVOID)LastHive);
LABEL_101:
  if( v26 )
    HalPutDmaAdapter(v26);
LABEL_103:
  if( P )
    ExFreePoolWithTag(P, 0);
  ExReleaseRundownProtection((_EX_RUNDOWN_REF *)&CmpDummyThreadEvent + 132);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  if( KeyCommon >= 0 )
  {
    if( *(&stru_140C00F40 + 1148) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 0x400000000008i64) )
    {
      v165 = 8i64;
      v108 = 1i64;
      v164 = &v108;
      v53 = (unsigned __int8 *)&unk_1400220C0;
      v90 = KeyCommon;
      v166 = &v90;
      v54 = 6;
      v71 = v70;
      v168 = &v71;
      v170 = &v109;
      v55 = (_EVENT_DATA_DESCRIPTOR *)&v163;
      v167 = 4i64;
      v169 = 1i64;
      v109 = 0x1000000i64;
      v171 = 8i64;
LABEL_122:
      tlgWriteAgg((__int64)&stru_140C00F40 + 4592, v53, v52, v54, v55);
    }
  }
  else if( LOWORD(v18->Privilege[0].Luid.LowPart)
         || HIWORD(v18->Privilege[0].Luid.LowPart)
         || BYTE2(v18[19].Privilege[0].Luid.HighPart) )
  {
    if( *(&stru_140C00F40 + 1148) > 5u )
    {
      if( tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 0x400000000008i64) )
      {
        v106 = 1i64;
        v113 = 8i64;
        LowPart_high = HIWORD(v18->Privilege[0].Luid.LowPart);
        v59 = BYTE2(v18[19].Privilege[0].Luid.HighPart);
        v112 = &v106;
        p_HighPart = (__int64)&v18->Privilege[0].Luid.HighPart;
        v76 = v59;
        v114 = &v88;
        v116 = &v74;
        v118 = &v75;
        v120 = &v76;
        Privilege = (unsigned __int16 *)v18[5].Privilege;
        v130 = 12 * LowPart_high;
        p_Attributes = (unsigned __int16 *)&v18[19].Privilege[0].Attributes;
        v137 = &v107;
        v75 = LowPart_high;
        v125 = 12 * v57;
        v127 = (unsigned __int16 *)&v18->Privilege[0].Luid + 1;
        v88 = KeyCommon;
        v115 = 4i64;
        v74 = v57;
        v117 = 2i64;
        v119 = 2i64;
        v121 = 2i64;
        v122 = (unsigned __int16 *)v18->Privilege;
        v123 = 2i64;
        v124 = (unsigned __int16 *)&v18->Privilege[0].Luid.HighPart;
        v126 = 0;
        v128 = 2i64;
        v131 = 0;
        v132 = (unsigned __int16 *)&v18[19].Privilege[0].Luid.HighPart + 1;
        v133 = 2i64;
        v135 = 8 * v59;
        v136 = 0;
        v107 = 0x1000000i64;
        v138 = 8i64;
        tlgWriteAgg(
          (__int64)&stru_140C00F40 + 4592,
          (unsigned __int8 *)&byte_140022183,
          (__int64)&v18[19].Privilege[0].Luid.HighPart + 2,
          0xEu,
          &v111);
        v56 = *(&stru_140C00F40 + 1148);
      }
      else
      {
        p_HighPart = (__int64)&v18->Privilege[0].Luid.HighPart;
      }
      if( v56 > 5 && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 8i64) )
      {
        v89 = KeyCommon;
        v140 = &v89;
        LowPart = v18->Privilege[0].Luid.LowPart;
        p_LowPart = &LowPart;
        v61 = HIWORD(v18->Privilege[0].Luid.LowPart);
        v144 = &v78;
        v62 = BYTE2(v18[19].Privilege[0].Luid.HighPart);
        v151 = 12 * LowPart;
        v155 = (unsigned __int16 *)v18[5].Privilege;
        v156 = 12 * v61;
        v79 = v62;
        v160 = (unsigned __int16 *)&v18[19].Privilege[0].Attributes;
        v78 = v61;
        v153 = (unsigned __int16 *)&v18->Privilege[0].Luid + 1;
        v158 = (unsigned __int16 *)&v18[19].Privilege[0].Luid.HighPart + 1;
        v161 = 8 * v62;
        v141 = 4i64;
        v143 = 2i64;
        v145 = 2i64;
        v146 = &v79;
        v147 = 2i64;
        v148 = (unsigned __int16 *)v18->Privilege;
        v149 = 2i64;
        v150 = p_HighPart;
        v152 = 0;
        v154 = 2i64;
        v157 = 0;
        v159 = 2i64;
        v162 = 0;
        tlgWriteTransfer_EtwWriteTransfer(
          (__int64)&stru_140C00F40 + 4592,
          (unsigned __int8 *)&dword_140021F84,
          0i64,
          0i64,
          0xCu,
          &v139);
      }
    }
  }
  else if( *(&stru_140C00F40 + 1148) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 0x400000000008i64) )
  {
    v104 = 1i64;
    v173 = &v104;
    v53 = (unsigned __int8 *)word_14002212A;
    v174 = 8i64;
    v175 = &v87;
    v54 = 5;
    v87 = KeyCommon;
    v177 = &v105;
    v55 = &v172;
    v176 = 4i64;
    v105 = 0x1000000i64;
    v178 = 8i64;
    goto LABEL_122;
  }
  CmSiFreeMemory(v18);
  return KeyCommon;
}

Referenced by:

CmLoadDifferencingKey