Amd64InitializeProfiling
INT64 __fastcall Amd64InitializeProfiling(INT64 a1){
int v1;
int v2;
__int64 v3;
unsigned int v4;
INT8 *Memory;
unsigned int i;
__int64 v7;
__int64 *v8;
__int64 **v9;
__int64 *v10;
INT64 result;
v1 = *((_DWORD *)KeGetPcr() + 105);
v2 = 0;
v3 = 176i64;
if( !v1 )
{
v4 = HalpQueryMaximumRegisteredProcessorCount(a1) << 6;
Memory = HalpMmAllocateMemory(v4);
Amd64CounterStatus = (__int64)Memory;
if( !Memory )
KeBugCheckEx(0xACu, v4, 0xAB00ui64, (ULONG_PTR)"minkernel\\hals\\lib\\hwperfcnt\\pc\\amd64.c", 0x267ui64);
memset((INT64)Memory, 0i64);
Amd64ProfileSourceDescriptorListLock = 0i64;
qword_140C48918 = (__int64)&Amd64ProfileSourceDescriptorListHead;
Amd64ProfileSourceDescriptorListHead = &Amd64ProfileSourceDescriptorListHead;
for( i = 0; i < 0xB0; ++i )
{
v7 = 27i64 * i;
if( !BYTE5(Amd64ProfileSourceDescriptorTable[v7 + 3]) )
{
v8 = &Amd64ProfileSourceDescriptorTable[v7 + 1];
v9 = (__int64 **)qword_140C48918;
if( *(_QWORD ***)qword_140C48918 != &Amd64ProfileSourceDescriptorListHead )
__fastfail(3u);
++Amd64ProfileSourceDescriptorCount;
*v8 = (__int64)&Amd64ProfileSourceDescriptorListHead;
v8[1] = (__int64)v9;
*v9 = v8;
qword_140C48918 = (__int64)v8;
}
}
}
v10 = qword_140C05790;
do
{
KeAddProcessorAffinityEx(v10, v1);
v10 += 27;
--v3;
}
while( v3 );
do
{
__writemsr(v2 - 1073676288, 0i64);
result = Amd64FreeCounter((unsigned int)v2++);
}
while( v2 < 4 );
return result;
}Referenced by:
No references.