HvlpPrepareFlushHeader

__int64 __fastcall HvlpPrepareFlushHeader(_QWORD *a1, __int64 a2, __int64 a3, char a4){
  __int64 v6; 
  int v7; 
  unsigned int v8; 
  __int64 result; 
  unsigned __int64 v10; 
  _BYTE *i; 
  unsigned __int64 v12; 

  v6 = 0i64;
  v7 = a4 == 0 ? 4 : 0;
  v8 = v7 | 2;
  if( a2 )
    v8 = v7;
  if( a3 )
  {
    v10 = *(_QWORD *)(a3 + 8);
    if( HvlpVirtualProcessorsIdentityMapped )
    {
      v6 = *(_QWORD *)(a3 + 8);
    }
    else
    {
      for( i = &unk_140CFF6C3; ; i += 4 )
      {
        if( (v10 & 1) != 0 )
          v6 |= 1i64 << *(i - 2);
        v12 = v10 >> 1;
        if( !v12 )
          break;
        if( (v12 & 1) != 0 )
          v6 |= 1i64 << *i;
        v10 = v12 >> 1;
        if( !v10 )
          break;
      }
    }
  }
  else
  {
    v8 |= 1u;
  }
  a1[2] = v6;
  result = v8;
  a1[1] = v8;
  *a1 = a2;
  return result;
}

Referenced by:

HvlpFastFlushAddressSpaceTb
HvlpFlushRangeListTb
HvlpSlowFlushAddressSpaceTb