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.