HvDuplicateCell
INT64 __fastcall HvDuplicateCell(UINT64 a1, INT64 a2, UINT64 a3, CHAR a4){
HSTORAGE_TYPE v5;
__int64(__fastcall *v6)(UINT64, INT64, int *);
__int64 v8;
UINT8 *v9;
int v10;
unsigned int v11;
VOID *v12;
unsigned int v13;
_HV_GET_CELL_CONTEXT CellAddressContext;
VOID *CellAddress;
int v17;
int v18;
v17 = -1;
CellAddressContext.Cell = -1;
CellAddress = 0i64;
v5 = (int)a3;
v18 = 0;
v6 = *(__int64(__fastcall **)(UINT64, INT64, int *))(a1 + 8);
*(_DWORD *)&CellAddressContext.BinContext = 0;
v8 = v6(a1, a2, &v17);
v9 = (UINT8 *)v8;
if( !v8 )
return 0xFFFFFFFFi64;
v10 = -4 - *(_DWORD *)(v8 - 4);
v11 = HvAllocateCell((_HHIVE *)a1, (unsigned int)v10, v5, &CellAddress, &CellAddressContext);
v12 = CellAddress;
v13 = v11;
if( v11 != -1 )
{
if( a4 == 1 )
memmove((UINT8 *)CellAddress, v9, v10);
else
memset((INT64)CellAddress, 0i64);
}
(*(void(__fastcall **)(UINT64, int *))(a1 + 16))(a1, &v17);
if( v12 )
(*(void(__fastcall **)(UINT64, _HV_GET_CELL_CONTEXT *))(a1 + 16))(a1, &CellAddressContext);
return v13;
}Referenced by:
CmpCloneKCBValueListForTrans
CmpDuplicateIndex