// ************************************************************************** //
//                                                                            //
//    eses                   eses                                             //
//   eses                     eses                                            //
//  eses    eseses  esesese    eses   Embedded Systems Group                  //
//  ese    ese  ese ese         ese                                           //
//  ese    eseseses eseseses    ese   Department of Computer Science          //
//  eses   eses          ese   eses                                           //
//   eses   eseses  eseseses  eses    University of Kaiserslautern            //
//    eses                   eses                                             //
//                                                                            //
// ************************************************************************** //


[33]int p;
int x,y;
thread EvalPolynomial {
    int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65;
    t0 = p[0];
    t1 = p[1];
    t2 = p[2];
    t3 = p[3];
    t4 = p[4];
    t5 = p[5];
    t6 = p[6];
    t7 = p[7];
    t8 = p[8];
    t9 = p[9];
    t10 = p[10];
    t11 = p[11];
    t12 = p[12];
    t13 = p[13];
    t14 = p[14];
    t15 = p[15];
    t16 = p[16];
    t17 = p[17];
    t18 = p[18];
    t19 = p[19];
    t20 = p[20];
    t21 = p[21];
    t22 = p[22];
    t23 = p[23];
    t24 = p[24];
    t25 = p[25];
    t26 = p[26];
    t27 = p[27];
    t28 = p[28];
    t29 = p[29];
    t30 = p[30];
    t31 = p[31];
    t32 = p[32];
    t33 = +1;
    t34 = x;
    t35 = x;
    t36 = x;
    t37 = x;
    t38 = x;
    t39 = x;
    t40 = x;
    t41 = x;
    t42 = x;
    t43 = x;
    t44 = x;
    t45 = x;
    t46 = x;
    t47 = x;
    t48 = x;
    t49 = x;
    t50 = x;
    t51 = x;
    t52 = x;
    t53 = x;
    t54 = x;
    t55 = x;
    t56 = x;
    t57 = x;
    t58 = x;
    t59 = x;
    t60 = x;
    t61 = x;
    t62 = x;
    t63 = x;
    t64 = x;
    t65 = x;
    // up-level 0
    t34 = t33 * t34;
    t36 = t35 * t36;
    t38 = t37 * t38;
    t40 = t39 * t40;
    t42 = t41 * t42;
    t44 = t43 * t44;
    t46 = t45 * t46;
    t48 = t47 * t48;
    t50 = t49 * t50;
    t52 = t51 * t52;
    t54 = t53 * t54;
    t56 = t55 * t56;
    t58 = t57 * t58;
    t60 = t59 * t60;
    t62 = t61 * t62;
    t64 = t63 * t64;
    // up-level 1
    t36 = t34 * t36;
    t40 = t38 * t40;
    t44 = t42 * t44;
    t48 = t46 * t48;
    t52 = t50 * t52;
    t56 = t54 * t56;
    t60 = t58 * t60;
    t64 = t62 * t64;
    // up-level 2
    t40 = t36 * t40;
    t48 = t44 * t48;
    t56 = t52 * t56;
    t64 = t60 * t64;
    // up-level 3
    t48 = t40 * t48;
    t64 = t56 * t64;
    // up-level 4
    t64 = t48 * t64;
    // up-level 5
    // down-level 6
    // down-level 7
    t56 = t48 * t56;
    // down-level 8
    t44 = t40 * t44;
    t52 = t48 * t52;
    t60 = t56 * t60;
    // down-level 9
    t38 = t36 * t38;
    t42 = t40 * t42;
    t46 = t44 * t46;
    t50 = t48 * t50;
    t54 = t52 * t54;
    t58 = t56 * t58;
    t62 = t60 * t62;
    // down-level 10
    t35 = t34 * t35;
    t37 = t36 * t37;
    t39 = t38 * t39;
    t41 = t40 * t41;
    t43 = t42 * t43;
    t45 = t44 * t45;
    t47 = t46 * t47;
    t49 = t48 * t49;
    t51 = t50 * t51;
    t53 = t52 * t53;
    t55 = t54 * t55;
    t57 = t56 * t57;
    t59 = t58 * t59;
    t61 = t60 * t61;
    t63 = t62 * t63;
    t65 = t64 * t65;
    // multiply p[i] with x^i
    t33 = t0 * t33;
    t34 = t1 * t34;
    t35 = t2 * t35;
    t36 = t3 * t36;
    t37 = t4 * t37;
    t38 = t5 * t38;
    t39 = t6 * t39;
    t40 = t7 * t40;
    t41 = t8 * t41;
    t42 = t9 * t42;
    t43 = t10 * t43;
    t44 = t11 * t44;
    t45 = t12 * t45;
    t46 = t13 * t46;
    t47 = t14 * t47;
    t48 = t15 * t48;
    t49 = t16 * t49;
    t50 = t17 * t50;
    t51 = t18 * t51;
    t52 = t19 * t52;
    t53 = t20 * t53;
    t54 = t21 * t54;
    t55 = t22 * t55;
    t56 = t23 * t56;
    t57 = t24 * t57;
    t58 = t25 * t58;
    t59 = t26 * t59;
    t60 = t27 * t60;
    t61 = t28 * t61;
    t62 = t29 * t62;
    t63 = t30 * t63;
    t64 = t31 * t64;
    t65 = t32 * t65;
    // sum up p[i]*x^i by a binary tree
    // level 0
    t33 = t33 + t34;
    t34 = t35 + t36;
    t35 = t37 + t38;
    t36 = t39 + t40;
    t37 = t41 + t42;
    t38 = t43 + t44;
    t39 = t45 + t46;
    t40 = t47 + t48;
    t41 = t49 + t50;
    t42 = t51 + t52;
    t43 = t53 + t54;
    t44 = t55 + t56;
    t45 = t57 + t58;
    t46 = t59 + t60;
    t47 = t61 + t62;
    t48 = t63 + t64;
    t49 = t65;
    // level 0
    t33 = t33 + t34;
    t34 = t35 + t36;
    t35 = t37 + t38;
    t36 = t39 + t40;
    t37 = t41 + t42;
    t38 = t43 + t44;
    t39 = t45 + t46;
    t40 = t47 + t48;
    t41 = t49;
    // level 0
    t33 = t33 + t34;
    t34 = t35 + t36;
    t35 = t37 + t38;
    t36 = t39 + t40;
    t37 = t41;
    // level 0
    t33 = t33 + t34;
    t34 = t35 + t36;
    t35 = t37;
    // level 0
    t33 = t33 + t34;
    t34 = t35;
    // level 0
    t33 = t33 + t34;
    // final result
    y = t33;
    }