What's going on in __libc_start_main?
The first block, ending in "@plt", is the procedure linkage table (https://stackoverflow.com/a/5469334/994153). The jmp *0x8049658
is an indirect branch instruction, so it actually is jumping to __libc_start_main
wherever it actually ends up getting loaded in RAM at runtime.
The real RAM address of __libc_start_main
is found in the DYNAMIC RELOCATION RECORDS table, which is created in RAM by the dynamic loader when the program is loaded.