I'm going to assume you do not know the families from which your various distributions are drawn. If you did, we might be able to use more sophisticated methods. All you have is the data. I'm also going to assume that the distributions are independent of each other. And, since I don't have your data, I'm to simulate your data as follows: 1000 draws from each of 99 distributions each of which is uniform over [0,1]. I'm going to wrap Short around it to keep the output ... short.
Short[rr = RandomReal[{0, 1}, {99, 1000}]]
Now let's form empirical distributions for each set of 1,000 datapoints.
Short[eds = Map[EmpiricalDistribution, rr]]
We'll form the product distribution of each of the 99 distributions.
Short[pd=ProductDistribution@@eds]
We can now take 100,000 draws from the product distribution, sum the results, and create a new empirical distribution, the totalDistribution. On my laptop this takes a second or two.
totalDistribution =
EmpiricalDistribution[Total /@ RandomVariate[pd, 100000]]
Now I assume your xmax is 55.07 and compute the SurvivalFunction of totalDistribution evaluated at that point.
SurvivalFunction[totalDistribution,55.07]
The other tactic would be to use FindDistribution to get parametric forms for each of the underlying distributions and then proceed much as above. But the code above should get you started.