HvlLpReadCpuid
NTSTATUS __stdcall HvlLpReadCpuid(
UINT64 LpIndex,
UINT64 InEax,
UINT64 *OutEax,
UINT64 *OutEbx,
UINT64 *OutEcx,
UINT64 *OutEdx){
int v6;
int v9;
LONGLONG *v10;
LONGLONG *v11;
__int16 v12;
__int128 v14[2];
__int128 v15[2];
v6 = InEax;
v9 = LpIndex;
memset(v15, 0, sizeof(v15));
memset(v14, 0, sizeof(v14));
v10 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v15, 1, 0i64, 16i64);
v11 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v14, 2, 0i64, 16i64);
*((_DWORD *)v10 + 3) = 0;
*(_DWORD *)v10 = v9;
*((_DWORD *)v10 + 1) = 0x10000;
*((_DWORD *)v10 + 2) = v6;
HvcallInitiateHypercall();
*(_DWORD *)OutEax = *(_DWORD *)v11;
*(_DWORD *)OutEbx = *((_DWORD *)v11 + 1);
LODWORD(v10) = v12 != 0 ? 0xC0000001 : 0;
*(_DWORD *)OutEcx = *((_DWORD *)v11 + 2);
*(_DWORD *)OutEdx = *((_DWORD *)v11 + 3);
HvlpReleaseHypercallPage((unsigned int *)v14);
HvlpReleaseHypercallPage((unsigned int *)v15);
return(int)v10;
}Referenced by:
No references.