CmCompleteRegistryInitialization

__int64 __fastcall CmCompleteRegistryInitialization(__int16 a1){
  unsigned int v1; 
  INT64 v3; 
  char v4; 
  INT64 v5; 
  NTSTATUS v6; 
  POWER_ACTION_POLICY ActionPolicy; 
  __int128 Object; 
  __int64 v10; 
  _POP_ACTION_TRIGGER Trigger; 
  VOID *Handle; 

  v1 = 0;
  v10 = 0i64;
  Object = 0i64;
  Handle = 0i64;
  if( _InterlockedExchange(&CmFirstTime, 0) )
  {
    EtwInitialize(2ui64);
    CmCompleteInitMachineConfig(&dword_140C508EC);
    CmpInitializeSystemHivesLoad();
    CmpLockRegistryExclusive();
    CmpCmdInit(a1 == 1);
    CmpUnlockRegistry();
    if( a1 != 1 )
    {
      byte_140C5082C = 1;
      if( NeedRmLogStart || (v4 = 0, CmpForceSynchronousMachineHiveLoad) )
        v4 = 1;
      KeInitializeEvent((INT64)&Object, 0, 0);
      v6 = CmpCreateRegistryThread(
             &Handle,
             v5,
             (_KSTART_ROUTINE *)CmpFinishSystemHivesLoad,
             (VOID *)((unsigned __int64)&Object & -(__int64)(v4 != 0)));
      if( v6 < 0 )
        KeBugCheckEx(0x74u, (PVOID)2, (PVOID)3, (PVOID)3, (PVOID)v6);
      if( v4 )
        KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
      ZwClose((_HANDLE)Handle);
      Handle = 0i64;
    }
    if( !CmFastBoot )
    {
      ExpRefreshSystemTime(v3);
      PsBootPhaseComplete();
    }
    KeInitializeVelocity();
    RtlLockBootStatusData(0i64);
    PnpBootPhaseComplete();
    PoInitHiberServices();
    PoClearTransitionMarker();
    PopAcquirePolicyLock();
    PopThermalCriticalShutdownEnabled = 1;
    if( PopThermalCriticalShutdownInitiated )
    {
      ActionPolicy.EventCode = 0;
      *(_OWORD *)&Trigger.Wait = 0i64;
      ActionPolicy.Action = PowerActionShutdownOff;
      ActionPolicy.Flags = -1073741820;
      Trigger.Type = PolicyDeviceThermalZone;
      Trigger.Flags = 128;
      PopCriticalShutdownInProgress = 1;
      PopExecutePowerAction(
        &Trigger,
        0i64,
        &ActionPolicy,
        PowerSystemHibernate,
        SubstituteLightestOverallDownwardBounded);
    }
    PopReleasePolicyLock();
    PopQueueBatteryStatusTimeout();
    NlsLocaleSectionPointer = (PVOID)1;
    ExNotifyPlatformBinaryExecuted();
    if( a1 != 1 )
      IopCopyBootLogRegistryToFile();
  }
  else
  {
    return(unsigned int)-1073741790;
  }
  return v1;
}

Referenced by:

NtInitializeRegistry