HvlpSlowFlushListTbEx

PSLIST_ENTRY __fastcall HvlpSlowFlushListTbEx(_QWORD *a1, INT64 a2, CHAR a3, CHAR a4, UINT64 a5, INT64 a6, UINT64 a7){
  char v9; 
  __int64 v10; 
  LONGLONG *v11; 
  INT64 v12; 
  __int128 v16; 
  INT64 v17[2]; 
  char v18[64]; 
  v9 = 1;
  v10 = 0i64;
  v16 = 0i64;
  *(_OWORD *)v17 = 0i64;
  v11 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v16, 1, (__int64)v18, 32i64);
  v12 = (INT64)v11;
  if( (v16 & 2) != 0 )
  {
    if( a4 )
    {
      *v11 = *a1;
      v11[1] = a1[1];
      HvlpAffinityToHvProcessorSet(0i64, v11 + 2, 0);
    }
  }
  else
  {
    if( a4 )
    {
      *v11 = *a1;
      v11[1] = a1[1];
      v10 = (unsigned int)HvlpAffinityToHvProcessorSet(a2, v11 + 2, 0xFE0u) + 32;
    }
    if( v10 + 8 * (unsigned __int64)(unsigned int)a7 <= 0x1000 )
    {
      HvlpCopyFlushVaList((unsigned int)a5, (UINT64 *)a6, (HvlpFlags & 0x2000) != 0, (INT64 *)(v12 + (unsigned int)v10));
      if( a4 && (HvlpFlags & 0x2000) == 0 )
        *(_QWORD *)(v12 + 8) |= 8ui64;
      v9 = 0;
    }
  }
  if( a3 )
  {
    if( v9 )
      VslFlushSecureAddressSpace();
    else
      VslSlowFlushSecureRangeList(v17[1], v12, (unsigned int)a7, (unsigned int)v10);
  }
  if( a4 )
    HvcallInitiateHypercall();
  return HvlpReleaseHypercallPage((unsigned int *)&v16);
}

Referenced by:

HvlpFlushRangeListTbEx