How to use AVR ADC with multiplier?
int can only be 0-255


That's not correct. In the C programming language, an int is always at least 16 bits wide, even on 8-bit micros. A char is 8 bits wide.

But when using inttypes.h, I strongly recommend using the explicit types like uint8_t,int16_t or uint32_t.

Your real error is using _delay_ms() with a variable parameter. This is not allowed, as it is a macro involving floating point calculations - at least in avr gcc. You are supposed to use something like this:

void DelayMs(int delay) {
  while(delay--) _delay_ms(1);
}