During a full repair on a ~ 60 nodes cluster, I've been able to see that this stage can be significant (up to 60 percent of the whole time) :
It's merely caused by the fact that https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/service/ActiveRepairService.java#L189 calls
everytime and that it takes more than 99% of the time. This call takes 600ms when there is no load on the cluster and more if there is. So for 10k ranges, you can imagine that it takes at least 1.5 hours just to compute ranges.
ss.getLocalRanges(keyspaceName) should be cached to avoid having to spend hours on it.