c – Whats 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.