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