Federer battles hard for semi-final spot in Halle