HvlpStartVirtualProcessor

__int64 __fastcall HvlpStartVirtualProcessor(int a1, _OWORD *a2){
  _DWORD *v4; 
  __int128 v5; 
  __int16 v6; 
  unsigned int v7; 
  __int128 PageInfo[2]; 

  memset(PageInfo, 0, sizeof(PageInfo));
  v4 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)PageInfo, 1ui64, 0i64, 0xF0ui64);
  *(_QWORD *)v4 = -1i64;
  v4[3] = 0;
  v4[2] = a1;
  v4 += 4;
  *(_OWORD *)v4 = *a2;
  *((_OWORD *)v4 + 1) = a2[1];
  *((_OWORD *)v4 + 2) = a2[2];
  *((_OWORD *)v4 + 3) = a2[3];
  *((_OWORD *)v4 + 4) = a2[4];
  *((_OWORD *)v4 + 5) = a2[5];
  *((_OWORD *)v4 + 6) = a2[6];
  v4 += 32;
  v5 = a2[7];
  a2 += 8;
  *((_OWORD *)v4 - 1) = v5;
  *(_OWORD *)v4 = *a2;
  *((_OWORD *)v4 + 1) = a2[1];
  *((_OWORD *)v4 + 2) = a2[2];
  *((_OWORD *)v4 + 3) = a2[3];
  *((_OWORD *)v4 + 4) = a2[4];
  *((_OWORD *)v4 + 5) = a2[5];
  HvcallInitiateHypercall();
  v7 = v6 != 0 ? 0xC0000001 : 0;
  HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
  return v7;
}

Referenced by:

HvlHalStartVirtualProcessor