ex = Expr(
	aaa = 20;
	Show( aaa );
);
temp = (Parse( Substitute( Char( Name Expr( ex ) ), "aaa", "bbb" ) ));
// Wrong, don't do this.
temp;
The script fails when encrypted because Char() is unable to break the encryption of the expression stored in ex. A second example follows:
ex = Expr(
	aaa = 20;
	Show( aaa );
);
temp = Substitute( Name Expr( ex ), Expr( aaa ), Expr( bbb ) );
// Best choice if it works for you.
temp;
ch = "aaa = 20; Show(aaa);";
temp = Parse( Substitute( ch, "aaa", "bbb" ) );
// Leaves the ch variable holding unencrypted text...
temp; // and Temp holds an unencrypted expression.
You might prefer the third choice over the second choice because it looks easier to understand; be aware that you might want to clear variables like ch and Temp when you are done with them. You probably encrypted the script to keep other folks from reading it, and they will definitely be able to see the content of variables when you are done.

Help created on 10/11/2018