HvlpStartVirtualProcessor

INT64 __fastcall HvlpStartVirtualProcessor(INT64 a1, _OWORD *a2){
  int v3; 
  LONGLONG *v4; 
  __int128 v5; 
  __int16 v6; 
  unsigned int v7; 
  __int128 v9[2]; 
  v3 = a1;
  memset(v9, 0, sizeof(v9));
  v4 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v9, 1, 0i64, 240i64);
  *v4 = -1i64;
  *((_DWORD *)v4 + 3) = 0;
  *((_DWORD *)v4 + 2) = v3;
  v4 += 2;
  *(_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 += 16;
  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((unsigned int *)v9);
  return v7;
}

Referenced by:

HvlHalStartVirtualProcessor