CmpSnapshotTxOwnerArrayToRollbackPacket

__int64 __fastcall CmpSnapshotTxOwnerArrayToRollbackPacket(
        unsigned int *a1,
        unsigned int *a2,
        __int64 a3,
        _LOOKASIDE_LIST_EX *a4){
  __int64 v4; 
  __int64 result; 
  __int64 v8; 

  v4 = *a1;
  if( !(_DWORD)v4 )
    __fastfail(5u);
  LODWORD(v4) = v4 & 0x7FFFFFFF;
  result = CmpReserveRollbackPacketSpace(a2, v4, a3, a4);
  if( (int)result >= 0 )
  {
    if( (_DWORD)v4 == 1 )
    {
      CmpAddUoWToRollbackPacket((UINT64 *)a2, *((_QWORD *)a1 + 1));
    }
    else if( (_DWORD)v4 )
    {
      v8 = 0i64;
      do
      {
        CmpAddUoWToRollbackPacket((UINT64 *)a2, *(_QWORD *)(*((_QWORD *)a1 + 1) + v8));
        v8 += 8i64;
        --v4;
      }
      while( v4 );
    }
    return 0i64;
  }
  return result;
}

Referenced by:

CmpTryAcquireIXLockWithRollbackPacket