Buehrle pitches Marlins past Giants