I Just want to make sure I am reading this right:
movl 12(%ebp), %edx leal (%edx, %edx, 4), %eax
I read the first line as: edx = [epb
edx = [epb
You're right. The LEA instruction is used to Load (the) Effective Address, and can be used for address arithmetic and sometimes also ordinary arithmetic, if you don't need the flags.
LEA