AVR: ASM multiplication label with 2
The assembler locations are word-addressed due to the fact that AVR opcodes are 16-bit, but the index registers work with byte locations. The multiplication by 2 addresses this discrepancy.

EDIT:

From the description of the LPM (Load Program Memory) instruction:


  The Program memory is organized in 16-bit words while the Z-pointer is a
  byte address. Thus, the least significant bit of the Z-pointer selects either low byte (ZLSB = 0) or high byte (ZLSB = 1).


Therefore if we want to read program memory address 5, we need to load 10 into Z and then read two bytes.