Hi,
the question is wrong. You can't ask what is running first because this are several things

.
Bootloader: This one starts the system.
C-Startup-Code: Makes all thinks, to start the C-part of your program.
If you use a bootloader and write it in C, you need also a C-Startup routine inside the bootloader.
If you write firmware for an embedded device, your firmware includes a bootloader part (which is responsible for the controller startup and the application itself). If your firmware is assembler based, you do not need a C-Startup-Routine.
You can look at the LED sample program. This includes system startup and C-Startup-Routine

.
Regards,
Edi