Best way to handle 100 GPIO on AT32UC3C0128C
I've never used Atmel chips so don't take the example as is. 

As Long and Chris pointed in the comments you can use direct register access

I would recommend reading first the chapter 23 of datasheet with the gpio section.

For pullups (use set register to avoid messing up with other functions):

AVR32_GPOI.port[0].puers = bit_pattern_0
AVR32_GPOI.port[1].puers = bit_pattern_1
AVR32_GPOI.port[2].puers = bit_pattern_2
AVR32_GPOI.port[3].puers = bit_pattern_3


where bit_pattern_x is a 32 bit unsigned word containing the pullup configuration for portX PIN00 being driven by bit 0 ,  PIN01 being driven by bit 1 and so on. Setting bit to one activates the pullup. 

Similar the direction registers but use clear register for the same reason :

AVR32_GPOI.port[0].oderc = bit_pattern_0
AVR32_GPOI.port[1].oderc = bit_pattern_1
AVR32_GPOI.port[2].oderc = bit_pattern_2
AVR32_GPOI.port[3].oderc = bit_pattern_3


You might need to unlock the ports first using AVR32_GPOI.port[0].lockc[x] 

Now you read the 32 pins at once reading  AVR32_GPOI.port[x].pwr 

You can either send data as is , just masked by bit_pattern_x, to the host  or loop through the bits using the same bit pattern to skip unused pins.