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.