EtwTraceThread
VOID __fastcall EtwTraceThread(INT64 a1, INT64 rdx0, CHAR a3){
UINT16 v6;
__int64 v7;
_DWORD *CurrentThreadTeb;
__int64 v9;
int v10;
__int16 v11;
unsigned __int16 *v12;
__int64 ProcessServerSilo;
__int64 v14;
__int64 v15;
__int16 v16;
unsigned int v17;
INT64 a6;
INT16 a5;
int v20;
int v21[2];
__int64 v22;
__int64 v23;
__int64 v24;
__int64 v25;
__int64 v26;
__int64 v27;
__int64 v28;
int v29;
char v30;
char PagePriorityThread;
char IoPriorityThread;
char v33;
__int64 v34;
EVENT_DATA_DESCRIPTOR a2;
__int64 *v36;
__int64 v37;
__int64 *v38;
__int64 v39;
v6 = 2;
v34 = 0i64;
v20 = 5249283;
if( EtwpHostSiloState != -4516 && (*(_DWORD *)(EtwpHostSiloState + 4516) & 2) != 0 )
EtwpPsProvTraceThread((_ETHREAD *)a1, (_INITIAL_TEB *)rdx0, a3);
v21[0] = *(_DWORD *)(a1 + 1144);
v21[1] = *(_DWORD *)(a1 + 1152);
v22 = *(_QWORD *)(a1 + 56);
v23 = *(_QWORD *)(a1 + 48);
v26 = *(_QWORD *)(a1 + 576);
v27 = *(_QWORD *)(a1 + 1232);
v24 = 0i64;
v25 = 0i64;
v28 = *(_QWORD *)(a1 + 240);
v29 = 0;
v30 = *(_BYTE *)(a1 + 563);
PagePriorityThread = PsGetPagePriorityThread(a1);
IoPriorityThread = PsGetIoPriorityThread(a1);
v33 = 0;
if( a3 )
{
a5 = 1281;
if( rdx0 )
{
v24 = *(_QWORD *)(rdx0 + 16);
v25 = *(_QWORD *)(rdx0 + 24);
}
CurrentThreadTeb = PsGetCurrentThreadTeb();
if( CurrentThreadTeb )
{
v9 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 68) + 1408i64);
if( v9 && ((v11 = *(_WORD *)(v9 + 8), v11 == 332) || v11 == 452) )
v10 = CurrentThreadTeb[3032];
else
v10 = CurrentThreadTeb[1480];
v29 = v10;
}
}
else
{
a5 = 1282;
v20 = 72358147;
if( v7 )
{
v14 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 68) + 1408i64);
if( v14 && ((v16 = *(_WORD *)(v14 + 8), v16 == 332) || v16 == 452) )
{
v29 = *(_DWORD *)(v7 + 12128);
v24 = *(unsigned int *)(v7 + 8196);
v15 = *(unsigned int *)(v7 + 8200);
}
else
{
v29 = *(_DWORD *)(v7 + 5920);
v24 = *(_QWORD *)(v7 + 8);
v15 = *(_QWORD *)(v7 + 16);
}
v25 = v15;
}
}
a2.Ptr = (unsigned __int64)v21;
*(_QWORD *)&a2.Size = 72i64;
v12 = *(unsigned __int16 **)(a1 + 1552);
if( v12 && *((_QWORD *)v12 + 1) )
{
v17 = 2048;
if( *v12 < 0x800u )
v17 = *v12;
v36 = (__int64 *)*((_QWORD *)v12 + 1);
v37 = v17;
if( !v17 || *(_WORD *)(*((_QWORD *)v12 + 1) + 2 * ((unsigned __int64)v17 >> 1) - 2) )
{
v38 = &EtwpNull;
v39 = 2i64;
v6 = 3;
}
}
else
{
v36 = &EtwpNull;
v37 = 2i64;
}
ProcessServerSilo = PsGetProcessServerSilo(*(_QWORD *)(a1 + 544));
LODWORD(a6) = v20;
EtwTraceSiloKernelEvent(ProcessServerSilo, &a2, v6, 2ui64, a5, a6);
}Referenced by:
No references.