Try this in 5.9.0rc3.
sqrt(sqrt(c/x+b^2)+a^2);
(trans1:y=%, int1:'integrate(%,x));
assume (a>0, b>0, c>0, a>b);
assume (x>0, y>0, y>a);
Maxima can't handle changevar(int1,trans1,y,x) but neither can Macsyma.
You can do
changevar(int1, trans1^2, y,x);
Maxima asks you about a^2-y^2 which is negative with the given
assumptions but the result contains the expression sqrt(2*a^2-y^2) which
is completely wrong.
Macsyma, on the other hand, doesn't simplify quite as much so it as the
expression sqrt(sqrt(y^4-2*a^2*y^2+a^4)+a^2). In maxima you can do
foo:sqrt(sqrt(y^4-2*a^2*y^2+a^4)+a^2);
scanmap(factor,foo);
ratsimp(foo);
and you get the correct answer y.
Thy only way changevar can get its wrong answer is if it treats
sqrt((y^2-a^2)^2) as a^2-y^2.
Just to make if more interesting scanmap(factor,foo,bottomup) crashes.