HvlpSlowFlushListTbEx

INT32 *__stdcall HvlpSlowFlushListTbEx(){
  _KAFFINITY_EX *v0; 
  unsigned __int64 *v1; 
  char v2; 
  char v3; 
  char v4; 
  unsigned __int64 *v5; 
  char v6; 
  __int64 v7; 
  _HV_GENERIC_SET *v8; 
  INT64 v9; 
  int v10; 
  INT32 *result; 
  char v12; 
  _KAFFINITY_EX *Affinity; 
  PHYSICAL_ADDRESS PageInfo[2]; 
  INT64 v15[2]; 
  char StackBuffer[64]; 
  unsigned int v17; 
  UINT64 *v18; 
  unsigned int v19; 

  v12 = v2;
  v4 = v3;
  Affinity = v0;
  v5 = v1;
  v6 = 1;
  v7 = 0i64;
  *(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
  *(_OWORD *)v15 = 0i64;
  v8 = (_HV_GENERIC_SET *)HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x20ui64);
  v9 = (INT64)v8;
  if( (PageInfo[0].anonymous_0.LowPart & 2) != 0 )
  {
    if( v4 )
    {
      v8->Format = *v5;
      v8->ValidBanksMask = v5[1];
      HvlpAffinityToHvProcessorSet(0i64, (_HV_GENERIC_SET *)v8->BankContents, 0i64);
    }
  }
  else
  {
    if( v4 )
    {
      v8->Format = *v5;
      v8->ValidBanksMask = v5[1];
      HvlpAffinityToHvProcessorSet(Affinity, (_HV_GENERIC_SET *)v8->BankContents, 0xFE0ui64);
      v7 = (unsigned int)(v10 + 32);
    }
    if( v7 + 8 * (unsigned __int64)v19 <= 0x1000 )
    {
      HvlpCopyFlushVaList(v17, v18, (HvlpFlags & 0x2000) != 0, (INT64 *)(v9 + (unsigned int)v7));
      if( v4 && (HvlpFlags & 0x2000) == 0 )
        *(_QWORD *)(v9 + 8) |= 8ui64;
      v6 = 0;
    }
  }
  if( v12 )
  {
    if( v6 )
      VslFlushSecureAddressSpace();
    else
      VslSlowFlushSecureRangeList(v15[1], v9, v19, (unsigned int)v7);
  }
  if( v4 )
    HvcallInitiateHypercall();
  HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
  return result;
}

Referenced by:

HvlpFlushRangeListTbEx