EtwpProfileInterrupt
VOID __stdcall EtwpProfileInterrupt(KTRAP_FRAME *TrapFrame, PVOID Context){
_ETHREAD *CurrentThread;
unsigned __int64 Rip;
int v4;
int v5;
__int64 v6;
char v7;
struct _KPRCB *CurrentPrcb;
unsigned __int8 v9;
char v10;
__int64 v11;
__int64 v12;
INT64 a6;
unsigned __int64 v14;
int v15;
__int16 v16;
char v17;
char v18;
EVENT_DATA_DESCRIPTOR a2;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
Rip = TrapFrame->Rip;
v4 = 34656770;
v5 = *((_DWORD *)CurrentThread + 288);
if( Rip > 0x7FFFFFFEFFFFi64 )
v4 = 34658818;
v6 = *((_QWORD *)CurrentThread + 68);
v17 = 0;
v15 = v5;
v7 = 8 * *((_BYTE *)CurrentThread + 195);
v17 = v7;
v14 = Rip;
v16 = 1;
CurrentPrcb = KeGetCurrentPrcb();
v9 = *((_BYTE *)CurrentPrcb + 32);
if( v9 != 2 )
{
if( v9 <= 1u )
goto LABEL_9;
goto LABEL_7;
}
if( (*((_DWORD *)KeGetPcr() + 3243) & 0x10001) == 0 )
{
LABEL_7:
v10 = v7 | 2;
goto LABEL_8;
}
v10 = v7 | 1;
LABEL_8:
v4 &= ~0x4000u;
v17 = v10;
LABEL_9:
v11 = *((_QWORD *)CurrentThread + 13);
if( v11 )
{
v12 = v11 + *((unsigned int *)CurrentPrcb + 54);
do
{
if( *(_DWORD *)(v12 + 116) > 0xFFu )
LOBYTE(v11) = -1;
else
LOBYTE(v11) = *(_BYTE *)(v12 + 116);
if( (_BYTE)v11 )
break;
v12 = *(_QWORD *)(v12 + 408);
}
while( v12 );
}
a2.Reserved = 0;
a2.Ptr = (unsigned __int64)&v14;
v18 = v11;
LODWORD(a6) = v4;
a2.Size = 16;
EtwTraceSiloKernelEvent(*(_QWORD *)(v6 + 2160), &a2, 1u, 0x20000002ui64, 3886, a6);
}Referenced by:
No references.