EtwpInitialize
VOID __stdcall EtwpInitialize(UINT64 Phase){
unsigned int v1;
NTSTATUS v2;
_WORD *v3;
__int64 i;
unsigned int j;
_KPRCB *Prcb;
NTSTATUS v7;
INT64 v8;
INT64 v9;
VOID *ExplicitScope;
UINT64 MatchingChangeStamp;
UINT64 CheckStamp;
__int64 v13;
_UNICODE_STRING DestinationString;
INT64 v15[2];
__int64 v16;
_OBJECT_ATTRIBUTES ObjectAttributes;
int v18;
_LARGE_INTEGER BootTime;
UINT64 BootTimeBias;
v1 = KeNumberProcessors_0;
BootTime.QuadPart = 0i64;
BootTimeBias = 0i64;
v16 = 0i64;
*(_OWORD *)v15 = 0i64;
if( (_DWORD)Phase )
{
if( (_DWORD)Phase == 1 )
{
LODWORD(ExplicitScope) = 0;
EtwpUpdateFileInfoDriverState(
&PerfGlobalGroupMask,
&PerfGlobalGroupMask,
1,
(UINT64 *)EtwpHostSiloState,
(UINT64)ExplicitScope);
}
}
else
{
KeQueryBootTimeValues((_LARGE_INTEGER *)&ExBootDevicesRemovedEvent + 191, &BootTime, &BootTimeBias);
*(&ExBootDevicesRemovedEvent + 244) = BootTime.QuadPart - BootTimeBias;
RtlGetMultiTimePrecise((INT64)v15);
*(&ExBootDevicesRemovedEvent + 247) = 0i64;
*(&ExBootDevicesRemovedEvent + 246) = KeQueryPerformanceCounter(0i64);
*(&ExBootDevicesRemovedEvent + 192) = __rdtsc();
v2 = EtwpInitializeSecurity();
if( v2 < 0 )
KeBugCheckEx(0x11Du, (PVOID)1, (PVOID)v2, 0i64, 0i64);
v3 = (_WORD *)(&KUSER_SHARED_DATA + 896);
for( i = 9i64; i; --i )
*v3++ = 0;
for( j = 0; j < v1; ++j )
{
Prcb = KeGetPrcb(j);
v7 = EtwInitializeProcessor(Prcb);
if( v7 < 0 )
KeBugCheckEx(0x11Du, (PVOID)2, (PVOID)v7, (PVOID)j, 0i64);
}
KeInitializeMutex((PRKMUTEX)((char *)&ExBootDevicesRemovedEvent + 2368), 0);
KeInitializeMutex((PRKMUTEX)((char *)&ExBootDevicesRemovedEvent + 2432), 0);
*(&ExBootDevicesRemovedEvent + 263) = 0i64;
EtwpInitializeStackLookasideList();
EtwpReadConfigParameters();
EtwpInitializeRegistration();
EtwpInitializePrivateSessionDemuxObject();
EtwpInitializeRealTimeConnection();
*(&ExBootDevicesRemovedEvent + 381) = KeGetPrcb(0i64)->MHz;
KeQueryPerformanceCounter((_LARGE_INTEGER *)&ExBootDevicesRemovedEvent + 189);
EtwpInitializeLastBranchTracing();
EtwpInitializeProcessorTrace(v9, v8);
*(&ExBootDevicesRemovedEvent + 292) = 0;
*(&ExBootDevicesRemovedEvent + 186) = EtwpAdjustTraceBuffers;
*(&ExBootDevicesRemovedEvent + 288) = 0;
*(&ExBootDevicesRemovedEvent + 145) = 0i64;
*(&ExBootDevicesRemovedEvent + 187) = (char *)&ExBootDevicesRemovedEvent + 1504;
*(&ExBootDevicesRemovedEvent + 289) = 12;
*(&ExBootDevicesRemovedEvent + 386) = 8;
*(&ExBootDevicesRemovedEvent + 184) = 0i64;
KeInitializeTimer2((INT64)&ExBootDevicesRemovedEvent + 2880, (INT64)EtwpLogMemInfoTimerCallback, 0i64, 8i64);
EtwpInitializeProviderTraits();
if( !ExRegisterCallback(*(&ExBootDevicesRemovedEvent + 16), EtwpPowerStateCallback, 0i64) )
goto LABEL_22;
v13 = 0i64;
*(&ObjectAttributes.Length + 1) = 0;
DestinationString = 0i64;
*(&ObjectAttributes.Attributes + 1) = 0;
if( (int)KsrGetFirmwareInformation(&v13) >= 0 )
{
RtlInitUnicodeString(&DestinationString, L"\\Callback\\SoftRestart");
ObjectAttributes.Length = 48;
ObjectAttributes.ObjectName = &DestinationString;
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.Attributes = 80;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
if( ExCreateCallback(&EtwpKsrCallbackObject, &ObjectAttributes, 0, 1u) >= 0 )
ExRegisterCallback(EtwpKsrCallbackObject, EtwpKsrCallback, 0i64);
}
EtwpLoadMicroarchitecturalPmcs();
EtwpInitializeSiloAllowedGroupMask();
if( EtwInitializeSiloState(0i64) < 0 )
LABEL_22:
KeBugCheck(0x11Du);
*(&ExBootDevicesRemovedEvent + 1324) = 0;
KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&ExBootDevicesRemovedEvent + 1280),
(PKBUGCHECK_REASON_CALLBACK_ROUTINE)EtwpBugCheckMultiPartCallback,
KbCallbackSecondaryMultiPartDumpData,
(PUCHAR)&EtwpComponentName);
EtwRegister(
(_LPCGUID)&EventTracingProvGuid,
(PETWENABLECALLBACK)EtwpTracingProvEnableCallback,
0i64,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 241);
WdipSemInitialize();
PerfDiagInitialize();
EtwpInitializeCoverage();
EtwpInitializeCoverageSampler();
EtwRegister(
(_LPCGUID)&KernelProvGuid,
(PETWENABLECALLBACK)EtwpKernelProvEnableCallback,
0i64,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 380);
TlgRegisterAggregateProvider((UINT64 *)&stru_140C00F40 + 910);
EtwRegister(
(_LPCGUID)&PsProvGuid,
(PETWENABLECALLBACK)EtwpCrimsonProvEnableCallback,
(PVOID)1,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 245);
TlgRegisterAggregateProviderEx((char *)&stru_140C00F40 + 7224);
EtwRegister(
(_LPCGUID)&NetProvGuid,
(PETWENABLECALLBACK)EtwpCrimsonProvEnableCallback,
(PVOID)0x10000,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 242);
EtwRegister(
(_LPCGUID)&DiskProvGuid,
(PETWENABLECALLBACK)EtwpCrimsonProvEnableCallback,
(PVOID)0x100,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 243);
EtwRegister(
(_LPCGUID)&FileProvGuid,
(PETWENABLECALLBACK)EtwpCrimsonProvEnableCallback,
(PVOID)0x2000000,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 240);
EtwRegister((_LPCGUID)&RegistryProvGuid, (PETWENABLECALLBACK)EtwpRegTraceEnableCallback, 0i64, &EtwpRegTraceHandle);
EtwRegister(
(_LPCGUID)&MemoryProvGuid,
(PETWENABLECALLBACK)EtwpCrimsonProvEnableCallback,
(PVOID)0x20000001,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 251);
EtwRegister(
(_LPCGUID)&MS_Windows_Kernel_AppCompat_Provider,
0i64,
0i64,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 381);
EtwRegister((_LPCGUID)&KernelAuditApiCallsGuid, 0i64, 0i64, (PREGHANDLE)&ExBootDevicesRemovedEvent + 379);
EtwRegister((_LPCGUID)&CVEAuditProviderGuid, 0i64, 0i64, (PREGHANDLE)&ExBootDevicesRemovedEvent + 252);
EtwRegister((_LPCGUID)&ThreatIntProviderGuid, 0i64, 0i64, (PREGHANDLE)&ExBootDevicesRemovedEvent + 179);
EtwRegister((_LPCGUID)&MS_Windows_Security_LPAC_Provider, 0i64, 0i64, (PREGHANDLE)&ExBootDevicesRemovedEvent + 249);
EtwRegister(
(_LPCGUID)&MS_Windows_Security_Adminless_Provider,
0i64,
0i64,
(PREGHANDLE)&ExBootDevicesRemovedEvent + 250);
EtwRegister((_LPCGUID)&SecurityMitigationsProviderGuid, 0i64, 0i64, (PREGHANDLE)&ExBootDevicesRemovedEvent + 248);
LODWORD(CheckStamp) = 0;
LODWORD(MatchingChangeStamp) = 0;
*(&ExBootDevicesRemovedEvent + 1440) = 1;
ZwUpdateWnfStateData(&WNF_ETW_SUBSYSTEM_INITIALIZED, 0i64, 0i64, 0i64, 0i64, MatchingChangeStamp, CheckStamp);
EtwpTraceSystemInitialization();
v18 = 0;
if( ((int(__fastcall *)(__int64, __int64, int *, int *))off_140C00A68[0])(44i64, 4i64, &EtwpMaxPmcCounter, &v18) < 0 )
EtwpMaxPmcCounter = 8;
EtwpMaxProfilingSources = EtwpMaxPmcCounter;
}
}Referenced by:
EtwInitialize