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


nat x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31;

thread ParallelPrefixTree_32 {
nat y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31;
    y0 = x0;
    y1 = x1;
    y2 = x2;
    y3 = x3;
    y4 = x4;
    y5 = x5;
    y6 = x6;
    y7 = x7;
    y8 = x8;
    y9 = x9;
    y10 = x10;
    y11 = x11;
    y12 = x12;
    y13 = x13;
    y14 = x14;
    y15 = x15;
    y16 = x16;
    y17 = x17;
    y18 = x18;
    y19 = x19;
    y20 = x20;
    y21 = x21;
    y22 = x22;
    y23 = x23;
    y24 = x24;
    y25 = x25;
    y26 = x26;
    y27 = x27;
    y28 = x28;
    y29 = x29;
    y30 = x30;
    y31 = x31;
    // up-level 0
    y1 = y0 + y1;
    y3 = y2 + y3;
    y5 = y4 + y5;
    y7 = y6 + y7;
    y9 = y8 + y9;
    y11 = y10 + y11;
    y13 = y12 + y13;
    y15 = y14 + y15;
    y17 = y16 + y17;
    y19 = y18 + y19;
    y21 = y20 + y21;
    y23 = y22 + y23;
    y25 = y24 + y25;
    y27 = y26 + y27;
    y29 = y28 + y29;
    y31 = y30 + y31;
    // up-level 1
    y3 = y1 + y3;
    y7 = y5 + y7;
    y11 = y9 + y11;
    y15 = y13 + y15;
    y19 = y17 + y19;
    y23 = y21 + y23;
    y27 = y25 + y27;
    y31 = y29 + y31;
    // up-level 2
    y7 = y3 + y7;
    y15 = y11 + y15;
    y23 = y19 + y23;
    y31 = y27 + y31;
    // up-level 3
    y15 = y7 + y15;
    y31 = y23 + y31;
    // up-level 4
    y31 = y15 + y31;
    // up-level 5
    // down-level 6
    // down-level 7
    y23 = y15 + y23;
    // down-level 8
    y11 = y7 + y11;
    y19 = y15 + y19;
    y27 = y23 + y27;
    // down-level 9
    y5 = y3 + y5;
    y9 = y7 + y9;
    y13 = y11 + y13;
    y17 = y15 + y17;
    y21 = y19 + y21;
    y25 = y23 + y25;
    y29 = y27 + y29;
    // down-level 10
    y2 = y1 + y2;
    y4 = y3 + y4;
    y6 = y5 + y6;
    y8 = y7 + y8;
    y10 = y9 + y10;
    y12 = y11 + y12;
    y14 = y13 + y14;
    y16 = y15 + y16;
    y18 = y17 + y18;
    y20 = y19 + y20;
    y22 = y21 + y22;
    y24 = y23 + y24;
    y26 = y25 + y26;
    y28 = y27 + y28;
    y30 = y29 + y30;
    x0 = y0;
    x1 = y1;
    x2 = y2;
    x3 = y3;
    x4 = y4;
    x5 = y5;
    x6 = y6;
    x7 = y7;
    x8 = y8;
    x9 = y9;
    x10 = y10;
    x11 = y11;
    x12 = y12;
    x13 = y13;
    x14 = y14;
    x15 = y15;
    x16 = y16;
    x17 = y17;
    x18 = y18;
    x19 = y19;
    x20 = y20;
    x21 = y21;
    x22 = y22;
    x23 = y23;
    x24 = y24;
    x25 = y25;
    x26 = y26;
    x27 = y27;
    x28 = y28;
    x29 = y29;
    x30 = y30;
    x31 = y31;
}