HvlpCopyFlushVaList

VOID __stdcall HvlpCopyFlushVaList(UINT64 a1, UINT64 *a2, CHAR a3, INT64 *a4){
  __int64 v4; 
  UINT64 *v5; 
  signed __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  UINT64 v9; 
  char v10; 
  unsigned __int64 v11; 
  __int64 v12; 

  v4 = 0i64;
  v5 = a2;
  if( a3 )
  {
    if( (_DWORD)a1 )
    {
      v8 = (unsigned int)a1;
      do
      {
        v9 = *v5;
        if( (*v5 & 0xC00) != 0 && (*v5 & 0x3FF) != 0 )
        {
          v10 = 9 * ((v9 >> 10) & 3);
          v11 = v9 & 0xFFFFFFFFFFFFF000ui64;
          v12 = (*v5 & 0x3FF) + 1;
          do
          {
            a4[v4] = v11;
            v11 += 4096i64 << v10;
            v4 = (unsigned int)(v4 + 1);
            --v12;
          }
          while( v12 );
        }
        else
        {
          a4[v4] = v9 & 0xFFFFFFFFFFFFF3FFui64;
          v4 = (unsigned int)(v4 + 1);
        }
        ++v5;
        --v8;
      }
      while( v8 );
    }
  }
  else if( (_DWORD)a1 )
  {
    v6 = (char *)a2 - (char *)a4;
    v7 = (unsigned int)a1;
    do
    {
      *a4 = *(INT64 *)((char *)a4 + v6) & 0x800 | (*(INT64 *)((char *)a4 + v6) + (*(INT64 *)((char *)a4 + v6) & 0xC00));
      ++a4;
      --v7;
    }
    while( v7 );
  }
}

Referenced by:

HvlpFastFlushListTb
HvlpFastFlushListTbEx
HvlpSlowFlushListTb
HvlpSlowFlushListTbEx