aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-10 09:29:04 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-10 09:29:04 +0200
commit2aa46f298e77d39de2f4304e70dac189ebcb89af (patch)
treef91b65ca068c03c76affc9e50bd7d7bdd28a3d6b
parent3a3cb189ac05ab9b0ac69c90eaaeb231403faee8 (diff)
parent212b467687f0e3c0e3897b501cdc9e09a0d99233 (diff)
downloadcompcert-kvx-2aa46f298e77d39de2f4304e70dac189ebcb89af.tar.gz
compcert-kvx-2aa46f298e77d39de2f4304e70dac189ebcb89af.zip
Merge branch 'mppa-work' of gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into mppa-work
-rw-r--r--mppa_k1c/Asmblockgen.v20
-rw-r--r--mppa_k1c/Asmblockgenproof1.v161
-rw-r--r--mppa_k1c/Asmexpand.ml98
-rw-r--r--mppa_k1c/Machregs.v5
-rw-r--r--mppa_k1c/TargetPrinter.ml40
-rw-r--r--test/monniaux/lustre-convertible-2cgc/convertible_main.c1085
-rw-r--r--test/monniaux/lustre-convertible-2cgc/convertible_main.h110
-rw-r--r--test/monniaux/lustre-convertible-2cgc/convertible_main_loop.c91
-rw-r--r--test/monniaux/lustre-convertible-2cgc/lustre_consts.c4
-rw-r--r--test/monniaux/lustre-convertible-2cgc/lustre_consts.h23
-rw-r--r--test/monniaux/lustre-convertible-2cgc/lustre_types.h139
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/convertible_main.c3319
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/convertible_main.h52
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/convertible_main_loop.c91
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/lustre_consts.c4
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/lustre_consts.h23
-rw-r--r--test/monniaux/lustre-convertible-en-2cgc/lustre_types.h83
17 files changed, 5267 insertions, 81 deletions
diff --git a/mppa_k1c/Asmblockgen.v b/mppa_k1c/Asmblockgen.v
index dc55715a..f2292f9a 100644
--- a/mppa_k1c/Asmblockgen.v
+++ b/mppa_k1c/Asmblockgen.v
@@ -135,10 +135,18 @@ Definition transl_comp
(c: comparison) (s: signedness) (r1 r2: ireg) (lbl: label) (k: code) : list instruction :=
Pcompw (itest_for_cmp c s) RTMP r1 r2 ::g Pcb BTwnez RTMP lbl ::g k.
+Definition transl_compi
+ (c: comparison) (s: signedness) (r: ireg) (imm: int) (lbl: label) (k: code) : list instruction :=
+ Pcompiw (itest_for_cmp c s) RTMP r imm ::g Pcb BTwnez RTMP lbl ::g k.
+
Definition transl_compl
(c: comparison) (s: signedness) (r1 r2: ireg) (lbl: label) (k: code) : list instruction :=
Pcompl (itest_for_cmp c s) RTMP r1 r2 ::g Pcb BTwnez RTMP lbl ::g k.
+Definition transl_compil
+ (c: comparison) (s: signedness) (r: ireg) (imm: int64) (lbl: label) (k: code) : list instruction :=
+ Pcompil (itest_for_cmp c s) RTMP r imm ::g Pcb BTwnez RTMP lbl ::g k.
+
Definition select_comp (n: int) (c: comparison) : option comparison :=
if Int.eq n Int.zero then
match c with
@@ -156,10 +164,10 @@ Definition transl_opt_compuimm
match c with
| Ceq => Pcbu BTweqz r1 lbl ::g k
| Cne => Pcbu BTwnez r1 lbl ::g k
- | _ => loadimm32 RTMP n ::g (transl_comp c Unsigned r1 RTMP lbl k)
+ | _ => transl_compi c Unsigned r1 n lbl k
end
else
- loadimm32 RTMP n ::g (transl_comp c Unsigned r1 RTMP lbl k)
+ transl_compi c Unsigned r1 n lbl k
.
(* Definition transl_opt_compuimm
@@ -192,10 +200,10 @@ Definition transl_opt_compluimm
match c with
| Ceq => Pcbu BTdeqz r1 lbl ::g k
| Cne => Pcbu BTdnez r1 lbl ::g k
- | _ => loadimm64 RTMP n ::g (transl_compl c Unsigned r1 RTMP lbl k)
+ | _ => transl_compil c Unsigned r1 n lbl k
end
else
- loadimm64 RTMP n ::g (transl_compl c Unsigned r1 RTMP lbl k)
+ transl_compil c Unsigned r1 n lbl k
.
Definition transl_comp_float32 (cmp: comparison) (r1 r2: ireg) (lbl: label) (k: code) :=
@@ -239,7 +247,7 @@ Definition transl_cbranch
OK (if Int.eq n Int.zero then
Pcb (btest_for_cmpswz c) r1 lbl ::g k
else
- loadimm32 RTMP n ::g (transl_comp c Signed r1 RTMP lbl k)
+ transl_compi c Signed r1 n lbl k
)
| Ccompluimm c n, a1 :: nil =>
do r1 <- ireg_of a1;
@@ -255,7 +263,7 @@ Definition transl_cbranch
OK (if Int64.eq n Int64.zero then
Pcb (btest_for_cmpsdz c) r1 lbl ::g k
else
- loadimm64 RTMP n ::g (transl_compl c Signed r1 RTMP lbl k)
+ transl_compil c Signed r1 n lbl k
)
| Ccompf c, a1 :: a2 :: nil =>
do r1 <- ireg_of a1; do r2 <- ireg_of a2;
diff --git a/mppa_k1c/Asmblockgenproof1.v b/mppa_k1c/Asmblockgenproof1.v
index 19b1b1f1..86a0ff88 100644
--- a/mppa_k1c/Asmblockgenproof1.v
+++ b/mppa_k1c/Asmblockgenproof1.v
@@ -340,6 +340,35 @@ Proof.
rewrite H0. simpl; auto.
Qed.
+Lemma transl_compi_correct:
+ forall cmp r1 n lbl k rs m tbb b,
+ exists rs',
+ exec_straight ge (transl_compi cmp Signed r1 n lbl k) rs m (Pcb BTwnez RTMP lbl ::g k) rs' m
+ /\ (forall r : preg, r <> PC -> r <> RTMP -> rs' r = rs r)
+ /\ ( Val.cmp_bool cmp rs#r1 (Vint n) = Some b ->
+ exec_control ge fn (Some (PCtlFlow (Pcb BTwnez RTMP lbl))) (nextblock tbb rs') m
+ = eval_branch fn lbl (nextblock tbb rs') m (Some b))
+ .
+Proof.
+ intros. esplit. split.
+- unfold transl_compi. apply exec_straight_one; simpl; eauto.
+- split.
+ + intros; Simpl.
+ + intros.
+ remember (rs # RTMP <- (compare_int (itest_for_cmp cmp Signed) rs # r1 (Vint n))) as rs'.
+ simpl. assert (Val.cmp_bool Cne (nextblock tbb rs') # RTMP (Vint (Int.repr 0)) = Some b).
+ {
+ assert ((nextblock tbb rs') # RTMP = (compare_int (itest_for_cmp cmp Signed) rs # r1 (Vint n))).
+ { rewrite Heqrs'. auto. }
+ rewrite H0. rewrite <- H.
+ remember (Val.cmp_bool cmp rs#r1 (Vint n)) as cmpbool.
+ destruct cmp; simpl;
+ unfold Val.cmp; rewrite <- Heqcmpbool; destruct cmpbool; simpl; auto;
+ destruct b0; simpl; auto.
+ }
+ rewrite H0. simpl; auto.
+Qed.
+
Lemma transl_compu_correct:
forall cmp r1 r2 lbl k rs m tbb b,
exists rs',
@@ -369,6 +398,35 @@ Proof.
rewrite H0. simpl; auto.
Qed.
+Lemma transl_compui_correct:
+ forall cmp r1 n lbl k rs m tbb b,
+ exists rs',
+ exec_straight ge (transl_compi cmp Unsigned r1 n lbl k) rs m (Pcb BTwnez RTMP lbl ::g k) rs' m
+ /\ (forall r : preg, r <> PC -> r <> RTMP -> rs' r = rs r)
+ /\ (Val_cmpu_bool cmp rs#r1 (Vint n) = Some b ->
+ exec_control ge fn (Some (PCtlFlow ((Pcb BTwnez RTMP lbl)))) (nextblock tbb rs') m
+ = eval_branch fn lbl (nextblock tbb rs') m (Some b))
+ .
+Proof.
+ intros. esplit. split.
+- unfold transl_compi. apply exec_straight_one; simpl; eauto.
+- split.
+ + intros; Simpl.
+ + intros.
+ remember (rs # RTMP <- (compare_int (itest_for_cmp cmp Unsigned) rs # r1 (Vint n))) as rs'.
+ simpl. assert (Val.cmp_bool Cne (nextblock tbb rs') # RTMP (Vint (Int.repr 0)) = Some b).
+ {
+ assert ((nextblock tbb rs') # RTMP = (compare_int (itest_for_cmp cmp Unsigned) rs # r1 (Vint n))).
+ { rewrite Heqrs'. auto. }
+ rewrite H0. rewrite <- H.
+ remember (Val_cmpu_bool cmp rs#r1 (Vint n)) as cmpubool.
+ destruct cmp; simpl; unfold Val_cmpu;
+ rewrite <- Heqcmpubool; destruct cmpubool; simpl; auto;
+ destruct b0; simpl; auto.
+ }
+ rewrite H0. simpl; auto.
+Qed.
+
Lemma transl_compl_correct:
forall cmp r1 r2 lbl k rs m tbb b,
exists rs',
@@ -399,6 +457,36 @@ Proof.
rewrite H0. simpl; auto.
Qed.
+Lemma transl_compil_correct:
+ forall cmp r1 n lbl k rs m tbb b,
+ exists rs',
+ exec_straight ge (transl_compil cmp Signed r1 n lbl k) rs m (Pcb BTwnez RTMP lbl ::g k) rs' m
+ /\ (forall r : preg, r <> PC -> r <> RTMP -> rs' r = rs r)
+ /\ ( Val.cmpl_bool cmp rs#r1 (Vlong n) = Some b ->
+ exec_control ge fn (Some (PCtlFlow (Pcb BTwnez RTMP lbl))) (nextblock tbb rs') m
+ = eval_branch fn lbl (nextblock tbb rs') m (Some b))
+ .
+Proof.
+ intros. esplit. split.
+- unfold transl_compil. apply exec_straight_one; simpl; eauto.
+- split.
+ + intros; Simpl.
+ + intros.
+ remember (rs # RTMP <- (compare_long (itest_for_cmp cmp Signed) rs # r1 (Vlong n))) as rs'.
+ simpl. assert (Val.cmp_bool Cne (nextblock tbb rs') # RTMP (Vint (Int.repr 0)) = Some b).
+ {
+ assert ((nextblock tbb rs') # RTMP = (compare_long (itest_for_cmp cmp Signed) rs # r1 (Vlong n))).
+ { rewrite Heqrs'. auto. }
+ rewrite H0. rewrite <- H.
+ remember (Val.cmpl_bool cmp rs#r1 (Vlong n)) as cmpbool.
+ destruct cmp; simpl;
+ unfold compare_long, Val.cmpl;
+ rewrite <- Heqcmpbool; destruct cmpbool; simpl; auto;
+ destruct b0; simpl; auto.
+ }
+ rewrite H0. simpl; auto.
+Qed.
+
Lemma swap_comparison_cmpf_eq:
forall v1 v2 cmp,
(Val.cmpf cmp v1 v2) = (Val.cmpf (swap_comparison cmp) v2 v1).
@@ -710,6 +798,35 @@ Proof.
rewrite H0. simpl; auto.
Qed.
+Lemma transl_compilu_correct:
+ forall cmp r1 n lbl k rs m tbb b,
+ exists rs',
+ exec_straight ge (transl_compil cmp Unsigned r1 n lbl k) rs m (Pcb BTwnez RTMP lbl ::g k) rs' m
+ /\ (forall r : preg, r <> PC -> r <> RTMP -> rs' r = rs r)
+ /\ ( Val_cmplu_bool cmp rs#r1 (Vlong n) = Some b ->
+ exec_control ge fn (Some (PCtlFlow (Pcb BTwnez RTMP lbl))) (nextblock tbb rs') m
+ = eval_branch fn lbl (nextblock tbb rs') m (Some b))
+ .
+Proof.
+ intros. esplit. split.
+- unfold transl_compil. apply exec_straight_one; simpl; eauto.
+- split.
+ + intros; Simpl.
+ + intros.
+ remember (rs # RTMP <- (compare_long (itest_for_cmp cmp Unsigned) rs # r1 (Vlong n))) as rs'.
+ simpl. assert (Val.cmp_bool Cne (nextblock tbb rs') # RTMP (Vint (Int.repr 0)) = Some b).
+ {
+ assert ((nextblock tbb rs') # RTMP = (compare_long (itest_for_cmp cmp Unsigned) rs # r1 (Vlong n))).
+ { rewrite Heqrs'. auto. }
+ rewrite H0. rewrite <- H.
+ remember (Val_cmplu_bool cmp rs#r1 (Vlong n)) as cmpbool.
+ destruct cmp; simpl;
+ unfold compare_long, Val_cmplu; rewrite <- Heqcmpbool; destruct cmpbool; simpl; auto;
+ destruct b0; simpl; auto.
+ }
+ rewrite H0. simpl; auto.
+Qed.
+
Lemma transl_opt_compuimm_correct:
forall n cmp r1 lbl k rs m b tbb c,
select_comp n cmp = Some c ->
@@ -907,16 +1024,12 @@ Proof.
unfold nextblock, incrPC. Simpl. rewrite H0 in EVAL'. clear H0.
destruct c0; simpl; auto;
unfold eval_branch; rewrite <- H; rewrite EVAL'; auto.
- + exploit (loadimm32_correct RTMP n); eauto. intros (rs' & A & B & C).
- exploit (transl_comp_correct c0 x RTMP lbl); eauto. intros (rs'2 & A' & B' & C').
+ + exploit (transl_compi_correct c0 x n lbl); eauto. intros (rs'2 & A' & B' & C').
exists rs'2, (Pcb BTwnez RTMP lbl).
split.
- * constructor. apply exec_straight_trans
- with (c2 := (transl_comp c0 Signed x RTMP lbl k)) (rs2 := rs') (m2 := m').
- eexact A. eexact A'.
+ * constructor. eexact A'.
* split; auto.
- { apply C'; auto. rewrite B, C; eauto with asmgen. }
- { intros. rewrite B'; eauto with asmgen. }
+ { apply C'; auto. }
(* Ccompuimm *)
- remember (select_comp n c0) as selcomp.
destruct selcomp.
@@ -926,22 +1039,18 @@ Proof.
split.
* apply A.
* split; auto. apply C. apply EVAL'.
- + assert (transl_opt_compuimm n c0 x lbl k = loadimm32 RTMP n ::g transl_comp c0 Unsigned x RTMP lbl k).
+ + assert (transl_opt_compuimm n c0 x lbl k = transl_compi c0 Unsigned x n lbl k).
{ unfold transl_opt_compuimm.
destruct (Int.eq n Int.zero) eqn:EQN.
all: unfold select_comp in Heqselcomp; rewrite EQN in Heqselcomp; destruct c0; simpl in *; auto.
all: discriminate. }
rewrite H. clear H.
- exploit (loadimm32_correct RTMP n); eauto. intros (rs' & A & B & C).
- exploit (transl_compu_correct c0 x RTMP lbl); eauto. intros (rs'2 & A' & B' & C').
+ exploit (transl_compui_correct c0 x n lbl); eauto. intros (rs'2 & A' & B' & C').
exists rs'2, (Pcb BTwnez RTMP lbl).
split.
- * constructor. apply exec_straight_trans
- with (c2 := (transl_comp c0 Unsigned x RTMP lbl k)) (rs2 := rs') (m2 := m').
- eexact A. eexact A'.
+ * constructor. eexact A'.
* split; auto.
- { apply C'; auto. rewrite B, C; eauto with asmgen. }
- { intros. rewrite B'; eauto with asmgen. }
+ { apply C'; auto. }
(* Ccompl *)
- exploit (transl_compl_correct c0 x x0 lbl); eauto. intros (rs' & A & B & C).
exists rs', (Pcb BTwnez RTMP lbl).
@@ -970,16 +1079,12 @@ Proof.
unfold nextblock, incrPC. Simpl. rewrite H0 in EVAL'. clear H0.
destruct c0; simpl; auto;
unfold eval_branch; rewrite <- H; rewrite EVAL'; auto.
- + exploit (loadimm64_correct RTMP n); eauto. intros (rs' & A & B & C).
- exploit (transl_compl_correct c0 x RTMP lbl); eauto. intros (rs'2 & A' & B' & C').
+ + exploit (transl_compil_correct c0 x n lbl); eauto. intros (rs'2 & A' & B' & C').
exists rs'2, (Pcb BTwnez RTMP lbl).
split.
- * constructor. apply exec_straight_trans
- with (c2 := (transl_compl c0 Signed x RTMP lbl k)) (rs2 := rs') (m2 := m').
- eexact A. eexact A'.
+ * constructor. eexact A'.
* split; auto.
- { apply C'; auto. rewrite B, C; eauto with asmgen. }
- { intros. rewrite B'; eauto with asmgen. }
+ { apply C'; auto. }
(* Ccompluimm *)
- remember (select_compl n c0) as selcomp.
@@ -990,22 +1095,18 @@ Proof.
split.
* apply A.
* split; eauto. (* apply C. apply EVAL'. *)
- + assert (transl_opt_compluimm n c0 x lbl k = loadimm64 RTMP n ::g transl_compl c0 Unsigned x RTMP lbl k).
+ + assert (transl_opt_compluimm n c0 x lbl k = transl_compil c0 Unsigned x n lbl k).
{ unfold transl_opt_compluimm.
destruct (Int64.eq n Int64.zero) eqn:EQN.
all: unfold select_compl in Heqselcomp; rewrite EQN in Heqselcomp; destruct c0; simpl in *; auto.
all: discriminate. }
rewrite H. clear H.
- exploit (loadimm64_correct RTMP n); eauto. intros (rs' & A & B & C).
- exploit (transl_complu_correct c0 x RTMP lbl); eauto. intros (rs'2 & A' & B' & C').
+ exploit (transl_compilu_correct c0 x n lbl); eauto. intros (rs'2 & A' & B' & C').
exists rs'2, (Pcb BTwnez RTMP lbl).
split.
- * constructor. apply exec_straight_trans
- with (c2 := (transl_compl c0 Unsigned x RTMP lbl k)) (rs2 := rs') (m2 := m').
- eexact A. eexact A'.
+ * constructor. eexact A'.
* split; auto.
- { apply C'; auto. rewrite B, C; eauto with asmgen. }
- { intros. rewrite B'; eauto with asmgen. }
+ { apply C'; auto. eapply Val_cmplu_bool_correct; eauto. }
(* Ccompf *)
- exploit (transl_compf_correct c0 x x0 lbl); eauto. intros (rs' & A & B & C).
diff --git a/mppa_k1c/Asmexpand.ml b/mppa_k1c/Asmexpand.ml
index db0ddd29..65dee6c7 100644
--- a/mppa_k1c/Asmexpand.ml
+++ b/mppa_k1c/Asmexpand.ml
@@ -23,7 +23,6 @@ open Asm
open Asmexpandaux
open AST
open Camlcoq
-open !Integers
exception Error of string
@@ -141,26 +140,77 @@ let get_builtin_arg dst arg =
| BA_splitlong _ -> failwith "get_builtin_arg: BA_splitlong"
| BA_addptr _ -> failwith "get_builtin_arg: BA_addptr";;
+let smart_memcpy = true
+
(* FIXME DMonniaux this is really suboptimal (byte per byte) *)
let expand_builtin_memcpy_big sz al src dst =
assert (sz > Z.zero);
let dstptr = Asmvliw.GPR62
and srcptr = Asmvliw.GPR63
- and tmpbuf = Asmvliw.GPR61 in
+ and tmpbuf = Asmvliw.GPR61
+ and tmpbuf2 = Asmvliw.R60R61
+ and caml_sz = camlint64_of_coqint sz in
get_builtin_arg dstptr dst;
get_builtin_arg srcptr src;
- emit (Pmake (tmpbuf, sz));
- emit Psemi;
- let lbl = new_label() in
- emit (Ploopdo (tmpbuf, lbl));
- emit Psemi;
- emit (Plb (tmpbuf, srcptr, AOff Z.zero));
- emit (Paddil (srcptr, srcptr, Z.one));
- emit Psemi;
- emit (Psb (tmpbuf, dstptr, AOff Z.zero));
- emit (Paddil (dstptr, dstptr, Z.one));
- emit Psemi;
- emit (Plabel lbl);;
+ let caml_sz_div16 = Int64.shift_right caml_sz 4
+ and sixteen = coqint_of_camlint64 16L in
+ if smart_memcpy
+ then
+ let remaining = ref caml_sz
+ and offset = ref 0L in
+ let cpy buf size load store =
+ (if !remaining >= size
+ then
+ let zofs = coqint_of_camlint64 !offset in
+ begin
+ emit Psemi;
+ emit (load buf srcptr (AOff zofs));
+ emit Psemi;
+ emit (store buf dstptr (AOff zofs));
+ remaining := Int64.sub !remaining size;
+ offset := Int64.add !offset size
+ end) in
+ begin
+ (if caml_sz_div16 >= 2L
+ then
+ begin
+ emit (Pmake (tmpbuf, (coqint_of_camlint64 caml_sz_div16)));
+ emit Psemi;
+ let lbl = new_label() in
+ emit (Ploopdo (tmpbuf, lbl));
+ emit Psemi;
+ emit (Plq (tmpbuf2, srcptr, AOff Z.zero));
+ emit (Paddil (srcptr, srcptr, sixteen));
+ emit Psemi;
+ emit (Psq (tmpbuf2, dstptr, AOff Z.zero));
+ emit (Paddil (dstptr, dstptr, sixteen));
+ emit Psemi;
+ emit (Plabel lbl);
+ remaining := Int64.sub !remaining (Int64.shift_left caml_sz_div16 4)
+ end);
+
+ cpy tmpbuf2 16L (fun x y z -> Plq(x, y, z)) (fun x y z -> Psq(x, y, z));
+ cpy tmpbuf 8L (fun x y z -> Pld(x, y, z)) (fun x y z -> Psd(x, y, z));
+ cpy tmpbuf 4L (fun x y z -> Plw(x, y, z)) (fun x y z -> Psw(x, y, z));
+ cpy tmpbuf 2L (fun x y z -> Plh(x, y, z)) (fun x y z -> Psh(x, y, z));
+ cpy tmpbuf 1L (fun x y z -> Plb(x, y, z)) (fun x y z -> Psb(x, y, z));
+ assert (!remaining = 0L)
+ end
+ else
+ begin
+ emit (Pmake (tmpbuf, sz));
+ emit Psemi;
+ let lbl = new_label() in
+ emit (Ploopdo (tmpbuf, lbl));
+ emit Psemi;
+ emit (Plb (tmpbuf, srcptr, AOff Z.zero));
+ emit (Paddil (srcptr, srcptr, Z.one));
+ emit Psemi;
+ emit (Psb (tmpbuf, dstptr, AOff Z.zero));
+ emit (Paddil (dstptr, dstptr, Z.one));
+ emit Psemi;
+ emit (Plabel lbl);
+ end;;
let expand_builtin_memcpy sz al args =
match args with
@@ -185,7 +235,7 @@ let expand_builtin_vload_common chunk base ofs res =
| Mint64, BR(Asmvliw.IR res) ->
emit (Pld (res, base, AOff ofs))
| Mint64, BR_splitlong(BR(Asmvliw.IR res1), BR(Asmvliw.IR res2)) ->
- let ofs' = Ptrofs.add ofs _4 in
+ let ofs' = Integers.Ptrofs.add ofs _4 in
if base <> res2 then begin
emit (Plw (res2, base, AOff ofs));
emit (Plw (res1, base, AOff ofs'))
@@ -223,7 +273,7 @@ let expand_builtin_vstore_common chunk base ofs src =
| Mint64, BA(Asmvliw.IR src) ->
emit (Psd (src, base, AOff ofs))
| Mint64, BA_splitlong(BA(Asmvliw.IR src1), BA(Asmvliw.IR src2)) ->
- let ofs' = Ptrofs.add ofs _4 in
+ let ofs' = Integers.Ptrofs.add ofs _4 in
emit (Psw (src2, base, AOff ofs));
emit (Psw (src1, base, AOff ofs'))
| Mfloat32, BA(Asmvliw.IR src) ->
@@ -267,7 +317,7 @@ let save_arguments first_reg base_ofs = let open Asmvliw in
expand_storeind_ptr
int_param_regs.(i)
GPR12
- (Ptrofs.repr (Z.add base_ofs (Z.of_uint ((i - first_reg) * wordsize))));
+ (Integers.Ptrofs.repr (Z.add base_ofs (Z.of_uint ((i - first_reg) * wordsize))));
emit Psemi
end done
@@ -278,9 +328,9 @@ match !vararg_start_ofs with
| None ->
invalid_arg "Fatal error: va_start used in non-vararg function"
| Some ofs ->
- expand_addptrofs Asmvliw.GPR32 stack_pointer (Ptrofs.repr ofs);
+ expand_addptrofs Asmvliw.GPR32 stack_pointer (Integers.Ptrofs.repr ofs);
emit Psemi;
- expand_storeind_ptr Asmvliw.GPR32 r Ptrofs.zero
+ expand_storeind_ptr Asmvliw.GPR32 r Integers.Ptrofs.zero
(* Auxiliary for 64-bit integer arithmetic built-ins. They expand to
two instructions, one computing the low 32 bits of the result,
@@ -449,7 +499,7 @@ let expand_instruction instr =
let n = arguments_size sg in
let extra_sz = if n >= _nbregargs_ then 0 else (* align _alignment_ *) ((_nbregargs_ - n) * wordsize) in
let full_sz = Z.add sz (Z.of_uint extra_sz) in
- expand_addptrofs stack_pointer stack_pointer (Ptrofs.repr (Z.neg full_sz));
+ expand_addptrofs stack_pointer stack_pointer (Integers.Ptrofs.repr (Z.neg full_sz));
emit Psemi;
expand_storeind_ptr Asmvliw.GPR17 stack_pointer ofs;
emit Psemi;
@@ -459,9 +509,9 @@ let expand_instruction instr =
vararg_start_ofs := Some va_ofs;
save_arguments n va_ofs
end else begin
- let below = Ptrofs.repr (Z.neg sz) in
+ let below = Integers.Ptrofs.repr (Z.neg sz) in
expand_addptrofs stack_pointer stack_pointer below;
- expand_storeind_ptr stack_pointer stack_pointer (Ptrofs.add ofs below);
+ expand_storeind_ptr stack_pointer stack_pointer (Integers.Ptrofs.add ofs below);
(* DM we don't need it emit Psemi; *)
vararg_start_ofs := None
end
@@ -472,7 +522,7 @@ let expand_instruction instr =
let n = arguments_size sg in
if n >= _nbregargs_ then 0 else (* align _alignment_ *) ((_nbregargs_ - n) * wordsize)
end else 0 in
- expand_addptrofs stack_pointer stack_pointer (Ptrofs.repr (Z.add sz (Z.of_uint extra_sz)))
+ expand_addptrofs stack_pointer stack_pointer (Integers.Ptrofs.repr (Z.add sz (Z.of_uint extra_sz)))
(*| Pseqw(rd, rs1, rs2) ->
(* emulate based on the fact that x == 0 iff x <u 1 (unsigned cmp) *)
@@ -504,7 +554,7 @@ let expand_instruction instr =
end
*)| Pcvtl2w (rd, rs) ->
assert Archi.ptr64;
- emit (Paddiw (rd, rs, Int.zero)) (* 32-bit sign extension *)
+ emit (Paddiw (rd, rs, Integers.Int.zero)) (* 32-bit sign extension *)
(*| Pjal_r(r, sg) ->
fixup_call sg; emit instr
diff --git a/mppa_k1c/Machregs.v b/mppa_k1c/Machregs.v
index ee85fb1c..cd8c6606 100644
--- a/mppa_k1c/Machregs.v
+++ b/mppa_k1c/Machregs.v
@@ -167,7 +167,10 @@ Fixpoint destroyed_by_clobber (cl: list string): list mreg :=
Definition destroyed_by_builtin (ef: external_function): list mreg :=
match ef with
| EF_inline_asm txt sg clob => destroyed_by_clobber clob
- | EF_memcpy sz al => R62 :: R63 :: R61 :: nil
+ | EF_memcpy sz al =>
+ if Z.leb sz 15
+ then R62 :: R63 :: R61 :: nil
+ else R62 :: R63 :: R61 :: R60 :: nil
| _ => nil
end.
diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml
index d92e55ac..114297c9 100644
--- a/mppa_k1c/TargetPrinter.ml
+++ b/mppa_k1c/TargetPrinter.ml
@@ -347,45 +347,45 @@ module Target (*: TARGET*) =
| Pwfxm(n, dst) ->
fprintf oc " wfxm $s%ld = %a\n" (camlint_of_coqint n) ireg dst
| Pldu(dst, addr) ->
- fprintf oc " ld.u %a = 0[%a]\n" ireg dst ireg addr
+ fprintf oc " ld.u %a = 0[%a]\n" ireg dst ireg addr
| Plbzu(dst, addr) ->
- fprintf oc " lbz.u %a = 0[%a]\n" ireg dst ireg addr
+ fprintf oc " lbz.u %a = 0[%a]\n" ireg dst ireg addr
| Plhzu(dst, addr) ->
- fprintf oc " lhz.u %a = 0[%a]\n" ireg dst ireg addr
+ fprintf oc " lhz.u %a = 0[%a]\n" ireg dst ireg addr
| Plwzu(dst, addr) ->
- fprintf oc " lwz.u %a = 0[%a]\n" ireg dst ireg addr
+ fprintf oc " lwz.u %a = 0[%a]\n" ireg dst ireg addr
| Pawait ->
- fprintf oc " await\n"
+ fprintf oc " await\n"
| Psleep ->
- fprintf oc " sleep\n"
+ fprintf oc " sleep\n"
| Pstop ->
- fprintf oc " stop\n"
+ fprintf oc " stop\n"
| Pbarrier ->
- fprintf oc " barrier\n"
+ fprintf oc " barrier\n"
| Pfence ->
- fprintf oc " fence\n"
+ fprintf oc " fence\n"
| Pdinval ->
- fprintf oc " dinval\n"
+ fprintf oc " dinval\n"
| Pdinvall addr ->
- fprintf oc " dinvall 0[%a]\n" ireg addr
+ fprintf oc " dinvall 0[%a]\n" ireg addr
| Pdtouchl addr ->
- fprintf oc " dtouchl 0[%a]\n" ireg addr
+ fprintf oc " dtouchl 0[%a]\n" ireg addr
| Piinval ->
- fprintf oc " iinval\n"
+ fprintf oc " iinval\n"
| Piinvals addr ->
- fprintf oc " iinvals 0[%a]\n" ireg addr
+ fprintf oc " iinvals 0[%a]\n" ireg addr
| Pitouchl addr ->
- fprintf oc " itouchl 0[%a]\n" ireg addr
+ fprintf oc " itouchl 0[%a]\n" ireg addr
| Pdzerol addr ->
- fprintf oc " dzerol 0[%a]\n" ireg addr
+ fprintf oc " dzerol 0[%a]\n" ireg addr
| Pafaddd(addr, incr_res) ->
- fprintf oc " afaddd 0[%a] = %a\n" ireg addr ireg incr_res
+ fprintf oc " afaddd 0[%a] = %a\n" ireg addr ireg incr_res
| Pafaddw(addr, incr_res) ->
- fprintf oc " afaddw 0[%a] = %a\n" ireg addr ireg incr_res
+ fprintf oc " afaddw 0[%a] = %a\n" ireg addr ireg incr_res
| Palclrd(res, addr) ->
- fprintf oc " alclrd %a = 0[%a]\n" ireg res ireg addr
+ fprintf oc " alclrd %a = 0[%a]\n" ireg res ireg addr
| Palclrw(res, addr) ->
- fprintf oc " alclrw %a = 0[%a]\n" ireg res ireg addr
+ fprintf oc " alclrw %a = 0[%a]\n" ireg res ireg addr
| Pjumptable (idx_reg, tbl) ->
let lbl = new_label() in
(* jumptables := (lbl, tbl) :: !jumptables; *)
diff --git a/test/monniaux/lustre-convertible-2cgc/convertible_main.c b/test/monniaux/lustre-convertible-2cgc/convertible_main.c
new file mode 100644
index 00000000..285f8941
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/convertible_main.c
@@ -0,0 +1,1085 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+#include "convertible_main.h"
+//// Defining step functions
+// Memory initialisation for Lustre_arrow_ctx
+void Lustre_arrow_ctx_reset(Lustre_arrow_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_ctx
+void Lustre_arrow_ctx_init(Lustre_arrow_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_ctx
+void Lustre_arrow_step(_integer i1,_integer i2,_integer *out,Lustre_arrow_ctx_type* ctx){ *out = ((ctx->_memory)? i1 : i2);
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_step
+
+// Memory initialisation for Lustre_arrow_2_ctx
+void Lustre_arrow_2_ctx_reset(Lustre_arrow_2_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_2_ctx
+void Lustre_arrow_2_ctx_init(Lustre_arrow_2_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_2_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_2_ctx
+void Lustre_arrow_2_step(_real i1,_real i2,_real *out,Lustre_arrow_2_ctx_type* ctx){ *out = ((ctx->_memory)? i1 : i2);
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_2_step
+
+// Memory initialisation for Lustre_arrow_3_ctx
+void Lustre_arrow_3_ctx_reset(Lustre_arrow_3_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_3_ctx
+void Lustre_arrow_3_ctx_init(Lustre_arrow_3_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_3_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_3_ctx
+void Lustre_arrow_3_step(_real i1[50],_real i2[50],_real out[50]/*out*/,Lustre_arrow_3_ctx_type* ctx){ _assign_rp50(out, ((ctx->_memory)? i1 : i2), sizeof(_real [50]));
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_3_step
+
+// Step function(s) for Lustre_hat_ctx
+void Lustre_hat_step(_real i1,_real out[50]/*out*/){
+ out[0] = i1;
+ out[1] = i1;
+ out[2] = i1;
+ out[3] = i1;
+ out[4] = i1;
+ out[5] = i1;
+ out[6] = i1;
+ out[7] = i1;
+ out[8] = i1;
+ out[9] = i1;
+ out[10] = i1;
+ out[11] = i1;
+ out[12] = i1;
+ out[13] = i1;
+ out[14] = i1;
+ out[15] = i1;
+ out[16] = i1;
+ out[17] = i1;
+ out[18] = i1;
+ out[19] = i1;
+ out[20] = i1;
+ out[21] = i1;
+ out[22] = i1;
+ out[23] = i1;
+ out[24] = i1;
+ out[25] = i1;
+ out[26] = i1;
+ out[27] = i1;
+ out[28] = i1;
+ out[29] = i1;
+ out[30] = i1;
+ out[31] = i1;
+ out[32] = i1;
+ out[33] = i1;
+ out[34] = i1;
+ out[35] = i1;
+ out[36] = i1;
+ out[37] = i1;
+ out[38] = i1;
+ out[39] = i1;
+ out[40] = i1;
+ out[41] = i1;
+ out[42] = i1;
+ out[43] = i1;
+ out[44] = i1;
+ out[45] = i1;
+ out[46] = i1;
+ out[47] = i1;
+ out[48] = i1;
+ out[49] = i1;
+
+} // End of Lustre_hat_step
+
+// Memory initialisation for Lustre_pre_ctx
+void Lustre_pre_ctx_reset(Lustre_pre_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_ctx
+void Lustre_pre_ctx_init(Lustre_pre_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_ctx
+void Lustre_pre_get(_integer *out,Lustre_pre_ctx_type* ctx){
+ *out = ctx->_memory;
+
+} // End of Lustre_pre_get
+
+void Lustre_pre_set(_integer i1,Lustre_pre_ctx_type* ctx){
+ ctx->_memory = i1;
+
+} // End of Lustre_pre_set
+
+// Memory initialisation for Lustre_pre_2_ctx
+void Lustre_pre_2_ctx_reset(Lustre_pre_2_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_2_ctx
+void Lustre_pre_2_ctx_init(Lustre_pre_2_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_2_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_2_ctx
+void Lustre_pre_2_get(_real *out,Lustre_pre_2_ctx_type* ctx){
+ *out = ctx->_memory;
+
+} // End of Lustre_pre_2_get
+
+void Lustre_pre_2_set(_real i1,Lustre_pre_2_ctx_type* ctx){
+ ctx->_memory = i1;
+
+} // End of Lustre_pre_2_set
+
+// Memory initialisation for Lustre_pre_3_ctx
+void Lustre_pre_3_ctx_reset(Lustre_pre_3_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_3_ctx
+void Lustre_pre_3_ctx_init(Lustre_pre_3_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_3_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_3_ctx
+void Lustre_pre_3_get(_real out[50]/*out*/,Lustre_pre_3_ctx_type* ctx){
+ _assign_rp50(out, ctx->_memory, sizeof(_real [50]));
+
+} // End of Lustre_pre_3_get
+
+void Lustre_pre_3_set(_real i1[50],Lustre_pre_3_ctx_type* ctx){
+ _assign_rp50(ctx->_memory, i1, sizeof(_real [50]));
+
+} // End of Lustre_pre_3_set
+
+// Step function(s) for Lustre_slash_ctx
+void Lustre_slash_step(_real i1,_real i2,_real *out){
+ *out = (i1 / i2);
+
+} // End of Lustre_slash_step
+
+// Step function(s) for assign_50_ctx
+void assign_50_step(_real v,_integer jv,_real t[50],_real nt[50]/*out*/){
+ convertible_update_acc _split_3;
+ convertible_update_acc dummy;
+
+ _split_3.i = 0;
+ _split_3.j = jv;
+ _split_3.v = v;
+ fillred_update_cell_do_50_step(_split_3,t,&dummy,nt);
+
+} // End of assign_50_step
+
+// Step function(s) for convertible_abs_ctx
+void convertible_abs_step(_real x,_real *y){
+ _real _split_2;
+ _boolean _split_1;
+
+ _split_2 = - x;
+ _split_1 = x >= 0.0;
+ if (_split_1 == _true) {
+ *y = x;
+ } else {
+ *y = _split_2;
+ }
+
+} // End of convertible_abs_step
+
+// Step function(s) for convertible_braking_time_ctx
+void convertible_braking_time_step(_real Speed,_real *res){
+ _real _split_4;
+
+ _split_4 = Speed * Speed;
+ Lustre_slash_step(_split_4,5500.0,res);
+
+} // End of convertible_braking_time_step
+
+// Memory initialisation for convertible_main_ctx
+void convertible_main_ctx_reset(convertible_main_ctx_type* ctx){
+ int _i;
+
+ convertible_vehicle_ctx_reset(&ctx->convertible_vehicle_ctx_tab[0]);
+ convertible_speed_kmh_ctx_reset(&ctx->convertible_speed_kmh_ctx_tab[0]);
+ convertible_roof_ctx_reset(&ctx->convertible_roof_ctx_tab[0]);
+ convertible_may_collide_ctx_reset(&ctx->convertible_may_collide_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of convertible_main_ctx
+void convertible_main_ctx_init(convertible_main_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_main_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_main_ctx
+void convertible_main_step(_boolean Start,_boolean Parked,_boolean Rot,_boolean Tick,_boolean OnOff,_boolean Done,_real Dist,_boolean *Danger,_boolean *Locked,_real *Speed,_real *Roof_Speed,convertible_main_ctx_type* ctx){ _boolean _split_7;
+ _real _split_6;
+ _real _split_5;
+ _integer St;
+ _boolean _split_8;
+ _boolean _split_9;
+
+ _split_8 = OnOff & Start;
+ _split_9 = ! _split_8;
+ convertible_roof_step(Tick,Parked,OnOff,Done,Locked,Roof_Speed,&ctx->convertible_roof_ctx_tab[0]);
+ convertible_speed_kmh_step(Rot,Tick,Speed,&ctx->convertible_speed_kmh_ctx_tab[0]);
+ convertible_vehicle_step(Start,*Locked,*Speed,Dist,&St,&ctx->convertible_vehicle_ctx_tab[0]);
+ switch (St){
+ case convertible_anti_col:
+ _split_6 = Dist;
+ _split_5 = *Speed;
+ convertible_may_collide_step(_split_5,_split_6,&_split_7,&ctx->convertible_may_collide_ctx_tab[0]);
+ *Danger = _split_7;
+ break;
+ case convertible_run:
+ *Danger = _false;
+ break;
+ case convertible_stationnary:
+ *Danger = _false;
+ break;
+}
+
+} // End of convertible_main_step
+
+// Step function(s) for convertible_maxr_ctx
+void convertible_maxr_step(_real x,_real y,_real *res){
+ _boolean _split_10;
+
+ _split_10 = x < y;
+ if (_split_10 == _true) {
+ *res = y;
+ } else {
+ *res = x;
+ }
+
+} // End of convertible_maxr_step
+
+// Memory initialisation for convertible_may_collide_ctx
+void convertible_may_collide_ctx_reset(convertible_may_collide_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of convertible_may_collide_ctx
+void convertible_may_collide_ctx_init(convertible_may_collide_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_may_collide_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_may_collide_ctx
+void convertible_may_collide_step(_real Speed,_real Dist,_boolean *Res,convertible_may_collide_ctx_type* ctx){ _real _split_17;
+ _real _split_16;
+ _real _split_15;
+ _real _split_14;
+ _real _split_13;
+ _real _split_12;
+ _real _split_11;
+ _real Accel;
+ _real tChoc;
+ _real tBrake;
+
+ Lustre_pre_2_get(&_split_11,&ctx->Lustre_pre_2_ctx_tab[0]);
+ _split_12 = Speed - _split_11;
+ Lustre_slash_step(_split_12,0.1,&_split_13);
+ Lustre_pre_2_set(Speed,&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_arrow_2_step(0.0,_split_13,&Accel,&ctx->Lustre_arrow_2_ctx_tab[0]);
+ convertible_braking_time_step(Speed,&tBrake);
+ _split_15 = - 2.0;
+ _split_16 = _split_15 * Dist;
+ _split_14 = 2.0 * Speed;
+ convertible_solve_eq_d2_step(Accel,_split_14,_split_16,&tChoc);
+ _split_17 = 2.0 + tBrake;
+ *Res = tChoc < _split_17;
+
+} // End of convertible_may_collide_step
+
+// Step function(s) for convertible_ms_to_kmh_ctx
+void convertible_ms_to_kmh_step(_real x,_real *res){
+
+ *res = x * 3.6;
+
+} // End of convertible_ms_to_kmh_step
+
+// Memory initialisation for convertible_roof_ctx
+void convertible_roof_ctx_reset(convertible_roof_ctx_type* ctx){
+ int _i;
+
+ convertible_roof_speed_ctx_reset(&ctx->convertible_roof_speed_ctx_tab[0]);
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of convertible_roof_ctx
+void convertible_roof_ctx_init(convertible_roof_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_roof_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_roof_ctx
+void convertible_roof_step(_boolean Tick,_boolean Parked,_boolean OnOff,_boolean Done,_boolean *Locked,_real *Roof_Speed,convertible_roof_ctx_type* ctx){ _real _split_25;
+ _real _split_24;
+ _integer _split_23;
+ _boolean _split_22;
+ _integer _split_21;
+ _boolean _split_20;
+ _boolean _split_19;
+ _integer _split_18;
+ _integer pst;
+ _integer st;
+ _boolean Tick_on_in_motion;
+
+ Lustre_pre_get(&_split_18,&ctx->Lustre_pre_ctx_tab[0]);
+ switch (pst){
+ case convertible_in_motion:
+ _split_22 = Done;
+ if (_split_22 == _true) {
+ _split_23 = convertible_locked;
+ } else {
+ _split_23 = convertible_in_motion;
+ }
+ st = _split_23;
+ break;
+}
+ _split_19 = OnOff & Parked;
+ switch (pst){
+ case convertible_locked:
+ _split_20 = _split_19;
+ if (_split_20 == _true) {
+ _split_21 = convertible_in_motion;
+ } else {
+ _split_21 = convertible_locked;
+ }
+ st = _split_21;
+ break;
+}
+ Lustre_pre_set(st,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_step(convertible_locked,_split_18,&pst,&ctx->Lustre_arrow_ctx_tab[0]);
+ *Locked = st == convertible_locked;
+ switch (st){
+ case convertible_in_motion:
+ Tick_on_in_motion = Tick;
+ convertible_roof_speed_step(Tick_on_in_motion,&_split_25,&ctx->convertible_roof_speed_ctx_tab[0]);
+ *Roof_Speed = _split_25;
+ break;
+ case convertible_locked:
+ _split_24 = 0.0;
+ *Roof_Speed = _split_24;
+ break;
+}
+
+} // End of convertible_roof_step
+
+// Memory initialisation for convertible_roof_speed_ctx
+void convertible_roof_speed_ctx_reset(convertible_roof_speed_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[0]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[1]);
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of convertible_roof_speed_ctx
+void convertible_roof_speed_ctx_init(convertible_roof_speed_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_roof_speed_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_roof_speed_ctx
+void convertible_roof_speed_step(_boolean Tick,_real *Roof_Speed,convertible_roof_speed_ctx_type* ctx){ _real _split_48;
+ _real _split_47;
+ _real _split_46;
+ _real _split_45;
+ _real _split_44;
+ _real _split_43;
+ _real _split_42;
+ _real _split_41;
+ _real _split_40;
+ _real _split_39;
+ _real _split_38;
+ _real _split_37;
+ _real _split_36;
+ _real _split_35;
+ _real _split_34;
+ _real _split_33;
+ _integer _split_32;
+ _boolean _split_31;
+ _real _split_30;
+ _integer _split_29;
+ _boolean _split_28;
+ _real _split_27;
+ _integer _split_26;
+ _integer pst;
+ _integer st;
+ _real kh;
+ _real Roof_Percent;
+ _real pRoof_Percent;
+ _real slow_it_down;
+ _real pRoof_Speed;
+
+ switch (Tick){
+ case _true:
+ Lustre_pre_get(&_split_26,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_pre_2_get(&_split_33,&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_arrow_2_step(0.0,_split_33,&pRoof_Percent,&ctx->Lustre_arrow_2_ctx_tab[0]);
+ switch (pst){
+ case convertible_fast:
+ _split_27 = pRoof_Percent;
+ _split_28 = _split_27 < 85.0;
+ if (_split_28 == _true) {
+ _split_29 = convertible_fast;
+ } else {
+ _split_29 = convertible_slow;
+ }
+ st = _split_29;
+ break;
+ case convertible_slow:
+ _split_30 = pRoof_Percent;
+ _split_31 = _split_30 < 100.0;
+ if (_split_31 == _true) {
+ _split_32 = convertible_slow;
+ } else {
+ _split_32 = convertible_wait;
+ }
+ st = _split_32;
+ break;
+ case convertible_wait:
+ st = convertible_fast;
+ break;
+}
+ Lustre_pre_set(st,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_step(convertible_wait,_split_26,&pst,&ctx->Lustre_arrow_ctx_tab[0]);
+ Lustre_slash_step(5.,0.1,&_split_38);
+ Lustre_slash_step(100.,_split_38,&kh);
+ _split_43 = kh + pRoof_Percent;
+ switch (st){
+ case convertible_fast:
+ _split_44 = _split_43;
+ Roof_Percent = _split_44;
+ break;
+ case convertible_slow:
+ _split_47 = pRoof_Percent;
+ _split_34 = pRoof_Percent;
+ _split_35 = 100.0 - _split_34;
+ Lustre_slash_step(_split_35,5.0,&_split_36);
+ convertible_sqrt_step(_split_36,&_split_37);
+ convertible_sqrt_step(_split_37,&slow_it_down);
+ _split_45 = kh;
+ _split_46 = slow_it_down * _split_45;
+ _split_48 = _split_46 + _split_47;
+ Roof_Percent = _split_48;
+ break;
+ case convertible_wait:
+ Roof_Percent = 0.0;
+ break;
+}
+ Lustre_pre_2_set(Roof_Percent,&ctx->Lustre_pre_2_ctx_tab[0]);
+ break;
+}
+ Lustre_pre_2_get(&_split_39,&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_arrow_2_step(0.0,_split_39,&pRoof_Speed,&ctx->Lustre_arrow_2_ctx_tab[1]);
+ switch (Tick){
+ case _false:
+ _split_40 = pRoof_Speed;
+ *Roof_Speed = _split_40;
+ break;
+ case _true:
+ switch (st){
+ case convertible_fast:
+ _split_42 = 10.0;
+ break;
+ case convertible_slow:
+ _split_41 = 10.0 * slow_it_down;
+ _split_42 = _split_41;
+ break;
+ case convertible_wait:
+ _split_42 = 0.0;
+ break;
+}
+ *Roof_Speed = _split_42;
+ break;
+}
+ Lustre_pre_2_set(*Roof_Speed,&ctx->Lustre_pre_2_ctx_tab[1]);
+
+} // End of convertible_roof_speed_step
+
+// Step function(s) for convertible_solve_eq_d2_ctx
+void convertible_solve_eq_d2_step(_real a,_real b,_real c,_real *res){
+ _real _split_77;
+ _real _split_76;
+ _real _split_75;
+ _real _split_74;
+ _real _split_73;
+ _real _split_72;
+ _real _split_71;
+ _real _split_70;
+ _real _split_69;
+ _real _split_68;
+ _real _split_67;
+ _real _split_66;
+ _real _split_65;
+ _real _split_64;
+ _real _split_63;
+ _real _split_62;
+ _real _split_61;
+ _real _split_60;
+ _real _split_59;
+ _integer _split_58;
+ _integer _split_57;
+ _boolean _split_56;
+ _boolean _split_55;
+ _integer _split_54;
+ _boolean _split_53;
+ _boolean _split_52;
+ _real _split_51;
+ _real _split_50;
+ _real _split_49;
+ _real delta;
+ _integer sol_nb;
+ _real a2;
+ _real b2;
+ _real delta_pos;
+
+ _split_50 = 4.0 * a;
+ _split_51 = _split_50 * c;
+ _split_49 = b * b;
+ delta = _split_49 - _split_51;
+ _split_56 = delta == 0.0;
+ if (_split_56 == _true) {
+ _split_57 = convertible_one_sol;
+ } else {
+ _split_57 = convertible_two_sol;
+ }
+ _split_55 = delta < 0.0;
+ if (_split_55 == _true) {
+ _split_58 = convertible_no_sol;
+ } else {
+ _split_58 = _split_57;
+ }
+ _split_53 = b == 0.0;
+ if (_split_53 == _true) {
+ _split_54 = convertible_no_sol;
+ } else {
+ _split_54 = convertible_deg1;
+ }
+ _split_52 = a == 0.0;
+ if (_split_52 == _true) {
+ sol_nb = _split_54;
+ } else {
+ sol_nb = _split_58;
+ }
+ switch (sol_nb){
+ case convertible_two_sol:
+ delta_pos = delta;
+ a2 = a;
+ b2 = b;
+ convertible_sqrt_step(delta_pos,&_split_68);
+ _split_69 = 2.0 * a2;
+ Lustre_slash_step(_split_68,_split_69,&_split_70);
+ _split_67 = - b2;
+ _split_71 = _split_67 + _split_70;
+ convertible_sqrt_step(delta_pos,&_split_73);
+ _split_74 = 2.0 * a2;
+ Lustre_slash_step(_split_73,_split_74,&_split_75);
+ _split_72 = - b2;
+ _split_76 = _split_72 - _split_75;
+ convertible_maxr_step(_split_71,_split_76,&_split_77);
+ break;
+}
+ _split_63 = - b;
+ _split_64 = 2.0 * a;
+ Lustre_slash_step(_split_63,_split_64,&_split_65);
+ switch (sol_nb){
+ case convertible_one_sol:
+ _split_66 = _split_65;
+ break;
+}
+ _split_60 = - c;
+ Lustre_slash_step(_split_60,b,&_split_61);
+ switch (sol_nb){
+ case convertible_deg1:
+ _split_62 = _split_61;
+ *res = _split_62;
+ break;
+ case convertible_no_sol:
+ _split_59 = - 1.0;
+ *res = _split_59;
+ break;
+ case convertible_two_sol:
+ *res = _split_77;
+ break;
+ case convertible_one_sol:
+ *res = _split_66;
+ break;
+}
+
+} // End of convertible_solve_eq_d2_step
+
+// Memory initialisation for convertible_speed_kmh_ctx
+void convertible_speed_kmh_ctx_reset(convertible_speed_kmh_ctx_type* ctx){
+ int _i;
+
+ sum_50_0d1_ctx_reset(&ctx->sum_50_0d1_ctx_tab[0]);
+ sum_50_0d0_ctx_reset(&ctx->sum_50_0d0_ctx_tab[0]);
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[2]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[0]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[1]);
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[2]);
+}
+
+// Initialisation of the internal structure of convertible_speed_kmh_ctx
+void convertible_speed_kmh_ctx_init(convertible_speed_kmh_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_speed_kmh_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_speed_kmh_ctx
+void convertible_speed_kmh_step(_boolean Rot,_boolean Tick,_real *Speed,convertible_speed_kmh_ctx_type* ctx){ _real _split_89;
+ _real _split_88;
+ _real _split_87;
+ _real _split_86;
+ _real _split_85;
+ _real _split_84;
+ _real _split_83;
+ _real _split_82;
+ _real _split_81;
+ _real _split_80;
+ _real _split_79;
+ _real _split_78;
+ _real d;
+ _real t;
+ _real pd;
+ _real pt;
+ _real dx;
+ _real tx;
+ _boolean TickOrRot;
+
+ if (Rot == _true) {
+ dx = 1.4;
+ } else {
+ dx = 0.0;
+ }
+ if (Tick == _true) {
+ tx = 0.1;
+ } else {
+ tx = 0.0;
+ }
+ TickOrRot = Tick | Rot;
+ Lustre_pre_2_get(&_split_78,&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_arrow_2_step(0.0,_split_78,&pd,&ctx->Lustre_arrow_2_ctx_tab[0]);
+ switch (TickOrRot){
+ case _false:
+ _split_80 = pd;
+ d = _split_80;
+ break;
+ case _true:
+ _split_81 = dx;
+ sum_50_0d0_step(_split_81,&_split_82,&ctx->sum_50_0d0_ctx_tab[0]);
+ d = _split_82;
+ break;
+}
+ Lustre_pre_2_set(d,&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_pre_2_get(&_split_79,&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_arrow_2_step(0.0,_split_79,&pt,&ctx->Lustre_arrow_2_ctx_tab[1]);
+ switch (TickOrRot){
+ case _false:
+ _split_85 = pt;
+ _split_86 = _split_85;
+ break;
+ case _true:
+ _split_83 = tx;
+ sum_50_0d1_step(_split_83,&_split_84,&ctx->sum_50_0d1_ctx_tab[0]);
+ _split_86 = _split_84;
+ break;
+}
+ convertible_maxr_step(0.1,_split_86,&t);
+ Lustre_pre_2_set(t,&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_pre_2_get(&_split_89,&ctx->Lustre_pre_2_ctx_tab[2]);
+ Lustre_slash_step(d,t,&_split_87);
+ convertible_ms_to_kmh_step(_split_87,&_split_88);
+ Lustre_pre_2_set(_split_88,&ctx->Lustre_pre_2_ctx_tab[2]);
+ Lustre_arrow_2_step(0.0,_split_89,Speed,&ctx->Lustre_arrow_2_ctx_tab[2]);
+
+} // End of convertible_speed_kmh_step
+
+// Step function(s) for convertible_sqrt_ctx
+void convertible_sqrt_step(_real R,_real *Sqrt){
+
+ squareR_5_step(R,1.0,Sqrt);
+
+} // End of convertible_sqrt_step
+
+// Memory initialisation for convertible_vehicle_ctx
+void convertible_vehicle_ctx_reset(convertible_vehicle_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of convertible_vehicle_ctx
+void convertible_vehicle_ctx_init(convertible_vehicle_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_vehicle_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_vehicle_ctx
+void convertible_vehicle_step(_boolean Start,_boolean Locked,_real Speed,_real Dist,_integer *st,convertible_vehicle_ctx_type* ctx){ _integer _split_149;
+ _boolean _split_148;
+ _boolean _split_147;
+ _integer _split_146;
+ _integer _split_145;
+ _boolean _split_144;
+ _boolean _split_143;
+ _boolean _split_142;
+ _integer _split_141;
+ _boolean _split_140;
+ _boolean _split_139;
+ _integer _split_138;
+ _integer pst;
+ _boolean ac_cond;
+
+ Lustre_pre_get(&_split_138,&ctx->Lustre_pre_ctx_tab[0]);
+ ac_cond = Speed >= 110.0;
+ switch (pst){
+ case convertible_anti_col:
+ _split_147 = ac_cond;
+ _split_148 = ! _split_147;
+ if (_split_148 == _true) {
+ _split_149 = convertible_run;
+ } else {
+ _split_149 = convertible_anti_col;
+ }
+ *st = _split_149;
+ break;
+}
+ _split_143 = Speed == 0.0;
+ switch (pst){
+ case convertible_run:
+ _split_144 = _split_143;
+ if (_split_144 == _true) {
+ _split_145 = convertible_stationnary;
+ } else {
+ _split_145 = convertible_run;
+ }
+ _split_142 = ac_cond;
+ if (_split_142 == _true) {
+ _split_146 = convertible_anti_col;
+ } else {
+ _split_146 = _split_145;
+ }
+ *st = _split_146;
+ break;
+}
+ _split_139 = Start & Locked;
+ switch (pst){
+ case convertible_stationnary:
+ _split_140 = _split_139;
+ if (_split_140 == _true) {
+ _split_141 = convertible_run;
+ } else {
+ _split_141 = convertible_stationnary;
+ }
+ *st = _split_141;
+ break;
+}
+ Lustre_pre_set(*st,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_step(convertible_stationnary,_split_138,&pst,&ctx->Lustre_arrow_ctx_tab[0]);
+
+} // End of convertible_vehicle_step
+
+// Step function(s) for fillred_update_cell_do_50_ctx
+void fillred_update_cell_do_50_step(convertible_update_acc acc,_real cell[50],convertible_update_acc *nacc,_real ncell[50]/*out*/){
+ int _i;
+ for (_i=0 ; _i<49 ; _i+=2){
+ update_cell_do_50_step(acc,cell[_i],&acc,&ncell[_i]);
+ update_cell_do_50_step(acc,cell[_i+1],&acc,&ncell[_i+1]);
+ }
+ *nacc = acc;
+
+} // End of fillred_update_cell_do_50_step
+
+// Step function(s) for red_rplus_50_real_ctx
+void red_rplus_50_real_step(_real i1,_real i2[50],_real *out){
+ int _i;
+ for (_i=0 ; _i<49 ; _i+=2){
+ i1 = i1 + i2[_i];
+ i1 = i1 + i2[_i+1];
+ }
+ *out = i1;
+
+} // End of red_rplus_50_real_step
+
+// Step function(s) for squareR_1_ctx
+void squareR_1_step(_real x,_real presqrt,_real *Sqrt){
+ _real _split_93;
+ _real _split_92;
+ _real _split_91;
+ _real _split_90;
+ _real sqrt;
+ _boolean ecart;
+
+ Lustre_slash_step(x,presqrt,&_split_92);
+ _split_93 = presqrt + _split_92;
+ sqrt = 0.5 * _split_93;
+ _split_90 = presqrt - sqrt;
+ convertible_abs_step(_split_90,&_split_91);
+ ecart = _split_91 < 0.0005;
+ *Sqrt = sqrt;
+
+} // End of squareR_1_step
+
+// Step function(s) for squareR_2_ctx
+void squareR_2_step(_real x,_real presqrt,_real *Sqrt){
+ _real _split_101;
+ _real _split_100;
+ _real _split_99;
+ _real _split_98;
+ _real _split_97;
+ _real _split_96;
+ _real _split_95;
+ _real _split_94;
+ _real sqrt;
+ _boolean ecart;
+
+ Lustre_slash_step(x,presqrt,&_split_96);
+ _split_97 = presqrt + _split_96;
+ sqrt = 0.5 * _split_97;
+ _split_94 = presqrt - sqrt;
+ convertible_abs_step(_split_94,&_split_95);
+ ecart = _split_95 < 0.0005;
+ switch (ecart){
+ case _true:
+ _split_101 = sqrt;
+ *Sqrt = _split_101;
+ break;
+ case _false:
+ _split_99 = sqrt;
+ _split_98 = x;
+ squareR_1_step(_split_98,_split_99,&_split_100);
+ *Sqrt = _split_100;
+ break;
+}
+
+} // End of squareR_2_step
+
+// Step function(s) for squareR_3_ctx
+void squareR_3_step(_real x,_real presqrt,_real *Sqrt){
+ _real _split_109;
+ _real _split_108;
+ _real _split_107;
+ _real _split_106;
+ _real _split_105;
+ _real _split_104;
+ _real _split_103;
+ _real _split_102;
+ _real sqrt;
+ _boolean ecart;
+
+ Lustre_slash_step(x,presqrt,&_split_104);
+ _split_105 = presqrt + _split_104;
+ sqrt = 0.5 * _split_105;
+ _split_102 = presqrt - sqrt;
+ convertible_abs_step(_split_102,&_split_103);
+ ecart = _split_103 < 0.0005;
+ switch (ecart){
+ case _true:
+ _split_109 = sqrt;
+ *Sqrt = _split_109;
+ break;
+ case _false:
+ _split_107 = sqrt;
+ _split_106 = x;
+ squareR_2_step(_split_106,_split_107,&_split_108);
+ *Sqrt = _split_108;
+ break;
+}
+
+} // End of squareR_3_step
+
+// Step function(s) for squareR_4_ctx
+void squareR_4_step(_real x,_real presqrt,_real *Sqrt){
+ _real _split_117;
+ _real _split_116;
+ _real _split_115;
+ _real _split_114;
+ _real _split_113;
+ _real _split_112;
+ _real _split_111;
+ _real _split_110;
+ _real sqrt;
+ _boolean ecart;
+
+ Lustre_slash_step(x,presqrt,&_split_112);
+ _split_113 = presqrt + _split_112;
+ sqrt = 0.5 * _split_113;
+ _split_110 = presqrt - sqrt;
+ convertible_abs_step(_split_110,&_split_111);
+ ecart = _split_111 < 0.0005;
+ switch (ecart){
+ case _true:
+ _split_117 = sqrt;
+ *Sqrt = _split_117;
+ break;
+ case _false:
+ _split_115 = sqrt;
+ _split_114 = x;
+ squareR_3_step(_split_114,_split_115,&_split_116);
+ *Sqrt = _split_116;
+ break;
+}
+
+} // End of squareR_4_step
+
+// Step function(s) for squareR_5_ctx
+void squareR_5_step(_real x,_real presqrt,_real *Sqrt){
+ _real _split_125;
+ _real _split_124;
+ _real _split_123;
+ _real _split_122;
+ _real _split_121;
+ _real _split_120;
+ _real _split_119;
+ _real _split_118;
+ _real sqrt;
+ _boolean ecart;
+
+ Lustre_slash_step(x,presqrt,&_split_120);
+ _split_121 = presqrt + _split_120;
+ sqrt = 0.5 * _split_121;
+ _split_118 = presqrt - sqrt;
+ convertible_abs_step(_split_118,&_split_119);
+ ecart = _split_119 < 0.0005;
+ switch (ecart){
+ case _true:
+ _split_125 = sqrt;
+ *Sqrt = _split_125;
+ break;
+ case _false:
+ _split_123 = sqrt;
+ _split_122 = x;
+ squareR_4_step(_split_122,_split_123,&_split_124);
+ *Sqrt = _split_124;
+ break;
+}
+
+} // End of squareR_5_step
+
+// Memory initialisation for sum_50_0d0_ctx
+void sum_50_0d0_ctx_reset(sum_50_0d0_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_3_ctx_reset(&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_3_ctx_reset(&ctx->Lustre_arrow_3_ctx_tab[0]);
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of sum_50_0d0_ctx
+void sum_50_0d0_ctx_init(sum_50_0d0_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ sum_50_0d0_ctx_reset(ctx);
+ }
+// Step function(s) for sum_50_0d0_ctx
+void sum_50_0d0_step(_real s,_real *res,sum_50_0d0_ctx_type* ctx){ _integer _split_130;
+ _real _split_129[50];
+ _real _split_128[50];
+ _integer _split_127;
+ _integer _split_126;
+ _real a[50];
+ _real pre_a[50];
+ _integer i;
+
+ Lustre_pre_get(&_split_126,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_step(0,_split_126,&_split_127,&ctx->Lustre_arrow_ctx_tab[0]);
+ i = _split_127 + 1;
+ Lustre_pre_set(i,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_pre_3_get(_split_129,&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_hat_step(0.0,_split_128);
+ Lustre_arrow_3_step(_split_128,_split_129,pre_a,&ctx->Lustre_arrow_3_ctx_tab[0]);
+ _split_130 = i % 50;
+ assign_50_step(s,_split_130,pre_a,a);
+ Lustre_pre_3_set(a,&ctx->Lustre_pre_3_ctx_tab[0]);
+ red_rplus_50_real_step(0.0,a,res);
+
+} // End of sum_50_0d0_step
+
+// Memory initialisation for sum_50_0d1_ctx
+void sum_50_0d1_ctx_reset(sum_50_0d1_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_3_ctx_reset(&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_3_ctx_reset(&ctx->Lustre_arrow_3_ctx_tab[0]);
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[0]);
+}
+
+// Initialisation of the internal structure of sum_50_0d1_ctx
+void sum_50_0d1_ctx_init(sum_50_0d1_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ sum_50_0d1_ctx_reset(ctx);
+ }
+// Step function(s) for sum_50_0d1_ctx
+void sum_50_0d1_step(_real s,_real *res,sum_50_0d1_ctx_type* ctx){ _integer _split_135;
+ _real _split_134[50];
+ _real _split_133[50];
+ _integer _split_132;
+ _integer _split_131;
+ _real a[50];
+ _real pre_a[50];
+ _integer i;
+
+ Lustre_pre_get(&_split_131,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_arrow_step(0,_split_131,&_split_132,&ctx->Lustre_arrow_ctx_tab[0]);
+ i = _split_132 + 1;
+ Lustre_pre_set(i,&ctx->Lustre_pre_ctx_tab[0]);
+ Lustre_pre_3_get(_split_134,&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_hat_step(0.1,_split_133);
+ Lustre_arrow_3_step(_split_133,_split_134,pre_a,&ctx->Lustre_arrow_3_ctx_tab[0]);
+ _split_135 = i % 50;
+ assign_50_step(s,_split_135,pre_a,a);
+ Lustre_pre_3_set(a,&ctx->Lustre_pre_3_ctx_tab[0]);
+ red_rplus_50_real_step(0.0,a,res);
+
+} // End of sum_50_0d1_step
+
+// Step function(s) for update_cell_do_50_ctx
+void update_cell_do_50_step(convertible_update_acc acc,_real cell,convertible_update_acc *nacc,_real *ncell){
+ _integer _split_137;
+ _boolean _split_136;
+
+ _split_136 = acc.i == acc.j;
+ if (_split_136 == _true) {
+ *ncell = acc.v;
+ } else {
+ *ncell = cell;
+ }
+ _split_137 = acc.i + 1;
+ nacc->i = _split_137;
+ nacc->j = acc.j;
+ nacc->v = acc.v;
+
+} // End of update_cell_do_50_step
+
diff --git a/test/monniaux/lustre-convertible-2cgc/convertible_main.h b/test/monniaux/lustre-convertible-2cgc/convertible_main.h
new file mode 100644
index 00000000..63b4ea90
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/convertible_main.h
@@ -0,0 +1,110 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "lustre_types.h"
+#include "lustre_consts.h"
+
+#ifndef _convertible_main_H_FILE
+#define _convertible_main_H_FILE
+void Lustre_arrow_ctx_reset(Lustre_arrow_ctx_type* ctx);
+void Lustre_arrow_ctx_init(Lustre_arrow_ctx_type* ctx);
+void Lustre_arrow_step(_integer ,_integer ,_integer *,Lustre_arrow_ctx_type*);
+
+void Lustre_arrow_2_ctx_reset(Lustre_arrow_2_ctx_type* ctx);
+void Lustre_arrow_2_ctx_init(Lustre_arrow_2_ctx_type* ctx);
+void Lustre_arrow_2_step(_real ,_real ,_real *,Lustre_arrow_2_ctx_type*);
+
+void Lustre_arrow_3_ctx_reset(Lustre_arrow_3_ctx_type* ctx);
+void Lustre_arrow_3_ctx_init(Lustre_arrow_3_ctx_type* ctx);
+void Lustre_arrow_3_step(_real [50],_real [50],_real [50]/*out*/,Lustre_arrow_3_ctx_type*);
+
+void Lustre_hat_step(_real ,_real [50]/*out*/);
+
+void Lustre_pre_ctx_reset(Lustre_pre_ctx_type* ctx);
+void Lustre_pre_ctx_init(Lustre_pre_ctx_type* ctx);
+void Lustre_pre_get(_integer *,Lustre_pre_ctx_type*);
+
+void Lustre_pre_set(_integer ,Lustre_pre_ctx_type*);
+
+void Lustre_pre_2_ctx_reset(Lustre_pre_2_ctx_type* ctx);
+void Lustre_pre_2_ctx_init(Lustre_pre_2_ctx_type* ctx);
+void Lustre_pre_2_get(_real *,Lustre_pre_2_ctx_type*);
+
+void Lustre_pre_2_set(_real ,Lustre_pre_2_ctx_type*);
+
+void Lustre_pre_3_ctx_reset(Lustre_pre_3_ctx_type* ctx);
+void Lustre_pre_3_ctx_init(Lustre_pre_3_ctx_type* ctx);
+void Lustre_pre_3_get(_real [50]/*out*/,Lustre_pre_3_ctx_type*);
+
+void Lustre_pre_3_set(_real [50],Lustre_pre_3_ctx_type*);
+
+void Lustre_slash_step(_real ,_real ,_real *);
+
+void assign_50_step(_real ,_integer ,_real [50],_real [50]/*out*/);
+
+void convertible_abs_step(_real ,_real *);
+
+void convertible_braking_time_step(_real ,_real *);
+
+void convertible_main_ctx_reset(convertible_main_ctx_type* ctx);
+void convertible_main_ctx_init(convertible_main_ctx_type* ctx);
+void convertible_main_step(_boolean ,_boolean ,_boolean ,_boolean ,_boolean ,_boolean ,_real ,_boolean *,_boolean *,_real *,_real *,convertible_main_ctx_type*);
+
+void convertible_maxr_step(_real ,_real ,_real *);
+
+void convertible_may_collide_ctx_reset(convertible_may_collide_ctx_type* ctx);
+void convertible_may_collide_ctx_init(convertible_may_collide_ctx_type* ctx);
+void convertible_may_collide_step(_real ,_real ,_boolean *,convertible_may_collide_ctx_type*);
+
+void convertible_ms_to_kmh_step(_real ,_real *);
+
+void convertible_roof_ctx_reset(convertible_roof_ctx_type* ctx);
+void convertible_roof_ctx_init(convertible_roof_ctx_type* ctx);
+void convertible_roof_step(_boolean ,_boolean ,_boolean ,_boolean ,_boolean *,_real *,convertible_roof_ctx_type*);
+
+void convertible_roof_speed_ctx_reset(convertible_roof_speed_ctx_type* ctx);
+void convertible_roof_speed_ctx_init(convertible_roof_speed_ctx_type* ctx);
+void convertible_roof_speed_step(_boolean ,_real *,convertible_roof_speed_ctx_type*);
+
+void convertible_solve_eq_d2_step(_real ,_real ,_real ,_real *);
+
+void convertible_speed_kmh_ctx_reset(convertible_speed_kmh_ctx_type* ctx);
+void convertible_speed_kmh_ctx_init(convertible_speed_kmh_ctx_type* ctx);
+void convertible_speed_kmh_step(_boolean ,_boolean ,_real *,convertible_speed_kmh_ctx_type*);
+
+void convertible_sqrt_step(_real ,_real *);
+
+void convertible_vehicle_ctx_reset(convertible_vehicle_ctx_type* ctx);
+void convertible_vehicle_ctx_init(convertible_vehicle_ctx_type* ctx);
+void convertible_vehicle_step(_boolean ,_boolean ,_real ,_real ,_integer *,convertible_vehicle_ctx_type*);
+
+void fillred_update_cell_do_50_step(convertible_update_acc ,_real [50],convertible_update_acc *,_real [50]/*out*/);
+
+void red_rplus_50_real_step(_real ,_real [50],_real *);
+
+void squareR_1_step(_real ,_real ,_real *);
+
+void squareR_2_step(_real ,_real ,_real *);
+
+void squareR_3_step(_real ,_real ,_real *);
+
+void squareR_4_step(_real ,_real ,_real *);
+
+void squareR_5_step(_real ,_real ,_real *);
+
+void sum_50_0d0_ctx_reset(sum_50_0d0_ctx_type* ctx);
+void sum_50_0d0_ctx_init(sum_50_0d0_ctx_type* ctx);
+void sum_50_0d0_step(_real ,_real *,sum_50_0d0_ctx_type*);
+
+void sum_50_0d1_ctx_reset(sum_50_0d1_ctx_type* ctx);
+void sum_50_0d1_ctx_init(sum_50_0d1_ctx_type* ctx);
+void sum_50_0d1_step(_real ,_real *,sum_50_0d1_ctx_type*);
+
+void update_cell_do_50_step(convertible_update_acc ,_real ,convertible_update_acc *,_real *);
+
+/////////////////////////////////////////////////
+#endif
diff --git a/test/monniaux/lustre-convertible-2cgc/convertible_main_loop.c b/test/monniaux/lustre-convertible-2cgc/convertible_main_loop.c
new file mode 100644
index 00000000..9aa52cad
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/convertible_main_loop.c
@@ -0,0 +1,91 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdint.h>
+#include "convertible_main.h"
+#include "../clock.h"
+
+/* MACROS DEFINITIONS ****************/
+#ifndef TT
+#define TT "1"
+#endif
+#ifndef FF
+#define FF "0"
+#endif
+#ifndef BB
+#define BB "bottom"
+#endif
+#ifdef CKCHECK
+/* set this macro for testing output clocks */
+#endif
+
+static uint32_t dm_random_uint32(void) {
+ static uint32_t current=UINT32_C(0xDEADBEEF);
+ current = ((uint64_t) current << 6) % UINT32_C(4294967291);
+ return current;
+}
+
+/* Standard Input procedures **************/
+_boolean _get_bool(char* n){
+ return dm_random_uint32() & 1;
+}
+/*
+_integer _get_int(char* n){
+ return (_integer) (dm_random_uint32() % 21) - 10;
+}
+*/
+_real _get_real(char* n){
+ return ((_integer) (dm_random_uint32() % 2000001) - 1000000)*1E-6;
+}
+/* Output procedures **********************/
+void convertible_main_O_n(void* cdata, _integer _V) {
+}
+
+/* Main procedure *************************/
+int main(){
+ int _s = 0;
+ _boolean Start;
+ _boolean Parked;
+ _boolean Rot;
+ _boolean Tick;
+ _boolean OnOff;
+ _boolean Done;
+ _real Dist;
+ _boolean Danger;
+ _boolean Locked;
+ _real Speed;
+ _real Roof_Speed;
+ convertible_main_ctx_type ctx_struct;
+ convertible_main_ctx_type* ctx = &ctx_struct;
+ convertible_main_ctx_init(ctx);
+ // printf("#inputs \"Start\":bool \"Parked\":bool \"Rot\":bool \"Tick\":bool \"OnOff\":bool \"Done\":bool \"Dist\":real\n");
+ // printf("#outputs \"Danger\":bool \"Locked\":bool \"Speed\":real \"Roof_Speed\":real\n");
+
+ /* Main loop */
+ clock_prepare();
+ clock_start();
+
+ for(int count=0; count<1000; count++){
+ ++_s;
+ Start = _get_bool("Start");
+ Parked = _get_bool("Parked");
+ Rot = _get_bool("Rot");
+ Tick = _get_bool("Tick");
+ OnOff = _get_bool("OnOff");
+ Done = _get_bool("Done");
+ Dist = _get_real("Dist");
+ convertible_main_step(Start,Parked,Rot,Tick,OnOff,Done,Dist,&Danger,&Locked,&Speed,&Roof_Speed,ctx);
+ // printf("%d %d %d %d %d %d %f #outs %d %d %f %f\n",Start,Parked,Rot,Tick,OnOff,Done,Dist,Danger,Locked,Speed,Roof_Speed);
+ // printf("%d %d %f %f\n",Danger,Locked,Speed,Roof_Speed);
+ }
+
+ clock_stop();
+ print_total_clock();
+
+ return 0;
+
+}
diff --git a/test/monniaux/lustre-convertible-2cgc/lustre_consts.c b/test/monniaux/lustre-convertible-2cgc/lustre_consts.c
new file mode 100644
index 00000000..925cbf0b
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/lustre_consts.c
@@ -0,0 +1,4 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+#include "lustre_consts.h" \ No newline at end of file
diff --git a/test/monniaux/lustre-convertible-2cgc/lustre_consts.h b/test/monniaux/lustre-convertible-2cgc/lustre_consts.h
new file mode 100644
index 00000000..a9ba2005
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/lustre_consts.h
@@ -0,0 +1,23 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+
+// Constant definitions
+#define convertible_anti_col 2
+#define convertible_deg1 1
+#define convertible_fast 1
+#define convertible_in_motion 1
+#define convertible_k 5500.0
+#define convertible_locked 0
+#define convertible_max_roof_speed 10.0
+#define convertible_no_sol 0
+#define convertible_one_sol 2
+#define convertible_period 0.1
+#define convertible_run 1
+#define convertible_size 50
+#define convertible_slow 2
+#define convertible_speed_max 110.0
+#define convertible_stationnary 0
+#define convertible_two_sol 3
+#define convertible_wait 0
+#define convertible_wheel_girth 1.4
diff --git a/test/monniaux/lustre-convertible-2cgc/lustre_types.h b/test/monniaux/lustre-convertible-2cgc/lustre_types.h
new file mode 100644
index 00000000..83a1c722
--- /dev/null
+++ b/test/monniaux/lustre-convertible-2cgc/lustre_types.h
@@ -0,0 +1,139 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+
+#ifndef _SOC2C_PREDEF_TYPES
+#define _SOC2C_PREDEF_TYPES
+typedef int _boolean;
+typedef int _integer;
+typedef char* _string;
+typedef double _real;
+typedef double _double;
+typedef float _float;
+#define _false 0
+#define _true 1
+#endif
+// end of _SOC2C_PREDEF_TYPES
+// User typedef
+#ifndef _convertible_main_TYPES
+#define _convertible_main_TYPES
+typedef _integer convertible_eq_case;
+typedef _integer convertible_roof_speed_state;
+typedef _integer convertible_roof_state;
+typedef struct {
+ _integer i;
+ _integer j;
+ _real v;
+ } convertible_update_acc;
+typedef _integer convertible_vehicle_state;
+#endif // enf of _convertible_main_TYPES
+// Memoryless soc ctx typedef
+// Memoryfull soc ctx typedef
+/* Lustre_pre_ctx */
+typedef struct {
+ /*Memory cell*/
+ _integer _memory ;
+} Lustre_pre_ctx_type;
+
+/* Lustre_arrow_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_ctx_type;
+
+/* Lustre_pre_2_ctx */
+typedef struct {
+ /*Memory cell*/
+ _real _memory ;
+} Lustre_pre_2_ctx_type;
+
+/* Lustre_arrow_2_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_2_ctx_type;
+
+/* convertible_roof_speed_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_2_ctx_type Lustre_pre_2_ctx_tab[2];
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[1];
+ Lustre_arrow_2_ctx_type Lustre_arrow_2_ctx_tab[2];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[1];
+} convertible_roof_speed_ctx_type;
+
+/* convertible_roof_ctx */
+typedef struct {
+ /*INSTANCES*/
+ convertible_roof_speed_ctx_type convertible_roof_speed_ctx_tab[1];
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[1];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[1];
+} convertible_roof_ctx_type;
+
+/* Lustre_pre_3_ctx */
+typedef struct {
+ /*Memory cell*/
+ _real _memory[50] ;
+} Lustre_pre_3_ctx_type;
+
+/* Lustre_arrow_3_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_3_ctx_type;
+
+/* sum_50_0d0_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_3_ctx_type Lustre_pre_3_ctx_tab[1];
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[1];
+ Lustre_arrow_3_ctx_type Lustre_arrow_3_ctx_tab[1];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[1];
+} sum_50_0d0_ctx_type;
+
+/* sum_50_0d1_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_3_ctx_type Lustre_pre_3_ctx_tab[1];
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[1];
+ Lustre_arrow_3_ctx_type Lustre_arrow_3_ctx_tab[1];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[1];
+} sum_50_0d1_ctx_type;
+
+/* convertible_speed_kmh_ctx */
+typedef struct {
+ /*INSTANCES*/
+ sum_50_0d1_ctx_type sum_50_0d1_ctx_tab[1];
+ sum_50_0d0_ctx_type sum_50_0d0_ctx_tab[1];
+ Lustre_pre_2_ctx_type Lustre_pre_2_ctx_tab[3];
+ Lustre_arrow_2_ctx_type Lustre_arrow_2_ctx_tab[3];
+} convertible_speed_kmh_ctx_type;
+
+/* convertible_vehicle_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[1];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[1];
+} convertible_vehicle_ctx_type;
+
+/* convertible_may_collide_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_2_ctx_type Lustre_pre_2_ctx_tab[1];
+ Lustre_arrow_2_ctx_type Lustre_arrow_2_ctx_tab[1];
+} convertible_may_collide_ctx_type;
+
+/* convertible_main_ctx */
+typedef struct {
+ /*INSTANCES*/
+ convertible_vehicle_ctx_type convertible_vehicle_ctx_tab[1];
+ convertible_speed_kmh_ctx_type convertible_speed_kmh_ctx_tab[1];
+ convertible_roof_ctx_type convertible_roof_ctx_tab[1];
+ convertible_may_collide_ctx_type convertible_may_collide_ctx_tab[1];
+} convertible_main_ctx_type;
+
+// Defining array and extern types assignments
+
+#ifndef _assign_rp50
+#define _assign_rp50(dest, source, size) memcpy(dest, source, size)
+#endif
diff --git a/test/monniaux/lustre-convertible-en-2cgc/convertible_main.c b/test/monniaux/lustre-convertible-en-2cgc/convertible_main.c
new file mode 100644
index 00000000..4dc333dd
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/convertible_main.c
@@ -0,0 +1,3319 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2c -en -2cgc -n main convertible.lus */
+/* on vanoise the 09/05/2019 at 15:28:26 */
+#include "convertible_main.h"
+
+#define DM_INLINE inline
+
+//// Defining step functions
+// Memory initialisation for Lustre_arrow_2_ctx
+DM_INLINE void Lustre_arrow_2_ctx_reset(Lustre_arrow_2_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_2_ctx
+DM_INLINE void Lustre_arrow_2_ctx_init(Lustre_arrow_2_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_2_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_2_ctx
+DM_INLINE void Lustre_arrow_2_step(_integer i1,_integer i2,_integer *out,Lustre_arrow_2_ctx_type* ctx){ *out = ((ctx->_memory)? i1 : i2);
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_2_step
+
+// Memory initialisation for Lustre_arrow_ctx
+DM_INLINE void Lustre_arrow_ctx_reset(Lustre_arrow_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_ctx
+DM_INLINE void Lustre_arrow_ctx_init(Lustre_arrow_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_ctx
+DM_INLINE void Lustre_arrow_step(_real i1,_real i2,_real *out,Lustre_arrow_ctx_type* ctx){ *out = ((ctx->_memory)? i1 : i2);
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_step
+
+// Memory initialisation for Lustre_arrow_3_ctx
+DM_INLINE void Lustre_arrow_3_ctx_reset(Lustre_arrow_3_ctx_type* ctx){
+ int _i;
+ ctx->_memory = _true;
+}
+
+// Initialisation of the internal structure of Lustre_arrow_3_ctx
+DM_INLINE void Lustre_arrow_3_ctx_init(Lustre_arrow_3_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_arrow_3_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_arrow_3_ctx
+DM_INLINE void Lustre_arrow_3_step(_real i1[50],_real i2[50],_real out[50]/*out*/,Lustre_arrow_3_ctx_type* ctx){ _assign_rp50(out, ((ctx->_memory)? i1 : i2), sizeof(_real [50]));
+ ctx->_memory = _false;
+
+} // End of Lustre_arrow_3_step
+
+// Step function(s) for Lustre_hat_ctx
+void Lustre_hat_step(_real i1,_real out[50]/*out*/){
+ out[0] = i1;
+ out[1] = i1;
+ out[2] = i1;
+ out[3] = i1;
+ out[4] = i1;
+ out[5] = i1;
+ out[6] = i1;
+ out[7] = i1;
+ out[8] = i1;
+ out[9] = i1;
+ out[10] = i1;
+ out[11] = i1;
+ out[12] = i1;
+ out[13] = i1;
+ out[14] = i1;
+ out[15] = i1;
+ out[16] = i1;
+ out[17] = i1;
+ out[18] = i1;
+ out[19] = i1;
+ out[20] = i1;
+ out[21] = i1;
+ out[22] = i1;
+ out[23] = i1;
+ out[24] = i1;
+ out[25] = i1;
+ out[26] = i1;
+ out[27] = i1;
+ out[28] = i1;
+ out[29] = i1;
+ out[30] = i1;
+ out[31] = i1;
+ out[32] = i1;
+ out[33] = i1;
+ out[34] = i1;
+ out[35] = i1;
+ out[36] = i1;
+ out[37] = i1;
+ out[38] = i1;
+ out[39] = i1;
+ out[40] = i1;
+ out[41] = i1;
+ out[42] = i1;
+ out[43] = i1;
+ out[44] = i1;
+ out[45] = i1;
+ out[46] = i1;
+ out[47] = i1;
+ out[48] = i1;
+ out[49] = i1;
+
+} // End of Lustre_hat_step
+
+// Memory initialisation for Lustre_pre_2_ctx
+DM_INLINE void Lustre_pre_2_ctx_reset(Lustre_pre_2_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_2_ctx
+DM_INLINE void Lustre_pre_2_ctx_init(Lustre_pre_2_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_2_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_2_ctx
+DM_INLINE void Lustre_pre_2_get(_integer *out,Lustre_pre_2_ctx_type* ctx){
+ *out = ctx->_memory;
+
+} // End of Lustre_pre_2_get
+
+DM_INLINE void Lustre_pre_2_set(_integer i1,Lustre_pre_2_ctx_type* ctx){
+ ctx->_memory = i1;
+
+} // End of Lustre_pre_2_set
+
+// Memory initialisation for Lustre_pre_ctx
+DM_INLINE void Lustre_pre_ctx_reset(Lustre_pre_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_ctx
+DM_INLINE void Lustre_pre_ctx_init(Lustre_pre_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_ctx
+DM_INLINE void Lustre_pre_get(_real *out,Lustre_pre_ctx_type* ctx){
+ *out = ctx->_memory;
+
+} // End of Lustre_pre_get
+
+DM_INLINE void Lustre_pre_set(_real i1,Lustre_pre_ctx_type* ctx){
+ ctx->_memory = i1;
+
+} // End of Lustre_pre_set
+
+// Memory initialisation for Lustre_pre_3_ctx
+DM_INLINE void Lustre_pre_3_ctx_reset(Lustre_pre_3_ctx_type* ctx){
+ int _i;
+
+}
+
+// Initialisation of the internal structure of Lustre_pre_3_ctx
+DM_INLINE void Lustre_pre_3_ctx_init(Lustre_pre_3_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ Lustre_pre_3_ctx_reset(ctx);
+ }
+// Step function(s) for Lustre_pre_3_ctx
+DM_INLINE void Lustre_pre_3_get(_real out[50]/*out*/,Lustre_pre_3_ctx_type* ctx){
+ _assign_rp50(out, ctx->_memory, sizeof(_real [50]));
+
+} // End of Lustre_pre_3_get
+
+DM_INLINE void Lustre_pre_3_set(_real i1[50],Lustre_pre_3_ctx_type* ctx){
+ _assign_rp50(ctx->_memory, i1, sizeof(_real [50]));
+
+} // End of Lustre_pre_3_set
+
+// Step function(s) for Lustre_slash_ctx
+DM_INLINE void Lustre_slash_step(_real i1,_real i2,_real *out){
+ *out = (i1 / i2);
+
+} // End of Lustre_slash_step
+
+// Memory initialisation for convertible_main_ctx
+void convertible_main_ctx_reset(convertible_main_ctx_type* ctx){
+ int _i;
+
+ Lustre_pre_3_ctx_reset(&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_pre_3_ctx_reset(&ctx->Lustre_pre_3_ctx_tab[1]); for (_i=0 ; _i<6 ; _i+=1){
+ Lustre_pre_ctx_reset(&ctx->Lustre_pre_ctx_tab[_i]);
+ } for (_i=0 ; _i<5 ; _i+=1){
+ Lustre_pre_2_ctx_reset(&ctx->Lustre_pre_2_ctx_tab[_i]);
+ }
+ Lustre_arrow_3_ctx_reset(&ctx->Lustre_arrow_3_ctx_tab[0]);
+ Lustre_arrow_3_ctx_reset(&ctx->Lustre_arrow_3_ctx_tab[1]); for (_i=0 ; _i<6 ; _i+=1){
+ Lustre_arrow_ctx_reset(&ctx->Lustre_arrow_ctx_tab[_i]);
+ } for (_i=0 ; _i<5 ; _i+=1){
+ Lustre_arrow_2_ctx_reset(&ctx->Lustre_arrow_2_ctx_tab[_i]);
+ }
+}
+
+// Initialisation of the internal structure of convertible_main_ctx
+void convertible_main_ctx_init(convertible_main_ctx_type* ctx){
+ // ctx->client_data = cdata;
+ convertible_main_ctx_reset(ctx);
+ }
+// Step function(s) for convertible_main_ctx
+void convertible_main_step(_boolean Start,_boolean Parked,_boolean Rot,_boolean Tick,_boolean OnOff,_boolean Done,_real Dist,_boolean *Danger,_boolean *Locked,_real *Speed,_real *Roof_Speed,convertible_main_ctx_type* ctx){ _boolean _Tick_on_in_motion_1;
+ _integer _st_2;
+ _integer _pst_3;
+ _integer __split_18_1;
+ _boolean __split_19_1;
+ _boolean __split_20_1;
+ _integer __split_21_1;
+ _boolean __split_22_1;
+ _integer __split_23_1;
+ _real __split_24_1;
+ _real __split_25_1;
+ _real ____presqrt_5_4_1_1;
+ _boolean ______split_1_5_1_4_1_1;
+ _real ______split_2_5_1_4_1_1;
+ _boolean _____ecart_4_1_4_1_1;
+ _real _____sqrt_4_1_4_1_1;
+ _real ______split_110_1_1_4_1_1;
+ _real ______split_111_1_1_4_1_1;
+ _real ______split_112_1_1_4_1_1;
+ _real ______split_113_1_1_4_1_1;
+ _real ______split_114_1_1_4_1_1;
+ _real ______split_115_1_1_4_1_1;
+ _real ______split_116_1_1_4_1_1;
+ _real ______split_117_1_1_4_1_1;
+ _boolean ________split_1_3_1_1_1_4_1_1;
+ _real ________split_2_3_1_1_1_4_1_1;
+ _boolean _______ecart_2_1_1_1_4_1_1;
+ _real _______sqrt_2_1_1_1_4_1_1;
+ _real ________split_94_1_1_1_1_4_1_1;
+ _real ________split_95_1_1_1_1_4_1_1;
+ _real ________split_96_1_1_1_1_4_1_1;
+ _real ________split_97_1_1_1_1_4_1_1;
+ _real ________split_98_1_1_1_1_4_1_1;
+ _real ________split_99_1_1_1_1_4_1_1;
+ _real ________split_101_1_1_1_1_4_1_1;
+ _boolean __________split_1_1_1_1_1_1_1_4_1_1;
+ _real __________split_2_1_1_1_1_1_1_4_1_1;
+ _real _________split_93_1_1_1_1_1_4_1_1;
+ _real _________split_92_1_1_1_1_1_4_1_1;
+ _real _________split_91_1_1_1_1_1_4_1_1;
+ _real _________split_90_1_1_1_1_1_4_1_1;
+ _real ________sqrt_1_1_1_1_1_4_1_1;
+ _boolean ________ecart_1_1_1_1_1_4_1_1;
+ _real _________split_2_2_1_1_1_1_4_1_1;
+ _boolean _________split_1_2_1_1_1_1_4_1_1;
+ _real _______split_109_1_1_1_4_1_1;
+ _real _______split_108_1_1_1_4_1_1;
+ _real _______split_107_1_1_1_4_1_1;
+ _real _______split_106_1_1_1_4_1_1;
+ _real _______split_105_1_1_1_4_1_1;
+ _real _______split_104_1_1_1_4_1_1;
+ _real _______split_103_1_1_1_4_1_1;
+ _real _______split_102_1_1_1_4_1_1;
+ _real ______sqrt_3_1_1_4_1_1;
+ _boolean ______ecart_3_1_1_4_1_1;
+ _real _______split_2_4_1_1_4_1_1;
+ _boolean _______split_1_4_1_1_4_1_1;
+ _real _____split_125_1_4_1_1;
+ _real _____split_124_1_4_1_1;
+ _real _____split_123_1_4_1_1;
+ _real _____split_122_1_4_1_1;
+ _real _____split_121_1_4_1_1;
+ _real _____split_120_1_4_1_1;
+ _real _____split_119_1_4_1_1;
+ _real _____split_118_1_4_1_1;
+ _real ____sqrt_5_4_1_1;
+ _boolean ____ecart_5_4_1_1;
+ _real ____presqrt_5_3_1_1;
+ _boolean ______split_1_5_1_3_1_1;
+ _real ______split_2_5_1_3_1_1;
+ _boolean _____ecart_4_1_3_1_1;
+ _real _____sqrt_4_1_3_1_1;
+ _real ______split_110_1_1_3_1_1;
+ _real ______split_111_1_1_3_1_1;
+ _real ______split_112_1_1_3_1_1;
+ _real ______split_113_1_1_3_1_1;
+ _real ______split_114_1_1_3_1_1;
+ _real ______split_115_1_1_3_1_1;
+ _real ______split_116_1_1_3_1_1;
+ _real ______split_117_1_1_3_1_1;
+ _boolean ________split_1_3_1_1_1_3_1_1;
+ _real ________split_2_3_1_1_1_3_1_1;
+ _boolean _______ecart_2_1_1_1_3_1_1;
+ _real _______sqrt_2_1_1_1_3_1_1;
+ _real ________split_94_1_1_1_1_3_1_1;
+ _real ________split_95_1_1_1_1_3_1_1;
+ _real ________split_96_1_1_1_1_3_1_1;
+ _real ________split_97_1_1_1_1_3_1_1;
+ _real ________split_98_1_1_1_1_3_1_1;
+ _real ________split_99_1_1_1_1_3_1_1;
+ _real ________split_101_1_1_1_1_3_1_1;
+ _boolean __________split_1_1_1_1_1_1_1_3_1_1;
+ _real __________split_2_1_1_1_1_1_1_3_1_1;
+ _real _________split_93_1_1_1_1_1_3_1_1;
+ _real _________split_92_1_1_1_1_1_3_1_1;
+ _real _________split_91_1_1_1_1_1_3_1_1;
+ _real _________split_90_1_1_1_1_1_3_1_1;
+ _real ________sqrt_1_1_1_1_1_3_1_1;
+ _boolean ________ecart_1_1_1_1_1_3_1_1;
+ _real _________split_2_2_1_1_1_1_3_1_1;
+ _boolean _________split_1_2_1_1_1_1_3_1_1;
+ _real _______split_109_1_1_1_3_1_1;
+ _real _______split_108_1_1_1_3_1_1;
+ _real _______split_107_1_1_1_3_1_1;
+ _real _______split_106_1_1_1_3_1_1;
+ _real _______split_105_1_1_1_3_1_1;
+ _real _______split_104_1_1_1_3_1_1;
+ _real _______split_103_1_1_1_3_1_1;
+ _real _______split_102_1_1_1_3_1_1;
+ _real ______sqrt_3_1_1_3_1_1;
+ _boolean ______ecart_3_1_1_3_1_1;
+ _real _______split_2_4_1_1_3_1_1;
+ _boolean _______split_1_4_1_1_3_1_1;
+ _real _____split_125_1_3_1_1;
+ _real _____split_124_1_3_1_1;
+ _real _____split_123_1_3_1_1;
+ _real _____split_122_1_3_1_1;
+ _real _____split_121_1_3_1_1;
+ _real _____split_120_1_3_1_1;
+ _real _____split_119_1_3_1_1;
+ _real _____split_118_1_3_1_1;
+ _real ____sqrt_5_3_1_1;
+ _boolean ____ecart_5_3_1_1;
+ _real ___split_48_1_1;
+ _real ___split_47_1_1;
+ _real ___split_46_1_1;
+ _real ___split_45_1_1;
+ _real ___split_44_1_1;
+ _real ___split_43_1_1;
+ _real ___split_42_1_1;
+ _real ___split_41_1_1;
+ _real ___split_40_1_1;
+ _real ___split_39_1_1;
+ _real ___split_38_1_1;
+ _real ___split_37_1_1;
+ _real ___split_36_1_1;
+ _real ___split_35_1_1;
+ _real ___split_34_1_1;
+ _real ___split_33_1_1;
+ _integer ___split_32_1_1;
+ _boolean ___split_31_1_1;
+ _real ___split_30_1_1;
+ _integer ___split_29_1_1;
+ _boolean ___split_28_1_1;
+ _real ___split_27_1_1;
+ _integer ___split_26_1_1;
+ _integer __pst_2_1;
+ _integer __st_1_1;
+ _real __kh_1_1;
+ _real __Roof_Percent_1_1;
+ _real __pRoof_Percent_1_1;
+ _real __slow_it_down_1_1;
+ _real __pRoof_Speed_1_1;
+ _boolean _TickOrRot_1;
+ _real _tx_1;
+ _real _dx_1;
+ _real _pt_1;
+ _real _pd_1;
+ _real _t_3;
+ _real _d_1;
+ _real __split_78_1;
+ _real __split_79_1;
+ _real __split_80_1;
+ _real __split_81_1;
+ _real __split_82_1;
+ _real __split_83_1;
+ _real __split_84_1;
+ _real __split_85_1;
+ _real __split_86_1;
+ _real __split_87_1;
+ _real __split_88_1;
+ _real __split_89_1;
+ _real __x_13_1;
+ _boolean ___split_10_2_1;
+ convertible_update_acc ___dummy_1_1_1;
+ convertible_update_acc ____split_3_1_1_1;
+ _boolean ______split_136_50_1_1_1_1;
+ _integer ______split_137_50_1_1_1_1;
+ _real _____cell_50_1_1_1_1;
+ _real _____ncell_50_1_1_1_1;
+ _boolean ______split_136_49_1_1_1_1;
+ _integer ______split_137_49_1_1_1_1;
+ _real _____cell_49_1_1_1_1;
+ _real _____ncell_49_1_1_1_1;
+ _boolean ______split_136_48_1_1_1_1;
+ _integer ______split_137_48_1_1_1_1;
+ _real _____cell_48_1_1_1_1;
+ _real _____ncell_48_1_1_1_1;
+ _boolean ______split_136_47_1_1_1_1;
+ _integer ______split_137_47_1_1_1_1;
+ _real _____cell_47_1_1_1_1;
+ _real _____ncell_47_1_1_1_1;
+ _boolean ______split_136_46_1_1_1_1;
+ _integer ______split_137_46_1_1_1_1;
+ _real _____cell_46_1_1_1_1;
+ _real _____ncell_46_1_1_1_1;
+ _boolean ______split_136_45_1_1_1_1;
+ _integer ______split_137_45_1_1_1_1;
+ _real _____cell_45_1_1_1_1;
+ _real _____ncell_45_1_1_1_1;
+ _boolean ______split_136_44_1_1_1_1;
+ _integer ______split_137_44_1_1_1_1;
+ _real _____cell_44_1_1_1_1;
+ _real _____ncell_44_1_1_1_1;
+ _boolean ______split_136_43_1_1_1_1;
+ _integer ______split_137_43_1_1_1_1;
+ _real _____cell_43_1_1_1_1;
+ _real _____ncell_43_1_1_1_1;
+ _boolean ______split_136_42_1_1_1_1;
+ _integer ______split_137_42_1_1_1_1;
+ _real _____cell_42_1_1_1_1;
+ _real _____ncell_42_1_1_1_1;
+ _boolean ______split_136_41_1_1_1_1;
+ _integer ______split_137_41_1_1_1_1;
+ _real _____cell_41_1_1_1_1;
+ _real _____ncell_41_1_1_1_1;
+ _boolean ______split_136_40_1_1_1_1;
+ _integer ______split_137_40_1_1_1_1;
+ _real _____cell_40_1_1_1_1;
+ _real _____ncell_40_1_1_1_1;
+ _boolean ______split_136_39_1_1_1_1;
+ _integer ______split_137_39_1_1_1_1;
+ _real _____cell_39_1_1_1_1;
+ _real _____ncell_39_1_1_1_1;
+ _boolean ______split_136_38_1_1_1_1;
+ _integer ______split_137_38_1_1_1_1;
+ _real _____cell_38_1_1_1_1;
+ _real _____ncell_38_1_1_1_1;
+ _boolean ______split_136_37_1_1_1_1;
+ _integer ______split_137_37_1_1_1_1;
+ _real _____cell_37_1_1_1_1;
+ _real _____ncell_37_1_1_1_1;
+ _boolean ______split_136_36_1_1_1_1;
+ _integer ______split_137_36_1_1_1_1;
+ _real _____cell_36_1_1_1_1;
+ _real _____ncell_36_1_1_1_1;
+ _boolean ______split_136_35_1_1_1_1;
+ _integer ______split_137_35_1_1_1_1;
+ _real _____cell_35_1_1_1_1;
+ _real _____ncell_35_1_1_1_1;
+ _boolean ______split_136_34_1_1_1_1;
+ _integer ______split_137_34_1_1_1_1;
+ _real _____cell_34_1_1_1_1;
+ _real _____ncell_34_1_1_1_1;
+ _boolean ______split_136_33_1_1_1_1;
+ _integer ______split_137_33_1_1_1_1;
+ _real _____cell_33_1_1_1_1;
+ _real _____ncell_33_1_1_1_1;
+ _boolean ______split_136_32_1_1_1_1;
+ _integer ______split_137_32_1_1_1_1;
+ _real _____cell_32_1_1_1_1;
+ _real _____ncell_32_1_1_1_1;
+ _boolean ______split_136_31_1_1_1_1;
+ _integer ______split_137_31_1_1_1_1;
+ _real _____cell_31_1_1_1_1;
+ _real _____ncell_31_1_1_1_1;
+ _boolean ______split_136_30_1_1_1_1;
+ _integer ______split_137_30_1_1_1_1;
+ _real _____cell_30_1_1_1_1;
+ _real _____ncell_30_1_1_1_1;
+ _boolean ______split_136_29_1_1_1_1;
+ _integer ______split_137_29_1_1_1_1;
+ _real _____cell_29_1_1_1_1;
+ _real _____ncell_29_1_1_1_1;
+ _boolean ______split_136_28_1_1_1_1;
+ _integer ______split_137_28_1_1_1_1;
+ _real _____cell_28_1_1_1_1;
+ _real _____ncell_28_1_1_1_1;
+ _boolean ______split_136_27_1_1_1_1;
+ _integer ______split_137_27_1_1_1_1;
+ _real _____cell_27_1_1_1_1;
+ _real _____ncell_27_1_1_1_1;
+ _boolean ______split_136_26_1_1_1_1;
+ _integer ______split_137_26_1_1_1_1;
+ _real _____cell_26_1_1_1_1;
+ _real _____ncell_26_1_1_1_1;
+ _boolean ______split_136_25_1_1_1_1;
+ _integer ______split_137_25_1_1_1_1;
+ _real _____cell_25_1_1_1_1;
+ _real _____ncell_25_1_1_1_1;
+ _boolean ______split_136_24_1_1_1_1;
+ _integer ______split_137_24_1_1_1_1;
+ _real _____cell_24_1_1_1_1;
+ _real _____ncell_24_1_1_1_1;
+ _boolean ______split_136_23_1_1_1_1;
+ _integer ______split_137_23_1_1_1_1;
+ _real _____cell_23_1_1_1_1;
+ _real _____ncell_23_1_1_1_1;
+ _boolean ______split_136_22_1_1_1_1;
+ _integer ______split_137_22_1_1_1_1;
+ _real _____cell_22_1_1_1_1;
+ _real _____ncell_22_1_1_1_1;
+ _boolean ______split_136_21_1_1_1_1;
+ _integer ______split_137_21_1_1_1_1;
+ _real _____cell_21_1_1_1_1;
+ _real _____ncell_21_1_1_1_1;
+ _boolean ______split_136_20_1_1_1_1;
+ _integer ______split_137_20_1_1_1_1;
+ _real _____cell_20_1_1_1_1;
+ _real _____ncell_20_1_1_1_1;
+ _boolean ______split_136_19_1_1_1_1;
+ _integer ______split_137_19_1_1_1_1;
+ _real _____cell_19_1_1_1_1;
+ _real _____ncell_19_1_1_1_1;
+ _boolean ______split_136_18_1_1_1_1;
+ _integer ______split_137_18_1_1_1_1;
+ _real _____cell_18_1_1_1_1;
+ _real _____ncell_18_1_1_1_1;
+ _boolean ______split_136_17_1_1_1_1;
+ _integer ______split_137_17_1_1_1_1;
+ _real _____cell_17_1_1_1_1;
+ _real _____ncell_17_1_1_1_1;
+ _boolean ______split_136_16_1_1_1_1;
+ _integer ______split_137_16_1_1_1_1;
+ _real _____cell_16_1_1_1_1;
+ _real _____ncell_16_1_1_1_1;
+ _boolean ______split_136_15_1_1_1_1;
+ _integer ______split_137_15_1_1_1_1;
+ _real _____cell_15_1_1_1_1;
+ _real _____ncell_15_1_1_1_1;
+ _boolean ______split_136_14_1_1_1_1;
+ _integer ______split_137_14_1_1_1_1;
+ _real _____cell_14_1_1_1_1;
+ _real _____ncell_14_1_1_1_1;
+ _boolean ______split_136_13_1_1_1_1;
+ _integer ______split_137_13_1_1_1_1;
+ _real _____cell_13_1_1_1_1;
+ _real _____ncell_13_1_1_1_1;
+ _boolean ______split_136_12_1_1_1_1;
+ _integer ______split_137_12_1_1_1_1;
+ _real _____cell_12_1_1_1_1;
+ _real _____ncell_12_1_1_1_1;
+ _boolean ______split_136_11_1_1_1_1;
+ _integer ______split_137_11_1_1_1_1;
+ _real _____cell_11_1_1_1_1;
+ _real _____ncell_11_1_1_1_1;
+ _boolean ______split_136_10_1_1_1_1;
+ _integer ______split_137_10_1_1_1_1;
+ _real _____cell_10_1_1_1_1;
+ _real _____ncell_10_1_1_1_1;
+ _boolean ______split_136_9_1_1_1_1;
+ _integer ______split_137_9_1_1_1_1;
+ _real _____cell_9_1_1_1_1;
+ _real _____ncell_9_1_1_1_1;
+ _boolean ______split_136_8_1_1_1_1;
+ _integer ______split_137_8_1_1_1_1;
+ _real _____cell_8_1_1_1_1;
+ _real _____ncell_8_1_1_1_1;
+ _boolean ______split_136_7_1_1_1_1;
+ _integer ______split_137_7_1_1_1_1;
+ _real _____cell_7_1_1_1_1;
+ _real _____ncell_7_1_1_1_1;
+ _boolean ______split_136_6_1_1_1_1;
+ _integer ______split_137_6_1_1_1_1;
+ _real _____cell_6_1_1_1_1;
+ _real _____ncell_6_1_1_1_1;
+ _boolean ______split_136_5_1_1_1_1;
+ _integer ______split_137_5_1_1_1_1;
+ _real _____cell_5_1_1_1_1;
+ _real _____ncell_5_1_1_1_1;
+ _boolean ______split_136_4_1_1_1_1;
+ _integer ______split_137_4_1_1_1_1;
+ _real _____cell_4_1_1_1_1;
+ _real _____ncell_4_1_1_1_1;
+ _boolean ______split_136_3_1_1_1_1;
+ _integer ______split_137_3_1_1_1_1;
+ _real _____cell_3_1_1_1_1;
+ _real _____ncell_3_1_1_1_1;
+ _boolean ______split_136_2_1_1_1_1;
+ _integer ______split_137_2_1_1_1_1;
+ _real _____cell_2_1_1_1_1;
+ _real _____ncell_2_1_1_1_1;
+ _boolean ______split_136_1_1_1_1_1;
+ _integer ______split_137_1_1_1_1_1;
+ _real _____cell_1_1_1_1_1;
+ _real _____ncell_1_1_1_1_1;
+ convertible_update_acc _____acc_1_1_1_1_1;
+ convertible_update_acc _____acc_2_1_1_1_1;
+ convertible_update_acc _____acc_3_1_1_1_1;
+ convertible_update_acc _____acc_4_1_1_1_1;
+ convertible_update_acc _____acc_5_1_1_1_1;
+ convertible_update_acc _____acc_6_1_1_1_1;
+ convertible_update_acc _____acc_7_1_1_1_1;
+ convertible_update_acc _____acc_8_1_1_1_1;
+ convertible_update_acc _____acc_9_1_1_1_1;
+ convertible_update_acc _____acc_10_1_1_1_1;
+ convertible_update_acc _____acc_11_1_1_1_1;
+ convertible_update_acc _____acc_12_1_1_1_1;
+ convertible_update_acc _____acc_13_1_1_1_1;
+ convertible_update_acc _____acc_14_1_1_1_1;
+ convertible_update_acc _____acc_15_1_1_1_1;
+ convertible_update_acc _____acc_16_1_1_1_1;
+ convertible_update_acc _____acc_17_1_1_1_1;
+ convertible_update_acc _____acc_18_1_1_1_1;
+ convertible_update_acc _____acc_19_1_1_1_1;
+ convertible_update_acc _____acc_20_1_1_1_1;
+ convertible_update_acc _____acc_21_1_1_1_1;
+ convertible_update_acc _____acc_22_1_1_1_1;
+ convertible_update_acc _____acc_23_1_1_1_1;
+ convertible_update_acc _____acc_24_1_1_1_1;
+ convertible_update_acc _____acc_25_1_1_1_1;
+ convertible_update_acc _____acc_26_1_1_1_1;
+ convertible_update_acc _____acc_27_1_1_1_1;
+ convertible_update_acc _____acc_28_1_1_1_1;
+ convertible_update_acc _____acc_29_1_1_1_1;
+ convertible_update_acc _____acc_30_1_1_1_1;
+ convertible_update_acc _____acc_31_1_1_1_1;
+ convertible_update_acc _____acc_32_1_1_1_1;
+ convertible_update_acc _____acc_33_1_1_1_1;
+ convertible_update_acc _____acc_34_1_1_1_1;
+ convertible_update_acc _____acc_35_1_1_1_1;
+ convertible_update_acc _____acc_36_1_1_1_1;
+ convertible_update_acc _____acc_37_1_1_1_1;
+ convertible_update_acc _____acc_38_1_1_1_1;
+ convertible_update_acc _____acc_39_1_1_1_1;
+ convertible_update_acc _____acc_40_1_1_1_1;
+ convertible_update_acc _____acc_41_1_1_1_1;
+ convertible_update_acc _____acc_42_1_1_1_1;
+ convertible_update_acc _____acc_43_1_1_1_1;
+ convertible_update_acc _____acc_44_1_1_1_1;
+ convertible_update_acc _____acc_45_1_1_1_1;
+ convertible_update_acc _____acc_46_1_1_1_1;
+ convertible_update_acc _____acc_47_1_1_1_1;
+ convertible_update_acc _____acc_48_1_1_1_1;
+ convertible_update_acc _____acc_49_1_1_1_1;
+ _real ____acc_98_1_1_1;
+ _real ____acc_97_1_1_1;
+ _real ____acc_96_1_1_1;
+ _real ____acc_95_1_1_1;
+ _real ____acc_94_1_1_1;
+ _real ____acc_93_1_1_1;
+ _real ____acc_92_1_1_1;
+ _real ____acc_91_1_1_1;
+ _real ____acc_90_1_1_1;
+ _real ____acc_89_1_1_1;
+ _real ____acc_88_1_1_1;
+ _real ____acc_87_1_1_1;
+ _real ____acc_86_1_1_1;
+ _real ____acc_85_1_1_1;
+ _real ____acc_84_1_1_1;
+ _real ____acc_83_1_1_1;
+ _real ____acc_82_1_1_1;
+ _real ____acc_81_1_1_1;
+ _real ____acc_80_1_1_1;
+ _real ____acc_79_1_1_1;
+ _real ____acc_78_1_1_1;
+ _real ____acc_77_1_1_1;
+ _real ____acc_76_1_1_1;
+ _real ____acc_75_1_1_1;
+ _real ____acc_74_1_1_1;
+ _real ____acc_73_1_1_1;
+ _real ____acc_72_1_1_1;
+ _real ____acc_71_1_1_1;
+ _real ____acc_70_1_1_1;
+ _real ____acc_69_1_1_1;
+ _real ____acc_68_1_1_1;
+ _real ____acc_67_1_1_1;
+ _real ____acc_66_1_1_1;
+ _real ____acc_65_1_1_1;
+ _real ____acc_64_1_1_1;
+ _real ____acc_63_1_1_1;
+ _real ____acc_62_1_1_1;
+ _real ____acc_61_1_1_1;
+ _real ____acc_60_1_1_1;
+ _real ____acc_59_1_1_1;
+ _real ____acc_58_1_1_1;
+ _real ____acc_57_1_1_1;
+ _real ____acc_56_1_1_1;
+ _real ____acc_55_1_1_1;
+ _real ____acc_54_1_1_1;
+ _real ____acc_53_1_1_1;
+ _real ____acc_52_1_1_1;
+ _real ____acc_51_1_1_1;
+ _real ____acc_50_1_1_1;
+ _real ___i1_1_1_1;
+ _integer ___split_135_1_1;
+ _real ___split_134_1_1[50];
+ _real ___split_133_1_1[50];
+ _integer ___split_132_1_1;
+ _integer ___split_131_1_1;
+ _real __a_2_1[50];
+ _real __pre_a_1_1[50];
+ _integer __i_1_1;
+ convertible_update_acc ___dummy_2_1_1;
+ convertible_update_acc ____split_3_2_1_1;
+ _boolean ______split_136_50_1_2_1_1;
+ _integer ______split_137_50_1_2_1_1;
+ _real _____cell_50_1_2_1_1;
+ _real _____ncell_50_1_2_1_1;
+ _boolean ______split_136_49_1_2_1_1;
+ _integer ______split_137_49_1_2_1_1;
+ _real _____cell_49_1_2_1_1;
+ _real _____ncell_49_1_2_1_1;
+ _boolean ______split_136_48_1_2_1_1;
+ _integer ______split_137_48_1_2_1_1;
+ _real _____cell_48_1_2_1_1;
+ _real _____ncell_48_1_2_1_1;
+ _boolean ______split_136_47_1_2_1_1;
+ _integer ______split_137_47_1_2_1_1;
+ _real _____cell_47_1_2_1_1;
+ _real _____ncell_47_1_2_1_1;
+ _boolean ______split_136_46_1_2_1_1;
+ _integer ______split_137_46_1_2_1_1;
+ _real _____cell_46_1_2_1_1;
+ _real _____ncell_46_1_2_1_1;
+ _boolean ______split_136_45_1_2_1_1;
+ _integer ______split_137_45_1_2_1_1;
+ _real _____cell_45_1_2_1_1;
+ _real _____ncell_45_1_2_1_1;
+ _boolean ______split_136_44_1_2_1_1;
+ _integer ______split_137_44_1_2_1_1;
+ _real _____cell_44_1_2_1_1;
+ _real _____ncell_44_1_2_1_1;
+ _boolean ______split_136_43_1_2_1_1;
+ _integer ______split_137_43_1_2_1_1;
+ _real _____cell_43_1_2_1_1;
+ _real _____ncell_43_1_2_1_1;
+ _boolean ______split_136_42_1_2_1_1;
+ _integer ______split_137_42_1_2_1_1;
+ _real _____cell_42_1_2_1_1;
+ _real _____ncell_42_1_2_1_1;
+ _boolean ______split_136_41_1_2_1_1;
+ _integer ______split_137_41_1_2_1_1;
+ _real _____cell_41_1_2_1_1;
+ _real _____ncell_41_1_2_1_1;
+ _boolean ______split_136_40_1_2_1_1;
+ _integer ______split_137_40_1_2_1_1;
+ _real _____cell_40_1_2_1_1;
+ _real _____ncell_40_1_2_1_1;
+ _boolean ______split_136_39_1_2_1_1;
+ _integer ______split_137_39_1_2_1_1;
+ _real _____cell_39_1_2_1_1;
+ _real _____ncell_39_1_2_1_1;
+ _boolean ______split_136_38_1_2_1_1;
+ _integer ______split_137_38_1_2_1_1;
+ _real _____cell_38_1_2_1_1;
+ _real _____ncell_38_1_2_1_1;
+ _boolean ______split_136_37_1_2_1_1;
+ _integer ______split_137_37_1_2_1_1;
+ _real _____cell_37_1_2_1_1;
+ _real _____ncell_37_1_2_1_1;
+ _boolean ______split_136_36_1_2_1_1;
+ _integer ______split_137_36_1_2_1_1;
+ _real _____cell_36_1_2_1_1;
+ _real _____ncell_36_1_2_1_1;
+ _boolean ______split_136_35_1_2_1_1;
+ _integer ______split_137_35_1_2_1_1;
+ _real _____cell_35_1_2_1_1;
+ _real _____ncell_35_1_2_1_1;
+ _boolean ______split_136_34_1_2_1_1;
+ _integer ______split_137_34_1_2_1_1;
+ _real _____cell_34_1_2_1_1;
+ _real _____ncell_34_1_2_1_1;
+ _boolean ______split_136_33_1_2_1_1;
+ _integer ______split_137_33_1_2_1_1;
+ _real _____cell_33_1_2_1_1;
+ _real _____ncell_33_1_2_1_1;
+ _boolean ______split_136_32_1_2_1_1;
+ _integer ______split_137_32_1_2_1_1;
+ _real _____cell_32_1_2_1_1;
+ _real _____ncell_32_1_2_1_1;
+ _boolean ______split_136_31_1_2_1_1;
+ _integer ______split_137_31_1_2_1_1;
+ _real _____cell_31_1_2_1_1;
+ _real _____ncell_31_1_2_1_1;
+ _boolean ______split_136_30_1_2_1_1;
+ _integer ______split_137_30_1_2_1_1;
+ _real _____cell_30_1_2_1_1;
+ _real _____ncell_30_1_2_1_1;
+ _boolean ______split_136_29_1_2_1_1;
+ _integer ______split_137_29_1_2_1_1;
+ _real _____cell_29_1_2_1_1;
+ _real _____ncell_29_1_2_1_1;
+ _boolean ______split_136_28_1_2_1_1;
+ _integer ______split_137_28_1_2_1_1;
+ _real _____cell_28_1_2_1_1;
+ _real _____ncell_28_1_2_1_1;
+ _boolean ______split_136_27_1_2_1_1;
+ _integer ______split_137_27_1_2_1_1;
+ _real _____cell_27_1_2_1_1;
+ _real _____ncell_27_1_2_1_1;
+ _boolean ______split_136_26_1_2_1_1;
+ _integer ______split_137_26_1_2_1_1;
+ _real _____cell_26_1_2_1_1;
+ _real _____ncell_26_1_2_1_1;
+ _boolean ______split_136_25_1_2_1_1;
+ _integer ______split_137_25_1_2_1_1;
+ _real _____cell_25_1_2_1_1;
+ _real _____ncell_25_1_2_1_1;
+ _boolean ______split_136_24_1_2_1_1;
+ _integer ______split_137_24_1_2_1_1;
+ _real _____cell_24_1_2_1_1;
+ _real _____ncell_24_1_2_1_1;
+ _boolean ______split_136_23_1_2_1_1;
+ _integer ______split_137_23_1_2_1_1;
+ _real _____cell_23_1_2_1_1;
+ _real _____ncell_23_1_2_1_1;
+ _boolean ______split_136_22_1_2_1_1;
+ _integer ______split_137_22_1_2_1_1;
+ _real _____cell_22_1_2_1_1;
+ _real _____ncell_22_1_2_1_1;
+ _boolean ______split_136_21_1_2_1_1;
+ _integer ______split_137_21_1_2_1_1;
+ _real _____cell_21_1_2_1_1;
+ _real _____ncell_21_1_2_1_1;
+ _boolean ______split_136_20_1_2_1_1;
+ _integer ______split_137_20_1_2_1_1;
+ _real _____cell_20_1_2_1_1;
+ _real _____ncell_20_1_2_1_1;
+ _boolean ______split_136_19_1_2_1_1;
+ _integer ______split_137_19_1_2_1_1;
+ _real _____cell_19_1_2_1_1;
+ _real _____ncell_19_1_2_1_1;
+ _boolean ______split_136_18_1_2_1_1;
+ _integer ______split_137_18_1_2_1_1;
+ _real _____cell_18_1_2_1_1;
+ _real _____ncell_18_1_2_1_1;
+ _boolean ______split_136_17_1_2_1_1;
+ _integer ______split_137_17_1_2_1_1;
+ _real _____cell_17_1_2_1_1;
+ _real _____ncell_17_1_2_1_1;
+ _boolean ______split_136_16_1_2_1_1;
+ _integer ______split_137_16_1_2_1_1;
+ _real _____cell_16_1_2_1_1;
+ _real _____ncell_16_1_2_1_1;
+ _boolean ______split_136_15_1_2_1_1;
+ _integer ______split_137_15_1_2_1_1;
+ _real _____cell_15_1_2_1_1;
+ _real _____ncell_15_1_2_1_1;
+ _boolean ______split_136_14_1_2_1_1;
+ _integer ______split_137_14_1_2_1_1;
+ _real _____cell_14_1_2_1_1;
+ _real _____ncell_14_1_2_1_1;
+ _boolean ______split_136_13_1_2_1_1;
+ _integer ______split_137_13_1_2_1_1;
+ _real _____cell_13_1_2_1_1;
+ _real _____ncell_13_1_2_1_1;
+ _boolean ______split_136_12_1_2_1_1;
+ _integer ______split_137_12_1_2_1_1;
+ _real _____cell_12_1_2_1_1;
+ _real _____ncell_12_1_2_1_1;
+ _boolean ______split_136_11_1_2_1_1;
+ _integer ______split_137_11_1_2_1_1;
+ _real _____cell_11_1_2_1_1;
+ _real _____ncell_11_1_2_1_1;
+ _boolean ______split_136_10_1_2_1_1;
+ _integer ______split_137_10_1_2_1_1;
+ _real _____cell_10_1_2_1_1;
+ _real _____ncell_10_1_2_1_1;
+ _boolean ______split_136_9_1_2_1_1;
+ _integer ______split_137_9_1_2_1_1;
+ _real _____cell_9_1_2_1_1;
+ _real _____ncell_9_1_2_1_1;
+ _boolean ______split_136_8_1_2_1_1;
+ _integer ______split_137_8_1_2_1_1;
+ _real _____cell_8_1_2_1_1;
+ _real _____ncell_8_1_2_1_1;
+ _boolean ______split_136_7_1_2_1_1;
+ _integer ______split_137_7_1_2_1_1;
+ _real _____cell_7_1_2_1_1;
+ _real _____ncell_7_1_2_1_1;
+ _boolean ______split_136_6_1_2_1_1;
+ _integer ______split_137_6_1_2_1_1;
+ _real _____cell_6_1_2_1_1;
+ _real _____ncell_6_1_2_1_1;
+ _boolean ______split_136_5_1_2_1_1;
+ _integer ______split_137_5_1_2_1_1;
+ _real _____cell_5_1_2_1_1;
+ _real _____ncell_5_1_2_1_1;
+ _boolean ______split_136_4_1_2_1_1;
+ _integer ______split_137_4_1_2_1_1;
+ _real _____cell_4_1_2_1_1;
+ _real _____ncell_4_1_2_1_1;
+ _boolean ______split_136_3_1_2_1_1;
+ _integer ______split_137_3_1_2_1_1;
+ _real _____cell_3_1_2_1_1;
+ _real _____ncell_3_1_2_1_1;
+ _boolean ______split_136_2_1_2_1_1;
+ _integer ______split_137_2_1_2_1_1;
+ _real _____cell_2_1_2_1_1;
+ _real _____ncell_2_1_2_1_1;
+ _boolean ______split_136_1_1_2_1_1;
+ _integer ______split_137_1_1_2_1_1;
+ _real _____cell_1_1_2_1_1;
+ _real _____ncell_1_1_2_1_1;
+ convertible_update_acc _____acc_1_1_2_1_1;
+ convertible_update_acc _____acc_2_1_2_1_1;
+ convertible_update_acc _____acc_3_1_2_1_1;
+ convertible_update_acc _____acc_4_1_2_1_1;
+ convertible_update_acc _____acc_5_1_2_1_1;
+ convertible_update_acc _____acc_6_1_2_1_1;
+ convertible_update_acc _____acc_7_1_2_1_1;
+ convertible_update_acc _____acc_8_1_2_1_1;
+ convertible_update_acc _____acc_9_1_2_1_1;
+ convertible_update_acc _____acc_10_1_2_1_1;
+ convertible_update_acc _____acc_11_1_2_1_1;
+ convertible_update_acc _____acc_12_1_2_1_1;
+ convertible_update_acc _____acc_13_1_2_1_1;
+ convertible_update_acc _____acc_14_1_2_1_1;
+ convertible_update_acc _____acc_15_1_2_1_1;
+ convertible_update_acc _____acc_16_1_2_1_1;
+ convertible_update_acc _____acc_17_1_2_1_1;
+ convertible_update_acc _____acc_18_1_2_1_1;
+ convertible_update_acc _____acc_19_1_2_1_1;
+ convertible_update_acc _____acc_20_1_2_1_1;
+ convertible_update_acc _____acc_21_1_2_1_1;
+ convertible_update_acc _____acc_22_1_2_1_1;
+ convertible_update_acc _____acc_23_1_2_1_1;
+ convertible_update_acc _____acc_24_1_2_1_1;
+ convertible_update_acc _____acc_25_1_2_1_1;
+ convertible_update_acc _____acc_26_1_2_1_1;
+ convertible_update_acc _____acc_27_1_2_1_1;
+ convertible_update_acc _____acc_28_1_2_1_1;
+ convertible_update_acc _____acc_29_1_2_1_1;
+ convertible_update_acc _____acc_30_1_2_1_1;
+ convertible_update_acc _____acc_31_1_2_1_1;
+ convertible_update_acc _____acc_32_1_2_1_1;
+ convertible_update_acc _____acc_33_1_2_1_1;
+ convertible_update_acc _____acc_34_1_2_1_1;
+ convertible_update_acc _____acc_35_1_2_1_1;
+ convertible_update_acc _____acc_36_1_2_1_1;
+ convertible_update_acc _____acc_37_1_2_1_1;
+ convertible_update_acc _____acc_38_1_2_1_1;
+ convertible_update_acc _____acc_39_1_2_1_1;
+ convertible_update_acc _____acc_40_1_2_1_1;
+ convertible_update_acc _____acc_41_1_2_1_1;
+ convertible_update_acc _____acc_42_1_2_1_1;
+ convertible_update_acc _____acc_43_1_2_1_1;
+ convertible_update_acc _____acc_44_1_2_1_1;
+ convertible_update_acc _____acc_45_1_2_1_1;
+ convertible_update_acc _____acc_46_1_2_1_1;
+ convertible_update_acc _____acc_47_1_2_1_1;
+ convertible_update_acc _____acc_48_1_2_1_1;
+ convertible_update_acc _____acc_49_1_2_1_1;
+ _real ____acc_98_2_1_1;
+ _real ____acc_97_2_1_1;
+ _real ____acc_96_2_1_1;
+ _real ____acc_95_2_1_1;
+ _real ____acc_94_2_1_1;
+ _real ____acc_93_2_1_1;
+ _real ____acc_92_2_1_1;
+ _real ____acc_91_2_1_1;
+ _real ____acc_90_2_1_1;
+ _real ____acc_89_2_1_1;
+ _real ____acc_88_2_1_1;
+ _real ____acc_87_2_1_1;
+ _real ____acc_86_2_1_1;
+ _real ____acc_85_2_1_1;
+ _real ____acc_84_2_1_1;
+ _real ____acc_83_2_1_1;
+ _real ____acc_82_2_1_1;
+ _real ____acc_81_2_1_1;
+ _real ____acc_80_2_1_1;
+ _real ____acc_79_2_1_1;
+ _real ____acc_78_2_1_1;
+ _real ____acc_77_2_1_1;
+ _real ____acc_76_2_1_1;
+ _real ____acc_75_2_1_1;
+ _real ____acc_74_2_1_1;
+ _real ____acc_73_2_1_1;
+ _real ____acc_72_2_1_1;
+ _real ____acc_71_2_1_1;
+ _real ____acc_70_2_1_1;
+ _real ____acc_69_2_1_1;
+ _real ____acc_68_2_1_1;
+ _real ____acc_67_2_1_1;
+ _real ____acc_66_2_1_1;
+ _real ____acc_65_2_1_1;
+ _real ____acc_64_2_1_1;
+ _real ____acc_63_2_1_1;
+ _real ____acc_62_2_1_1;
+ _real ____acc_61_2_1_1;
+ _real ____acc_60_2_1_1;
+ _real ____acc_59_2_1_1;
+ _real ____acc_58_2_1_1;
+ _real ____acc_57_2_1_1;
+ _real ____acc_56_2_1_1;
+ _real ____acc_55_2_1_1;
+ _real ____acc_54_2_1_1;
+ _real ____acc_53_2_1_1;
+ _real ____acc_52_2_1_1;
+ _real ____acc_51_2_1_1;
+ _real ____acc_50_2_1_1;
+ _real ___i1_2_1_1;
+ _integer ___split_130_1_1;
+ _real ___split_129_1_1[50];
+ _real ___split_128_1_1[50];
+ _integer ___split_127_1_1;
+ _integer ___split_126_1_1;
+ _real __a_3_1[50];
+ _real __pre_a_2_1[50];
+ _integer __i_2_1;
+ _boolean _ac_cond_1;
+ _integer _pst_1;
+ _integer __split_138_1;
+ _boolean __split_139_1;
+ _boolean __split_140_1;
+ _integer __split_141_1;
+ _boolean __split_142_1;
+ _boolean __split_143_1;
+ _boolean __split_144_1;
+ _integer __split_145_1;
+ _integer __split_146_1;
+ _boolean __split_147_1;
+ _boolean __split_148_1;
+ _integer __split_149_1;
+ _real _tBrake_1;
+ _real _tChoc_1;
+ _real _Accel_1;
+ _real __split_11_1;
+ _real __split_12_1;
+ _real __split_13_1;
+ _real __split_14_1;
+ _real __split_15_1;
+ _real __split_16_1;
+ _real __split_17_1;
+ _boolean ____split_10_1_1_1;
+ _real ____presqrt_5_2_1_1;
+ _boolean ______split_1_5_1_2_1_1;
+ _real ______split_2_5_1_2_1_1;
+ _boolean _____ecart_4_1_2_1_1;
+ _real _____sqrt_4_1_2_1_1;
+ _real ______split_110_1_1_2_1_1;
+ _real ______split_111_1_1_2_1_1;
+ _real ______split_112_1_1_2_1_1;
+ _real ______split_113_1_1_2_1_1;
+ _real ______split_114_1_1_2_1_1;
+ _real ______split_115_1_1_2_1_1;
+ _real ______split_116_1_1_2_1_1;
+ _real ______split_117_1_1_2_1_1;
+ _boolean ________split_1_3_1_1_1_2_1_1;
+ _real ________split_2_3_1_1_1_2_1_1;
+ _boolean _______ecart_2_1_1_1_2_1_1;
+ _real _______sqrt_2_1_1_1_2_1_1;
+ _real ________split_94_1_1_1_1_2_1_1;
+ _real ________split_95_1_1_1_1_2_1_1;
+ _real ________split_96_1_1_1_1_2_1_1;
+ _real ________split_97_1_1_1_1_2_1_1;
+ _real ________split_98_1_1_1_1_2_1_1;
+ _real ________split_99_1_1_1_1_2_1_1;
+ _real ________split_101_1_1_1_1_2_1_1;
+ _boolean __________split_1_1_1_1_1_1_1_2_1_1;
+ _real __________split_2_1_1_1_1_1_1_2_1_1;
+ _real _________split_93_1_1_1_1_1_2_1_1;
+ _real _________split_92_1_1_1_1_1_2_1_1;
+ _real _________split_91_1_1_1_1_1_2_1_1;
+ _real _________split_90_1_1_1_1_1_2_1_1;
+ _real ________sqrt_1_1_1_1_1_2_1_1;
+ _boolean ________ecart_1_1_1_1_1_2_1_1;
+ _real _________split_2_2_1_1_1_1_2_1_1;
+ _boolean _________split_1_2_1_1_1_1_2_1_1;
+ _real _______split_109_1_1_1_2_1_1;
+ _real _______split_108_1_1_1_2_1_1;
+ _real _______split_107_1_1_1_2_1_1;
+ _real _______split_106_1_1_1_2_1_1;
+ _real _______split_105_1_1_1_2_1_1;
+ _real _______split_104_1_1_1_2_1_1;
+ _real _______split_103_1_1_1_2_1_1;
+ _real _______split_102_1_1_1_2_1_1;
+ _real ______sqrt_3_1_1_2_1_1;
+ _boolean ______ecart_3_1_1_2_1_1;
+ _real _______split_2_4_1_1_2_1_1;
+ _boolean _______split_1_4_1_1_2_1_1;
+ _real _____split_125_1_2_1_1;
+ _real _____split_124_1_2_1_1;
+ _real _____split_123_1_2_1_1;
+ _real _____split_122_1_2_1_1;
+ _real _____split_121_1_2_1_1;
+ _real _____split_120_1_2_1_1;
+ _real _____split_119_1_2_1_1;
+ _real _____split_118_1_2_1_1;
+ _real ____sqrt_5_2_1_1;
+ _boolean ____ecart_5_2_1_1;
+ _real ____presqrt_5_1_1_1;
+ _boolean ______split_1_5_1_1_1_1;
+ _real ______split_2_5_1_1_1_1;
+ _boolean _____ecart_4_1_1_1_1;
+ _real _____sqrt_4_1_1_1_1;
+ _real ______split_110_1_1_1_1_1;
+ _real ______split_111_1_1_1_1_1;
+ _real ______split_112_1_1_1_1_1;
+ _real ______split_113_1_1_1_1_1;
+ _real ______split_114_1_1_1_1_1;
+ _real ______split_115_1_1_1_1_1;
+ _real ______split_116_1_1_1_1_1;
+ _real ______split_117_1_1_1_1_1;
+ _boolean ________split_1_3_1_1_1_1_1_1;
+ _real ________split_2_3_1_1_1_1_1_1;
+ _boolean _______ecart_2_1_1_1_1_1_1;
+ _real _______sqrt_2_1_1_1_1_1_1;
+ _real ________split_94_1_1_1_1_1_1_1;
+ _real ________split_95_1_1_1_1_1_1_1;
+ _real ________split_96_1_1_1_1_1_1_1;
+ _real ________split_97_1_1_1_1_1_1_1;
+ _real ________split_98_1_1_1_1_1_1_1;
+ _real ________split_99_1_1_1_1_1_1_1;
+ _real ________split_101_1_1_1_1_1_1_1;
+ _boolean __________split_1_1_1_1_1_1_1_1_1_1;
+ _real __________split_2_1_1_1_1_1_1_1_1_1;
+ _real _________split_93_1_1_1_1_1_1_1_1;
+ _real _________split_92_1_1_1_1_1_1_1_1;
+ _real _________split_91_1_1_1_1_1_1_1_1;
+ _real _________split_90_1_1_1_1_1_1_1_1;
+ _real ________sqrt_1_1_1_1_1_1_1_1;
+ _boolean ________ecart_1_1_1_1_1_1_1_1;
+ _real _________split_2_2_1_1_1_1_1_1_1;
+ _boolean _________split_1_2_1_1_1_1_1_1_1;
+ _real _______split_109_1_1_1_1_1_1;
+ _real _______split_108_1_1_1_1_1_1;
+ _real _______split_107_1_1_1_1_1_1;
+ _real _______split_106_1_1_1_1_1_1;
+ _real _______split_105_1_1_1_1_1_1;
+ _real _______split_104_1_1_1_1_1_1;
+ _real _______split_103_1_1_1_1_1_1;
+ _real _______split_102_1_1_1_1_1_1;
+ _real ______sqrt_3_1_1_1_1_1;
+ _boolean ______ecart_3_1_1_1_1_1;
+ _real _______split_2_4_1_1_1_1_1;
+ _boolean _______split_1_4_1_1_1_1_1;
+ _real _____split_125_1_1_1_1;
+ _real _____split_124_1_1_1_1;
+ _real _____split_123_1_1_1_1;
+ _real _____split_122_1_1_1_1;
+ _real _____split_121_1_1_1_1;
+ _real _____split_120_1_1_1_1;
+ _real _____split_119_1_1_1_1;
+ _real _____split_118_1_1_1_1;
+ _real ____sqrt_5_1_1_1;
+ _boolean ____ecart_5_1_1_1;
+ _real ___split_77_1_1;
+ _real ___split_76_1_1;
+ _real ___split_75_1_1;
+ _real ___split_74_1_1;
+ _real ___split_73_1_1;
+ _real ___split_72_1_1;
+ _real ___split_71_1_1;
+ _real ___split_70_1_1;
+ _real ___split_69_1_1;
+ _real ___split_68_1_1;
+ _real ___split_67_1_1;
+ _real ___split_66_1_1;
+ _real ___split_65_1_1;
+ _real ___split_64_1_1;
+ _real ___split_63_1_1;
+ _real ___split_62_1_1;
+ _real ___split_61_1_1;
+ _real ___split_60_1_1;
+ _real ___split_59_1_1;
+ _integer ___split_58_1_1;
+ _integer ___split_57_1_1;
+ _boolean ___split_56_1_1;
+ _boolean ___split_55_1_1;
+ _integer ___split_54_1_1;
+ _boolean ___split_53_1_1;
+ _boolean ___split_52_1_1;
+ _real ___split_51_1_1;
+ _real ___split_50_1_1;
+ _real ___split_49_1_1;
+ _real __delta_1_1;
+ _integer __sol_nb_1_1;
+ _real __a2_1_1;
+ _real __b2_1_1;
+ _real __delta_pos_1_1;
+ _real ___split_4_1_1;
+ _boolean _split_7;
+ _real _split_6;
+ _real _split_5;
+ _integer St;
+ _boolean _split_8;
+ _boolean _split_9;
+
+ Lustre_pre_get(&__split_89_1,&ctx->Lustre_pre_ctx_tab[3]);
+ Lustre_arrow_step(0.0,__split_89_1,Speed,&ctx->Lustre_arrow_ctx_tab[3]);
+ switch (St){
+ case convertible_anti_col:
+ _split_5 = *Speed;
+ ___split_4_1_1 = _split_5 * _split_5;
+ Lustre_slash_step(___split_4_1_1,5500.0,&_tBrake_1);
+ __split_17_1 = 2.0 + _tBrake_1;
+ _split_6 = Dist;
+ __split_15_1 = - 2.0;
+ __split_16_1 = __split_15_1 * _split_6;
+ ___split_60_1_1 = - __split_16_1;
+ __split_14_1 = 2.0 * _split_5;
+ Lustre_slash_step(___split_60_1_1,__split_14_1,&___split_61_1_1);
+ switch (__sol_nb_1_1){
+ case convertible_deg1:
+ ___split_62_1_1 = ___split_61_1_1;
+ _tChoc_1 = ___split_62_1_1;
+ break;
+ case convertible_no_sol:
+ ___split_59_1_1 = - 1.0;
+ _tChoc_1 = ___split_59_1_1;
+ break;
+}
+ ___split_63_1_1 = - __split_14_1;
+ Lustre_pre_get(&__split_11_1,&ctx->Lustre_pre_ctx_tab[0]);
+ __split_12_1 = _split_5 - __split_11_1;
+ Lustre_slash_step(__split_12_1,0.1,&__split_13_1);
+ Lustre_arrow_step(0.0,__split_13_1,&_Accel_1,&ctx->Lustre_arrow_ctx_tab[0]);
+ ___split_64_1_1 = 2.0 * _Accel_1;
+ Lustre_slash_step(___split_63_1_1,___split_64_1_1,&___split_65_1_1);
+ switch (__sol_nb_1_1){
+ case convertible_one_sol:
+ ___split_66_1_1 = ___split_65_1_1;
+ _tChoc_1 = ___split_66_1_1;
+ break;
+}
+ ___split_50_1_1 = 4.0 * _Accel_1;
+ ___split_51_1_1 = ___split_50_1_1 * __split_16_1;
+ ___split_49_1_1 = __split_14_1 * __split_14_1;
+ __delta_1_1 = ___split_49_1_1 - ___split_51_1_1;
+ switch (__sol_nb_1_1){
+ case convertible_two_sol:
+ __delta_pos_1_1 = __delta_1_1;
+ ____presqrt_5_1_1_1 = 1.0;
+ Lustre_slash_step(__delta_pos_1_1,____presqrt_5_1_1_1,&_____split_120_1_1_1_1);
+ _____split_121_1_1_1_1 = ____presqrt_5_1_1_1 + _____split_120_1_1_1_1;
+ ____sqrt_5_1_1_1 = 0.5 * _____split_121_1_1_1_1;
+ _____split_118_1_1_1_1 = ____presqrt_5_1_1_1 - ____sqrt_5_1_1_1;
+ ______split_2_5_1_1_1_1 = - _____split_118_1_1_1_1;
+ ______split_1_5_1_1_1_1 = _____split_118_1_1_1_1 >= 0.0;
+ if (______split_1_5_1_1_1_1 == _true) {
+ _____split_119_1_1_1_1 = _____split_118_1_1_1_1;
+ } else {
+ _____split_119_1_1_1_1 = ______split_2_5_1_1_1_1;
+ }
+ ____ecart_5_1_1_1 = _____split_119_1_1_1_1 < 0.0005;
+ switch (____ecart_5_1_1_1){
+ case _false:
+ _____split_123_1_1_1_1 = ____sqrt_5_1_1_1;
+ _____split_122_1_1_1_1 = __delta_pos_1_1;
+ Lustre_slash_step(_____split_122_1_1_1_1,_____split_123_1_1_1_1,&______split_112_1_1_1_1_1);
+ ______split_113_1_1_1_1_1 = _____split_123_1_1_1_1 + ______split_112_1_1_1_1_1;
+ _____sqrt_4_1_1_1_1 = 0.5 * ______split_113_1_1_1_1_1;
+ ______split_110_1_1_1_1_1 = _____split_123_1_1_1_1 - _____sqrt_4_1_1_1_1;
+ _______split_2_4_1_1_1_1_1 = - ______split_110_1_1_1_1_1;
+ _______split_1_4_1_1_1_1_1 = ______split_110_1_1_1_1_1 >= 0.0;
+ if (_______split_1_4_1_1_1_1_1 == _true) {
+ ______split_111_1_1_1_1_1 = ______split_110_1_1_1_1_1;
+ } else {
+ ______split_111_1_1_1_1_1 = _______split_2_4_1_1_1_1_1;
+ }
+ _____ecart_4_1_1_1_1 = ______split_111_1_1_1_1_1 < 0.0005;
+ switch (_____ecart_4_1_1_1_1){
+ case _false:
+ ______split_115_1_1_1_1_1 = _____sqrt_4_1_1_1_1;
+ ______split_114_1_1_1_1_1 = _____split_122_1_1_1_1;
+ Lustre_slash_step(______split_114_1_1_1_1_1,______split_115_1_1_1_1_1,&_______split_104_1_1_1_1_1_1);
+ _______split_105_1_1_1_1_1_1 = ______split_115_1_1_1_1_1 + _______split_104_1_1_1_1_1_1;
+ ______sqrt_3_1_1_1_1_1 = 0.5 * _______split_105_1_1_1_1_1_1;
+ _______split_102_1_1_1_1_1_1 = ______split_115_1_1_1_1_1 - ______sqrt_3_1_1_1_1_1;
+ ________split_2_3_1_1_1_1_1_1 = - _______split_102_1_1_1_1_1_1;
+ ________split_1_3_1_1_1_1_1_1 = _______split_102_1_1_1_1_1_1 >= 0.0;
+ if (________split_1_3_1_1_1_1_1_1 == _true) {
+ _______split_103_1_1_1_1_1_1 = _______split_102_1_1_1_1_1_1;
+ } else {
+ _______split_103_1_1_1_1_1_1 = ________split_2_3_1_1_1_1_1_1;
+ }
+ ______ecart_3_1_1_1_1_1 = _______split_103_1_1_1_1_1_1 < 0.0005;
+ switch (______ecart_3_1_1_1_1_1){
+ case _false:
+ _______split_107_1_1_1_1_1_1 = ______sqrt_3_1_1_1_1_1;
+ _______split_106_1_1_1_1_1_1 = ______split_114_1_1_1_1_1;
+ Lustre_slash_step(_______split_106_1_1_1_1_1_1,_______split_107_1_1_1_1_1_1,&________split_96_1_1_1_1_1_1_1);
+ ________split_97_1_1_1_1_1_1_1 = _______split_107_1_1_1_1_1_1 + ________split_96_1_1_1_1_1_1_1;
+ _______sqrt_2_1_1_1_1_1_1 = 0.5 * ________split_97_1_1_1_1_1_1_1;
+ ________split_94_1_1_1_1_1_1_1 = _______split_107_1_1_1_1_1_1 - _______sqrt_2_1_1_1_1_1_1;
+ _________split_2_2_1_1_1_1_1_1_1 = - ________split_94_1_1_1_1_1_1_1;
+ _________split_1_2_1_1_1_1_1_1_1 = ________split_94_1_1_1_1_1_1_1 >= 0.0;
+ if (_________split_1_2_1_1_1_1_1_1_1 == _true) {
+ ________split_95_1_1_1_1_1_1_1 = ________split_94_1_1_1_1_1_1_1;
+ } else {
+ ________split_95_1_1_1_1_1_1_1 = _________split_2_2_1_1_1_1_1_1_1;
+ }
+ _______ecart_2_1_1_1_1_1_1 = ________split_95_1_1_1_1_1_1_1 < 0.0005;
+ switch (_______ecart_2_1_1_1_1_1_1){
+ case _false:
+ ________split_98_1_1_1_1_1_1_1 = _______split_106_1_1_1_1_1_1;
+ ________split_99_1_1_1_1_1_1_1 = _______sqrt_2_1_1_1_1_1_1;
+ Lustre_slash_step(________split_98_1_1_1_1_1_1_1,________split_99_1_1_1_1_1_1_1,&_________split_92_1_1_1_1_1_1_1_1);
+ _________split_93_1_1_1_1_1_1_1_1 = ________split_99_1_1_1_1_1_1_1 + _________split_92_1_1_1_1_1_1_1_1;
+ ________sqrt_1_1_1_1_1_1_1_1 = 0.5 * _________split_93_1_1_1_1_1_1_1_1;
+ _______split_108_1_1_1_1_1_1 = ________sqrt_1_1_1_1_1_1_1_1;
+ break;
+ case _true:
+ ________split_101_1_1_1_1_1_1_1 = _______sqrt_2_1_1_1_1_1_1;
+ _______split_108_1_1_1_1_1_1 = ________split_101_1_1_1_1_1_1_1;
+ break;
+}
+ ______split_116_1_1_1_1_1 = _______split_108_1_1_1_1_1_1;
+ break;
+ case _true:
+ _______split_109_1_1_1_1_1_1 = ______sqrt_3_1_1_1_1_1;
+ ______split_116_1_1_1_1_1 = _______split_109_1_1_1_1_1_1;
+ break;
+}
+ _____split_124_1_1_1_1 = ______split_116_1_1_1_1_1;
+ break;
+ case _true:
+ ______split_117_1_1_1_1_1 = _____sqrt_4_1_1_1_1;
+ _____split_124_1_1_1_1 = ______split_117_1_1_1_1_1;
+ break;
+}
+ ___split_68_1_1 = _____split_124_1_1_1_1;
+ break;
+ case _true:
+ _____split_125_1_1_1_1 = ____sqrt_5_1_1_1;
+ ___split_68_1_1 = _____split_125_1_1_1_1;
+ break;
+}
+ __a2_1_1 = _Accel_1;
+ ___split_69_1_1 = 2.0 * __a2_1_1;
+ Lustre_slash_step(___split_68_1_1,___split_69_1_1,&___split_70_1_1);
+ __b2_1_1 = __split_14_1;
+ ___split_67_1_1 = - __b2_1_1;
+ ___split_71_1_1 = ___split_67_1_1 + ___split_70_1_1;
+ ____presqrt_5_2_1_1 = 1.0;
+ Lustre_slash_step(__delta_pos_1_1,____presqrt_5_2_1_1,&_____split_120_1_2_1_1);
+ _____split_121_1_2_1_1 = ____presqrt_5_2_1_1 + _____split_120_1_2_1_1;
+ ____sqrt_5_2_1_1 = 0.5 * _____split_121_1_2_1_1;
+ _____split_118_1_2_1_1 = ____presqrt_5_2_1_1 - ____sqrt_5_2_1_1;
+ ______split_2_5_1_2_1_1 = - _____split_118_1_2_1_1;
+ ______split_1_5_1_2_1_1 = _____split_118_1_2_1_1 >= 0.0;
+ if (______split_1_5_1_2_1_1 == _true) {
+ _____split_119_1_2_1_1 = _____split_118_1_2_1_1;
+ } else {
+ _____split_119_1_2_1_1 = ______split_2_5_1_2_1_1;
+ }
+ ____ecart_5_2_1_1 = _____split_119_1_2_1_1 < 0.0005;
+ switch (____ecart_5_2_1_1){
+ case _false:
+ _____split_123_1_2_1_1 = ____sqrt_5_2_1_1;
+ _____split_122_1_2_1_1 = __delta_pos_1_1;
+ Lustre_slash_step(_____split_122_1_2_1_1,_____split_123_1_2_1_1,&______split_112_1_1_2_1_1);
+ ______split_113_1_1_2_1_1 = _____split_123_1_2_1_1 + ______split_112_1_1_2_1_1;
+ _____sqrt_4_1_2_1_1 = 0.5 * ______split_113_1_1_2_1_1;
+ ______split_110_1_1_2_1_1 = _____split_123_1_2_1_1 - _____sqrt_4_1_2_1_1;
+ _______split_2_4_1_1_2_1_1 = - ______split_110_1_1_2_1_1;
+ _______split_1_4_1_1_2_1_1 = ______split_110_1_1_2_1_1 >= 0.0;
+ if (_______split_1_4_1_1_2_1_1 == _true) {
+ ______split_111_1_1_2_1_1 = ______split_110_1_1_2_1_1;
+ } else {
+ ______split_111_1_1_2_1_1 = _______split_2_4_1_1_2_1_1;
+ }
+ _____ecart_4_1_2_1_1 = ______split_111_1_1_2_1_1 < 0.0005;
+ switch (_____ecart_4_1_2_1_1){
+ case _false:
+ ______split_115_1_1_2_1_1 = _____sqrt_4_1_2_1_1;
+ ______split_114_1_1_2_1_1 = _____split_122_1_2_1_1;
+ Lustre_slash_step(______split_114_1_1_2_1_1,______split_115_1_1_2_1_1,&_______split_104_1_1_1_2_1_1);
+ _______split_105_1_1_1_2_1_1 = ______split_115_1_1_2_1_1 + _______split_104_1_1_1_2_1_1;
+ ______sqrt_3_1_1_2_1_1 = 0.5 * _______split_105_1_1_1_2_1_1;
+ _______split_102_1_1_1_2_1_1 = ______split_115_1_1_2_1_1 - ______sqrt_3_1_1_2_1_1;
+ ________split_2_3_1_1_1_2_1_1 = - _______split_102_1_1_1_2_1_1;
+ ________split_1_3_1_1_1_2_1_1 = _______split_102_1_1_1_2_1_1 >= 0.0;
+ if (________split_1_3_1_1_1_2_1_1 == _true) {
+ _______split_103_1_1_1_2_1_1 = _______split_102_1_1_1_2_1_1;
+ } else {
+ _______split_103_1_1_1_2_1_1 = ________split_2_3_1_1_1_2_1_1;
+ }
+ ______ecart_3_1_1_2_1_1 = _______split_103_1_1_1_2_1_1 < 0.0005;
+ switch (______ecart_3_1_1_2_1_1){
+ case _false:
+ _______split_107_1_1_1_2_1_1 = ______sqrt_3_1_1_2_1_1;
+ _______split_106_1_1_1_2_1_1 = ______split_114_1_1_2_1_1;
+ Lustre_slash_step(_______split_106_1_1_1_2_1_1,_______split_107_1_1_1_2_1_1,&________split_96_1_1_1_1_2_1_1);
+ ________split_97_1_1_1_1_2_1_1 = _______split_107_1_1_1_2_1_1 + ________split_96_1_1_1_1_2_1_1;
+ _______sqrt_2_1_1_1_2_1_1 = 0.5 * ________split_97_1_1_1_1_2_1_1;
+ ________split_94_1_1_1_1_2_1_1 = _______split_107_1_1_1_2_1_1 - _______sqrt_2_1_1_1_2_1_1;
+ _________split_2_2_1_1_1_1_2_1_1 = - ________split_94_1_1_1_1_2_1_1;
+ _________split_1_2_1_1_1_1_2_1_1 = ________split_94_1_1_1_1_2_1_1 >= 0.0;
+ if (_________split_1_2_1_1_1_1_2_1_1 == _true) {
+ ________split_95_1_1_1_1_2_1_1 = ________split_94_1_1_1_1_2_1_1;
+ } else {
+ ________split_95_1_1_1_1_2_1_1 = _________split_2_2_1_1_1_1_2_1_1;
+ }
+ _______ecart_2_1_1_1_2_1_1 = ________split_95_1_1_1_1_2_1_1 < 0.0005;
+ switch (_______ecart_2_1_1_1_2_1_1){
+ case _false:
+ ________split_98_1_1_1_1_2_1_1 = _______split_106_1_1_1_2_1_1;
+ ________split_99_1_1_1_1_2_1_1 = _______sqrt_2_1_1_1_2_1_1;
+ Lustre_slash_step(________split_98_1_1_1_1_2_1_1,________split_99_1_1_1_1_2_1_1,&_________split_92_1_1_1_1_1_2_1_1);
+ _________split_93_1_1_1_1_1_2_1_1 = ________split_99_1_1_1_1_2_1_1 + _________split_92_1_1_1_1_1_2_1_1;
+ ________sqrt_1_1_1_1_1_2_1_1 = 0.5 * _________split_93_1_1_1_1_1_2_1_1;
+ _______split_108_1_1_1_2_1_1 = ________sqrt_1_1_1_1_1_2_1_1;
+ break;
+ case _true:
+ ________split_101_1_1_1_1_2_1_1 = _______sqrt_2_1_1_1_2_1_1;
+ _______split_108_1_1_1_2_1_1 = ________split_101_1_1_1_1_2_1_1;
+ break;
+}
+ ______split_116_1_1_2_1_1 = _______split_108_1_1_1_2_1_1;
+ break;
+ case _true:
+ _______split_109_1_1_1_2_1_1 = ______sqrt_3_1_1_2_1_1;
+ ______split_116_1_1_2_1_1 = _______split_109_1_1_1_2_1_1;
+ break;
+}
+ _____split_124_1_2_1_1 = ______split_116_1_1_2_1_1;
+ break;
+ case _true:
+ ______split_117_1_1_2_1_1 = _____sqrt_4_1_2_1_1;
+ _____split_124_1_2_1_1 = ______split_117_1_1_2_1_1;
+ break;
+}
+ ___split_73_1_1 = _____split_124_1_2_1_1;
+ break;
+ case _true:
+ _____split_125_1_2_1_1 = ____sqrt_5_2_1_1;
+ ___split_73_1_1 = _____split_125_1_2_1_1;
+ break;
+}
+ ___split_74_1_1 = 2.0 * __a2_1_1;
+ Lustre_slash_step(___split_73_1_1,___split_74_1_1,&___split_75_1_1);
+ ___split_72_1_1 = - __b2_1_1;
+ ___split_76_1_1 = ___split_72_1_1 - ___split_75_1_1;
+ ____split_10_1_1_1 = ___split_71_1_1 < ___split_76_1_1;
+ if (____split_10_1_1_1 == _true) {
+ ___split_77_1_1 = ___split_76_1_1;
+ } else {
+ ___split_77_1_1 = ___split_71_1_1;
+ }
+ _tChoc_1 = ___split_77_1_1;
+ break;
+}
+ _split_7 = _tChoc_1 < __split_17_1;
+ *Danger = _split_7;
+ Lustre_pre_set(_split_5,&ctx->Lustre_pre_ctx_tab[0]);
+ switch (__sol_nb_1_1){
+ case convertible_two_sol:
+ switch (____ecart_5_1_1_1){
+ case _false:
+ switch (_____ecart_4_1_1_1_1){
+ case _false:
+ switch (______ecart_3_1_1_1_1_1){
+ case _false:
+ switch (_______ecart_2_1_1_1_1_1_1){
+ case _false:
+ _________split_90_1_1_1_1_1_1_1_1 = ________split_99_1_1_1_1_1_1_1 - ________sqrt_1_1_1_1_1_1_1_1;
+ __________split_2_1_1_1_1_1_1_1_1_1 = - _________split_90_1_1_1_1_1_1_1_1;
+ __________split_1_1_1_1_1_1_1_1_1_1 = _________split_90_1_1_1_1_1_1_1_1 >= 0.0;
+ if (__________split_1_1_1_1_1_1_1_1_1_1 == _true) {
+ _________split_91_1_1_1_1_1_1_1_1 = _________split_90_1_1_1_1_1_1_1_1;
+ } else {
+ _________split_91_1_1_1_1_1_1_1_1 = __________split_2_1_1_1_1_1_1_1_1_1;
+ }
+ ________ecart_1_1_1_1_1_1_1_1 = _________split_91_1_1_1_1_1_1_1_1 < 0.0005;
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ switch (____ecart_5_2_1_1){
+ case _false:
+ switch (_____ecart_4_1_2_1_1){
+ case _false:
+ switch (______ecart_3_1_1_2_1_1){
+ case _false:
+ switch (_______ecart_2_1_1_1_2_1_1){
+ case _false:
+ _________split_90_1_1_1_1_1_2_1_1 = ________split_99_1_1_1_1_2_1_1 - ________sqrt_1_1_1_1_1_2_1_1;
+ __________split_2_1_1_1_1_1_1_2_1_1 = - _________split_90_1_1_1_1_1_2_1_1;
+ __________split_1_1_1_1_1_1_1_2_1_1 = _________split_90_1_1_1_1_1_2_1_1 >= 0.0;
+ if (__________split_1_1_1_1_1_1_1_2_1_1 == _true) {
+ _________split_91_1_1_1_1_1_2_1_1 = _________split_90_1_1_1_1_1_2_1_1;
+ } else {
+ _________split_91_1_1_1_1_1_2_1_1 = __________split_2_1_1_1_1_1_1_2_1_1;
+ }
+ ________ecart_1_1_1_1_1_2_1_1 = _________split_91_1_1_1_1_1_2_1_1 < 0.0005;
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ ___split_52_1_1 = _Accel_1 == 0.0;
+ ___split_53_1_1 = __split_14_1 == 0.0;
+ if (___split_53_1_1 == _true) {
+ ___split_54_1_1 = convertible_no_sol;
+ } else {
+ ___split_54_1_1 = convertible_deg1;
+ }
+ ___split_56_1_1 = __delta_1_1 == 0.0;
+ if (___split_56_1_1 == _true) {
+ ___split_57_1_1 = convertible_one_sol;
+ } else {
+ ___split_57_1_1 = convertible_two_sol;
+ }
+ ___split_55_1_1 = __delta_1_1 < 0.0;
+ if (___split_55_1_1 == _true) {
+ ___split_58_1_1 = convertible_no_sol;
+ } else {
+ ___split_58_1_1 = ___split_57_1_1;
+ }
+ if (___split_52_1_1 == _true) {
+ __sol_nb_1_1 = ___split_54_1_1;
+ } else {
+ __sol_nb_1_1 = ___split_58_1_1;
+ }
+ break;
+ case convertible_run:
+ *Danger = _false;
+ break;
+ case convertible_stationnary:
+ *Danger = _false;
+ break;
+}
+ Lustre_pre_2_get(&__split_138_1,&ctx->Lustre_pre_2_ctx_tab[0]);
+ _ac_cond_1 = *Speed >= 110.0;
+ switch (_pst_1){
+ case convertible_anti_col:
+ __split_147_1 = _ac_cond_1;
+ __split_148_1 = ! __split_147_1;
+ if (__split_148_1 == _true) {
+ __split_149_1 = convertible_run;
+ } else {
+ __split_149_1 = convertible_anti_col;
+ }
+ St = __split_149_1;
+ break;
+}
+ __split_143_1 = *Speed == 0.0;
+ switch (_pst_1){
+ case convertible_run:
+ __split_144_1 = __split_143_1;
+ if (__split_144_1 == _true) {
+ __split_145_1 = convertible_stationnary;
+ } else {
+ __split_145_1 = convertible_run;
+ }
+ __split_142_1 = _ac_cond_1;
+ if (__split_142_1 == _true) {
+ __split_146_1 = convertible_anti_col;
+ } else {
+ __split_146_1 = __split_145_1;
+ }
+ St = __split_146_1;
+ break;
+}
+ switch (_pst_3){
+ case convertible_in_motion:
+ __split_22_1 = Done;
+ if (__split_22_1 == _true) {
+ __split_23_1 = convertible_locked;
+ } else {
+ __split_23_1 = convertible_in_motion;
+ }
+ _st_2 = __split_23_1;
+ break;
+}
+ __split_19_1 = OnOff & Parked;
+ switch (_pst_3){
+ case convertible_locked:
+ __split_20_1 = __split_19_1;
+ if (__split_20_1 == _true) {
+ __split_21_1 = convertible_in_motion;
+ } else {
+ __split_21_1 = convertible_locked;
+ }
+ _st_2 = __split_21_1;
+ break;
+}
+ *Locked = _st_2 == convertible_locked;
+ __split_139_1 = Start & *Locked;
+ switch (_pst_1){
+ case convertible_stationnary:
+ __split_140_1 = __split_139_1;
+ if (__split_140_1 == _true) {
+ __split_141_1 = convertible_run;
+ } else {
+ __split_141_1 = convertible_stationnary;
+ }
+ St = __split_141_1;
+ break;
+}
+ Lustre_pre_2_set(St,&ctx->Lustre_pre_2_ctx_tab[0]);
+ Lustre_arrow_2_step(convertible_stationnary,__split_138_1,&_pst_1,&ctx->Lustre_arrow_2_ctx_tab[0]);
+ if (Rot == _true) {
+ _dx_1 = 1.4;
+ } else {
+ _dx_1 = 0.0;
+ }
+ if (Tick == _true) {
+ _tx_1 = 0.1;
+ } else {
+ _tx_1 = 0.0;
+ }
+ _TickOrRot_1 = Tick | Rot;
+ Lustre_pre_get(&__split_78_1,&ctx->Lustre_pre_ctx_tab[1]);
+ Lustre_arrow_step(0.0,__split_78_1,&_pd_1,&ctx->Lustre_arrow_ctx_tab[1]);
+ switch (_TickOrRot_1){
+ case _false:
+ __split_80_1 = _pd_1;
+ _d_1 = __split_80_1;
+ break;
+ case _true:
+ __split_81_1 = _dx_1;
+ ____split_3_2_1_1.v = __split_81_1;
+ _____acc_1_1_2_1_1.v = ____split_3_2_1_1.v;
+ _____acc_2_1_2_1_1.v = _____acc_1_1_2_1_1.v;
+ _____acc_3_1_2_1_1.v = _____acc_2_1_2_1_1.v;
+ _____acc_4_1_2_1_1.v = _____acc_3_1_2_1_1.v;
+ _____acc_5_1_2_1_1.v = _____acc_4_1_2_1_1.v;
+ _____acc_6_1_2_1_1.v = _____acc_5_1_2_1_1.v;
+ _____acc_7_1_2_1_1.v = _____acc_6_1_2_1_1.v;
+ _____acc_8_1_2_1_1.v = _____acc_7_1_2_1_1.v;
+ _____acc_9_1_2_1_1.v = _____acc_8_1_2_1_1.v;
+ _____acc_10_1_2_1_1.v = _____acc_9_1_2_1_1.v;
+ _____acc_11_1_2_1_1.v = _____acc_10_1_2_1_1.v;
+ _____acc_12_1_2_1_1.v = _____acc_11_1_2_1_1.v;
+ _____acc_13_1_2_1_1.v = _____acc_12_1_2_1_1.v;
+ _____acc_14_1_2_1_1.v = _____acc_13_1_2_1_1.v;
+ _____acc_15_1_2_1_1.v = _____acc_14_1_2_1_1.v;
+ _____acc_16_1_2_1_1.v = _____acc_15_1_2_1_1.v;
+ _____acc_17_1_2_1_1.v = _____acc_16_1_2_1_1.v;
+ _____acc_18_1_2_1_1.v = _____acc_17_1_2_1_1.v;
+ _____acc_19_1_2_1_1.v = _____acc_18_1_2_1_1.v;
+ _____acc_20_1_2_1_1.v = _____acc_19_1_2_1_1.v;
+ _____acc_21_1_2_1_1.v = _____acc_20_1_2_1_1.v;
+ _____acc_22_1_2_1_1.v = _____acc_21_1_2_1_1.v;
+ _____acc_23_1_2_1_1.v = _____acc_22_1_2_1_1.v;
+ _____acc_24_1_2_1_1.v = _____acc_23_1_2_1_1.v;
+ _____acc_25_1_2_1_1.v = _____acc_24_1_2_1_1.v;
+ _____acc_26_1_2_1_1.v = _____acc_25_1_2_1_1.v;
+ _____acc_27_1_2_1_1.v = _____acc_26_1_2_1_1.v;
+ _____acc_28_1_2_1_1.v = _____acc_27_1_2_1_1.v;
+ _____acc_29_1_2_1_1.v = _____acc_28_1_2_1_1.v;
+ _____acc_30_1_2_1_1.v = _____acc_29_1_2_1_1.v;
+ _____acc_31_1_2_1_1.v = _____acc_30_1_2_1_1.v;
+ _____acc_32_1_2_1_1.v = _____acc_31_1_2_1_1.v;
+ _____acc_33_1_2_1_1.v = _____acc_32_1_2_1_1.v;
+ _____acc_34_1_2_1_1.v = _____acc_33_1_2_1_1.v;
+ _____acc_35_1_2_1_1.v = _____acc_34_1_2_1_1.v;
+ _____acc_36_1_2_1_1.v = _____acc_35_1_2_1_1.v;
+ _____acc_37_1_2_1_1.v = _____acc_36_1_2_1_1.v;
+ _____acc_38_1_2_1_1.v = _____acc_37_1_2_1_1.v;
+ _____acc_39_1_2_1_1.v = _____acc_38_1_2_1_1.v;
+ _____acc_40_1_2_1_1.v = _____acc_39_1_2_1_1.v;
+ _____acc_41_1_2_1_1.v = _____acc_40_1_2_1_1.v;
+ _____acc_42_1_2_1_1.v = _____acc_41_1_2_1_1.v;
+ _____acc_43_1_2_1_1.v = _____acc_42_1_2_1_1.v;
+ _____acc_44_1_2_1_1.v = _____acc_43_1_2_1_1.v;
+ _____acc_45_1_2_1_1.v = _____acc_44_1_2_1_1.v;
+ _____acc_46_1_2_1_1.v = _____acc_45_1_2_1_1.v;
+ _____acc_47_1_2_1_1.v = _____acc_46_1_2_1_1.v;
+ _____acc_48_1_2_1_1.v = _____acc_47_1_2_1_1.v;
+ _____acc_49_1_2_1_1.v = _____acc_48_1_2_1_1.v;
+ ____split_3_2_1_1.i = 0;
+ ______split_137_1_1_2_1_1 = ____split_3_2_1_1.i + 1;
+ _____acc_1_1_2_1_1.i = ______split_137_1_1_2_1_1;
+ ______split_137_2_1_2_1_1 = _____acc_1_1_2_1_1.i + 1;
+ _____acc_2_1_2_1_1.i = ______split_137_2_1_2_1_1;
+ ______split_137_3_1_2_1_1 = _____acc_2_1_2_1_1.i + 1;
+ _____acc_3_1_2_1_1.i = ______split_137_3_1_2_1_1;
+ ______split_137_4_1_2_1_1 = _____acc_3_1_2_1_1.i + 1;
+ _____acc_4_1_2_1_1.i = ______split_137_4_1_2_1_1;
+ ______split_137_5_1_2_1_1 = _____acc_4_1_2_1_1.i + 1;
+ _____acc_5_1_2_1_1.i = ______split_137_5_1_2_1_1;
+ ______split_137_6_1_2_1_1 = _____acc_5_1_2_1_1.i + 1;
+ _____acc_6_1_2_1_1.i = ______split_137_6_1_2_1_1;
+ ______split_137_7_1_2_1_1 = _____acc_6_1_2_1_1.i + 1;
+ _____acc_7_1_2_1_1.i = ______split_137_7_1_2_1_1;
+ ______split_137_8_1_2_1_1 = _____acc_7_1_2_1_1.i + 1;
+ _____acc_8_1_2_1_1.i = ______split_137_8_1_2_1_1;
+ ______split_137_9_1_2_1_1 = _____acc_8_1_2_1_1.i + 1;
+ _____acc_9_1_2_1_1.i = ______split_137_9_1_2_1_1;
+ ______split_137_10_1_2_1_1 = _____acc_9_1_2_1_1.i + 1;
+ _____acc_10_1_2_1_1.i = ______split_137_10_1_2_1_1;
+ ______split_137_11_1_2_1_1 = _____acc_10_1_2_1_1.i + 1;
+ _____acc_11_1_2_1_1.i = ______split_137_11_1_2_1_1;
+ ______split_137_12_1_2_1_1 = _____acc_11_1_2_1_1.i + 1;
+ _____acc_12_1_2_1_1.i = ______split_137_12_1_2_1_1;
+ ______split_137_13_1_2_1_1 = _____acc_12_1_2_1_1.i + 1;
+ _____acc_13_1_2_1_1.i = ______split_137_13_1_2_1_1;
+ ______split_137_14_1_2_1_1 = _____acc_13_1_2_1_1.i + 1;
+ _____acc_14_1_2_1_1.i = ______split_137_14_1_2_1_1;
+ ______split_137_15_1_2_1_1 = _____acc_14_1_2_1_1.i + 1;
+ _____acc_15_1_2_1_1.i = ______split_137_15_1_2_1_1;
+ ______split_137_16_1_2_1_1 = _____acc_15_1_2_1_1.i + 1;
+ _____acc_16_1_2_1_1.i = ______split_137_16_1_2_1_1;
+ ______split_137_17_1_2_1_1 = _____acc_16_1_2_1_1.i + 1;
+ _____acc_17_1_2_1_1.i = ______split_137_17_1_2_1_1;
+ ______split_137_18_1_2_1_1 = _____acc_17_1_2_1_1.i + 1;
+ _____acc_18_1_2_1_1.i = ______split_137_18_1_2_1_1;
+ ______split_137_19_1_2_1_1 = _____acc_18_1_2_1_1.i + 1;
+ _____acc_19_1_2_1_1.i = ______split_137_19_1_2_1_1;
+ ______split_137_20_1_2_1_1 = _____acc_19_1_2_1_1.i + 1;
+ _____acc_20_1_2_1_1.i = ______split_137_20_1_2_1_1;
+ ______split_137_21_1_2_1_1 = _____acc_20_1_2_1_1.i + 1;
+ _____acc_21_1_2_1_1.i = ______split_137_21_1_2_1_1;
+ ______split_137_22_1_2_1_1 = _____acc_21_1_2_1_1.i + 1;
+ _____acc_22_1_2_1_1.i = ______split_137_22_1_2_1_1;
+ ______split_137_23_1_2_1_1 = _____acc_22_1_2_1_1.i + 1;
+ _____acc_23_1_2_1_1.i = ______split_137_23_1_2_1_1;
+ ______split_137_24_1_2_1_1 = _____acc_23_1_2_1_1.i + 1;
+ _____acc_24_1_2_1_1.i = ______split_137_24_1_2_1_1;
+ ______split_137_25_1_2_1_1 = _____acc_24_1_2_1_1.i + 1;
+ _____acc_25_1_2_1_1.i = ______split_137_25_1_2_1_1;
+ ______split_137_26_1_2_1_1 = _____acc_25_1_2_1_1.i + 1;
+ _____acc_26_1_2_1_1.i = ______split_137_26_1_2_1_1;
+ ______split_137_27_1_2_1_1 = _____acc_26_1_2_1_1.i + 1;
+ _____acc_27_1_2_1_1.i = ______split_137_27_1_2_1_1;
+ ______split_137_28_1_2_1_1 = _____acc_27_1_2_1_1.i + 1;
+ _____acc_28_1_2_1_1.i = ______split_137_28_1_2_1_1;
+ ______split_137_29_1_2_1_1 = _____acc_28_1_2_1_1.i + 1;
+ _____acc_29_1_2_1_1.i = ______split_137_29_1_2_1_1;
+ ______split_137_30_1_2_1_1 = _____acc_29_1_2_1_1.i + 1;
+ _____acc_30_1_2_1_1.i = ______split_137_30_1_2_1_1;
+ ______split_137_31_1_2_1_1 = _____acc_30_1_2_1_1.i + 1;
+ _____acc_31_1_2_1_1.i = ______split_137_31_1_2_1_1;
+ ______split_137_32_1_2_1_1 = _____acc_31_1_2_1_1.i + 1;
+ _____acc_32_1_2_1_1.i = ______split_137_32_1_2_1_1;
+ ______split_137_33_1_2_1_1 = _____acc_32_1_2_1_1.i + 1;
+ _____acc_33_1_2_1_1.i = ______split_137_33_1_2_1_1;
+ ______split_137_34_1_2_1_1 = _____acc_33_1_2_1_1.i + 1;
+ _____acc_34_1_2_1_1.i = ______split_137_34_1_2_1_1;
+ ______split_137_35_1_2_1_1 = _____acc_34_1_2_1_1.i + 1;
+ _____acc_35_1_2_1_1.i = ______split_137_35_1_2_1_1;
+ ______split_137_36_1_2_1_1 = _____acc_35_1_2_1_1.i + 1;
+ _____acc_36_1_2_1_1.i = ______split_137_36_1_2_1_1;
+ ______split_137_37_1_2_1_1 = _____acc_36_1_2_1_1.i + 1;
+ _____acc_37_1_2_1_1.i = ______split_137_37_1_2_1_1;
+ ______split_137_38_1_2_1_1 = _____acc_37_1_2_1_1.i + 1;
+ _____acc_38_1_2_1_1.i = ______split_137_38_1_2_1_1;
+ ______split_137_39_1_2_1_1 = _____acc_38_1_2_1_1.i + 1;
+ _____acc_39_1_2_1_1.i = ______split_137_39_1_2_1_1;
+ ______split_137_40_1_2_1_1 = _____acc_39_1_2_1_1.i + 1;
+ _____acc_40_1_2_1_1.i = ______split_137_40_1_2_1_1;
+ ______split_137_41_1_2_1_1 = _____acc_40_1_2_1_1.i + 1;
+ _____acc_41_1_2_1_1.i = ______split_137_41_1_2_1_1;
+ ______split_137_42_1_2_1_1 = _____acc_41_1_2_1_1.i + 1;
+ _____acc_42_1_2_1_1.i = ______split_137_42_1_2_1_1;
+ ______split_137_43_1_2_1_1 = _____acc_42_1_2_1_1.i + 1;
+ _____acc_43_1_2_1_1.i = ______split_137_43_1_2_1_1;
+ ______split_137_44_1_2_1_1 = _____acc_43_1_2_1_1.i + 1;
+ _____acc_44_1_2_1_1.i = ______split_137_44_1_2_1_1;
+ ______split_137_45_1_2_1_1 = _____acc_44_1_2_1_1.i + 1;
+ _____acc_45_1_2_1_1.i = ______split_137_45_1_2_1_1;
+ ______split_137_46_1_2_1_1 = _____acc_45_1_2_1_1.i + 1;
+ _____acc_46_1_2_1_1.i = ______split_137_46_1_2_1_1;
+ ______split_137_47_1_2_1_1 = _____acc_46_1_2_1_1.i + 1;
+ _____acc_47_1_2_1_1.i = ______split_137_47_1_2_1_1;
+ ______split_137_48_1_2_1_1 = _____acc_47_1_2_1_1.i + 1;
+ _____acc_48_1_2_1_1.i = ______split_137_48_1_2_1_1;
+ ______split_137_49_1_2_1_1 = _____acc_48_1_2_1_1.i + 1;
+ _____acc_49_1_2_1_1.i = ______split_137_49_1_2_1_1;
+ Lustre_pre_2_get(&___split_126_1_1,&ctx->Lustre_pre_2_ctx_tab[1]);
+ Lustre_arrow_2_step(0,___split_126_1_1,&___split_127_1_1,&ctx->Lustre_arrow_2_ctx_tab[1]);
+ __i_2_1 = ___split_127_1_1 + 1;
+ ___split_130_1_1 = __i_2_1 % 50;
+ ____split_3_2_1_1.j = ___split_130_1_1;
+ _____acc_1_1_2_1_1.j = ____split_3_2_1_1.j;
+ _____acc_2_1_2_1_1.j = _____acc_1_1_2_1_1.j;
+ _____acc_3_1_2_1_1.j = _____acc_2_1_2_1_1.j;
+ _____acc_4_1_2_1_1.j = _____acc_3_1_2_1_1.j;
+ _____acc_5_1_2_1_1.j = _____acc_4_1_2_1_1.j;
+ _____acc_6_1_2_1_1.j = _____acc_5_1_2_1_1.j;
+ _____acc_7_1_2_1_1.j = _____acc_6_1_2_1_1.j;
+ _____acc_8_1_2_1_1.j = _____acc_7_1_2_1_1.j;
+ _____acc_9_1_2_1_1.j = _____acc_8_1_2_1_1.j;
+ _____acc_10_1_2_1_1.j = _____acc_9_1_2_1_1.j;
+ _____acc_11_1_2_1_1.j = _____acc_10_1_2_1_1.j;
+ _____acc_12_1_2_1_1.j = _____acc_11_1_2_1_1.j;
+ _____acc_13_1_2_1_1.j = _____acc_12_1_2_1_1.j;
+ _____acc_14_1_2_1_1.j = _____acc_13_1_2_1_1.j;
+ _____acc_15_1_2_1_1.j = _____acc_14_1_2_1_1.j;
+ _____acc_16_1_2_1_1.j = _____acc_15_1_2_1_1.j;
+ _____acc_17_1_2_1_1.j = _____acc_16_1_2_1_1.j;
+ _____acc_18_1_2_1_1.j = _____acc_17_1_2_1_1.j;
+ _____acc_19_1_2_1_1.j = _____acc_18_1_2_1_1.j;
+ _____acc_20_1_2_1_1.j = _____acc_19_1_2_1_1.j;
+ _____acc_21_1_2_1_1.j = _____acc_20_1_2_1_1.j;
+ _____acc_22_1_2_1_1.j = _____acc_21_1_2_1_1.j;
+ _____acc_23_1_2_1_1.j = _____acc_22_1_2_1_1.j;
+ _____acc_24_1_2_1_1.j = _____acc_23_1_2_1_1.j;
+ _____acc_25_1_2_1_1.j = _____acc_24_1_2_1_1.j;
+ _____acc_26_1_2_1_1.j = _____acc_25_1_2_1_1.j;
+ _____acc_27_1_2_1_1.j = _____acc_26_1_2_1_1.j;
+ _____acc_28_1_2_1_1.j = _____acc_27_1_2_1_1.j;
+ _____acc_29_1_2_1_1.j = _____acc_28_1_2_1_1.j;
+ _____acc_30_1_2_1_1.j = _____acc_29_1_2_1_1.j;
+ _____acc_31_1_2_1_1.j = _____acc_30_1_2_1_1.j;
+ _____acc_32_1_2_1_1.j = _____acc_31_1_2_1_1.j;
+ _____acc_33_1_2_1_1.j = _____acc_32_1_2_1_1.j;
+ _____acc_34_1_2_1_1.j = _____acc_33_1_2_1_1.j;
+ _____acc_35_1_2_1_1.j = _____acc_34_1_2_1_1.j;
+ _____acc_36_1_2_1_1.j = _____acc_35_1_2_1_1.j;
+ _____acc_37_1_2_1_1.j = _____acc_36_1_2_1_1.j;
+ _____acc_38_1_2_1_1.j = _____acc_37_1_2_1_1.j;
+ _____acc_39_1_2_1_1.j = _____acc_38_1_2_1_1.j;
+ _____acc_40_1_2_1_1.j = _____acc_39_1_2_1_1.j;
+ _____acc_41_1_2_1_1.j = _____acc_40_1_2_1_1.j;
+ _____acc_42_1_2_1_1.j = _____acc_41_1_2_1_1.j;
+ _____acc_43_1_2_1_1.j = _____acc_42_1_2_1_1.j;
+ _____acc_44_1_2_1_1.j = _____acc_43_1_2_1_1.j;
+ _____acc_45_1_2_1_1.j = _____acc_44_1_2_1_1.j;
+ _____acc_46_1_2_1_1.j = _____acc_45_1_2_1_1.j;
+ _____acc_47_1_2_1_1.j = _____acc_46_1_2_1_1.j;
+ _____acc_48_1_2_1_1.j = _____acc_47_1_2_1_1.j;
+ _____acc_49_1_2_1_1.j = _____acc_48_1_2_1_1.j;
+ ______split_136_50_1_2_1_1 = _____acc_49_1_2_1_1.i == _____acc_49_1_2_1_1.j;
+ Lustre_pre_3_get(___split_129_1_1,&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_hat_step(0.0,___split_128_1_1);
+ Lustre_arrow_3_step(___split_128_1_1,___split_129_1_1,__pre_a_2_1,&ctx->Lustre_arrow_3_ctx_tab[0]);
+ _____cell_50_1_2_1_1 = __pre_a_2_1[49];
+ if (______split_136_50_1_2_1_1 == _true) {
+ _____ncell_50_1_2_1_1 = _____acc_49_1_2_1_1.v;
+ } else {
+ _____ncell_50_1_2_1_1 = _____cell_50_1_2_1_1;
+ }
+ __a_3_1[49] = _____ncell_50_1_2_1_1;
+ ______split_136_49_1_2_1_1 = _____acc_48_1_2_1_1.i == _____acc_48_1_2_1_1.j;
+ _____cell_49_1_2_1_1 = __pre_a_2_1[48];
+ if (______split_136_49_1_2_1_1 == _true) {
+ _____ncell_49_1_2_1_1 = _____acc_48_1_2_1_1.v;
+ } else {
+ _____ncell_49_1_2_1_1 = _____cell_49_1_2_1_1;
+ }
+ __a_3_1[48] = _____ncell_49_1_2_1_1;
+ ______split_136_48_1_2_1_1 = _____acc_47_1_2_1_1.i == _____acc_47_1_2_1_1.j;
+ _____cell_48_1_2_1_1 = __pre_a_2_1[47];
+ if (______split_136_48_1_2_1_1 == _true) {
+ _____ncell_48_1_2_1_1 = _____acc_47_1_2_1_1.v;
+ } else {
+ _____ncell_48_1_2_1_1 = _____cell_48_1_2_1_1;
+ }
+ __a_3_1[47] = _____ncell_48_1_2_1_1;
+ ______split_136_47_1_2_1_1 = _____acc_46_1_2_1_1.i == _____acc_46_1_2_1_1.j;
+ _____cell_47_1_2_1_1 = __pre_a_2_1[46];
+ if (______split_136_47_1_2_1_1 == _true) {
+ _____ncell_47_1_2_1_1 = _____acc_46_1_2_1_1.v;
+ } else {
+ _____ncell_47_1_2_1_1 = _____cell_47_1_2_1_1;
+ }
+ __a_3_1[46] = _____ncell_47_1_2_1_1;
+ ______split_136_46_1_2_1_1 = _____acc_45_1_2_1_1.i == _____acc_45_1_2_1_1.j;
+ _____cell_46_1_2_1_1 = __pre_a_2_1[45];
+ if (______split_136_46_1_2_1_1 == _true) {
+ _____ncell_46_1_2_1_1 = _____acc_45_1_2_1_1.v;
+ } else {
+ _____ncell_46_1_2_1_1 = _____cell_46_1_2_1_1;
+ }
+ __a_3_1[45] = _____ncell_46_1_2_1_1;
+ ______split_136_45_1_2_1_1 = _____acc_44_1_2_1_1.i == _____acc_44_1_2_1_1.j;
+ _____cell_45_1_2_1_1 = __pre_a_2_1[44];
+ if (______split_136_45_1_2_1_1 == _true) {
+ _____ncell_45_1_2_1_1 = _____acc_44_1_2_1_1.v;
+ } else {
+ _____ncell_45_1_2_1_1 = _____cell_45_1_2_1_1;
+ }
+ __a_3_1[44] = _____ncell_45_1_2_1_1;
+ ______split_136_44_1_2_1_1 = _____acc_43_1_2_1_1.i == _____acc_43_1_2_1_1.j;
+ _____cell_44_1_2_1_1 = __pre_a_2_1[43];
+ if (______split_136_44_1_2_1_1 == _true) {
+ _____ncell_44_1_2_1_1 = _____acc_43_1_2_1_1.v;
+ } else {
+ _____ncell_44_1_2_1_1 = _____cell_44_1_2_1_1;
+ }
+ __a_3_1[43] = _____ncell_44_1_2_1_1;
+ ______split_136_43_1_2_1_1 = _____acc_42_1_2_1_1.i == _____acc_42_1_2_1_1.j;
+ _____cell_43_1_2_1_1 = __pre_a_2_1[42];
+ if (______split_136_43_1_2_1_1 == _true) {
+ _____ncell_43_1_2_1_1 = _____acc_42_1_2_1_1.v;
+ } else {
+ _____ncell_43_1_2_1_1 = _____cell_43_1_2_1_1;
+ }
+ __a_3_1[42] = _____ncell_43_1_2_1_1;
+ ______split_136_42_1_2_1_1 = _____acc_41_1_2_1_1.i == _____acc_41_1_2_1_1.j;
+ _____cell_42_1_2_1_1 = __pre_a_2_1[41];
+ if (______split_136_42_1_2_1_1 == _true) {
+ _____ncell_42_1_2_1_1 = _____acc_41_1_2_1_1.v;
+ } else {
+ _____ncell_42_1_2_1_1 = _____cell_42_1_2_1_1;
+ }
+ __a_3_1[41] = _____ncell_42_1_2_1_1;
+ ______split_136_41_1_2_1_1 = _____acc_40_1_2_1_1.i == _____acc_40_1_2_1_1.j;
+ _____cell_41_1_2_1_1 = __pre_a_2_1[40];
+ if (______split_136_41_1_2_1_1 == _true) {
+ _____ncell_41_1_2_1_1 = _____acc_40_1_2_1_1.v;
+ } else {
+ _____ncell_41_1_2_1_1 = _____cell_41_1_2_1_1;
+ }
+ __a_3_1[40] = _____ncell_41_1_2_1_1;
+ ______split_136_40_1_2_1_1 = _____acc_39_1_2_1_1.i == _____acc_39_1_2_1_1.j;
+ _____cell_40_1_2_1_1 = __pre_a_2_1[39];
+ if (______split_136_40_1_2_1_1 == _true) {
+ _____ncell_40_1_2_1_1 = _____acc_39_1_2_1_1.v;
+ } else {
+ _____ncell_40_1_2_1_1 = _____cell_40_1_2_1_1;
+ }
+ __a_3_1[39] = _____ncell_40_1_2_1_1;
+ ______split_136_39_1_2_1_1 = _____acc_38_1_2_1_1.i == _____acc_38_1_2_1_1.j;
+ _____cell_39_1_2_1_1 = __pre_a_2_1[38];
+ if (______split_136_39_1_2_1_1 == _true) {
+ _____ncell_39_1_2_1_1 = _____acc_38_1_2_1_1.v;
+ } else {
+ _____ncell_39_1_2_1_1 = _____cell_39_1_2_1_1;
+ }
+ __a_3_1[38] = _____ncell_39_1_2_1_1;
+ ______split_136_38_1_2_1_1 = _____acc_37_1_2_1_1.i == _____acc_37_1_2_1_1.j;
+ _____cell_38_1_2_1_1 = __pre_a_2_1[37];
+ if (______split_136_38_1_2_1_1 == _true) {
+ _____ncell_38_1_2_1_1 = _____acc_37_1_2_1_1.v;
+ } else {
+ _____ncell_38_1_2_1_1 = _____cell_38_1_2_1_1;
+ }
+ __a_3_1[37] = _____ncell_38_1_2_1_1;
+ ______split_136_37_1_2_1_1 = _____acc_36_1_2_1_1.i == _____acc_36_1_2_1_1.j;
+ _____cell_37_1_2_1_1 = __pre_a_2_1[36];
+ if (______split_136_37_1_2_1_1 == _true) {
+ _____ncell_37_1_2_1_1 = _____acc_36_1_2_1_1.v;
+ } else {
+ _____ncell_37_1_2_1_1 = _____cell_37_1_2_1_1;
+ }
+ __a_3_1[36] = _____ncell_37_1_2_1_1;
+ ______split_136_36_1_2_1_1 = _____acc_35_1_2_1_1.i == _____acc_35_1_2_1_1.j;
+ _____cell_36_1_2_1_1 = __pre_a_2_1[35];
+ if (______split_136_36_1_2_1_1 == _true) {
+ _____ncell_36_1_2_1_1 = _____acc_35_1_2_1_1.v;
+ } else {
+ _____ncell_36_1_2_1_1 = _____cell_36_1_2_1_1;
+ }
+ __a_3_1[35] = _____ncell_36_1_2_1_1;
+ ______split_136_35_1_2_1_1 = _____acc_34_1_2_1_1.i == _____acc_34_1_2_1_1.j;
+ _____cell_35_1_2_1_1 = __pre_a_2_1[34];
+ if (______split_136_35_1_2_1_1 == _true) {
+ _____ncell_35_1_2_1_1 = _____acc_34_1_2_1_1.v;
+ } else {
+ _____ncell_35_1_2_1_1 = _____cell_35_1_2_1_1;
+ }
+ __a_3_1[34] = _____ncell_35_1_2_1_1;
+ ______split_136_34_1_2_1_1 = _____acc_33_1_2_1_1.i == _____acc_33_1_2_1_1.j;
+ _____cell_34_1_2_1_1 = __pre_a_2_1[33];
+ if (______split_136_34_1_2_1_1 == _true) {
+ _____ncell_34_1_2_1_1 = _____acc_33_1_2_1_1.v;
+ } else {
+ _____ncell_34_1_2_1_1 = _____cell_34_1_2_1_1;
+ }
+ __a_3_1[33] = _____ncell_34_1_2_1_1;
+ ______split_136_33_1_2_1_1 = _____acc_32_1_2_1_1.i == _____acc_32_1_2_1_1.j;
+ _____cell_33_1_2_1_1 = __pre_a_2_1[32];
+ if (______split_136_33_1_2_1_1 == _true) {
+ _____ncell_33_1_2_1_1 = _____acc_32_1_2_1_1.v;
+ } else {
+ _____ncell_33_1_2_1_1 = _____cell_33_1_2_1_1;
+ }
+ __a_3_1[32] = _____ncell_33_1_2_1_1;
+ ______split_136_32_1_2_1_1 = _____acc_31_1_2_1_1.i == _____acc_31_1_2_1_1.j;
+ _____cell_32_1_2_1_1 = __pre_a_2_1[31];
+ if (______split_136_32_1_2_1_1 == _true) {
+ _____ncell_32_1_2_1_1 = _____acc_31_1_2_1_1.v;
+ } else {
+ _____ncell_32_1_2_1_1 = _____cell_32_1_2_1_1;
+ }
+ __a_3_1[31] = _____ncell_32_1_2_1_1;
+ ______split_136_31_1_2_1_1 = _____acc_30_1_2_1_1.i == _____acc_30_1_2_1_1.j;
+ _____cell_31_1_2_1_1 = __pre_a_2_1[30];
+ if (______split_136_31_1_2_1_1 == _true) {
+ _____ncell_31_1_2_1_1 = _____acc_30_1_2_1_1.v;
+ } else {
+ _____ncell_31_1_2_1_1 = _____cell_31_1_2_1_1;
+ }
+ __a_3_1[30] = _____ncell_31_1_2_1_1;
+ ______split_136_30_1_2_1_1 = _____acc_29_1_2_1_1.i == _____acc_29_1_2_1_1.j;
+ _____cell_30_1_2_1_1 = __pre_a_2_1[29];
+ if (______split_136_30_1_2_1_1 == _true) {
+ _____ncell_30_1_2_1_1 = _____acc_29_1_2_1_1.v;
+ } else {
+ _____ncell_30_1_2_1_1 = _____cell_30_1_2_1_1;
+ }
+ __a_3_1[29] = _____ncell_30_1_2_1_1;
+ ______split_136_29_1_2_1_1 = _____acc_28_1_2_1_1.i == _____acc_28_1_2_1_1.j;
+ _____cell_29_1_2_1_1 = __pre_a_2_1[28];
+ if (______split_136_29_1_2_1_1 == _true) {
+ _____ncell_29_1_2_1_1 = _____acc_28_1_2_1_1.v;
+ } else {
+ _____ncell_29_1_2_1_1 = _____cell_29_1_2_1_1;
+ }
+ __a_3_1[28] = _____ncell_29_1_2_1_1;
+ ______split_136_28_1_2_1_1 = _____acc_27_1_2_1_1.i == _____acc_27_1_2_1_1.j;
+ _____cell_28_1_2_1_1 = __pre_a_2_1[27];
+ if (______split_136_28_1_2_1_1 == _true) {
+ _____ncell_28_1_2_1_1 = _____acc_27_1_2_1_1.v;
+ } else {
+ _____ncell_28_1_2_1_1 = _____cell_28_1_2_1_1;
+ }
+ __a_3_1[27] = _____ncell_28_1_2_1_1;
+ ______split_136_27_1_2_1_1 = _____acc_26_1_2_1_1.i == _____acc_26_1_2_1_1.j;
+ _____cell_27_1_2_1_1 = __pre_a_2_1[26];
+ if (______split_136_27_1_2_1_1 == _true) {
+ _____ncell_27_1_2_1_1 = _____acc_26_1_2_1_1.v;
+ } else {
+ _____ncell_27_1_2_1_1 = _____cell_27_1_2_1_1;
+ }
+ __a_3_1[26] = _____ncell_27_1_2_1_1;
+ ______split_136_26_1_2_1_1 = _____acc_25_1_2_1_1.i == _____acc_25_1_2_1_1.j;
+ _____cell_26_1_2_1_1 = __pre_a_2_1[25];
+ if (______split_136_26_1_2_1_1 == _true) {
+ _____ncell_26_1_2_1_1 = _____acc_25_1_2_1_1.v;
+ } else {
+ _____ncell_26_1_2_1_1 = _____cell_26_1_2_1_1;
+ }
+ __a_3_1[25] = _____ncell_26_1_2_1_1;
+ ______split_136_25_1_2_1_1 = _____acc_24_1_2_1_1.i == _____acc_24_1_2_1_1.j;
+ _____cell_25_1_2_1_1 = __pre_a_2_1[24];
+ if (______split_136_25_1_2_1_1 == _true) {
+ _____ncell_25_1_2_1_1 = _____acc_24_1_2_1_1.v;
+ } else {
+ _____ncell_25_1_2_1_1 = _____cell_25_1_2_1_1;
+ }
+ __a_3_1[24] = _____ncell_25_1_2_1_1;
+ ______split_136_24_1_2_1_1 = _____acc_23_1_2_1_1.i == _____acc_23_1_2_1_1.j;
+ _____cell_24_1_2_1_1 = __pre_a_2_1[23];
+ if (______split_136_24_1_2_1_1 == _true) {
+ _____ncell_24_1_2_1_1 = _____acc_23_1_2_1_1.v;
+ } else {
+ _____ncell_24_1_2_1_1 = _____cell_24_1_2_1_1;
+ }
+ __a_3_1[23] = _____ncell_24_1_2_1_1;
+ ______split_136_23_1_2_1_1 = _____acc_22_1_2_1_1.i == _____acc_22_1_2_1_1.j;
+ _____cell_23_1_2_1_1 = __pre_a_2_1[22];
+ if (______split_136_23_1_2_1_1 == _true) {
+ _____ncell_23_1_2_1_1 = _____acc_22_1_2_1_1.v;
+ } else {
+ _____ncell_23_1_2_1_1 = _____cell_23_1_2_1_1;
+ }
+ __a_3_1[22] = _____ncell_23_1_2_1_1;
+ ______split_136_22_1_2_1_1 = _____acc_21_1_2_1_1.i == _____acc_21_1_2_1_1.j;
+ _____cell_22_1_2_1_1 = __pre_a_2_1[21];
+ if (______split_136_22_1_2_1_1 == _true) {
+ _____ncell_22_1_2_1_1 = _____acc_21_1_2_1_1.v;
+ } else {
+ _____ncell_22_1_2_1_1 = _____cell_22_1_2_1_1;
+ }
+ __a_3_1[21] = _____ncell_22_1_2_1_1;
+ ______split_136_21_1_2_1_1 = _____acc_20_1_2_1_1.i == _____acc_20_1_2_1_1.j;
+ _____cell_21_1_2_1_1 = __pre_a_2_1[20];
+ if (______split_136_21_1_2_1_1 == _true) {
+ _____ncell_21_1_2_1_1 = _____acc_20_1_2_1_1.v;
+ } else {
+ _____ncell_21_1_2_1_1 = _____cell_21_1_2_1_1;
+ }
+ __a_3_1[20] = _____ncell_21_1_2_1_1;
+ ______split_136_20_1_2_1_1 = _____acc_19_1_2_1_1.i == _____acc_19_1_2_1_1.j;
+ _____cell_20_1_2_1_1 = __pre_a_2_1[19];
+ if (______split_136_20_1_2_1_1 == _true) {
+ _____ncell_20_1_2_1_1 = _____acc_19_1_2_1_1.v;
+ } else {
+ _____ncell_20_1_2_1_1 = _____cell_20_1_2_1_1;
+ }
+ __a_3_1[19] = _____ncell_20_1_2_1_1;
+ ______split_136_19_1_2_1_1 = _____acc_18_1_2_1_1.i == _____acc_18_1_2_1_1.j;
+ _____cell_19_1_2_1_1 = __pre_a_2_1[18];
+ if (______split_136_19_1_2_1_1 == _true) {
+ _____ncell_19_1_2_1_1 = _____acc_18_1_2_1_1.v;
+ } else {
+ _____ncell_19_1_2_1_1 = _____cell_19_1_2_1_1;
+ }
+ __a_3_1[18] = _____ncell_19_1_2_1_1;
+ ______split_136_18_1_2_1_1 = _____acc_17_1_2_1_1.i == _____acc_17_1_2_1_1.j;
+ _____cell_18_1_2_1_1 = __pre_a_2_1[17];
+ if (______split_136_18_1_2_1_1 == _true) {
+ _____ncell_18_1_2_1_1 = _____acc_17_1_2_1_1.v;
+ } else {
+ _____ncell_18_1_2_1_1 = _____cell_18_1_2_1_1;
+ }
+ __a_3_1[17] = _____ncell_18_1_2_1_1;
+ ______split_136_17_1_2_1_1 = _____acc_16_1_2_1_1.i == _____acc_16_1_2_1_1.j;
+ _____cell_17_1_2_1_1 = __pre_a_2_1[16];
+ if (______split_136_17_1_2_1_1 == _true) {
+ _____ncell_17_1_2_1_1 = _____acc_16_1_2_1_1.v;
+ } else {
+ _____ncell_17_1_2_1_1 = _____cell_17_1_2_1_1;
+ }
+ __a_3_1[16] = _____ncell_17_1_2_1_1;
+ ______split_136_16_1_2_1_1 = _____acc_15_1_2_1_1.i == _____acc_15_1_2_1_1.j;
+ _____cell_16_1_2_1_1 = __pre_a_2_1[15];
+ if (______split_136_16_1_2_1_1 == _true) {
+ _____ncell_16_1_2_1_1 = _____acc_15_1_2_1_1.v;
+ } else {
+ _____ncell_16_1_2_1_1 = _____cell_16_1_2_1_1;
+ }
+ __a_3_1[15] = _____ncell_16_1_2_1_1;
+ ______split_136_15_1_2_1_1 = _____acc_14_1_2_1_1.i == _____acc_14_1_2_1_1.j;
+ _____cell_15_1_2_1_1 = __pre_a_2_1[14];
+ if (______split_136_15_1_2_1_1 == _true) {
+ _____ncell_15_1_2_1_1 = _____acc_14_1_2_1_1.v;
+ } else {
+ _____ncell_15_1_2_1_1 = _____cell_15_1_2_1_1;
+ }
+ __a_3_1[14] = _____ncell_15_1_2_1_1;
+ ______split_136_14_1_2_1_1 = _____acc_13_1_2_1_1.i == _____acc_13_1_2_1_1.j;
+ _____cell_14_1_2_1_1 = __pre_a_2_1[13];
+ if (______split_136_14_1_2_1_1 == _true) {
+ _____ncell_14_1_2_1_1 = _____acc_13_1_2_1_1.v;
+ } else {
+ _____ncell_14_1_2_1_1 = _____cell_14_1_2_1_1;
+ }
+ __a_3_1[13] = _____ncell_14_1_2_1_1;
+ ______split_136_13_1_2_1_1 = _____acc_12_1_2_1_1.i == _____acc_12_1_2_1_1.j;
+ _____cell_13_1_2_1_1 = __pre_a_2_1[12];
+ if (______split_136_13_1_2_1_1 == _true) {
+ _____ncell_13_1_2_1_1 = _____acc_12_1_2_1_1.v;
+ } else {
+ _____ncell_13_1_2_1_1 = _____cell_13_1_2_1_1;
+ }
+ __a_3_1[12] = _____ncell_13_1_2_1_1;
+ ______split_136_12_1_2_1_1 = _____acc_11_1_2_1_1.i == _____acc_11_1_2_1_1.j;
+ _____cell_12_1_2_1_1 = __pre_a_2_1[11];
+ if (______split_136_12_1_2_1_1 == _true) {
+ _____ncell_12_1_2_1_1 = _____acc_11_1_2_1_1.v;
+ } else {
+ _____ncell_12_1_2_1_1 = _____cell_12_1_2_1_1;
+ }
+ __a_3_1[11] = _____ncell_12_1_2_1_1;
+ ______split_136_11_1_2_1_1 = _____acc_10_1_2_1_1.i == _____acc_10_1_2_1_1.j;
+ _____cell_11_1_2_1_1 = __pre_a_2_1[10];
+ if (______split_136_11_1_2_1_1 == _true) {
+ _____ncell_11_1_2_1_1 = _____acc_10_1_2_1_1.v;
+ } else {
+ _____ncell_11_1_2_1_1 = _____cell_11_1_2_1_1;
+ }
+ __a_3_1[10] = _____ncell_11_1_2_1_1;
+ ______split_136_10_1_2_1_1 = _____acc_9_1_2_1_1.i == _____acc_9_1_2_1_1.j;
+ _____cell_10_1_2_1_1 = __pre_a_2_1[9];
+ if (______split_136_10_1_2_1_1 == _true) {
+ _____ncell_10_1_2_1_1 = _____acc_9_1_2_1_1.v;
+ } else {
+ _____ncell_10_1_2_1_1 = _____cell_10_1_2_1_1;
+ }
+ __a_3_1[9] = _____ncell_10_1_2_1_1;
+ ______split_136_9_1_2_1_1 = _____acc_8_1_2_1_1.i == _____acc_8_1_2_1_1.j;
+ _____cell_9_1_2_1_1 = __pre_a_2_1[8];
+ if (______split_136_9_1_2_1_1 == _true) {
+ _____ncell_9_1_2_1_1 = _____acc_8_1_2_1_1.v;
+ } else {
+ _____ncell_9_1_2_1_1 = _____cell_9_1_2_1_1;
+ }
+ __a_3_1[8] = _____ncell_9_1_2_1_1;
+ ______split_136_8_1_2_1_1 = _____acc_7_1_2_1_1.i == _____acc_7_1_2_1_1.j;
+ _____cell_8_1_2_1_1 = __pre_a_2_1[7];
+ if (______split_136_8_1_2_1_1 == _true) {
+ _____ncell_8_1_2_1_1 = _____acc_7_1_2_1_1.v;
+ } else {
+ _____ncell_8_1_2_1_1 = _____cell_8_1_2_1_1;
+ }
+ __a_3_1[7] = _____ncell_8_1_2_1_1;
+ ______split_136_7_1_2_1_1 = _____acc_6_1_2_1_1.i == _____acc_6_1_2_1_1.j;
+ _____cell_7_1_2_1_1 = __pre_a_2_1[6];
+ if (______split_136_7_1_2_1_1 == _true) {
+ _____ncell_7_1_2_1_1 = _____acc_6_1_2_1_1.v;
+ } else {
+ _____ncell_7_1_2_1_1 = _____cell_7_1_2_1_1;
+ }
+ __a_3_1[6] = _____ncell_7_1_2_1_1;
+ ______split_136_6_1_2_1_1 = _____acc_5_1_2_1_1.i == _____acc_5_1_2_1_1.j;
+ _____cell_6_1_2_1_1 = __pre_a_2_1[5];
+ if (______split_136_6_1_2_1_1 == _true) {
+ _____ncell_6_1_2_1_1 = _____acc_5_1_2_1_1.v;
+ } else {
+ _____ncell_6_1_2_1_1 = _____cell_6_1_2_1_1;
+ }
+ __a_3_1[5] = _____ncell_6_1_2_1_1;
+ ______split_136_5_1_2_1_1 = _____acc_4_1_2_1_1.i == _____acc_4_1_2_1_1.j;
+ _____cell_5_1_2_1_1 = __pre_a_2_1[4];
+ if (______split_136_5_1_2_1_1 == _true) {
+ _____ncell_5_1_2_1_1 = _____acc_4_1_2_1_1.v;
+ } else {
+ _____ncell_5_1_2_1_1 = _____cell_5_1_2_1_1;
+ }
+ __a_3_1[4] = _____ncell_5_1_2_1_1;
+ ______split_136_4_1_2_1_1 = _____acc_3_1_2_1_1.i == _____acc_3_1_2_1_1.j;
+ _____cell_4_1_2_1_1 = __pre_a_2_1[3];
+ if (______split_136_4_1_2_1_1 == _true) {
+ _____ncell_4_1_2_1_1 = _____acc_3_1_2_1_1.v;
+ } else {
+ _____ncell_4_1_2_1_1 = _____cell_4_1_2_1_1;
+ }
+ __a_3_1[3] = _____ncell_4_1_2_1_1;
+ ______split_136_3_1_2_1_1 = _____acc_2_1_2_1_1.i == _____acc_2_1_2_1_1.j;
+ _____cell_3_1_2_1_1 = __pre_a_2_1[2];
+ if (______split_136_3_1_2_1_1 == _true) {
+ _____ncell_3_1_2_1_1 = _____acc_2_1_2_1_1.v;
+ } else {
+ _____ncell_3_1_2_1_1 = _____cell_3_1_2_1_1;
+ }
+ __a_3_1[2] = _____ncell_3_1_2_1_1;
+ ______split_136_2_1_2_1_1 = _____acc_1_1_2_1_1.i == _____acc_1_1_2_1_1.j;
+ _____cell_2_1_2_1_1 = __pre_a_2_1[1];
+ if (______split_136_2_1_2_1_1 == _true) {
+ _____ncell_2_1_2_1_1 = _____acc_1_1_2_1_1.v;
+ } else {
+ _____ncell_2_1_2_1_1 = _____cell_2_1_2_1_1;
+ }
+ __a_3_1[1] = _____ncell_2_1_2_1_1;
+ ______split_136_1_1_2_1_1 = ____split_3_2_1_1.i == ____split_3_2_1_1.j;
+ _____cell_1_1_2_1_1 = __pre_a_2_1[0];
+ if (______split_136_1_1_2_1_1 == _true) {
+ _____ncell_1_1_2_1_1 = ____split_3_2_1_1.v;
+ } else {
+ _____ncell_1_1_2_1_1 = _____cell_1_1_2_1_1;
+ }
+ __a_3_1[0] = _____ncell_1_1_2_1_1;
+ ___i1_2_1_1 = 0.0;
+ ____acc_50_2_1_1 = ___i1_2_1_1 + __a_3_1[0];
+ ____acc_51_2_1_1 = ____acc_50_2_1_1 + __a_3_1[1];
+ ____acc_52_2_1_1 = ____acc_51_2_1_1 + __a_3_1[2];
+ ____acc_53_2_1_1 = ____acc_52_2_1_1 + __a_3_1[3];
+ ____acc_54_2_1_1 = ____acc_53_2_1_1 + __a_3_1[4];
+ ____acc_55_2_1_1 = ____acc_54_2_1_1 + __a_3_1[5];
+ ____acc_56_2_1_1 = ____acc_55_2_1_1 + __a_3_1[6];
+ ____acc_57_2_1_1 = ____acc_56_2_1_1 + __a_3_1[7];
+ ____acc_58_2_1_1 = ____acc_57_2_1_1 + __a_3_1[8];
+ ____acc_59_2_1_1 = ____acc_58_2_1_1 + __a_3_1[9];
+ ____acc_60_2_1_1 = ____acc_59_2_1_1 + __a_3_1[10];
+ ____acc_61_2_1_1 = ____acc_60_2_1_1 + __a_3_1[11];
+ ____acc_62_2_1_1 = ____acc_61_2_1_1 + __a_3_1[12];
+ ____acc_63_2_1_1 = ____acc_62_2_1_1 + __a_3_1[13];
+ ____acc_64_2_1_1 = ____acc_63_2_1_1 + __a_3_1[14];
+ ____acc_65_2_1_1 = ____acc_64_2_1_1 + __a_3_1[15];
+ ____acc_66_2_1_1 = ____acc_65_2_1_1 + __a_3_1[16];
+ ____acc_67_2_1_1 = ____acc_66_2_1_1 + __a_3_1[17];
+ ____acc_68_2_1_1 = ____acc_67_2_1_1 + __a_3_1[18];
+ ____acc_69_2_1_1 = ____acc_68_2_1_1 + __a_3_1[19];
+ ____acc_70_2_1_1 = ____acc_69_2_1_1 + __a_3_1[20];
+ ____acc_71_2_1_1 = ____acc_70_2_1_1 + __a_3_1[21];
+ ____acc_72_2_1_1 = ____acc_71_2_1_1 + __a_3_1[22];
+ ____acc_73_2_1_1 = ____acc_72_2_1_1 + __a_3_1[23];
+ ____acc_74_2_1_1 = ____acc_73_2_1_1 + __a_3_1[24];
+ ____acc_75_2_1_1 = ____acc_74_2_1_1 + __a_3_1[25];
+ ____acc_76_2_1_1 = ____acc_75_2_1_1 + __a_3_1[26];
+ ____acc_77_2_1_1 = ____acc_76_2_1_1 + __a_3_1[27];
+ ____acc_78_2_1_1 = ____acc_77_2_1_1 + __a_3_1[28];
+ ____acc_79_2_1_1 = ____acc_78_2_1_1 + __a_3_1[29];
+ ____acc_80_2_1_1 = ____acc_79_2_1_1 + __a_3_1[30];
+ ____acc_81_2_1_1 = ____acc_80_2_1_1 + __a_3_1[31];
+ ____acc_82_2_1_1 = ____acc_81_2_1_1 + __a_3_1[32];
+ ____acc_83_2_1_1 = ____acc_82_2_1_1 + __a_3_1[33];
+ ____acc_84_2_1_1 = ____acc_83_2_1_1 + __a_3_1[34];
+ ____acc_85_2_1_1 = ____acc_84_2_1_1 + __a_3_1[35];
+ ____acc_86_2_1_1 = ____acc_85_2_1_1 + __a_3_1[36];
+ ____acc_87_2_1_1 = ____acc_86_2_1_1 + __a_3_1[37];
+ ____acc_88_2_1_1 = ____acc_87_2_1_1 + __a_3_1[38];
+ ____acc_89_2_1_1 = ____acc_88_2_1_1 + __a_3_1[39];
+ ____acc_90_2_1_1 = ____acc_89_2_1_1 + __a_3_1[40];
+ ____acc_91_2_1_1 = ____acc_90_2_1_1 + __a_3_1[41];
+ ____acc_92_2_1_1 = ____acc_91_2_1_1 + __a_3_1[42];
+ ____acc_93_2_1_1 = ____acc_92_2_1_1 + __a_3_1[43];
+ ____acc_94_2_1_1 = ____acc_93_2_1_1 + __a_3_1[44];
+ ____acc_95_2_1_1 = ____acc_94_2_1_1 + __a_3_1[45];
+ ____acc_96_2_1_1 = ____acc_95_2_1_1 + __a_3_1[46];
+ ____acc_97_2_1_1 = ____acc_96_2_1_1 + __a_3_1[47];
+ ____acc_98_2_1_1 = ____acc_97_2_1_1 + __a_3_1[48];
+ __split_82_1 = ____acc_98_2_1_1 + __a_3_1[49];
+ _d_1 = __split_82_1;
+ break;
+}
+ Lustre_pre_set(_d_1,&ctx->Lustre_pre_ctx_tab[1]);
+ Lustre_pre_get(&__split_79_1,&ctx->Lustre_pre_ctx_tab[2]);
+ __x_13_1 = 0.1;
+ Lustre_arrow_step(0.0,__split_79_1,&_pt_1,&ctx->Lustre_arrow_ctx_tab[2]);
+ switch (_TickOrRot_1){
+ case _false:
+ __split_85_1 = _pt_1;
+ __split_86_1 = __split_85_1;
+ break;
+ case _true:
+ __split_83_1 = _tx_1;
+ ____split_3_1_1_1.v = __split_83_1;
+ _____acc_1_1_1_1_1.v = ____split_3_1_1_1.v;
+ _____acc_2_1_1_1_1.v = _____acc_1_1_1_1_1.v;
+ _____acc_3_1_1_1_1.v = _____acc_2_1_1_1_1.v;
+ _____acc_4_1_1_1_1.v = _____acc_3_1_1_1_1.v;
+ _____acc_5_1_1_1_1.v = _____acc_4_1_1_1_1.v;
+ _____acc_6_1_1_1_1.v = _____acc_5_1_1_1_1.v;
+ _____acc_7_1_1_1_1.v = _____acc_6_1_1_1_1.v;
+ _____acc_8_1_1_1_1.v = _____acc_7_1_1_1_1.v;
+ _____acc_9_1_1_1_1.v = _____acc_8_1_1_1_1.v;
+ _____acc_10_1_1_1_1.v = _____acc_9_1_1_1_1.v;
+ _____acc_11_1_1_1_1.v = _____acc_10_1_1_1_1.v;
+ _____acc_12_1_1_1_1.v = _____acc_11_1_1_1_1.v;
+ _____acc_13_1_1_1_1.v = _____acc_12_1_1_1_1.v;
+ _____acc_14_1_1_1_1.v = _____acc_13_1_1_1_1.v;
+ _____acc_15_1_1_1_1.v = _____acc_14_1_1_1_1.v;
+ _____acc_16_1_1_1_1.v = _____acc_15_1_1_1_1.v;
+ _____acc_17_1_1_1_1.v = _____acc_16_1_1_1_1.v;
+ _____acc_18_1_1_1_1.v = _____acc_17_1_1_1_1.v;
+ _____acc_19_1_1_1_1.v = _____acc_18_1_1_1_1.v;
+ _____acc_20_1_1_1_1.v = _____acc_19_1_1_1_1.v;
+ _____acc_21_1_1_1_1.v = _____acc_20_1_1_1_1.v;
+ _____acc_22_1_1_1_1.v = _____acc_21_1_1_1_1.v;
+ _____acc_23_1_1_1_1.v = _____acc_22_1_1_1_1.v;
+ _____acc_24_1_1_1_1.v = _____acc_23_1_1_1_1.v;
+ _____acc_25_1_1_1_1.v = _____acc_24_1_1_1_1.v;
+ _____acc_26_1_1_1_1.v = _____acc_25_1_1_1_1.v;
+ _____acc_27_1_1_1_1.v = _____acc_26_1_1_1_1.v;
+ _____acc_28_1_1_1_1.v = _____acc_27_1_1_1_1.v;
+ _____acc_29_1_1_1_1.v = _____acc_28_1_1_1_1.v;
+ _____acc_30_1_1_1_1.v = _____acc_29_1_1_1_1.v;
+ _____acc_31_1_1_1_1.v = _____acc_30_1_1_1_1.v;
+ _____acc_32_1_1_1_1.v = _____acc_31_1_1_1_1.v;
+ _____acc_33_1_1_1_1.v = _____acc_32_1_1_1_1.v;
+ _____acc_34_1_1_1_1.v = _____acc_33_1_1_1_1.v;
+ _____acc_35_1_1_1_1.v = _____acc_34_1_1_1_1.v;
+ _____acc_36_1_1_1_1.v = _____acc_35_1_1_1_1.v;
+ _____acc_37_1_1_1_1.v = _____acc_36_1_1_1_1.v;
+ _____acc_38_1_1_1_1.v = _____acc_37_1_1_1_1.v;
+ _____acc_39_1_1_1_1.v = _____acc_38_1_1_1_1.v;
+ _____acc_40_1_1_1_1.v = _____acc_39_1_1_1_1.v;
+ _____acc_41_1_1_1_1.v = _____acc_40_1_1_1_1.v;
+ _____acc_42_1_1_1_1.v = _____acc_41_1_1_1_1.v;
+ _____acc_43_1_1_1_1.v = _____acc_42_1_1_1_1.v;
+ _____acc_44_1_1_1_1.v = _____acc_43_1_1_1_1.v;
+ _____acc_45_1_1_1_1.v = _____acc_44_1_1_1_1.v;
+ _____acc_46_1_1_1_1.v = _____acc_45_1_1_1_1.v;
+ _____acc_47_1_1_1_1.v = _____acc_46_1_1_1_1.v;
+ _____acc_48_1_1_1_1.v = _____acc_47_1_1_1_1.v;
+ _____acc_49_1_1_1_1.v = _____acc_48_1_1_1_1.v;
+ ____split_3_1_1_1.i = 0;
+ ______split_137_1_1_1_1_1 = ____split_3_1_1_1.i + 1;
+ _____acc_1_1_1_1_1.i = ______split_137_1_1_1_1_1;
+ ______split_137_2_1_1_1_1 = _____acc_1_1_1_1_1.i + 1;
+ _____acc_2_1_1_1_1.i = ______split_137_2_1_1_1_1;
+ ______split_137_3_1_1_1_1 = _____acc_2_1_1_1_1.i + 1;
+ _____acc_3_1_1_1_1.i = ______split_137_3_1_1_1_1;
+ ______split_137_4_1_1_1_1 = _____acc_3_1_1_1_1.i + 1;
+ _____acc_4_1_1_1_1.i = ______split_137_4_1_1_1_1;
+ ______split_137_5_1_1_1_1 = _____acc_4_1_1_1_1.i + 1;
+ _____acc_5_1_1_1_1.i = ______split_137_5_1_1_1_1;
+ ______split_137_6_1_1_1_1 = _____acc_5_1_1_1_1.i + 1;
+ _____acc_6_1_1_1_1.i = ______split_137_6_1_1_1_1;
+ ______split_137_7_1_1_1_1 = _____acc_6_1_1_1_1.i + 1;
+ _____acc_7_1_1_1_1.i = ______split_137_7_1_1_1_1;
+ ______split_137_8_1_1_1_1 = _____acc_7_1_1_1_1.i + 1;
+ _____acc_8_1_1_1_1.i = ______split_137_8_1_1_1_1;
+ ______split_137_9_1_1_1_1 = _____acc_8_1_1_1_1.i + 1;
+ _____acc_9_1_1_1_1.i = ______split_137_9_1_1_1_1;
+ ______split_137_10_1_1_1_1 = _____acc_9_1_1_1_1.i + 1;
+ _____acc_10_1_1_1_1.i = ______split_137_10_1_1_1_1;
+ ______split_137_11_1_1_1_1 = _____acc_10_1_1_1_1.i + 1;
+ _____acc_11_1_1_1_1.i = ______split_137_11_1_1_1_1;
+ ______split_137_12_1_1_1_1 = _____acc_11_1_1_1_1.i + 1;
+ _____acc_12_1_1_1_1.i = ______split_137_12_1_1_1_1;
+ ______split_137_13_1_1_1_1 = _____acc_12_1_1_1_1.i + 1;
+ _____acc_13_1_1_1_1.i = ______split_137_13_1_1_1_1;
+ ______split_137_14_1_1_1_1 = _____acc_13_1_1_1_1.i + 1;
+ _____acc_14_1_1_1_1.i = ______split_137_14_1_1_1_1;
+ ______split_137_15_1_1_1_1 = _____acc_14_1_1_1_1.i + 1;
+ _____acc_15_1_1_1_1.i = ______split_137_15_1_1_1_1;
+ ______split_137_16_1_1_1_1 = _____acc_15_1_1_1_1.i + 1;
+ _____acc_16_1_1_1_1.i = ______split_137_16_1_1_1_1;
+ ______split_137_17_1_1_1_1 = _____acc_16_1_1_1_1.i + 1;
+ _____acc_17_1_1_1_1.i = ______split_137_17_1_1_1_1;
+ ______split_137_18_1_1_1_1 = _____acc_17_1_1_1_1.i + 1;
+ _____acc_18_1_1_1_1.i = ______split_137_18_1_1_1_1;
+ ______split_137_19_1_1_1_1 = _____acc_18_1_1_1_1.i + 1;
+ _____acc_19_1_1_1_1.i = ______split_137_19_1_1_1_1;
+ ______split_137_20_1_1_1_1 = _____acc_19_1_1_1_1.i + 1;
+ _____acc_20_1_1_1_1.i = ______split_137_20_1_1_1_1;
+ ______split_137_21_1_1_1_1 = _____acc_20_1_1_1_1.i + 1;
+ _____acc_21_1_1_1_1.i = ______split_137_21_1_1_1_1;
+ ______split_137_22_1_1_1_1 = _____acc_21_1_1_1_1.i + 1;
+ _____acc_22_1_1_1_1.i = ______split_137_22_1_1_1_1;
+ ______split_137_23_1_1_1_1 = _____acc_22_1_1_1_1.i + 1;
+ _____acc_23_1_1_1_1.i = ______split_137_23_1_1_1_1;
+ ______split_137_24_1_1_1_1 = _____acc_23_1_1_1_1.i + 1;
+ _____acc_24_1_1_1_1.i = ______split_137_24_1_1_1_1;
+ ______split_137_25_1_1_1_1 = _____acc_24_1_1_1_1.i + 1;
+ _____acc_25_1_1_1_1.i = ______split_137_25_1_1_1_1;
+ ______split_137_26_1_1_1_1 = _____acc_25_1_1_1_1.i + 1;
+ _____acc_26_1_1_1_1.i = ______split_137_26_1_1_1_1;
+ ______split_137_27_1_1_1_1 = _____acc_26_1_1_1_1.i + 1;
+ _____acc_27_1_1_1_1.i = ______split_137_27_1_1_1_1;
+ ______split_137_28_1_1_1_1 = _____acc_27_1_1_1_1.i + 1;
+ _____acc_28_1_1_1_1.i = ______split_137_28_1_1_1_1;
+ ______split_137_29_1_1_1_1 = _____acc_28_1_1_1_1.i + 1;
+ _____acc_29_1_1_1_1.i = ______split_137_29_1_1_1_1;
+ ______split_137_30_1_1_1_1 = _____acc_29_1_1_1_1.i + 1;
+ _____acc_30_1_1_1_1.i = ______split_137_30_1_1_1_1;
+ ______split_137_31_1_1_1_1 = _____acc_30_1_1_1_1.i + 1;
+ _____acc_31_1_1_1_1.i = ______split_137_31_1_1_1_1;
+ ______split_137_32_1_1_1_1 = _____acc_31_1_1_1_1.i + 1;
+ _____acc_32_1_1_1_1.i = ______split_137_32_1_1_1_1;
+ ______split_137_33_1_1_1_1 = _____acc_32_1_1_1_1.i + 1;
+ _____acc_33_1_1_1_1.i = ______split_137_33_1_1_1_1;
+ ______split_137_34_1_1_1_1 = _____acc_33_1_1_1_1.i + 1;
+ _____acc_34_1_1_1_1.i = ______split_137_34_1_1_1_1;
+ ______split_137_35_1_1_1_1 = _____acc_34_1_1_1_1.i + 1;
+ _____acc_35_1_1_1_1.i = ______split_137_35_1_1_1_1;
+ ______split_137_36_1_1_1_1 = _____acc_35_1_1_1_1.i + 1;
+ _____acc_36_1_1_1_1.i = ______split_137_36_1_1_1_1;
+ ______split_137_37_1_1_1_1 = _____acc_36_1_1_1_1.i + 1;
+ _____acc_37_1_1_1_1.i = ______split_137_37_1_1_1_1;
+ ______split_137_38_1_1_1_1 = _____acc_37_1_1_1_1.i + 1;
+ _____acc_38_1_1_1_1.i = ______split_137_38_1_1_1_1;
+ ______split_137_39_1_1_1_1 = _____acc_38_1_1_1_1.i + 1;
+ _____acc_39_1_1_1_1.i = ______split_137_39_1_1_1_1;
+ ______split_137_40_1_1_1_1 = _____acc_39_1_1_1_1.i + 1;
+ _____acc_40_1_1_1_1.i = ______split_137_40_1_1_1_1;
+ ______split_137_41_1_1_1_1 = _____acc_40_1_1_1_1.i + 1;
+ _____acc_41_1_1_1_1.i = ______split_137_41_1_1_1_1;
+ ______split_137_42_1_1_1_1 = _____acc_41_1_1_1_1.i + 1;
+ _____acc_42_1_1_1_1.i = ______split_137_42_1_1_1_1;
+ ______split_137_43_1_1_1_1 = _____acc_42_1_1_1_1.i + 1;
+ _____acc_43_1_1_1_1.i = ______split_137_43_1_1_1_1;
+ ______split_137_44_1_1_1_1 = _____acc_43_1_1_1_1.i + 1;
+ _____acc_44_1_1_1_1.i = ______split_137_44_1_1_1_1;
+ ______split_137_45_1_1_1_1 = _____acc_44_1_1_1_1.i + 1;
+ _____acc_45_1_1_1_1.i = ______split_137_45_1_1_1_1;
+ ______split_137_46_1_1_1_1 = _____acc_45_1_1_1_1.i + 1;
+ _____acc_46_1_1_1_1.i = ______split_137_46_1_1_1_1;
+ ______split_137_47_1_1_1_1 = _____acc_46_1_1_1_1.i + 1;
+ _____acc_47_1_1_1_1.i = ______split_137_47_1_1_1_1;
+ ______split_137_48_1_1_1_1 = _____acc_47_1_1_1_1.i + 1;
+ _____acc_48_1_1_1_1.i = ______split_137_48_1_1_1_1;
+ ______split_137_49_1_1_1_1 = _____acc_48_1_1_1_1.i + 1;
+ _____acc_49_1_1_1_1.i = ______split_137_49_1_1_1_1;
+ Lustre_pre_2_get(&___split_131_1_1,&ctx->Lustre_pre_2_ctx_tab[2]);
+ Lustre_arrow_2_step(0,___split_131_1_1,&___split_132_1_1,&ctx->Lustre_arrow_2_ctx_tab[2]);
+ __i_1_1 = ___split_132_1_1 + 1;
+ ___split_135_1_1 = __i_1_1 % 50;
+ ____split_3_1_1_1.j = ___split_135_1_1;
+ _____acc_1_1_1_1_1.j = ____split_3_1_1_1.j;
+ _____acc_2_1_1_1_1.j = _____acc_1_1_1_1_1.j;
+ _____acc_3_1_1_1_1.j = _____acc_2_1_1_1_1.j;
+ _____acc_4_1_1_1_1.j = _____acc_3_1_1_1_1.j;
+ _____acc_5_1_1_1_1.j = _____acc_4_1_1_1_1.j;
+ _____acc_6_1_1_1_1.j = _____acc_5_1_1_1_1.j;
+ _____acc_7_1_1_1_1.j = _____acc_6_1_1_1_1.j;
+ _____acc_8_1_1_1_1.j = _____acc_7_1_1_1_1.j;
+ _____acc_9_1_1_1_1.j = _____acc_8_1_1_1_1.j;
+ _____acc_10_1_1_1_1.j = _____acc_9_1_1_1_1.j;
+ _____acc_11_1_1_1_1.j = _____acc_10_1_1_1_1.j;
+ _____acc_12_1_1_1_1.j = _____acc_11_1_1_1_1.j;
+ _____acc_13_1_1_1_1.j = _____acc_12_1_1_1_1.j;
+ _____acc_14_1_1_1_1.j = _____acc_13_1_1_1_1.j;
+ _____acc_15_1_1_1_1.j = _____acc_14_1_1_1_1.j;
+ _____acc_16_1_1_1_1.j = _____acc_15_1_1_1_1.j;
+ _____acc_17_1_1_1_1.j = _____acc_16_1_1_1_1.j;
+ _____acc_18_1_1_1_1.j = _____acc_17_1_1_1_1.j;
+ _____acc_19_1_1_1_1.j = _____acc_18_1_1_1_1.j;
+ _____acc_20_1_1_1_1.j = _____acc_19_1_1_1_1.j;
+ _____acc_21_1_1_1_1.j = _____acc_20_1_1_1_1.j;
+ _____acc_22_1_1_1_1.j = _____acc_21_1_1_1_1.j;
+ _____acc_23_1_1_1_1.j = _____acc_22_1_1_1_1.j;
+ _____acc_24_1_1_1_1.j = _____acc_23_1_1_1_1.j;
+ _____acc_25_1_1_1_1.j = _____acc_24_1_1_1_1.j;
+ _____acc_26_1_1_1_1.j = _____acc_25_1_1_1_1.j;
+ _____acc_27_1_1_1_1.j = _____acc_26_1_1_1_1.j;
+ _____acc_28_1_1_1_1.j = _____acc_27_1_1_1_1.j;
+ _____acc_29_1_1_1_1.j = _____acc_28_1_1_1_1.j;
+ _____acc_30_1_1_1_1.j = _____acc_29_1_1_1_1.j;
+ _____acc_31_1_1_1_1.j = _____acc_30_1_1_1_1.j;
+ _____acc_32_1_1_1_1.j = _____acc_31_1_1_1_1.j;
+ _____acc_33_1_1_1_1.j = _____acc_32_1_1_1_1.j;
+ _____acc_34_1_1_1_1.j = _____acc_33_1_1_1_1.j;
+ _____acc_35_1_1_1_1.j = _____acc_34_1_1_1_1.j;
+ _____acc_36_1_1_1_1.j = _____acc_35_1_1_1_1.j;
+ _____acc_37_1_1_1_1.j = _____acc_36_1_1_1_1.j;
+ _____acc_38_1_1_1_1.j = _____acc_37_1_1_1_1.j;
+ _____acc_39_1_1_1_1.j = _____acc_38_1_1_1_1.j;
+ _____acc_40_1_1_1_1.j = _____acc_39_1_1_1_1.j;
+ _____acc_41_1_1_1_1.j = _____acc_40_1_1_1_1.j;
+ _____acc_42_1_1_1_1.j = _____acc_41_1_1_1_1.j;
+ _____acc_43_1_1_1_1.j = _____acc_42_1_1_1_1.j;
+ _____acc_44_1_1_1_1.j = _____acc_43_1_1_1_1.j;
+ _____acc_45_1_1_1_1.j = _____acc_44_1_1_1_1.j;
+ _____acc_46_1_1_1_1.j = _____acc_45_1_1_1_1.j;
+ _____acc_47_1_1_1_1.j = _____acc_46_1_1_1_1.j;
+ _____acc_48_1_1_1_1.j = _____acc_47_1_1_1_1.j;
+ _____acc_49_1_1_1_1.j = _____acc_48_1_1_1_1.j;
+ ______split_136_50_1_1_1_1 = _____acc_49_1_1_1_1.i == _____acc_49_1_1_1_1.j;
+ Lustre_pre_3_get(___split_134_1_1,&ctx->Lustre_pre_3_ctx_tab[1]);
+ Lustre_hat_step(0.1,___split_133_1_1);
+ Lustre_arrow_3_step(___split_133_1_1,___split_134_1_1,__pre_a_1_1,&ctx->Lustre_arrow_3_ctx_tab[1]);
+ _____cell_50_1_1_1_1 = __pre_a_1_1[49];
+ if (______split_136_50_1_1_1_1 == _true) {
+ _____ncell_50_1_1_1_1 = _____acc_49_1_1_1_1.v;
+ } else {
+ _____ncell_50_1_1_1_1 = _____cell_50_1_1_1_1;
+ }
+ __a_2_1[49] = _____ncell_50_1_1_1_1;
+ ______split_136_49_1_1_1_1 = _____acc_48_1_1_1_1.i == _____acc_48_1_1_1_1.j;
+ _____cell_49_1_1_1_1 = __pre_a_1_1[48];
+ if (______split_136_49_1_1_1_1 == _true) {
+ _____ncell_49_1_1_1_1 = _____acc_48_1_1_1_1.v;
+ } else {
+ _____ncell_49_1_1_1_1 = _____cell_49_1_1_1_1;
+ }
+ __a_2_1[48] = _____ncell_49_1_1_1_1;
+ ______split_136_48_1_1_1_1 = _____acc_47_1_1_1_1.i == _____acc_47_1_1_1_1.j;
+ _____cell_48_1_1_1_1 = __pre_a_1_1[47];
+ if (______split_136_48_1_1_1_1 == _true) {
+ _____ncell_48_1_1_1_1 = _____acc_47_1_1_1_1.v;
+ } else {
+ _____ncell_48_1_1_1_1 = _____cell_48_1_1_1_1;
+ }
+ __a_2_1[47] = _____ncell_48_1_1_1_1;
+ ______split_136_47_1_1_1_1 = _____acc_46_1_1_1_1.i == _____acc_46_1_1_1_1.j;
+ _____cell_47_1_1_1_1 = __pre_a_1_1[46];
+ if (______split_136_47_1_1_1_1 == _true) {
+ _____ncell_47_1_1_1_1 = _____acc_46_1_1_1_1.v;
+ } else {
+ _____ncell_47_1_1_1_1 = _____cell_47_1_1_1_1;
+ }
+ __a_2_1[46] = _____ncell_47_1_1_1_1;
+ ______split_136_46_1_1_1_1 = _____acc_45_1_1_1_1.i == _____acc_45_1_1_1_1.j;
+ _____cell_46_1_1_1_1 = __pre_a_1_1[45];
+ if (______split_136_46_1_1_1_1 == _true) {
+ _____ncell_46_1_1_1_1 = _____acc_45_1_1_1_1.v;
+ } else {
+ _____ncell_46_1_1_1_1 = _____cell_46_1_1_1_1;
+ }
+ __a_2_1[45] = _____ncell_46_1_1_1_1;
+ ______split_136_45_1_1_1_1 = _____acc_44_1_1_1_1.i == _____acc_44_1_1_1_1.j;
+ _____cell_45_1_1_1_1 = __pre_a_1_1[44];
+ if (______split_136_45_1_1_1_1 == _true) {
+ _____ncell_45_1_1_1_1 = _____acc_44_1_1_1_1.v;
+ } else {
+ _____ncell_45_1_1_1_1 = _____cell_45_1_1_1_1;
+ }
+ __a_2_1[44] = _____ncell_45_1_1_1_1;
+ ______split_136_44_1_1_1_1 = _____acc_43_1_1_1_1.i == _____acc_43_1_1_1_1.j;
+ _____cell_44_1_1_1_1 = __pre_a_1_1[43];
+ if (______split_136_44_1_1_1_1 == _true) {
+ _____ncell_44_1_1_1_1 = _____acc_43_1_1_1_1.v;
+ } else {
+ _____ncell_44_1_1_1_1 = _____cell_44_1_1_1_1;
+ }
+ __a_2_1[43] = _____ncell_44_1_1_1_1;
+ ______split_136_43_1_1_1_1 = _____acc_42_1_1_1_1.i == _____acc_42_1_1_1_1.j;
+ _____cell_43_1_1_1_1 = __pre_a_1_1[42];
+ if (______split_136_43_1_1_1_1 == _true) {
+ _____ncell_43_1_1_1_1 = _____acc_42_1_1_1_1.v;
+ } else {
+ _____ncell_43_1_1_1_1 = _____cell_43_1_1_1_1;
+ }
+ __a_2_1[42] = _____ncell_43_1_1_1_1;
+ ______split_136_42_1_1_1_1 = _____acc_41_1_1_1_1.i == _____acc_41_1_1_1_1.j;
+ _____cell_42_1_1_1_1 = __pre_a_1_1[41];
+ if (______split_136_42_1_1_1_1 == _true) {
+ _____ncell_42_1_1_1_1 = _____acc_41_1_1_1_1.v;
+ } else {
+ _____ncell_42_1_1_1_1 = _____cell_42_1_1_1_1;
+ }
+ __a_2_1[41] = _____ncell_42_1_1_1_1;
+ ______split_136_41_1_1_1_1 = _____acc_40_1_1_1_1.i == _____acc_40_1_1_1_1.j;
+ _____cell_41_1_1_1_1 = __pre_a_1_1[40];
+ if (______split_136_41_1_1_1_1 == _true) {
+ _____ncell_41_1_1_1_1 = _____acc_40_1_1_1_1.v;
+ } else {
+ _____ncell_41_1_1_1_1 = _____cell_41_1_1_1_1;
+ }
+ __a_2_1[40] = _____ncell_41_1_1_1_1;
+ ______split_136_40_1_1_1_1 = _____acc_39_1_1_1_1.i == _____acc_39_1_1_1_1.j;
+ _____cell_40_1_1_1_1 = __pre_a_1_1[39];
+ if (______split_136_40_1_1_1_1 == _true) {
+ _____ncell_40_1_1_1_1 = _____acc_39_1_1_1_1.v;
+ } else {
+ _____ncell_40_1_1_1_1 = _____cell_40_1_1_1_1;
+ }
+ __a_2_1[39] = _____ncell_40_1_1_1_1;
+ ______split_136_39_1_1_1_1 = _____acc_38_1_1_1_1.i == _____acc_38_1_1_1_1.j;
+ _____cell_39_1_1_1_1 = __pre_a_1_1[38];
+ if (______split_136_39_1_1_1_1 == _true) {
+ _____ncell_39_1_1_1_1 = _____acc_38_1_1_1_1.v;
+ } else {
+ _____ncell_39_1_1_1_1 = _____cell_39_1_1_1_1;
+ }
+ __a_2_1[38] = _____ncell_39_1_1_1_1;
+ ______split_136_38_1_1_1_1 = _____acc_37_1_1_1_1.i == _____acc_37_1_1_1_1.j;
+ _____cell_38_1_1_1_1 = __pre_a_1_1[37];
+ if (______split_136_38_1_1_1_1 == _true) {
+ _____ncell_38_1_1_1_1 = _____acc_37_1_1_1_1.v;
+ } else {
+ _____ncell_38_1_1_1_1 = _____cell_38_1_1_1_1;
+ }
+ __a_2_1[37] = _____ncell_38_1_1_1_1;
+ ______split_136_37_1_1_1_1 = _____acc_36_1_1_1_1.i == _____acc_36_1_1_1_1.j;
+ _____cell_37_1_1_1_1 = __pre_a_1_1[36];
+ if (______split_136_37_1_1_1_1 == _true) {
+ _____ncell_37_1_1_1_1 = _____acc_36_1_1_1_1.v;
+ } else {
+ _____ncell_37_1_1_1_1 = _____cell_37_1_1_1_1;
+ }
+ __a_2_1[36] = _____ncell_37_1_1_1_1;
+ ______split_136_36_1_1_1_1 = _____acc_35_1_1_1_1.i == _____acc_35_1_1_1_1.j;
+ _____cell_36_1_1_1_1 = __pre_a_1_1[35];
+ if (______split_136_36_1_1_1_1 == _true) {
+ _____ncell_36_1_1_1_1 = _____acc_35_1_1_1_1.v;
+ } else {
+ _____ncell_36_1_1_1_1 = _____cell_36_1_1_1_1;
+ }
+ __a_2_1[35] = _____ncell_36_1_1_1_1;
+ ______split_136_35_1_1_1_1 = _____acc_34_1_1_1_1.i == _____acc_34_1_1_1_1.j;
+ _____cell_35_1_1_1_1 = __pre_a_1_1[34];
+ if (______split_136_35_1_1_1_1 == _true) {
+ _____ncell_35_1_1_1_1 = _____acc_34_1_1_1_1.v;
+ } else {
+ _____ncell_35_1_1_1_1 = _____cell_35_1_1_1_1;
+ }
+ __a_2_1[34] = _____ncell_35_1_1_1_1;
+ ______split_136_34_1_1_1_1 = _____acc_33_1_1_1_1.i == _____acc_33_1_1_1_1.j;
+ _____cell_34_1_1_1_1 = __pre_a_1_1[33];
+ if (______split_136_34_1_1_1_1 == _true) {
+ _____ncell_34_1_1_1_1 = _____acc_33_1_1_1_1.v;
+ } else {
+ _____ncell_34_1_1_1_1 = _____cell_34_1_1_1_1;
+ }
+ __a_2_1[33] = _____ncell_34_1_1_1_1;
+ ______split_136_33_1_1_1_1 = _____acc_32_1_1_1_1.i == _____acc_32_1_1_1_1.j;
+ _____cell_33_1_1_1_1 = __pre_a_1_1[32];
+ if (______split_136_33_1_1_1_1 == _true) {
+ _____ncell_33_1_1_1_1 = _____acc_32_1_1_1_1.v;
+ } else {
+ _____ncell_33_1_1_1_1 = _____cell_33_1_1_1_1;
+ }
+ __a_2_1[32] = _____ncell_33_1_1_1_1;
+ ______split_136_32_1_1_1_1 = _____acc_31_1_1_1_1.i == _____acc_31_1_1_1_1.j;
+ _____cell_32_1_1_1_1 = __pre_a_1_1[31];
+ if (______split_136_32_1_1_1_1 == _true) {
+ _____ncell_32_1_1_1_1 = _____acc_31_1_1_1_1.v;
+ } else {
+ _____ncell_32_1_1_1_1 = _____cell_32_1_1_1_1;
+ }
+ __a_2_1[31] = _____ncell_32_1_1_1_1;
+ ______split_136_31_1_1_1_1 = _____acc_30_1_1_1_1.i == _____acc_30_1_1_1_1.j;
+ _____cell_31_1_1_1_1 = __pre_a_1_1[30];
+ if (______split_136_31_1_1_1_1 == _true) {
+ _____ncell_31_1_1_1_1 = _____acc_30_1_1_1_1.v;
+ } else {
+ _____ncell_31_1_1_1_1 = _____cell_31_1_1_1_1;
+ }
+ __a_2_1[30] = _____ncell_31_1_1_1_1;
+ ______split_136_30_1_1_1_1 = _____acc_29_1_1_1_1.i == _____acc_29_1_1_1_1.j;
+ _____cell_30_1_1_1_1 = __pre_a_1_1[29];
+ if (______split_136_30_1_1_1_1 == _true) {
+ _____ncell_30_1_1_1_1 = _____acc_29_1_1_1_1.v;
+ } else {
+ _____ncell_30_1_1_1_1 = _____cell_30_1_1_1_1;
+ }
+ __a_2_1[29] = _____ncell_30_1_1_1_1;
+ ______split_136_29_1_1_1_1 = _____acc_28_1_1_1_1.i == _____acc_28_1_1_1_1.j;
+ _____cell_29_1_1_1_1 = __pre_a_1_1[28];
+ if (______split_136_29_1_1_1_1 == _true) {
+ _____ncell_29_1_1_1_1 = _____acc_28_1_1_1_1.v;
+ } else {
+ _____ncell_29_1_1_1_1 = _____cell_29_1_1_1_1;
+ }
+ __a_2_1[28] = _____ncell_29_1_1_1_1;
+ ______split_136_28_1_1_1_1 = _____acc_27_1_1_1_1.i == _____acc_27_1_1_1_1.j;
+ _____cell_28_1_1_1_1 = __pre_a_1_1[27];
+ if (______split_136_28_1_1_1_1 == _true) {
+ _____ncell_28_1_1_1_1 = _____acc_27_1_1_1_1.v;
+ } else {
+ _____ncell_28_1_1_1_1 = _____cell_28_1_1_1_1;
+ }
+ __a_2_1[27] = _____ncell_28_1_1_1_1;
+ ______split_136_27_1_1_1_1 = _____acc_26_1_1_1_1.i == _____acc_26_1_1_1_1.j;
+ _____cell_27_1_1_1_1 = __pre_a_1_1[26];
+ if (______split_136_27_1_1_1_1 == _true) {
+ _____ncell_27_1_1_1_1 = _____acc_26_1_1_1_1.v;
+ } else {
+ _____ncell_27_1_1_1_1 = _____cell_27_1_1_1_1;
+ }
+ __a_2_1[26] = _____ncell_27_1_1_1_1;
+ ______split_136_26_1_1_1_1 = _____acc_25_1_1_1_1.i == _____acc_25_1_1_1_1.j;
+ _____cell_26_1_1_1_1 = __pre_a_1_1[25];
+ if (______split_136_26_1_1_1_1 == _true) {
+ _____ncell_26_1_1_1_1 = _____acc_25_1_1_1_1.v;
+ } else {
+ _____ncell_26_1_1_1_1 = _____cell_26_1_1_1_1;
+ }
+ __a_2_1[25] = _____ncell_26_1_1_1_1;
+ ______split_136_25_1_1_1_1 = _____acc_24_1_1_1_1.i == _____acc_24_1_1_1_1.j;
+ _____cell_25_1_1_1_1 = __pre_a_1_1[24];
+ if (______split_136_25_1_1_1_1 == _true) {
+ _____ncell_25_1_1_1_1 = _____acc_24_1_1_1_1.v;
+ } else {
+ _____ncell_25_1_1_1_1 = _____cell_25_1_1_1_1;
+ }
+ __a_2_1[24] = _____ncell_25_1_1_1_1;
+ ______split_136_24_1_1_1_1 = _____acc_23_1_1_1_1.i == _____acc_23_1_1_1_1.j;
+ _____cell_24_1_1_1_1 = __pre_a_1_1[23];
+ if (______split_136_24_1_1_1_1 == _true) {
+ _____ncell_24_1_1_1_1 = _____acc_23_1_1_1_1.v;
+ } else {
+ _____ncell_24_1_1_1_1 = _____cell_24_1_1_1_1;
+ }
+ __a_2_1[23] = _____ncell_24_1_1_1_1;
+ ______split_136_23_1_1_1_1 = _____acc_22_1_1_1_1.i == _____acc_22_1_1_1_1.j;
+ _____cell_23_1_1_1_1 = __pre_a_1_1[22];
+ if (______split_136_23_1_1_1_1 == _true) {
+ _____ncell_23_1_1_1_1 = _____acc_22_1_1_1_1.v;
+ } else {
+ _____ncell_23_1_1_1_1 = _____cell_23_1_1_1_1;
+ }
+ __a_2_1[22] = _____ncell_23_1_1_1_1;
+ ______split_136_22_1_1_1_1 = _____acc_21_1_1_1_1.i == _____acc_21_1_1_1_1.j;
+ _____cell_22_1_1_1_1 = __pre_a_1_1[21];
+ if (______split_136_22_1_1_1_1 == _true) {
+ _____ncell_22_1_1_1_1 = _____acc_21_1_1_1_1.v;
+ } else {
+ _____ncell_22_1_1_1_1 = _____cell_22_1_1_1_1;
+ }
+ __a_2_1[21] = _____ncell_22_1_1_1_1;
+ ______split_136_21_1_1_1_1 = _____acc_20_1_1_1_1.i == _____acc_20_1_1_1_1.j;
+ _____cell_21_1_1_1_1 = __pre_a_1_1[20];
+ if (______split_136_21_1_1_1_1 == _true) {
+ _____ncell_21_1_1_1_1 = _____acc_20_1_1_1_1.v;
+ } else {
+ _____ncell_21_1_1_1_1 = _____cell_21_1_1_1_1;
+ }
+ __a_2_1[20] = _____ncell_21_1_1_1_1;
+ ______split_136_20_1_1_1_1 = _____acc_19_1_1_1_1.i == _____acc_19_1_1_1_1.j;
+ _____cell_20_1_1_1_1 = __pre_a_1_1[19];
+ if (______split_136_20_1_1_1_1 == _true) {
+ _____ncell_20_1_1_1_1 = _____acc_19_1_1_1_1.v;
+ } else {
+ _____ncell_20_1_1_1_1 = _____cell_20_1_1_1_1;
+ }
+ __a_2_1[19] = _____ncell_20_1_1_1_1;
+ ______split_136_19_1_1_1_1 = _____acc_18_1_1_1_1.i == _____acc_18_1_1_1_1.j;
+ _____cell_19_1_1_1_1 = __pre_a_1_1[18];
+ if (______split_136_19_1_1_1_1 == _true) {
+ _____ncell_19_1_1_1_1 = _____acc_18_1_1_1_1.v;
+ } else {
+ _____ncell_19_1_1_1_1 = _____cell_19_1_1_1_1;
+ }
+ __a_2_1[18] = _____ncell_19_1_1_1_1;
+ ______split_136_18_1_1_1_1 = _____acc_17_1_1_1_1.i == _____acc_17_1_1_1_1.j;
+ _____cell_18_1_1_1_1 = __pre_a_1_1[17];
+ if (______split_136_18_1_1_1_1 == _true) {
+ _____ncell_18_1_1_1_1 = _____acc_17_1_1_1_1.v;
+ } else {
+ _____ncell_18_1_1_1_1 = _____cell_18_1_1_1_1;
+ }
+ __a_2_1[17] = _____ncell_18_1_1_1_1;
+ ______split_136_17_1_1_1_1 = _____acc_16_1_1_1_1.i == _____acc_16_1_1_1_1.j;
+ _____cell_17_1_1_1_1 = __pre_a_1_1[16];
+ if (______split_136_17_1_1_1_1 == _true) {
+ _____ncell_17_1_1_1_1 = _____acc_16_1_1_1_1.v;
+ } else {
+ _____ncell_17_1_1_1_1 = _____cell_17_1_1_1_1;
+ }
+ __a_2_1[16] = _____ncell_17_1_1_1_1;
+ ______split_136_16_1_1_1_1 = _____acc_15_1_1_1_1.i == _____acc_15_1_1_1_1.j;
+ _____cell_16_1_1_1_1 = __pre_a_1_1[15];
+ if (______split_136_16_1_1_1_1 == _true) {
+ _____ncell_16_1_1_1_1 = _____acc_15_1_1_1_1.v;
+ } else {
+ _____ncell_16_1_1_1_1 = _____cell_16_1_1_1_1;
+ }
+ __a_2_1[15] = _____ncell_16_1_1_1_1;
+ ______split_136_15_1_1_1_1 = _____acc_14_1_1_1_1.i == _____acc_14_1_1_1_1.j;
+ _____cell_15_1_1_1_1 = __pre_a_1_1[14];
+ if (______split_136_15_1_1_1_1 == _true) {
+ _____ncell_15_1_1_1_1 = _____acc_14_1_1_1_1.v;
+ } else {
+ _____ncell_15_1_1_1_1 = _____cell_15_1_1_1_1;
+ }
+ __a_2_1[14] = _____ncell_15_1_1_1_1;
+ ______split_136_14_1_1_1_1 = _____acc_13_1_1_1_1.i == _____acc_13_1_1_1_1.j;
+ _____cell_14_1_1_1_1 = __pre_a_1_1[13];
+ if (______split_136_14_1_1_1_1 == _true) {
+ _____ncell_14_1_1_1_1 = _____acc_13_1_1_1_1.v;
+ } else {
+ _____ncell_14_1_1_1_1 = _____cell_14_1_1_1_1;
+ }
+ __a_2_1[13] = _____ncell_14_1_1_1_1;
+ ______split_136_13_1_1_1_1 = _____acc_12_1_1_1_1.i == _____acc_12_1_1_1_1.j;
+ _____cell_13_1_1_1_1 = __pre_a_1_1[12];
+ if (______split_136_13_1_1_1_1 == _true) {
+ _____ncell_13_1_1_1_1 = _____acc_12_1_1_1_1.v;
+ } else {
+ _____ncell_13_1_1_1_1 = _____cell_13_1_1_1_1;
+ }
+ __a_2_1[12] = _____ncell_13_1_1_1_1;
+ ______split_136_12_1_1_1_1 = _____acc_11_1_1_1_1.i == _____acc_11_1_1_1_1.j;
+ _____cell_12_1_1_1_1 = __pre_a_1_1[11];
+ if (______split_136_12_1_1_1_1 == _true) {
+ _____ncell_12_1_1_1_1 = _____acc_11_1_1_1_1.v;
+ } else {
+ _____ncell_12_1_1_1_1 = _____cell_12_1_1_1_1;
+ }
+ __a_2_1[11] = _____ncell_12_1_1_1_1;
+ ______split_136_11_1_1_1_1 = _____acc_10_1_1_1_1.i == _____acc_10_1_1_1_1.j;
+ _____cell_11_1_1_1_1 = __pre_a_1_1[10];
+ if (______split_136_11_1_1_1_1 == _true) {
+ _____ncell_11_1_1_1_1 = _____acc_10_1_1_1_1.v;
+ } else {
+ _____ncell_11_1_1_1_1 = _____cell_11_1_1_1_1;
+ }
+ __a_2_1[10] = _____ncell_11_1_1_1_1;
+ ______split_136_10_1_1_1_1 = _____acc_9_1_1_1_1.i == _____acc_9_1_1_1_1.j;
+ _____cell_10_1_1_1_1 = __pre_a_1_1[9];
+ if (______split_136_10_1_1_1_1 == _true) {
+ _____ncell_10_1_1_1_1 = _____acc_9_1_1_1_1.v;
+ } else {
+ _____ncell_10_1_1_1_1 = _____cell_10_1_1_1_1;
+ }
+ __a_2_1[9] = _____ncell_10_1_1_1_1;
+ ______split_136_9_1_1_1_1 = _____acc_8_1_1_1_1.i == _____acc_8_1_1_1_1.j;
+ _____cell_9_1_1_1_1 = __pre_a_1_1[8];
+ if (______split_136_9_1_1_1_1 == _true) {
+ _____ncell_9_1_1_1_1 = _____acc_8_1_1_1_1.v;
+ } else {
+ _____ncell_9_1_1_1_1 = _____cell_9_1_1_1_1;
+ }
+ __a_2_1[8] = _____ncell_9_1_1_1_1;
+ ______split_136_8_1_1_1_1 = _____acc_7_1_1_1_1.i == _____acc_7_1_1_1_1.j;
+ _____cell_8_1_1_1_1 = __pre_a_1_1[7];
+ if (______split_136_8_1_1_1_1 == _true) {
+ _____ncell_8_1_1_1_1 = _____acc_7_1_1_1_1.v;
+ } else {
+ _____ncell_8_1_1_1_1 = _____cell_8_1_1_1_1;
+ }
+ __a_2_1[7] = _____ncell_8_1_1_1_1;
+ ______split_136_7_1_1_1_1 = _____acc_6_1_1_1_1.i == _____acc_6_1_1_1_1.j;
+ _____cell_7_1_1_1_1 = __pre_a_1_1[6];
+ if (______split_136_7_1_1_1_1 == _true) {
+ _____ncell_7_1_1_1_1 = _____acc_6_1_1_1_1.v;
+ } else {
+ _____ncell_7_1_1_1_1 = _____cell_7_1_1_1_1;
+ }
+ __a_2_1[6] = _____ncell_7_1_1_1_1;
+ ______split_136_6_1_1_1_1 = _____acc_5_1_1_1_1.i == _____acc_5_1_1_1_1.j;
+ _____cell_6_1_1_1_1 = __pre_a_1_1[5];
+ if (______split_136_6_1_1_1_1 == _true) {
+ _____ncell_6_1_1_1_1 = _____acc_5_1_1_1_1.v;
+ } else {
+ _____ncell_6_1_1_1_1 = _____cell_6_1_1_1_1;
+ }
+ __a_2_1[5] = _____ncell_6_1_1_1_1;
+ ______split_136_5_1_1_1_1 = _____acc_4_1_1_1_1.i == _____acc_4_1_1_1_1.j;
+ _____cell_5_1_1_1_1 = __pre_a_1_1[4];
+ if (______split_136_5_1_1_1_1 == _true) {
+ _____ncell_5_1_1_1_1 = _____acc_4_1_1_1_1.v;
+ } else {
+ _____ncell_5_1_1_1_1 = _____cell_5_1_1_1_1;
+ }
+ __a_2_1[4] = _____ncell_5_1_1_1_1;
+ ______split_136_4_1_1_1_1 = _____acc_3_1_1_1_1.i == _____acc_3_1_1_1_1.j;
+ _____cell_4_1_1_1_1 = __pre_a_1_1[3];
+ if (______split_136_4_1_1_1_1 == _true) {
+ _____ncell_4_1_1_1_1 = _____acc_3_1_1_1_1.v;
+ } else {
+ _____ncell_4_1_1_1_1 = _____cell_4_1_1_1_1;
+ }
+ __a_2_1[3] = _____ncell_4_1_1_1_1;
+ ______split_136_3_1_1_1_1 = _____acc_2_1_1_1_1.i == _____acc_2_1_1_1_1.j;
+ _____cell_3_1_1_1_1 = __pre_a_1_1[2];
+ if (______split_136_3_1_1_1_1 == _true) {
+ _____ncell_3_1_1_1_1 = _____acc_2_1_1_1_1.v;
+ } else {
+ _____ncell_3_1_1_1_1 = _____cell_3_1_1_1_1;
+ }
+ __a_2_1[2] = _____ncell_3_1_1_1_1;
+ ______split_136_2_1_1_1_1 = _____acc_1_1_1_1_1.i == _____acc_1_1_1_1_1.j;
+ _____cell_2_1_1_1_1 = __pre_a_1_1[1];
+ if (______split_136_2_1_1_1_1 == _true) {
+ _____ncell_2_1_1_1_1 = _____acc_1_1_1_1_1.v;
+ } else {
+ _____ncell_2_1_1_1_1 = _____cell_2_1_1_1_1;
+ }
+ __a_2_1[1] = _____ncell_2_1_1_1_1;
+ ______split_136_1_1_1_1_1 = ____split_3_1_1_1.i == ____split_3_1_1_1.j;
+ _____cell_1_1_1_1_1 = __pre_a_1_1[0];
+ if (______split_136_1_1_1_1_1 == _true) {
+ _____ncell_1_1_1_1_1 = ____split_3_1_1_1.v;
+ } else {
+ _____ncell_1_1_1_1_1 = _____cell_1_1_1_1_1;
+ }
+ __a_2_1[0] = _____ncell_1_1_1_1_1;
+ ___i1_1_1_1 = 0.0;
+ ____acc_50_1_1_1 = ___i1_1_1_1 + __a_2_1[0];
+ ____acc_51_1_1_1 = ____acc_50_1_1_1 + __a_2_1[1];
+ ____acc_52_1_1_1 = ____acc_51_1_1_1 + __a_2_1[2];
+ ____acc_53_1_1_1 = ____acc_52_1_1_1 + __a_2_1[3];
+ ____acc_54_1_1_1 = ____acc_53_1_1_1 + __a_2_1[4];
+ ____acc_55_1_1_1 = ____acc_54_1_1_1 + __a_2_1[5];
+ ____acc_56_1_1_1 = ____acc_55_1_1_1 + __a_2_1[6];
+ ____acc_57_1_1_1 = ____acc_56_1_1_1 + __a_2_1[7];
+ ____acc_58_1_1_1 = ____acc_57_1_1_1 + __a_2_1[8];
+ ____acc_59_1_1_1 = ____acc_58_1_1_1 + __a_2_1[9];
+ ____acc_60_1_1_1 = ____acc_59_1_1_1 + __a_2_1[10];
+ ____acc_61_1_1_1 = ____acc_60_1_1_1 + __a_2_1[11];
+ ____acc_62_1_1_1 = ____acc_61_1_1_1 + __a_2_1[12];
+ ____acc_63_1_1_1 = ____acc_62_1_1_1 + __a_2_1[13];
+ ____acc_64_1_1_1 = ____acc_63_1_1_1 + __a_2_1[14];
+ ____acc_65_1_1_1 = ____acc_64_1_1_1 + __a_2_1[15];
+ ____acc_66_1_1_1 = ____acc_65_1_1_1 + __a_2_1[16];
+ ____acc_67_1_1_1 = ____acc_66_1_1_1 + __a_2_1[17];
+ ____acc_68_1_1_1 = ____acc_67_1_1_1 + __a_2_1[18];
+ ____acc_69_1_1_1 = ____acc_68_1_1_1 + __a_2_1[19];
+ ____acc_70_1_1_1 = ____acc_69_1_1_1 + __a_2_1[20];
+ ____acc_71_1_1_1 = ____acc_70_1_1_1 + __a_2_1[21];
+ ____acc_72_1_1_1 = ____acc_71_1_1_1 + __a_2_1[22];
+ ____acc_73_1_1_1 = ____acc_72_1_1_1 + __a_2_1[23];
+ ____acc_74_1_1_1 = ____acc_73_1_1_1 + __a_2_1[24];
+ ____acc_75_1_1_1 = ____acc_74_1_1_1 + __a_2_1[25];
+ ____acc_76_1_1_1 = ____acc_75_1_1_1 + __a_2_1[26];
+ ____acc_77_1_1_1 = ____acc_76_1_1_1 + __a_2_1[27];
+ ____acc_78_1_1_1 = ____acc_77_1_1_1 + __a_2_1[28];
+ ____acc_79_1_1_1 = ____acc_78_1_1_1 + __a_2_1[29];
+ ____acc_80_1_1_1 = ____acc_79_1_1_1 + __a_2_1[30];
+ ____acc_81_1_1_1 = ____acc_80_1_1_1 + __a_2_1[31];
+ ____acc_82_1_1_1 = ____acc_81_1_1_1 + __a_2_1[32];
+ ____acc_83_1_1_1 = ____acc_82_1_1_1 + __a_2_1[33];
+ ____acc_84_1_1_1 = ____acc_83_1_1_1 + __a_2_1[34];
+ ____acc_85_1_1_1 = ____acc_84_1_1_1 + __a_2_1[35];
+ ____acc_86_1_1_1 = ____acc_85_1_1_1 + __a_2_1[36];
+ ____acc_87_1_1_1 = ____acc_86_1_1_1 + __a_2_1[37];
+ ____acc_88_1_1_1 = ____acc_87_1_1_1 + __a_2_1[38];
+ ____acc_89_1_1_1 = ____acc_88_1_1_1 + __a_2_1[39];
+ ____acc_90_1_1_1 = ____acc_89_1_1_1 + __a_2_1[40];
+ ____acc_91_1_1_1 = ____acc_90_1_1_1 + __a_2_1[41];
+ ____acc_92_1_1_1 = ____acc_91_1_1_1 + __a_2_1[42];
+ ____acc_93_1_1_1 = ____acc_92_1_1_1 + __a_2_1[43];
+ ____acc_94_1_1_1 = ____acc_93_1_1_1 + __a_2_1[44];
+ ____acc_95_1_1_1 = ____acc_94_1_1_1 + __a_2_1[45];
+ ____acc_96_1_1_1 = ____acc_95_1_1_1 + __a_2_1[46];
+ ____acc_97_1_1_1 = ____acc_96_1_1_1 + __a_2_1[47];
+ ____acc_98_1_1_1 = ____acc_97_1_1_1 + __a_2_1[48];
+ __split_84_1 = ____acc_98_1_1_1 + __a_2_1[49];
+ __split_86_1 = __split_84_1;
+ break;
+}
+ ___split_10_2_1 = __x_13_1 < __split_86_1;
+ if (___split_10_2_1 == _true) {
+ _t_3 = __split_86_1;
+ } else {
+ _t_3 = __x_13_1;
+ }
+ Lustre_pre_set(_t_3,&ctx->Lustre_pre_ctx_tab[2]);
+ switch (_TickOrRot_1){
+ case _true:
+ ______split_137_50_1_2_1_1 = _____acc_49_1_2_1_1.i + 1;
+ ___dummy_2_1_1.i = ______split_137_50_1_2_1_1;
+ ___dummy_2_1_1.j = _____acc_49_1_2_1_1.j;
+ ___dummy_2_1_1.v = _____acc_49_1_2_1_1.v;
+ Lustre_pre_3_set(__a_3_1,&ctx->Lustre_pre_3_ctx_tab[0]);
+ Lustre_pre_2_set(__i_2_1,&ctx->Lustre_pre_2_ctx_tab[1]);
+ ______split_137_50_1_1_1_1 = _____acc_49_1_1_1_1.i + 1;
+ ___dummy_1_1_1.i = ______split_137_50_1_1_1_1;
+ ___dummy_1_1_1.j = _____acc_49_1_1_1_1.j;
+ ___dummy_1_1_1.v = _____acc_49_1_1_1_1.v;
+ Lustre_pre_3_set(__a_2_1,&ctx->Lustre_pre_3_ctx_tab[1]);
+ Lustre_pre_2_set(__i_1_1,&ctx->Lustre_pre_2_ctx_tab[2]);
+ break;
+}
+ Lustre_slash_step(_d_1,_t_3,&__split_87_1);
+ __split_88_1 = __split_87_1 * 3.6;
+ Lustre_pre_set(__split_88_1,&ctx->Lustre_pre_ctx_tab[3]);
+ Lustre_pre_2_get(&__split_18_1,&ctx->Lustre_pre_2_ctx_tab[3]);
+ Lustre_pre_2_set(_st_2,&ctx->Lustre_pre_2_ctx_tab[3]);
+ Lustre_arrow_2_step(convertible_locked,__split_18_1,&_pst_3,&ctx->Lustre_arrow_2_ctx_tab[3]);
+ switch (_st_2){
+ case convertible_in_motion:
+ _Tick_on_in_motion_1 = Tick;
+ switch (_Tick_on_in_motion_1){
+ case _true:
+ Lustre_pre_get(&___split_33_1_1,&ctx->Lustre_pre_ctx_tab[5]);
+ Lustre_arrow_step(0.0,___split_33_1_1,&__pRoof_Percent_1_1,&ctx->Lustre_arrow_ctx_tab[5]);
+ switch (__st_1_1){
+ case convertible_slow:
+ ___split_47_1_1 = __pRoof_Percent_1_1;
+ ___split_34_1_1 = __pRoof_Percent_1_1;
+ ___split_35_1_1 = 100.0 - ___split_34_1_1;
+ Lustre_slash_step(___split_35_1_1,5.0,&___split_36_1_1);
+ ____presqrt_5_4_1_1 = 1.0;
+ Lustre_slash_step(___split_36_1_1,____presqrt_5_4_1_1,&_____split_120_1_4_1_1);
+ _____split_121_1_4_1_1 = ____presqrt_5_4_1_1 + _____split_120_1_4_1_1;
+ ____sqrt_5_4_1_1 = 0.5 * _____split_121_1_4_1_1;
+ _____split_118_1_4_1_1 = ____presqrt_5_4_1_1 - ____sqrt_5_4_1_1;
+ ______split_2_5_1_4_1_1 = - _____split_118_1_4_1_1;
+ ______split_1_5_1_4_1_1 = _____split_118_1_4_1_1 >= 0.0;
+ if (______split_1_5_1_4_1_1 == _true) {
+ _____split_119_1_4_1_1 = _____split_118_1_4_1_1;
+ } else {
+ _____split_119_1_4_1_1 = ______split_2_5_1_4_1_1;
+ }
+ ____ecart_5_4_1_1 = _____split_119_1_4_1_1 < 0.0005;
+ switch (____ecart_5_4_1_1){
+ case _false:
+ _____split_123_1_4_1_1 = ____sqrt_5_4_1_1;
+ _____split_122_1_4_1_1 = ___split_36_1_1;
+ Lustre_slash_step(_____split_122_1_4_1_1,_____split_123_1_4_1_1,&______split_112_1_1_4_1_1);
+ ______split_113_1_1_4_1_1 = _____split_123_1_4_1_1 + ______split_112_1_1_4_1_1;
+ _____sqrt_4_1_4_1_1 = 0.5 * ______split_113_1_1_4_1_1;
+ ______split_110_1_1_4_1_1 = _____split_123_1_4_1_1 - _____sqrt_4_1_4_1_1;
+ _______split_2_4_1_1_4_1_1 = - ______split_110_1_1_4_1_1;
+ _______split_1_4_1_1_4_1_1 = ______split_110_1_1_4_1_1 >= 0.0;
+ if (_______split_1_4_1_1_4_1_1 == _true) {
+ ______split_111_1_1_4_1_1 = ______split_110_1_1_4_1_1;
+ } else {
+ ______split_111_1_1_4_1_1 = _______split_2_4_1_1_4_1_1;
+ }
+ _____ecart_4_1_4_1_1 = ______split_111_1_1_4_1_1 < 0.0005;
+ switch (_____ecart_4_1_4_1_1){
+ case _false:
+ ______split_115_1_1_4_1_1 = _____sqrt_4_1_4_1_1;
+ ______split_114_1_1_4_1_1 = _____split_122_1_4_1_1;
+ Lustre_slash_step(______split_114_1_1_4_1_1,______split_115_1_1_4_1_1,&_______split_104_1_1_1_4_1_1);
+ _______split_105_1_1_1_4_1_1 = ______split_115_1_1_4_1_1 + _______split_104_1_1_1_4_1_1;
+ ______sqrt_3_1_1_4_1_1 = 0.5 * _______split_105_1_1_1_4_1_1;
+ _______split_102_1_1_1_4_1_1 = ______split_115_1_1_4_1_1 - ______sqrt_3_1_1_4_1_1;
+ ________split_2_3_1_1_1_4_1_1 = - _______split_102_1_1_1_4_1_1;
+ ________split_1_3_1_1_1_4_1_1 = _______split_102_1_1_1_4_1_1 >= 0.0;
+ if (________split_1_3_1_1_1_4_1_1 == _true) {
+ _______split_103_1_1_1_4_1_1 = _______split_102_1_1_1_4_1_1;
+ } else {
+ _______split_103_1_1_1_4_1_1 = ________split_2_3_1_1_1_4_1_1;
+ }
+ ______ecart_3_1_1_4_1_1 = _______split_103_1_1_1_4_1_1 < 0.0005;
+ switch (______ecart_3_1_1_4_1_1){
+ case _false:
+ _______split_107_1_1_1_4_1_1 = ______sqrt_3_1_1_4_1_1;
+ _______split_106_1_1_1_4_1_1 = ______split_114_1_1_4_1_1;
+ Lustre_slash_step(_______split_106_1_1_1_4_1_1,_______split_107_1_1_1_4_1_1,&________split_96_1_1_1_1_4_1_1);
+ ________split_97_1_1_1_1_4_1_1 = _______split_107_1_1_1_4_1_1 + ________split_96_1_1_1_1_4_1_1;
+ _______sqrt_2_1_1_1_4_1_1 = 0.5 * ________split_97_1_1_1_1_4_1_1;
+ ________split_94_1_1_1_1_4_1_1 = _______split_107_1_1_1_4_1_1 - _______sqrt_2_1_1_1_4_1_1;
+ _________split_2_2_1_1_1_1_4_1_1 = - ________split_94_1_1_1_1_4_1_1;
+ _________split_1_2_1_1_1_1_4_1_1 = ________split_94_1_1_1_1_4_1_1 >= 0.0;
+ if (_________split_1_2_1_1_1_1_4_1_1 == _true) {
+ ________split_95_1_1_1_1_4_1_1 = ________split_94_1_1_1_1_4_1_1;
+ } else {
+ ________split_95_1_1_1_1_4_1_1 = _________split_2_2_1_1_1_1_4_1_1;
+ }
+ _______ecart_2_1_1_1_4_1_1 = ________split_95_1_1_1_1_4_1_1 < 0.0005;
+ switch (_______ecart_2_1_1_1_4_1_1){
+ case _false:
+ ________split_98_1_1_1_1_4_1_1 = _______split_106_1_1_1_4_1_1;
+ ________split_99_1_1_1_1_4_1_1 = _______sqrt_2_1_1_1_4_1_1;
+ Lustre_slash_step(________split_98_1_1_1_1_4_1_1,________split_99_1_1_1_1_4_1_1,&_________split_92_1_1_1_1_1_4_1_1);
+ _________split_93_1_1_1_1_1_4_1_1 = ________split_99_1_1_1_1_4_1_1 + _________split_92_1_1_1_1_1_4_1_1;
+ ________sqrt_1_1_1_1_1_4_1_1 = 0.5 * _________split_93_1_1_1_1_1_4_1_1;
+ _______split_108_1_1_1_4_1_1 = ________sqrt_1_1_1_1_1_4_1_1;
+ break;
+ case _true:
+ ________split_101_1_1_1_1_4_1_1 = _______sqrt_2_1_1_1_4_1_1;
+ _______split_108_1_1_1_4_1_1 = ________split_101_1_1_1_1_4_1_1;
+ break;
+}
+ ______split_116_1_1_4_1_1 = _______split_108_1_1_1_4_1_1;
+ break;
+ case _true:
+ _______split_109_1_1_1_4_1_1 = ______sqrt_3_1_1_4_1_1;
+ ______split_116_1_1_4_1_1 = _______split_109_1_1_1_4_1_1;
+ break;
+}
+ _____split_124_1_4_1_1 = ______split_116_1_1_4_1_1;
+ break;
+ case _true:
+ ______split_117_1_1_4_1_1 = _____sqrt_4_1_4_1_1;
+ _____split_124_1_4_1_1 = ______split_117_1_1_4_1_1;
+ break;
+}
+ ___split_37_1_1 = _____split_124_1_4_1_1;
+ break;
+ case _true:
+ _____split_125_1_4_1_1 = ____sqrt_5_4_1_1;
+ ___split_37_1_1 = _____split_125_1_4_1_1;
+ break;
+}
+ ____presqrt_5_3_1_1 = 1.0;
+ Lustre_slash_step(___split_37_1_1,____presqrt_5_3_1_1,&_____split_120_1_3_1_1);
+ _____split_121_1_3_1_1 = ____presqrt_5_3_1_1 + _____split_120_1_3_1_1;
+ ____sqrt_5_3_1_1 = 0.5 * _____split_121_1_3_1_1;
+ _____split_118_1_3_1_1 = ____presqrt_5_3_1_1 - ____sqrt_5_3_1_1;
+ ______split_2_5_1_3_1_1 = - _____split_118_1_3_1_1;
+ ______split_1_5_1_3_1_1 = _____split_118_1_3_1_1 >= 0.0;
+ if (______split_1_5_1_3_1_1 == _true) {
+ _____split_119_1_3_1_1 = _____split_118_1_3_1_1;
+ } else {
+ _____split_119_1_3_1_1 = ______split_2_5_1_3_1_1;
+ }
+ ____ecart_5_3_1_1 = _____split_119_1_3_1_1 < 0.0005;
+ switch (____ecart_5_3_1_1){
+ case _false:
+ _____split_123_1_3_1_1 = ____sqrt_5_3_1_1;
+ _____split_122_1_3_1_1 = ___split_37_1_1;
+ Lustre_slash_step(_____split_122_1_3_1_1,_____split_123_1_3_1_1,&______split_112_1_1_3_1_1);
+ ______split_113_1_1_3_1_1 = _____split_123_1_3_1_1 + ______split_112_1_1_3_1_1;
+ _____sqrt_4_1_3_1_1 = 0.5 * ______split_113_1_1_3_1_1;
+ ______split_110_1_1_3_1_1 = _____split_123_1_3_1_1 - _____sqrt_4_1_3_1_1;
+ _______split_2_4_1_1_3_1_1 = - ______split_110_1_1_3_1_1;
+ _______split_1_4_1_1_3_1_1 = ______split_110_1_1_3_1_1 >= 0.0;
+ if (_______split_1_4_1_1_3_1_1 == _true) {
+ ______split_111_1_1_3_1_1 = ______split_110_1_1_3_1_1;
+ } else {
+ ______split_111_1_1_3_1_1 = _______split_2_4_1_1_3_1_1;
+ }
+ _____ecart_4_1_3_1_1 = ______split_111_1_1_3_1_1 < 0.0005;
+ switch (_____ecart_4_1_3_1_1){
+ case _false:
+ ______split_115_1_1_3_1_1 = _____sqrt_4_1_3_1_1;
+ ______split_114_1_1_3_1_1 = _____split_122_1_3_1_1;
+ Lustre_slash_step(______split_114_1_1_3_1_1,______split_115_1_1_3_1_1,&_______split_104_1_1_1_3_1_1);
+ _______split_105_1_1_1_3_1_1 = ______split_115_1_1_3_1_1 + _______split_104_1_1_1_3_1_1;
+ ______sqrt_3_1_1_3_1_1 = 0.5 * _______split_105_1_1_1_3_1_1;
+ _______split_102_1_1_1_3_1_1 = ______split_115_1_1_3_1_1 - ______sqrt_3_1_1_3_1_1;
+ ________split_2_3_1_1_1_3_1_1 = - _______split_102_1_1_1_3_1_1;
+ ________split_1_3_1_1_1_3_1_1 = _______split_102_1_1_1_3_1_1 >= 0.0;
+ if (________split_1_3_1_1_1_3_1_1 == _true) {
+ _______split_103_1_1_1_3_1_1 = _______split_102_1_1_1_3_1_1;
+ } else {
+ _______split_103_1_1_1_3_1_1 = ________split_2_3_1_1_1_3_1_1;
+ }
+ ______ecart_3_1_1_3_1_1 = _______split_103_1_1_1_3_1_1 < 0.0005;
+ switch (______ecart_3_1_1_3_1_1){
+ case _false:
+ _______split_107_1_1_1_3_1_1 = ______sqrt_3_1_1_3_1_1;
+ _______split_106_1_1_1_3_1_1 = ______split_114_1_1_3_1_1;
+ Lustre_slash_step(_______split_106_1_1_1_3_1_1,_______split_107_1_1_1_3_1_1,&________split_96_1_1_1_1_3_1_1);
+ ________split_97_1_1_1_1_3_1_1 = _______split_107_1_1_1_3_1_1 + ________split_96_1_1_1_1_3_1_1;
+ _______sqrt_2_1_1_1_3_1_1 = 0.5 * ________split_97_1_1_1_1_3_1_1;
+ ________split_94_1_1_1_1_3_1_1 = _______split_107_1_1_1_3_1_1 - _______sqrt_2_1_1_1_3_1_1;
+ _________split_2_2_1_1_1_1_3_1_1 = - ________split_94_1_1_1_1_3_1_1;
+ _________split_1_2_1_1_1_1_3_1_1 = ________split_94_1_1_1_1_3_1_1 >= 0.0;
+ if (_________split_1_2_1_1_1_1_3_1_1 == _true) {
+ ________split_95_1_1_1_1_3_1_1 = ________split_94_1_1_1_1_3_1_1;
+ } else {
+ ________split_95_1_1_1_1_3_1_1 = _________split_2_2_1_1_1_1_3_1_1;
+ }
+ _______ecart_2_1_1_1_3_1_1 = ________split_95_1_1_1_1_3_1_1 < 0.0005;
+ switch (_______ecart_2_1_1_1_3_1_1){
+ case _false:
+ ________split_98_1_1_1_1_3_1_1 = _______split_106_1_1_1_3_1_1;
+ ________split_99_1_1_1_1_3_1_1 = _______sqrt_2_1_1_1_3_1_1;
+ Lustre_slash_step(________split_98_1_1_1_1_3_1_1,________split_99_1_1_1_1_3_1_1,&_________split_92_1_1_1_1_1_3_1_1);
+ _________split_93_1_1_1_1_1_3_1_1 = ________split_99_1_1_1_1_3_1_1 + _________split_92_1_1_1_1_1_3_1_1;
+ ________sqrt_1_1_1_1_1_3_1_1 = 0.5 * _________split_93_1_1_1_1_1_3_1_1;
+ _______split_108_1_1_1_3_1_1 = ________sqrt_1_1_1_1_1_3_1_1;
+ break;
+ case _true:
+ ________split_101_1_1_1_1_3_1_1 = _______sqrt_2_1_1_1_3_1_1;
+ _______split_108_1_1_1_3_1_1 = ________split_101_1_1_1_1_3_1_1;
+ break;
+}
+ ______split_116_1_1_3_1_1 = _______split_108_1_1_1_3_1_1;
+ break;
+ case _true:
+ _______split_109_1_1_1_3_1_1 = ______sqrt_3_1_1_3_1_1;
+ ______split_116_1_1_3_1_1 = _______split_109_1_1_1_3_1_1;
+ break;
+}
+ _____split_124_1_3_1_1 = ______split_116_1_1_3_1_1;
+ break;
+ case _true:
+ ______split_117_1_1_3_1_1 = _____sqrt_4_1_3_1_1;
+ _____split_124_1_3_1_1 = ______split_117_1_1_3_1_1;
+ break;
+}
+ __slow_it_down_1_1 = _____split_124_1_3_1_1;
+ break;
+ case _true:
+ _____split_125_1_3_1_1 = ____sqrt_5_3_1_1;
+ __slow_it_down_1_1 = _____split_125_1_3_1_1;
+ break;
+}
+ break;
+}
+ Lustre_slash_step(5.,0.1,&___split_38_1_1);
+ Lustre_slash_step(100.,___split_38_1_1,&__kh_1_1);
+ switch (__st_1_1){
+ case convertible_slow:
+ ___split_45_1_1 = __kh_1_1;
+ ___split_46_1_1 = __slow_it_down_1_1 * ___split_45_1_1;
+ ___split_48_1_1 = ___split_46_1_1 + ___split_47_1_1;
+ __Roof_Percent_1_1 = ___split_48_1_1;
+ break;
+}
+ ___split_43_1_1 = __kh_1_1 + __pRoof_Percent_1_1;
+ switch (__st_1_1){
+ case convertible_fast:
+ ___split_44_1_1 = ___split_43_1_1;
+ __Roof_Percent_1_1 = ___split_44_1_1;
+ ___split_42_1_1 = 10.0;
+ break;
+ case convertible_wait:
+ __Roof_Percent_1_1 = 0.0;
+ ___split_42_1_1 = 0.0;
+ break;
+ case convertible_slow:
+ ___split_41_1_1 = 10.0 * __slow_it_down_1_1;
+ ___split_42_1_1 = ___split_41_1_1;
+ break;
+}
+ __split_25_1 = ___split_42_1_1;
+ break;
+}
+ Lustre_pre_get(&___split_39_1_1,&ctx->Lustre_pre_ctx_tab[4]);
+ Lustre_arrow_step(0.0,___split_39_1_1,&__pRoof_Speed_1_1,&ctx->Lustre_arrow_ctx_tab[4]);
+ switch (_Tick_on_in_motion_1){
+ case _false:
+ ___split_40_1_1 = __pRoof_Speed_1_1;
+ __split_25_1 = ___split_40_1_1;
+ break;
+}
+ Lustre_pre_set(__split_25_1,&ctx->Lustre_pre_ctx_tab[4]);
+ switch (_Tick_on_in_motion_1){
+ case _true:
+ switch (__st_1_1){
+ case convertible_slow:
+ switch (____ecart_5_3_1_1){
+ case _false:
+ switch (_____ecart_4_1_3_1_1){
+ case _false:
+ switch (______ecart_3_1_1_3_1_1){
+ case _false:
+ switch (_______ecart_2_1_1_1_3_1_1){
+ case _false:
+ _________split_90_1_1_1_1_1_3_1_1 = ________split_99_1_1_1_1_3_1_1 - ________sqrt_1_1_1_1_1_3_1_1;
+ __________split_2_1_1_1_1_1_1_3_1_1 = - _________split_90_1_1_1_1_1_3_1_1;
+ __________split_1_1_1_1_1_1_1_3_1_1 = _________split_90_1_1_1_1_1_3_1_1 >= 0.0;
+ if (__________split_1_1_1_1_1_1_1_3_1_1 == _true) {
+ _________split_91_1_1_1_1_1_3_1_1 = _________split_90_1_1_1_1_1_3_1_1;
+ } else {
+ _________split_91_1_1_1_1_1_3_1_1 = __________split_2_1_1_1_1_1_1_3_1_1;
+ }
+ ________ecart_1_1_1_1_1_3_1_1 = _________split_91_1_1_1_1_1_3_1_1 < 0.0005;
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ switch (____ecart_5_4_1_1){
+ case _false:
+ switch (_____ecart_4_1_4_1_1){
+ case _false:
+ switch (______ecart_3_1_1_4_1_1){
+ case _false:
+ switch (_______ecart_2_1_1_1_4_1_1){
+ case _false:
+ _________split_90_1_1_1_1_1_4_1_1 = ________split_99_1_1_1_1_4_1_1 - ________sqrt_1_1_1_1_1_4_1_1;
+ __________split_2_1_1_1_1_1_1_4_1_1 = - _________split_90_1_1_1_1_1_4_1_1;
+ __________split_1_1_1_1_1_1_1_4_1_1 = _________split_90_1_1_1_1_1_4_1_1 >= 0.0;
+ if (__________split_1_1_1_1_1_1_1_4_1_1 == _true) {
+ _________split_91_1_1_1_1_1_4_1_1 = _________split_90_1_1_1_1_1_4_1_1;
+ } else {
+ _________split_91_1_1_1_1_1_4_1_1 = __________split_2_1_1_1_1_1_1_4_1_1;
+ }
+ ________ecart_1_1_1_1_1_4_1_1 = _________split_91_1_1_1_1_1_4_1_1 < 0.0005;
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ break;
+}
+ Lustre_pre_set(__Roof_Percent_1_1,&ctx->Lustre_pre_ctx_tab[5]);
+ switch (__pst_2_1){
+ case convertible_slow:
+ ___split_30_1_1 = __pRoof_Percent_1_1;
+ ___split_31_1_1 = ___split_30_1_1 < 100.0;
+ if (___split_31_1_1 == _true) {
+ ___split_32_1_1 = convertible_slow;
+ } else {
+ ___split_32_1_1 = convertible_wait;
+ }
+ __st_1_1 = ___split_32_1_1;
+ break;
+ case convertible_fast:
+ ___split_27_1_1 = __pRoof_Percent_1_1;
+ ___split_28_1_1 = ___split_27_1_1 < 85.0;
+ if (___split_28_1_1 == _true) {
+ ___split_29_1_1 = convertible_fast;
+ } else {
+ ___split_29_1_1 = convertible_slow;
+ }
+ __st_1_1 = ___split_29_1_1;
+ break;
+ case convertible_wait:
+ __st_1_1 = convertible_fast;
+ break;
+}
+ Lustre_pre_2_get(&___split_26_1_1,&ctx->Lustre_pre_2_ctx_tab[4]);
+ Lustre_arrow_2_step(convertible_wait,___split_26_1_1,&__pst_2_1,&ctx->Lustre_arrow_2_ctx_tab[4]);
+ Lustre_pre_2_set(__st_1_1,&ctx->Lustre_pre_2_ctx_tab[4]);
+ break;
+}
+ *Roof_Speed = __split_25_1;
+ break;
+ case convertible_locked:
+ __split_24_1 = 0.0;
+ *Roof_Speed = __split_24_1;
+ break;
+}
+ _split_8 = OnOff & Start;
+ _split_9 = ! _split_8;
+
+} // End of convertible_main_step
+
diff --git a/test/monniaux/lustre-convertible-en-2cgc/convertible_main.h b/test/monniaux/lustre-convertible-en-2cgc/convertible_main.h
new file mode 100644
index 00000000..4785db8a
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/convertible_main.h
@@ -0,0 +1,52 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2c -en -2cgc -n main convertible.lus */
+/* on vanoise the 09/05/2019 at 15:28:26 */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "lustre_types.h"
+#include "lustre_consts.h"
+
+#ifndef _convertible_main_H_FILE
+#define _convertible_main_H_FILE
+void Lustre_arrow_2_ctx_reset(Lustre_arrow_2_ctx_type* ctx);
+void Lustre_arrow_2_ctx_init(Lustre_arrow_2_ctx_type* ctx);
+void Lustre_arrow_2_step(_integer ,_integer ,_integer *,Lustre_arrow_2_ctx_type*);
+
+void Lustre_arrow_ctx_reset(Lustre_arrow_ctx_type* ctx);
+void Lustre_arrow_ctx_init(Lustre_arrow_ctx_type* ctx);
+void Lustre_arrow_step(_real ,_real ,_real *,Lustre_arrow_ctx_type*);
+
+void Lustre_arrow_3_ctx_reset(Lustre_arrow_3_ctx_type* ctx);
+void Lustre_arrow_3_ctx_init(Lustre_arrow_3_ctx_type* ctx);
+void Lustre_arrow_3_step(_real [50],_real [50],_real [50]/*out*/,Lustre_arrow_3_ctx_type*);
+
+void Lustre_hat_step(_real ,_real [50]/*out*/);
+
+void Lustre_pre_2_ctx_reset(Lustre_pre_2_ctx_type* ctx);
+void Lustre_pre_2_ctx_init(Lustre_pre_2_ctx_type* ctx);
+void Lustre_pre_2_get(_integer *,Lustre_pre_2_ctx_type*);
+
+void Lustre_pre_2_set(_integer ,Lustre_pre_2_ctx_type*);
+
+void Lustre_pre_ctx_reset(Lustre_pre_ctx_type* ctx);
+void Lustre_pre_ctx_init(Lustre_pre_ctx_type* ctx);
+void Lustre_pre_get(_real *,Lustre_pre_ctx_type*);
+
+void Lustre_pre_set(_real ,Lustre_pre_ctx_type*);
+
+void Lustre_pre_3_ctx_reset(Lustre_pre_3_ctx_type* ctx);
+void Lustre_pre_3_ctx_init(Lustre_pre_3_ctx_type* ctx);
+void Lustre_pre_3_get(_real [50]/*out*/,Lustre_pre_3_ctx_type*);
+
+void Lustre_pre_3_set(_real [50],Lustre_pre_3_ctx_type*);
+
+void Lustre_slash_step(_real ,_real ,_real *);
+
+void convertible_main_ctx_reset(convertible_main_ctx_type* ctx);
+void convertible_main_ctx_init(convertible_main_ctx_type* ctx);
+void convertible_main_step(_boolean ,_boolean ,_boolean ,_boolean ,_boolean ,_boolean ,_real ,_boolean *,_boolean *,_real *,_real *,convertible_main_ctx_type*);
+
+/////////////////////////////////////////////////
+#endif
diff --git a/test/monniaux/lustre-convertible-en-2cgc/convertible_main_loop.c b/test/monniaux/lustre-convertible-en-2cgc/convertible_main_loop.c
new file mode 100644
index 00000000..9aa52cad
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/convertible_main_loop.c
@@ -0,0 +1,91 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2cgc -node main convertible.lus */
+/* on vanoise the 08/05/2019 at 23:54:11 */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdint.h>
+#include "convertible_main.h"
+#include "../clock.h"
+
+/* MACROS DEFINITIONS ****************/
+#ifndef TT
+#define TT "1"
+#endif
+#ifndef FF
+#define FF "0"
+#endif
+#ifndef BB
+#define BB "bottom"
+#endif
+#ifdef CKCHECK
+/* set this macro for testing output clocks */
+#endif
+
+static uint32_t dm_random_uint32(void) {
+ static uint32_t current=UINT32_C(0xDEADBEEF);
+ current = ((uint64_t) current << 6) % UINT32_C(4294967291);
+ return current;
+}
+
+/* Standard Input procedures **************/
+_boolean _get_bool(char* n){
+ return dm_random_uint32() & 1;
+}
+/*
+_integer _get_int(char* n){
+ return (_integer) (dm_random_uint32() % 21) - 10;
+}
+*/
+_real _get_real(char* n){
+ return ((_integer) (dm_random_uint32() % 2000001) - 1000000)*1E-6;
+}
+/* Output procedures **********************/
+void convertible_main_O_n(void* cdata, _integer _V) {
+}
+
+/* Main procedure *************************/
+int main(){
+ int _s = 0;
+ _boolean Start;
+ _boolean Parked;
+ _boolean Rot;
+ _boolean Tick;
+ _boolean OnOff;
+ _boolean Done;
+ _real Dist;
+ _boolean Danger;
+ _boolean Locked;
+ _real Speed;
+ _real Roof_Speed;
+ convertible_main_ctx_type ctx_struct;
+ convertible_main_ctx_type* ctx = &ctx_struct;
+ convertible_main_ctx_init(ctx);
+ // printf("#inputs \"Start\":bool \"Parked\":bool \"Rot\":bool \"Tick\":bool \"OnOff\":bool \"Done\":bool \"Dist\":real\n");
+ // printf("#outputs \"Danger\":bool \"Locked\":bool \"Speed\":real \"Roof_Speed\":real\n");
+
+ /* Main loop */
+ clock_prepare();
+ clock_start();
+
+ for(int count=0; count<1000; count++){
+ ++_s;
+ Start = _get_bool("Start");
+ Parked = _get_bool("Parked");
+ Rot = _get_bool("Rot");
+ Tick = _get_bool("Tick");
+ OnOff = _get_bool("OnOff");
+ Done = _get_bool("Done");
+ Dist = _get_real("Dist");
+ convertible_main_step(Start,Parked,Rot,Tick,OnOff,Done,Dist,&Danger,&Locked,&Speed,&Roof_Speed,ctx);
+ // printf("%d %d %d %d %d %d %f #outs %d %d %f %f\n",Start,Parked,Rot,Tick,OnOff,Done,Dist,Danger,Locked,Speed,Roof_Speed);
+ // printf("%d %d %f %f\n",Danger,Locked,Speed,Roof_Speed);
+ }
+
+ clock_stop();
+ print_total_clock();
+
+ return 0;
+
+}
diff --git a/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.c b/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.c
new file mode 100644
index 00000000..18d80805
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.c
@@ -0,0 +1,4 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2c -en -2cgc -n main convertible.lus */
+/* on vanoise the 09/05/2019 at 15:28:26 */
+#include "lustre_consts.h" \ No newline at end of file
diff --git a/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.h b/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.h
new file mode 100644
index 00000000..eaa21a15
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/lustre_consts.h
@@ -0,0 +1,23 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2c -en -2cgc -n main convertible.lus */
+/* on vanoise the 09/05/2019 at 15:28:26 */
+
+// Constant definitions
+#define convertible_anti_col 2
+#define convertible_deg1 1
+#define convertible_fast 1
+#define convertible_in_motion 1
+#define convertible_k 5500.0
+#define convertible_locked 0
+#define convertible_max_roof_speed 10.0
+#define convertible_no_sol 0
+#define convertible_one_sol 2
+#define convertible_period 0.1
+#define convertible_run 1
+#define convertible_size 50
+#define convertible_slow 2
+#define convertible_speed_max 110.0
+#define convertible_stationnary 0
+#define convertible_two_sol 3
+#define convertible_wait 0
+#define convertible_wheel_girth 1.4
diff --git a/test/monniaux/lustre-convertible-en-2cgc/lustre_types.h b/test/monniaux/lustre-convertible-en-2cgc/lustre_types.h
new file mode 100644
index 00000000..68127eb6
--- /dev/null
+++ b/test/monniaux/lustre-convertible-en-2cgc/lustre_types.h
@@ -0,0 +1,83 @@
+/* This file was generated by lv6 version master.737 (2727a7744111c84f7984634d2bd3ad6f7c6c7ff9). */
+/* lv6 -2c -en -2cgc -n main convertible.lus */
+/* on vanoise the 09/05/2019 at 15:28:26 */
+
+#ifndef _SOC2C_PREDEF_TYPES
+#define _SOC2C_PREDEF_TYPES
+typedef int _boolean;
+typedef int _integer;
+typedef char* _string;
+typedef double _real;
+typedef double _double;
+typedef float _float;
+#define _false 0
+#define _true 1
+#endif
+// end of _SOC2C_PREDEF_TYPES
+// User typedef
+#ifndef _convertible_main_TYPES
+#define _convertible_main_TYPES
+typedef _integer convertible_eq_case;
+typedef _integer convertible_roof_speed_state;
+typedef _integer convertible_roof_state;
+typedef struct {
+ _integer i;
+ _integer j;
+ _real v;
+ } convertible_update_acc;
+typedef _integer convertible_vehicle_state;
+#endif // enf of _convertible_main_TYPES
+// Memoryless soc ctx typedef
+// Memoryfull soc ctx typedef
+/* Lustre_pre_ctx */
+typedef struct {
+ /*Memory cell*/
+ _real _memory ;
+} Lustre_pre_ctx_type;
+
+/* Lustre_arrow_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_ctx_type;
+
+/* Lustre_pre_2_ctx */
+typedef struct {
+ /*Memory cell*/
+ _integer _memory ;
+} Lustre_pre_2_ctx_type;
+
+/* Lustre_arrow_2_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_2_ctx_type;
+
+/* Lustre_arrow_3_ctx */
+typedef struct {
+ /*Memory cell*/
+ _boolean _memory ;
+} Lustre_arrow_3_ctx_type;
+
+/* Lustre_pre_3_ctx */
+typedef struct {
+ /*Memory cell*/
+ _real _memory[50] ;
+} Lustre_pre_3_ctx_type;
+
+/* convertible_main_ctx */
+typedef struct {
+ /*INSTANCES*/
+ Lustre_pre_3_ctx_type Lustre_pre_3_ctx_tab[2];
+ Lustre_pre_ctx_type Lustre_pre_ctx_tab[6];
+ Lustre_pre_2_ctx_type Lustre_pre_2_ctx_tab[5];
+ Lustre_arrow_3_ctx_type Lustre_arrow_3_ctx_tab[2];
+ Lustre_arrow_ctx_type Lustre_arrow_ctx_tab[6];
+ Lustre_arrow_2_ctx_type Lustre_arrow_2_ctx_tab[5];
+} convertible_main_ctx_type;
+
+// Defining array and extern types assignments
+
+#ifndef _assign_rp50
+#define _assign_rp50(dest, source, size) memcpy(dest, source, size)
+#endif