cd pidgin
grep "int main(" *.c -Rn
Or whatever the Windows equivalent for "search through all files with a .c extension for the text string 'int main(', while recursing into subdirectories, and display each and every match showing the file and line number.
Running the above in pidgin-2.7.1/pidgin
gives gtkmain.c:521:int main(int argc, char *argv[])
. The file gtkmain.c is just under 1000 lines, so maybe not the best place to start.
But the principle, of using the command line to search for functions in the code, has helped me in the past work my way around other peoples code (though admittedly, when I suggested this to you, I had not realized Pidgin was a complex as it is).
So I now consider it important to ask: to what end do you wish to understand the code?
Why do you want to edit the code?
Do you wish to provide GUI enhancements, or new features within the backend?
You really need to come up with something concrete to work towards. Run the program and identify something you want to do to it (and maybe let us know too). Once you have identified something through actually using Pidgin that you wish to modify in some way, then you can start looking in the code trying to figure out where that thing happens. Search within the code for text strings which appear in the GUI dialogs, or in the menus, or even the dialog window title.
Once you have found the code for a particular GUI dialog associated with whatever it is you wish to modify, perform another search in the code for references to that GUI dialog, and so on, and so on.
Making inroads into larger projects is not easy.
There is also the more experimental approach of editing a file and changing something, anything, re-compiling, and seeing what effects it might have. Though perhaps not the best of ideas with a networking program ;-)