if(!dfu_force&&(((*application)&0xFFFE0000)==0x20000000)){// application at address seems valid
SCB_VTOR=(volatileuint32_t)(application);// set vector table to application vector table (store at the beginning of the application)
__asm__volatile("MSR msp,%0"::"r"(*application));// set stack pointer to address provided in the beginning of the application (loaded into a register first)
(*(void(**)())(application+1))();// start application (by jumping to the reset function which address is stored as second entry of the vector table)
(*(void(**)(void))(application+1))();// start application (by jumping to the reset function which address is stored as second entry of the vector table)
}
rcc_clock_setup_in_hse_8mhz_out_72mhz();// start main clock