[SOLVED] Decryption bootloader

I don't really know how vector table works but my code is like this now :

void _binExec (void * l_code_addr)
{
	__asm (	"mov	r1,	r0			\n"
			"ldr	r0,	[r1, #4]	\n"
			"ldr	sp,	[r1]		\n"
			/*"msr	msp, [r1]		\n"*/
			"blx	r0"
	);
}

unsigned int main (void)
{
	void	*vAppStartAddress = (void *)((unsigned int) 0x88000);
	int		i;

	// -- Disable interrupts
	// Disable IRQ
	__disable_irq();
	// Disable IRQs
	for (i = 0; i < 8; i ++)
	{
		NVIC->ICER[i] = 0xFFFFFFFF;
	}
	// Clear pending IRQs
	for (i = 0; i < 8; i ++)
	{
		NVIC->ICPR[i] = 0xFFFFFFFF;
	}

	// -- Modify vector table location
	// Barriars
	__DSB();
	__ISB();
	// Change the vector table
	SCB->VTOR = ((uint32_t)vAppStartAddress & SCB_VTOR_TBLOFF_Msk); // = 0x88 0000
	// Barriars
	__DSB();
	__ISB();

	// -- Enable interrupts
	__enable_irq();

	_binExec(vAppStartAddress);
	return (unsigned int) vAppStartAddress;
}

Test programs given by Atmel still blink but Arduino binary doesn't blink.