[SOLVED] Decryption bootloader

I don't understand why you are not using l_code_addr in _binExec().

I would try this:

void _binExec(void *code_addr)
 {
     void (*pFct)(void) = NULL;
     /* Point on __main address located in the second word in vector table */
     pFct = (void (*)(void))(*(uint32_t *)((uint32_t)code_addr + 4));
     pFct();
 }

Edit : I Wonder whether the vector table should be relocated ?