

I haven’t done much low level stuff, but I think the ‘main’ function is something the compiler uses to establish an entry point for the compiled binary. The name ‘main’ would not exist in the compiled binary at all, but the function itself would still exist. Executable formats aren’t all the same, so they’ll have different ways of determining where this entry point function is expected to be. You can ‘run’ a binary library file by invoking a function contained therein, which is how DLL files work.
When I’m doing that I use a program called Transcribe! It has every feature you could want for this purpose, really. You can mark off the individual sections, measures (and beats if you want) and take notes, looping them at any speed you want (with pitch correction), and it even has a tone generator you can use to check your transcription. It’s $39 dollars and well worth it. One time I sent the author an email and they promptly responded with great answers to all my questions.
https://www.seventhstring.com/xscribe/screenshots.html
I do try to do it the old fashioned way first, though. I’ll pull the song into Reaper or something and just play along.