HvlLpReadCpuid

NTSTATUS __stdcall HvlLpReadCpuid(
        UINT64 LpIndex,
        UINT64 InEax,
        UINT64 *OutEax,
        UINT64 *OutEbx,
        UINT64 *OutEcx,
        UINT64 *OutEdx){
  int v6; 
  int v9; 
  _DWORD *v10; 
  _DWORD *v11; 
  __int16 v12; 
  PHYSICAL_ADDRESS v14[2]; 
  __int128 v15; 
  PHYSICAL_ADDRESS PageInfo[2]; 
  __int128 v17; 

  v6 = InEax;
  v9 = LpIndex;
  *(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
  v17 = 0i64;
  *(_OWORD *)&v14[0].anonymous_0.LowPart = 0i64;
  v15 = 0i64;
  v10 = HvlpAcquireHypercallPage(PageInfo, 1ui64, 0i64, 0x10ui64);
  v11 = HvlpAcquireHypercallPage(v14, 2ui64, 0i64, 0x10ui64);
  v10[3] = 0;
  *v10 = v9;
  v10[1] = 0x10000;
  v10[2] = v6;
  HvcallInitiateHypercall();
  *(_DWORD *)OutEax = *v11;
  *(_DWORD *)OutEbx = v11[1];
  LODWORD(v10) = v12 != 0 ? 0xC0000001 : 0;
  *(_DWORD *)OutEcx = v11[2];
  *(_DWORD *)OutEdx = v11[3];
  HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v14);
  HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
  return(int)v10;
}

Referenced by:

No references.