Cruz ends 21 hour speech against Obamacare