thank you vary much!
I manage to perform the Jump command correct right now.
now I have new problems referring the copied code:
few problems and bugs was referring the HEX file parsing so part of the code was copied wrong and it was fixed now.
I believes that the code copied now correctly but still I have very acute problem:
I compare the original code sequence (both the asm and even the HEX itself between the original program (line by line debugging) and there is a specific line that on the original code act OK and nothing wrong is happened and on the BL version when I get this specific line the whole code is the memory seem to be shifted if one block (16 bytes) and the addresses is not correct anymore (then the code just got lost and reset..).
the original program codes (the specific line is #03 (OSC->CR..) :
MCG->SC = SYSTEM_MCG_SC_VALUE; /* Set SC (fast clock internal reference divider) */
MCG->C2 = (MCG->C2 & (uint8_t)(~(MCG_C2_FCFTRIM_MASK))) | (SYSTEM_MCG_C2_VALUE & (uint8_t)(~(MCG_C2_LP_MASK))); /* Set C2 (freq. range, ext. and int. reference selection etc. excluding trim bits; low power bit is set later) */
OSC->CR = SYSTEM_OSC_CR_VALUE; /* Set OSC_CR (OSCERCLK enable, oscillator capacitor load) */
MCG->C7 = SYSTEM_MCG_C7_VALUE; /* Set C7 (OSC Clock Select) */
#if (MCG_MODE == MCG_MODE_PEE)
the original disasmly :

the registers original state:

Now the BL dis-assembly lines (looks the same i think): the line that makes the whole problem is 0x6316a :

the registers before this line:

| the memory before this line : | the memory right after this line: |
|---|
 |  |
Can you understand what can be the reason for this behavior? I'm trying to debug this line by line and usually i found bug relate the HEX parser but now the code memory is looks the same so i have no idea where the bug is caused by.