CmpConcatenateValueLists
INT64 __fastcall CmpConcatenateValueLists(UINT64 a1, UINT64 *a2, UINT64 *a3, UINT64 a4, UINT64 *a5){
int v5;
unsigned int v7;
unsigned int v8;
UINT64 *v11;
int v12;
char *v13;
int v14;
unsigned int v15;
const VOID *v16;
const VOID *v17;
UINT64 *v18;
VOID *CellAddress;
__int64 v21;
_HV_GET_CELL_CONTEXT CellAddressContext;
CellAddressContext = 0i64;
v21 = 0i64;
v5 = *(_DWORD *)a3;
v7 = *(_DWORD *)a2;
CellAddress = 0i64;
v8 = v7 + v5;
CellAddressContext.Cell = -1;
LODWORD(v21) = -1;
if( v8 < v7 )
{
return(unsigned int)-1073741670;
}
else if( v8 )
{
v12 = HvAllocateCell(a1, 4 * v8, a4, &CellAddress, &CellAddressContext);
v13 = (char *)CellAddress;
v14 = v12;
if( v12 == -1 )
{
v8 = -1073741670;
}
else
{
v15 = 0;
if( *(_DWORD *)a2 )
{
v16 = (const VOID *)(*(__int64(__fastcall **)(UINT64, _QWORD, __int64 *))(a1 + 8))(
a1,
*((unsigned int *)a2 + 1),
&v21);
memmove(v13, v16, 4 * *(_DWORD *)a2);
(*(void(__fastcall **)(UINT64, __int64 *))(a1 + 16))(a1, &v21);
v15 = *(_DWORD *)a2;
}
if( *(_DWORD *)a3 )
{
v17 = (const VOID *)(*(__int64(__fastcall **)(UINT64, _QWORD, __int64 *))(a1 + 8))(
a1,
*((unsigned int *)a3 + 1),
&v21);
memmove(&v13[4 * v15], v17, 4 * *(_DWORD *)a3);
(*(void(__fastcall **)(UINT64, __int64 *))(a1 + 16))(a1, &v21);
}
v18 = a5;
*(_DWORD *)a5 = v8;
v8 = 0;
*((_DWORD *)v18 + 1) = v14;
}
if( v13 )
(*(void(__fastcall **)(UINT64, _HV_GET_CELL_CONTEXT *))(a1 + 16))(a1, &CellAddressContext);
}
else
{
v11 = a5;
*(_DWORD *)a5 = 0;
*((_DWORD *)v11 + 1) = -1;
}
return v8;
}Referenced by:
CmpFullPromoteSingleKeyFromKeyNodeStacks