Big day by Davis lifts 49ers past Cardinals 32-20