// ************************************************************************** //
//                                                                            //
//    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,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63;

thread ParallelPrefixTree_64 {
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,y32,y33,y34,y35,y36,y37,y38,y39,y40,y41,y42,y43,y44,y45,y46,y47,y48,y49,y50,y51,y52,y53,y54,y55,y56,y57,y58,y59,y60,y61,y62,y63;
    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;
    y32 = x32;
    y33 = x33;
    y34 = x34;
    y35 = x35;
    y36 = x36;
    y37 = x37;
    y38 = x38;
    y39 = x39;
    y40 = x40;
    y41 = x41;
    y42 = x42;
    y43 = x43;
    y44 = x44;
    y45 = x45;
    y46 = x46;
    y47 = x47;
    y48 = x48;
    y49 = x49;
    y50 = x50;
    y51 = x51;
    y52 = x52;
    y53 = x53;
    y54 = x54;
    y55 = x55;
    y56 = x56;
    y57 = x57;
    y58 = x58;
    y59 = x59;
    y60 = x60;
    y61 = x61;
    y62 = x62;
    y63 = x63;
    // 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;
    y33 = y32 + y33;
    y35 = y34 + y35;
    y37 = y36 + y37;
    y39 = y38 + y39;
    y41 = y40 + y41;
    y43 = y42 + y43;
    y45 = y44 + y45;
    y47 = y46 + y47;
    y49 = y48 + y49;
    y51 = y50 + y51;
    y53 = y52 + y53;
    y55 = y54 + y55;
    y57 = y56 + y57;
    y59 = y58 + y59;
    y61 = y60 + y61;
    y63 = y62 + y63;
    // 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;
    y35 = y33 + y35;
    y39 = y37 + y39;
    y43 = y41 + y43;
    y47 = y45 + y47;
    y51 = y49 + y51;
    y55 = y53 + y55;
    y59 = y57 + y59;
    y63 = y61 + y63;
    // up-level 2
    y7 = y3 + y7;
    y15 = y11 + y15;
    y23 = y19 + y23;
    y31 = y27 + y31;
    y39 = y35 + y39;
    y47 = y43 + y47;
    y55 = y51 + y55;
    y63 = y59 + y63;
    // up-level 3
    y15 = y7 + y15;
    y31 = y23 + y31;
    y47 = y39 + y47;
    y63 = y55 + y63;
    // up-level 4
    y31 = y15 + y31;
    y63 = y47 + y63;
    // up-level 5
    y63 = y31 + y63;
    // up-level 6
    // down-level 7
    // down-level 8
    y47 = y31 + y47;
    // down-level 9
    y23 = y15 + y23;
    y39 = y31 + y39;
    y55 = y47 + y55;
    // down-level 10
    y11 = y7 + y11;
    y19 = y15 + y19;
    y27 = y23 + y27;
    y35 = y31 + y35;
    y43 = y39 + y43;
    y51 = y47 + y51;
    y59 = y55 + y59;
    // down-level 11
    y5 = y3 + y5;
    y9 = y7 + y9;
    y13 = y11 + y13;
    y17 = y15 + y17;
    y21 = y19 + y21;
    y25 = y23 + y25;
    y29 = y27 + y29;
    y33 = y31 + y33;
    y37 = y35 + y37;
    y41 = y39 + y41;
    y45 = y43 + y45;
    y49 = y47 + y49;
    y53 = y51 + y53;
    y57 = y55 + y57;
    y61 = y59 + y61;
    // down-level 12
    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;
    y32 = y31 + y32;
    y34 = y33 + y34;
    y36 = y35 + y36;
    y38 = y37 + y38;
    y40 = y39 + y40;
    y42 = y41 + y42;
    y44 = y43 + y44;
    y46 = y45 + y46;
    y48 = y47 + y48;
    y50 = y49 + y50;
    y52 = y51 + y52;
    y54 = y53 + y54;
    y56 = y55 + y56;
    y58 = y57 + y58;
    y60 = y59 + y60;
    y62 = y61 + y62;
    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;
    x32 = y32;
    x33 = y33;
    x34 = y34;
    x35 = y35;
    x36 = y36;
    x37 = y37;
    x38 = y38;
    x39 = y39;
    x40 = y40;
    x41 = y41;
    x42 = y42;
    x43 = y43;
    x44 = y44;
    x45 = y45;
    x46 = y46;
    x47 = y47;
    x48 = y48;
    x49 = y49;
    x50 = y50;
    x51 = y51;
    x52 = y52;
    x53 = y53;
    x54 = y54;
    x55 = y55;
    x56 = y56;
    x57 = y57;
    x58 = y58;
    x59 = y59;
    x60 = y60;
    x61 = y61;
    x62 = y62;
    x63 = y63;
}