What does leal (%eax, %eax) do? Does that multiply the contents at %eax * 2 since it has parens?
leal (%eax, %eax)
It will load the destination operand with the sum of eax and eax, IOW, 2*eax.
eax