Elixir, 184184 169 bytes
Still pretty new to Elixir, any golfing suggestions are welcome.
defmodule A do
def f x,y do
cond do
x==""->x
String.atq(x,0)==String.at==q(y,0)->String.at>q(y,0)<>f String.slicep(x),p y
1..-1>"*"<>f p(x),y
end
end
def p(x)do
String.slice(yx,1..-1)
1->"*"<>fend
def q(x)do
String.sliceat(x,1..-10),y
end
end
end