HvlQueryAssociatedProcessors

VOID __stdcall HvlQueryAssociatedProcessors(UINT64 VpIndex, UINT64 *Count, UINT64 *Processors){
  int v5; 
  _DWORD *v6; 
  _DWORD *v7; 
  __int16 v8; 
  unsigned int v9; 
  unsigned __int16 *v10; 
  __int64 v11; 
  int v12; 
  PHYSICAL_ADDRESS v13[2]; 
  __int128 v14; 
  __int128 PageInfo[2]; 

  memset(PageInfo, 0, sizeof(PageInfo));
  v5 = VpIndex;
  *(_OWORD *)&v13[0].anonymous_0.LowPart = 0i64;
  v14 = 0i64;
  if( (HvlpFlags & 2) != 0 && Count )
  {
    v6 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)PageInfo, 1ui64, 0i64, 8ui64);
    v7 = HvlpAcquireHypercallPage(v13, 2ui64, 0i64, 0x808ui64);
    *v6 = v5;
    HvcallInitiateHypercall();
    if( !v8 )
    {
      v9 = *v7;
      if( *(_DWORD *)Count >= *v7 && v9 )
      {
        v10 = (unsigned __int16 *)(v7 + 1);
        v11 = v9;
        do
        {
          v12 = *v10++;
          *(_DWORD *)Processors = v12;
          Processors = (UINT64 *)((char *)Processors + 4);
          --v11;
        }
        while( v11 );
      }
      *(_DWORD *)Count = v9;
    }
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v13);
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
  }
}

Referenced by:

No references.