CmpCloneKCBValueListForTrans

CHAR __fastcall CmpCloneKCBValueListForTrans(INT64 a1, INT64 a2, BYTE *a3){
  int v3; 
  __int64 v8; 
  __int64 v9; 
  int v10; 
  __int64 v11; 
  int v12; 
  int v13; 
  v12 = -1;
  v3 = 0;
  v13 = 0;
  *a3 = 0;
  if( *(_QWORD *)(a1 + 288) )
    return 1;
  v8 = (*(__int64(__fastcall **)(_QWORD, _QWORD, int *))(*(_QWORD *)(a1 + 32) + 8i64))(
         *(_QWORD *)(a1 + 32),
         *(unsigned int *)(a1 + 40),
         &v12);
  v9 = v8;
  if( v8 )
  {
    if( !*(_DWORD *)(v8 + 36) )
    {
      *(_DWORD *)(a1 + 284) = -1;
      goto LABEL_7;
    }
    v10 = HvDuplicateCell(*(_QWORD *)(a1 + 32), *(unsigned int *)(v8 + 40), 1ui64, 1);
    *(_DWORD *)(a1 + 284) = v10;
    if( v10 != -1 )
    {
      v3 = *(_DWORD *)(v9 + 36);
LABEL_7:
      *(_DWORD *)(a1 + 280) = v3;
      *(_QWORD *)(a1 + 288) = a2;
      v11 = *(_QWORD *)(a1 + 32);
      *a3 = 1;
      (*(void(__fastcall **)(__int64, int *))(v11 + 16))(v11, &v12);
      return 1;
    }
    (*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(a1 + 32) + 16i64))(*(_QWORD *)(a1 + 32), &v12);
  }
  return 0;
}

Referenced by:

CmDeleteValueKey
CmSetValueKey