HvlpSlowFlushListTb

PSLIST_ENTRY __fastcall HvlpSlowFlushListTb(INT64 a1, CHAR a2, CHAR a3, UINT64 a4, UINT64 *a5, UINT64 a6){
  unsigned int v6; 
  char v9; 
  LONGLONG *v10; 
  INT64 v11; 
  __int64 v12; 
  LONGLONG v13; 
  __int128 v16; 
  INT64 v17[2]; 
  char v18[48]; 
  v6 = a4;
  v9 = 1;
  v16 = 0i64;
  *(_OWORD *)v17 = 0i64;
  v10 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v16, 1, (__int64)v18, 24i64);
  v11 = (INT64)v10;
  if( (unsigned int)a6 > 0x1FD || (v16 & 2) != 0 )
  {
    if( a3 )
    {
      v13 = *(_QWORD *)(a1 + 16);
      *(_OWORD *)v10 = *(_OWORD *)a1;
      v10[2] = v13;
    }
  }
  else
  {
    HvlpCopyFlushVaList(v6, a5, (HvlpFlags & 0x2000) != 0, v10 + 3);
    if( a3 )
    {
      v12 = *(_QWORD *)(a1 + 16);
      *(_OWORD *)v11 = *(_OWORD *)a1;
      *(_QWORD *)(v11 + 16) = v12;
      if( (HvlpFlags & 0x2000) == 0 )
        *(_QWORD *)(v11 + 8) |= 8ui64;
    }
    v9 = 0;
  }
  if( a2 )
  {
    if( v9 )
      VslFlushSecureAddressSpace();
    else
      VslSlowFlushSecureRangeList(v17[1], v11, (unsigned int)a6, 0x18ui64);
  }
  if( a3 )
    HvcallInitiateHypercall();
  return HvlpReleaseHypercallPage((unsigned int *)&v16);
}

Referenced by:

HvlpFlushRangeListTb