EtwpCCSwapStart
NTSTATUS __stdcall EtwpCCSwapStart(UINT64 ClockType){
unsigned int v1;
__int64 v2;
int v3;
unsigned int v4;
__int64 v5;
__int64 v6;
VOID *PoolWithTag;
unsigned int i;
__int64 v10;
__int64 v11;
v1 = KeNumberProcessors_0;
v2 = (unsigned int)ClockType;
v3 = *((_DWORD *)CCSwapNumLoggersPerClockType + (unsigned int)ClockType);
if( v3 || (v4 = 0, !(_DWORD)KeNumberProcessors_0) )
{
LABEL_7:
*((_DWORD *)CCSwapNumLoggersPerClockType + v2) = v3 + 1;
return 0;
}
while( 1 )
{
KeGetPrcb(v4);
v6 = *(_QWORD *)(v5 + 33576);
if( *(_QWORD *)(v6 + 8 * v2 + 296) )
{
*(_BYTE *)(v2 + v6 + 288) = 0;
goto LABEL_5;
}
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x400ui64, 0x77734343ui64);
*(_QWORD *)(v6 + 8 * v2 + 296) = PoolWithTag;
if( !PoolWithTag )
break;
LABEL_5:
++v4;
**(_DWORD **)(v6 + 8 * v2 + 296) = 0;
if( v4 >= v1 )
{
v3 = *((_DWORD *)CCSwapNumLoggersPerClockType + v2);
goto LABEL_7;
}
}
for( i = 0; i < v4; ++i )
{
KeGetPrcb(i);
v11 = *(_QWORD *)(v10 + 33576);
ExFreePoolWithTag(*(PVOID *)(v11 + 8 * v2 + 296), 0);
*(_QWORD *)(v11 + 8 * v2 + 296) = 0i64;
}
return -1073741801;
}Referenced by:
EtwpUpdateGroupMasks