```// ************************************************************************** //
//                                                                            //
//    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                                             //
//                                                                            //
// ************************************************************************** //

[9]int p;
int x,y;
int t0,t1,t2,t3,t4,t5,t6,t7,t8;
t0 = +1;
t1 = x;
t2 = x;
t3 = x;
t4 = x;
t5 = x;
t6 = x;
t7 = x;
t8 = x;
// up-level 0
t1 = t0 * t1;
t3 = t2 * t3;
t5 = t4 * t5;
t7 = t6 * t7;
// up-level 1
t3 = t1 * t3;
t7 = t5 * t7;
// up-level 2
t7 = t3 * t7;
// up-level 3
// down-level 4
// down-level 5
t5 = t3 * t5;
// down-level 6
t2 = t1 * t2;
t4 = t3 * t4;
t6 = t5 * t6;
t8 = t7 * t8;
// multiply p[i] with x^i
t0 = p[0] * t0;
t1 = p[1] * t1;
t2 = p[2] * t2;
t3 = p[3] * t3;
t4 = p[4] * t4;
t5 = p[5] * t5;
t6 = p[6] * t6;
t7 = p[7] * t7;
t8 = p[8] * t8;
// sum up p[i]*x^i by a binary tree
// level 0
t0 = t0 + t1;
t1 = t2 + t3;
t2 = t4 + t5;
t3 = t6 + t7;
t4 = t8;
// level 0
t0 = t0 + t1;
t1 = t2 + t3;
t2 = t4;
// level 0
t0 = t0 + t1;
t1 = t2;
// level 0
t0 = t0 + t1;
// final result
y = t0;
}

```