HvlpSlowFlushPasidAddressList

PSLIST_ENTRY __fastcall HvlpSlowFlushPasidAddressList(UINT64 a1, UINT64 a2, UINT64 a3, INT64 a4){
  __int64 v4; 
  unsigned int v6; 
  unsigned int v7; 
  LONGLONG *v8; 
  __int64 *v10; 
  INT64 v11; 
  __int64 v12; 
  __int128 v13[3]; 
  v4 = (unsigned int)a3;
  v6 = a2;
  v7 = a1;
  memset(v13, 0, 32);
  v8 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v13, 5, 0i64, 0i64);
  if( !v8 )
    return(PSLIST_ENTRY)HvlpFlushPasidAddressSpace(v7, v6);
  v8[1] = 0i64;
  v10 = v8 + 2;
  *((_DWORD *)v8 + 1) = v7;
  *(_DWORD *)v8 = v6;
  if( (_DWORD)v4 )
  {
    v11 = a4 - (_QWORD)v10;
    v12 = v4;
    do
    {
      *v10 = *(__int64 *)((char *)v10 + v11) & 0x800 | (*(__int64 *)((char *)v10 + v11)
                                                      + (*(__int64 *)((char *)v10 + v11) & 0xC00));
      ++v10;
      --v12;
    }
    while( v12 );
  }
  HvcallInitiateHypercall();
  return HvlpReleaseHypercallPage((unsigned int *)v13);
}

Referenced by:

HvlSvmFlushPasid