CmpSnapshotTxOwnerArrayToRollbackPacket

INT64 __fastcall CmpSnapshotTxOwnerArrayToRollbackPacket(UINT64 *a1, UINT64 *a2){
  __int64 v2; 
  INT64 result; 
  __int64 v6; 
  v2 = *(unsigned int *)a1;
  if( !(_DWORD)v2 )
    __fastfail(5u);
  LODWORD(v2) = v2 & 0x7FFFFFFF;
  result = CmpReserveRollbackPacketSpace(a2, (unsigned int)v2);
  if( (int)result >= 0 )
  {
    if( (_DWORD)v2 == 1 )
    {
      CmpAddUoWToRollbackPacket(a2, a1[1]);
    }
    else if( (_DWORD)v2 )
    {
      v6 = 0i64;
      do
      {
        CmpAddUoWToRollbackPacket(a2, *(_QWORD *)(a1[1] + v6));
        v6 += 8i64;
        --v2;
      }
      while( v2 );
    }
    return 0i64;
  }
  return result;
}

Referenced by:

CmpTryAcquireIXLockWithRollbackPacket