(Coverage-)guided fuzzing, which has shown promising results in many domains, commonly requires a mutation-based fuzzing approach to make use of the collected feedback. To perform guided fuzzing on scripting engines it is thus first necessary to define semantically useful mutations on program code. In contrast to existing approaches which mutate syntactical elements such as the textual representation of code or a syntax tree, the presented approach defines mutations on a newly designed intermediate language (IL) on which, due to its restricted form, mutations of control and data flow can easily be performed. This reflects the fact that the syntactical properties of a program are generally irrelevant. Further, the proposed system is able to generate semantically valid samples with a high probability. This is important as it avoids the need to wrap generated code into try-catch constructs which can negatively affect the engine's behavior, especially that of JIT compilers.