EtwpInitializeAutoLoggers
VOID __stdcall EtwpInitializeAutoLoggers(){
__int128 v0;
__int128 v1;
__int128 v2;
__int128 v3;
__int128 v4;
__int128 v5;
int v6;
__int128 v7;
__int128 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int128 v13;
__int64 v14;
_RTL_AVL_TABLE *v15;
VOID **a5;
VOID **PoolWithTag;
INT64 a6;
INT64 a6a;
INT64 a7[2];
_RTL_AVL_TABLE Table;
WCHAR LoggerName[16];
__int128 Path[8];
int v24;
__int128 LoggerKeyName[8];
__int64 v26;
v0 = *(_OWORD *)L"y\\Machine\\System\\CurrentControlSet\\Control\\WMI\\AutoLogger";
Path[0] = *(_OWORD *)L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\WMI\\AutoLogger";
v1 = *(_OWORD *)L"e\\System\\CurrentControlSet\\Control\\WMI\\AutoLogger";
Path[1] = v0;
v2 = *(_OWORD *)L"\\CurrentControlSet\\Control\\WMI\\AutoLogger";
Path[2] = v1;
v3 = *(_OWORD *)L"ControlSet\\Control\\WMI\\AutoLogger";
Path[3] = v2;
v4 = *(_OWORD *)L"et\\Control\\WMI\\AutoLogger";
Path[4] = v3;
v5 = *(_OWORD *)L"ol\\WMI\\AutoLogger";
Path[5] = v4;
Path[6] = v5;
v6 = *(_DWORD *)L"r";
Path[7] = *(_OWORD *)L"utoLogger";
v24 = v6;
v7 = *(_OWORD *)L"y\\Machine\\System\\CurrentControlSet\\Control\\WMI\\GlobalLogger";
LoggerKeyName[0] = *(_OWORD *)L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\WMI\\GlobalLogger";
v8 = *(_OWORD *)L"e\\System\\CurrentControlSet\\Control\\WMI\\GlobalLogger";
LoggerKeyName[1] = v7;
v9 = *(_OWORD *)L"\\CurrentControlSet\\Control\\WMI\\GlobalLogger";
LoggerKeyName[2] = v8;
v10 = *(_OWORD *)L"ControlSet\\Control\\WMI\\GlobalLogger";
LoggerKeyName[3] = v9;
v11 = *(_OWORD *)L"et\\Control\\WMI\\GlobalLogger";
LoggerKeyName[4] = v10;
v12 = *(_OWORD *)L"ol\\WMI\\GlobalLogger";
LoggerKeyName[5] = v11;
v13 = *(_OWORD *)L"lobalLogger";
v14 = *(_QWORD *)L"ger";
LoggerKeyName[6] = v12;
LoggerKeyName[7] = v13;
v26 = v14;
wcscpy(LoggerName, L"GlobalLogger");
memset(&Table, 0i64, sizeof(Table));
RtlInitializeGenericTableAvl(
&Table,
(PRTL_AVL_COMPARE_ROUTINE)EtwpAvlCompareKeyNames,
(PRTL_AVL_ALLOCATE_ROUTINE)EtwpAllocateKeyNameEntry,
(PRTL_AVL_FREE_ROUTINE)EtwpFreeKeyNameEntry,
0i64);
a5 = ExAllocatePoolWithTag(1ui64, 0x1FEui64, 1953985605i64);
if( !a5 )
goto LABEL_10;
LODWORD(a6) = 510;
if( RtlGetPersistedStateLocation((WCHAR *)L"ETWAutoLoggerPath", 0i64, 0i64, 0i64, a5, a6, (INT64)a7) )
{
ExFreePoolWithTag(a5, 0x74777445u);
a5 = 0i64;
}
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x1FEui64, 1953985605i64);
if( PoolWithTag )
{
LODWORD(a6a) = 510;
if( RtlGetPersistedStateLocation((WCHAR *)L"ETWGlobalLoggerPath", 0i64, 0i64, 0i64, PoolWithTag, a6a, (INT64)a7) )
{
ExFreePoolWithTag(PoolWithTag, 0x74777445u);
PoolWithTag = 0i64;
}
EtwStartAutoLogger(LoggerName, (WCHAR *)LoggerKeyName, (UINT64 *)PoolWithTag);
EtwpEnumerateAutologgerPath((PCWSTR)Path);
if( !a5 )
goto LABEL_8;
EtwpEnumerateAutologgerPath((PCWSTR)a5);
}
if( a5 )
ExFreePoolWithTag(a5, 0x74777445u);
LABEL_8:
if( PoolWithTag )
ExFreePoolWithTag(PoolWithTag, 0x74777445u);
LABEL_10:
EtwpFreeKeyNameList(&Table, v15);
}Referenced by:
EtwInitializeSiloState