babelJcc(OP, L, R) :- ( OP =:= 12 -> L =:= R ; OP =:= 13 -> L \= R ; OP =:= 14 -> L > R ; OP =:= 15 -> L =< R ; OP =:= 16 -> L < R ; OP =:= 17 -> L >= R ). :-foreign(babel_ptrR(-integer, +integer, +integer)). :-foreign(babel_ptrE(+integer, +integer, +integer)). babelPtrR(E, P, L) :- babel_ptrR(T, P, L), E is T. babelPtrL(P, E, L) :- babel_ptrE(P, E, L). babelAssign(Var, Val) :- Var is Val. babelAssignStr(Var, Val) :- Var = Val. babelAssignBool(Var, Val) :- Var = Val. babelArrayL([_|T], 0, X, [X|T]). babelArrayL([H|T], I, X, [H|R]):- I > -1, NI is I-1, babelArrayL(T, NI, X, R), !. babelArrayL(L, _, _, L). babelArrayR(X, [X|_], 0). babelArrayR(X, [_|T], I):- I > 0, NI is I-1, babelArrayR(X, T, NI), !. :- foreign(babel_c_0(+integer, -integer)). :- foreign(babel_c_1(+string, +integer)). :- foreign(babel_c_2(+integer, +integer, +integer, +integer)). :- foreign(babel_c_3(+string, +integer)). foo(__CIL_FP_A, __CIL_FP_FACT, __CIL_PP_A, __CIL_PP_FACT, N, __RETRES23) :- babelAssign(A, 0), babelAssign(FACT, 0), babelAssign(C, 0), babelAssign(R, 0), babelAssign(TMP, 0), babelAssign(__CIL_TMP11, 0), babelAssign(A_SSA_1, 1), babelAssign(FACT_SSA_1, 1), BabelExp_0 is A_SSA_1 + 1, babelAssign(A_SSA_2, BabelExp_0), (babelJcc(14, A_SSA_2, 2) -> babelAssign(__CIL_TMP11_SSA_1, 1) ; babelAssign(__CIL_TMP11_SSA_1, 0)), (babelJcc(13, __CIL_TMP11_SSA_1, 0) -> BabelExp_1 is A_SSA_2 + 2, babelAssign(A_SSA_3, BabelExp_1) ; babelAssign(A_SSA_3, 4)), babel_c_0(4 , TMP_SSA_1), babelAssign(R_SSA_1, TMP_SSA_1), babel_c_1('%d\n', R_SSA_1), babelAssign(C_SSA_1, 1), BabelExp_2 is A_SSA_3, babelPtrL(__CIL_FP_A, BabelExp_2, 4), BabelExp_3 is FACT_SSA_1, babelPtrL(__CIL_FP_FACT, BabelExp_3, 4), babel_c_2(__CIL_PP_A, __CIL_PP_FACT, N, C_SSA_1), BabelExp_4 is __CIL_FP_A, babelPtrR(A_SSA_4, BabelExp_4, 4), BabelExp_5 is __CIL_FP_FACT, babelPtrR(FACT_SSA_2, BabelExp_5, 4), babel_c_3('%d\n', FACT_SSA_2), BabelExp_6 is A_SSA_4 + 3, babelAssign(A_SSA_5, BabelExp_6),babelAssign(__RETRES23, 0). :- foreign(babel_c_4(+integer, +integer, +integer)). foo3(__CIL_FP_FACT, __CIL_PP_FACT, N, FACT_SSA_2) :- babelAssign(FACT, 0), babelAssign(C, 0), babelAssign(FACT_SSA_1, 0), babelAssign(C_SSA_1, 0), babelAssign(C_SSA_2, 1), BabelExp_7 is FACT_SSA_1, babelPtrL(__CIL_FP_FACT, BabelExp_7, 4), babel_c_4(__CIL_PP_FACT, N, C_SSA_2), BabelExp_8 is __CIL_FP_FACT, babelPtrR(FACT_SSA_2, BabelExp_8, 4). :- foreign(babel_c_5(+string, +integer)). :- foreign(babel_c_6(+string, +integer)). :- foreign(babel_c_7(+string, +integer)). :- foreign(babel_c_8(+string, +integer)). foo4(__CIL_FP_A, __CIL_PP_A, __RETRES28) :- babelAssign(A, 0), babelAssign(B, 0), babelAssign(C, 0), BabelExp_9 is 0, babelAssign(P, BabelExp_9), babelAssign(FACT, 0), babelAssign(N, 0), babelAssign(__CIL_TMP9, 0), babelAssign(__CIL_TMP10, 0), babelAssign(__CIL_TMP11, 0), babelAssign(__CIL_TMP12, 0), babelAssign(A_SSA_1, 2), babelAssign(B_SSA_1, 1), babelAssign(C_SSA_1, 3), babelAssign(P_SSA_1, __CIL_PP_A), babelAssign(FACT_SSA_1, 1), babelAssign(N_SSA_1, 10), (babelJcc(12, B_SSA_1, 1) -> babelAssign(__CIL_TMP9_SSA_1, 1) ; babelAssign(__CIL_TMP9_SSA_1, 0)), (babelJcc(13, __CIL_TMP9_SSA_1, 0) -> babelAssign(A_SSA_2, 3), (babelJcc(12, C_SSA_1, 2) -> babelAssign(__CIL_TMP10_SSA_1, 1) ; babelAssign(__CIL_TMP10_SSA_1, 0)), (babelJcc(13, __CIL_TMP10_SSA_1, 0) -> babelAssign(B_SSA_2, 2) ; babelAssign(B_SSA_2, 4)), BabelExp_10 is 2, babelPtrL(P_SSA_1, BabelExp_10, 4), BabelExp_11 is __CIL_FP_A, babelPtrR(A_SSA_3, BabelExp_11, 4), babelAssign(A_SSA_4, 5), babelAssign(__CIL_TMP11_SSA_1, __CIL_TMP11) ; babelAssign(A_SSA_2, 4), (babelJcc(12, C_SSA_1, 2) -> babelAssign(__CIL_TMP11_SSA_1, 1) ; babelAssign(__CIL_TMP11_SSA_1, 0)), (babelJcc(13, __CIL_TMP11_SSA_1, 0) -> babelAssign(B_SSA_2, 5) ; babelAssign(B_SSA_2, 6)), BabelExp_12 is 3, babelPtrL(P_SSA_1, BabelExp_12, 4), BabelExp_13 is __CIL_FP_A, babelPtrR(A_SSA_3, BabelExp_13, 4), babelAssign(A_SSA_4, 7), babelAssign(__CIL_TMP10_SSA_1, __CIL_TMP10)), babelAssign(B_SSA_3, A_SSA_4), babel_c_5('a : %d\n', A_SSA_4), babel_c_6('b : %d\n', B_SSA_3), babel_c_7('c : %d\n', C_SSA_1), BabelExp_14 is A_SSA_4, babelPtrL(__CIL_FP_A, BabelExp_14, 4), BabelExp_15 is P_SSA_1, babelPtrR(__CIL_TMP12_SSA_1, BabelExp_15, 4), babel_c_8('p : %d\n', __CIL_TMP12_SSA_1),babelAssign(__RETRES28, 0). :- foreign(babel_c_9(+string, +integer)). :- foreign(babel_c_10(+string, +integer)). :- foreign(babel_c_11(+string, +integer)). :- foreign(babel_c_12(+string, +integer)). :- foreign(babel_c_13(+string, +integer)). :- foreign(babel_c_14(+string, +integer)). :- foreign(babel_c_15(+string, +integer)). :- foreign(babel_c_16(+string, +integer)). foo1(__CIL_FP_B, __CIL_PP_B, A, B_SSA_3) :- babelAssign(B, 0), BabelExp_16 is 0, babelAssign(P, BabelExp_16), babelAssign(C, 0), babelAssign(__CIL_TMP7, 0), babelAssign(__CIL_TMP8, 0), babelAssign(B_SSA_1, A), BabelExp_17 is B_SSA_1, babelPtrL(__CIL_FP_B, BabelExp_17, 4), babelAssign(P_SSA_1, __CIL_PP_B), BabelExp_18 is B_SSA_1, babelPtrL(__CIL_FP_B, BabelExp_18, 4), BabelExp_19 is P_SSA_1, babelPtrR(C_SSA_1, BabelExp_19, 4), BabelExp_20 is B_SSA_1, babelPtrL(__CIL_FP_B, BabelExp_20, 4), BabelExp_21 is 5, babelPtrL(P_SSA_1, BabelExp_21, 4), BabelExp_22 is __CIL_FP_B, babelPtrR(B_SSA_2, BabelExp_22, 4), babel_c_9('a : %d\n', A), babel_c_10('b : %d\n', B_SSA_2), babel_c_11('c : %d\n', C_SSA_1), BabelExp_23 is B_SSA_2, babelPtrL(__CIL_FP_B, BabelExp_23, 4), BabelExp_24 is P_SSA_1, babelPtrR(__CIL_TMP7_SSA_1, BabelExp_24, 4), babel_c_12('p : %d\n', __CIL_TMP7_SSA_1), babelAssign(B_SSA_3, 6), babelAssign(C_SSA_2, 7), babel_c_13('a : %d\n', A), babel_c_14('b : %d\n', B_SSA_3), babel_c_15('c : %d\n', C_SSA_2), BabelExp_25 is B_SSA_3, babelPtrL(__CIL_FP_B, BabelExp_25, 4), BabelExp_26 is P_SSA_1, babelPtrR(__CIL_TMP8_SSA_1, BabelExp_26, 4), babel_c_16('p : %d\n', __CIL_TMP8_SSA_1).