HalpBlkPoReadPerfMsr
NTSTATUS __stdcall HalpBlkPoReadPerfMsr(ULONG_PTR a1){
int v1;
_QWORD *v2;
_QWORD *v3;
void *v4;
int v5;
__int64 v6;
unsigned __int64 v7;
int v8;
__int64(__fastcall *v9)(_QWORD, int *, __int128 *, __int64, int *);
NTSTATUS v10;
int v12[2];
__int128 v13;
__int64 v14;
int v15;
int v16;
int v17;
v3 = v2;
v4 = (void *)a1;
v5 = v1;
v6 = *(_QWORD *)(*(&CmpDummyThreadEvent + 487) + 8i64 * a1);
v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(v6 + 2216));
HalpBlkPoBusyWait(1u, (ULONG_PTR)v4, v6 + 2216);
*(_QWORD *)(v6 + 2240) = 0i64;
*(_QWORD *)(v6 + 2248) = 0i64;
*(_DWORD *)(v6 + 2228) = 1;
*(_DWORD *)(v6 + 2232) = 1;
*(_DWORD *)(v6 + 2236) = v5;
_InterlockedExchange((volatile __int32 *)(v6 + 2224), 1);
v8 = *(_DWORD *)(v6 + 20);
v16 = -1;
v13 = 0i64;
DWORD2(v13) = v8;
v14 = 0i64;
LODWORD(v13) = 4;
v17 = 1;
v12[1] = *(_DWORD *)(qword_140C50700 + 20);
v12[0] = *(_DWORD *)(qword_140C50700 + 16);
v9 = *(__int64(__fastcall **)(_QWORD, int *, __int128 *, __int64, int *))(Controller + 120);
_disable();
v10 = v9(*(_QWORD *)(Controller + 16), v12, &v13, 225i64, &v16);
if( (v15 & 0x200) != 0 )
_enable();
if( v10 < 0 )
KeBugCheckEx(0x1DAu, (PVOID)4, (PVOID)1, v4, (PVOID)(v6 + 2216));
HalpBlkPoBusyWait(1u, (ULONG_PTR)v4, v6 + 2216);
*v3 = *(_QWORD *)(v6 + 2240);
KxReleaseSpinLock((UINT64 *)(v6 + 2216));
__writecr8(v7);
return v10;
}Referenced by:
No references.