// ************************************************************************** //
//                                                                            //
//    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 a_0_0,a_0_1,a_0_2,a_0_3,a_1_0,a_1_1,a_1_2,a_1_3,a_2_0,a_2_1,a_2_2,a_2_3,a_3_0,a_3_1,a_3_2,a_3_3;
nat b_0_0,b_0_1,b_0_2,b_0_3,b_1_0,b_1_1,b_1_2,b_1_3,b_2_0,b_2_1,b_2_2,b_2_3,b_3_0,b_3_1,b_3_2,b_3_3;
nat c_0_0,c_0_1,c_0_2,c_0_3,c_1_0,c_1_1,c_1_2,c_1_3,c_2_0,c_2_1,c_2_2,c_2_3,c_3_0,c_3_1,c_3_2,c_3_3;
thread MatrixMultCannon {
    b_0_0 = b_1_0;
    a_0_0 = a_0_1;
    c_0_0 = c_0_0 + a_0_0 * b_0_0;
    b_0_0 = b_1_0;
    a_0_0 = a_0_1;
    c_0_0 = c_0_0 + a_0_0 * b_0_0;
    b_0_0 = b_1_0;
    a_0_0 = a_0_1;
    c_0_0 = c_0_0 + a_0_0 * b_0_0;
    b_0_0 = b_1_0;
    a_0_0 = a_0_1;
    c_0_0 = c_0_0 + a_0_0 * b_0_0;
    b_0_1 = b_1_1;
    a_0_1 = a_0_2;
    c_0_1 = c_0_1 + a_0_1 * b_0_1;
    b_0_1 = b_1_1;
    a_0_1 = a_0_2;
    c_0_1 = c_0_1 + a_0_1 * b_0_1;
    b_0_1 = b_1_1;
    a_0_1 = a_0_2;
    c_0_1 = c_0_1 + a_0_1 * b_0_1;
    b_0_1 = b_1_1;
    a_0_1 = a_0_2;
    c_0_1 = c_0_1 + a_0_1 * b_0_1;
    b_0_2 = b_1_2;
    a_0_2 = a_0_3;
    c_0_2 = c_0_2 + a_0_2 * b_0_2;
    b_0_2 = b_1_2;
    a_0_2 = a_0_3;
    c_0_2 = c_0_2 + a_0_2 * b_0_2;
    b_0_2 = b_1_2;
    a_0_2 = a_0_3;
    c_0_2 = c_0_2 + a_0_2 * b_0_2;
    b_0_2 = b_1_2;
    a_0_2 = a_0_3;
    c_0_2 = c_0_2 + a_0_2 * b_0_2;
    b_0_3 = b_1_3;
    a_0_3 = a_0_0;
    c_0_3 = c_0_3 + a_0_3 * b_0_3;
    b_0_3 = b_1_3;
    a_0_3 = a_0_0;
    c_0_3 = c_0_3 + a_0_3 * b_0_3;
    b_0_3 = b_1_3;
    a_0_3 = a_0_0;
    c_0_3 = c_0_3 + a_0_3 * b_0_3;
    b_0_3 = b_1_3;
    a_0_3 = a_0_0;
    c_0_3 = c_0_3 + a_0_3 * b_0_3;
    b_1_0 = b_2_0;
    a_1_0 = a_1_1;
    c_1_0 = c_1_0 + a_1_0 * b_1_0;
    b_1_0 = b_2_0;
    a_1_0 = a_1_1;
    c_1_0 = c_1_0 + a_1_0 * b_1_0;
    b_1_0 = b_2_0;
    a_1_0 = a_1_1;
    c_1_0 = c_1_0 + a_1_0 * b_1_0;
    b_1_0 = b_2_0;
    a_1_0 = a_1_1;
    c_1_0 = c_1_0 + a_1_0 * b_1_0;
    b_1_1 = b_2_1;
    a_1_1 = a_1_2;
    c_1_1 = c_1_1 + a_1_1 * b_1_1;
    b_1_1 = b_2_1;
    a_1_1 = a_1_2;
    c_1_1 = c_1_1 + a_1_1 * b_1_1;
    b_1_1 = b_2_1;
    a_1_1 = a_1_2;
    c_1_1 = c_1_1 + a_1_1 * b_1_1;
    b_1_1 = b_2_1;
    a_1_1 = a_1_2;
    c_1_1 = c_1_1 + a_1_1 * b_1_1;
    b_1_2 = b_2_2;
    a_1_2 = a_1_3;
    c_1_2 = c_1_2 + a_1_2 * b_1_2;
    b_1_2 = b_2_2;
    a_1_2 = a_1_3;
    c_1_2 = c_1_2 + a_1_2 * b_1_2;
    b_1_2 = b_2_2;
    a_1_2 = a_1_3;
    c_1_2 = c_1_2 + a_1_2 * b_1_2;
    b_1_2 = b_2_2;
    a_1_2 = a_1_3;
    c_1_2 = c_1_2 + a_1_2 * b_1_2;
    b_1_3 = b_2_3;
    a_1_3 = a_1_0;
    c_1_3 = c_1_3 + a_1_3 * b_1_3;
    b_1_3 = b_2_3;
    a_1_3 = a_1_0;
    c_1_3 = c_1_3 + a_1_3 * b_1_3;
    b_1_3 = b_2_3;
    a_1_3 = a_1_0;
    c_1_3 = c_1_3 + a_1_3 * b_1_3;
    b_1_3 = b_2_3;
    a_1_3 = a_1_0;
    c_1_3 = c_1_3 + a_1_3 * b_1_3;
    b_2_0 = b_3_0;
    a_2_0 = a_2_1;
    c_2_0 = c_2_0 + a_2_0 * b_2_0;
    b_2_0 = b_3_0;
    a_2_0 = a_2_1;
    c_2_0 = c_2_0 + a_2_0 * b_2_0;
    b_2_0 = b_3_0;
    a_2_0 = a_2_1;
    c_2_0 = c_2_0 + a_2_0 * b_2_0;
    b_2_0 = b_3_0;
    a_2_0 = a_2_1;
    c_2_0 = c_2_0 + a_2_0 * b_2_0;
    b_2_1 = b_3_1;
    a_2_1 = a_2_2;
    c_2_1 = c_2_1 + a_2_1 * b_2_1;
    b_2_1 = b_3_1;
    a_2_1 = a_2_2;
    c_2_1 = c_2_1 + a_2_1 * b_2_1;
    b_2_1 = b_3_1;
    a_2_1 = a_2_2;
    c_2_1 = c_2_1 + a_2_1 * b_2_1;
    b_2_1 = b_3_1;
    a_2_1 = a_2_2;
    c_2_1 = c_2_1 + a_2_1 * b_2_1;
    b_2_2 = b_3_2;
    a_2_2 = a_2_3;
    c_2_2 = c_2_2 + a_2_2 * b_2_2;
    b_2_2 = b_3_2;
    a_2_2 = a_2_3;
    c_2_2 = c_2_2 + a_2_2 * b_2_2;
    b_2_2 = b_3_2;
    a_2_2 = a_2_3;
    c_2_2 = c_2_2 + a_2_2 * b_2_2;
    b_2_2 = b_3_2;
    a_2_2 = a_2_3;
    c_2_2 = c_2_2 + a_2_2 * b_2_2;
    b_2_3 = b_3_3;
    a_2_3 = a_2_0;
    c_2_3 = c_2_3 + a_2_3 * b_2_3;
    b_2_3 = b_3_3;
    a_2_3 = a_2_0;
    c_2_3 = c_2_3 + a_2_3 * b_2_3;
    b_2_3 = b_3_3;
    a_2_3 = a_2_0;
    c_2_3 = c_2_3 + a_2_3 * b_2_3;
    b_2_3 = b_3_3;
    a_2_3 = a_2_0;
    c_2_3 = c_2_3 + a_2_3 * b_2_3;
    b_3_0 = b_0_0;
    a_3_0 = a_3_1;
    c_3_0 = c_3_0 + a_3_0 * b_3_0;
    b_3_0 = b_0_0;
    a_3_0 = a_3_1;
    c_3_0 = c_3_0 + a_3_0 * b_3_0;
    b_3_0 = b_0_0;
    a_3_0 = a_3_1;
    c_3_0 = c_3_0 + a_3_0 * b_3_0;
    b_3_0 = b_0_0;
    a_3_0 = a_3_1;
    c_3_0 = c_3_0 + a_3_0 * b_3_0;
    b_3_1 = b_0_1;
    a_3_1 = a_3_2;
    c_3_1 = c_3_1 + a_3_1 * b_3_1;
    b_3_1 = b_0_1;
    a_3_1 = a_3_2;
    c_3_1 = c_3_1 + a_3_1 * b_3_1;
    b_3_1 = b_0_1;
    a_3_1 = a_3_2;
    c_3_1 = c_3_1 + a_3_1 * b_3_1;
    b_3_1 = b_0_1;
    a_3_1 = a_3_2;
    c_3_1 = c_3_1 + a_3_1 * b_3_1;
    b_3_2 = b_0_2;
    a_3_2 = a_3_3;
    c_3_2 = c_3_2 + a_3_2 * b_3_2;
    b_3_2 = b_0_2;
    a_3_2 = a_3_3;
    c_3_2 = c_3_2 + a_3_2 * b_3_2;
    b_3_2 = b_0_2;
    a_3_2 = a_3_3;
    c_3_2 = c_3_2 + a_3_2 * b_3_2;
    b_3_2 = b_0_2;
    a_3_2 = a_3_3;
    c_3_2 = c_3_2 + a_3_2 * b_3_2;
    b_3_3 = b_0_3;
    a_3_3 = a_3_0;
    c_3_3 = c_3_3 + a_3_3 * b_3_3;
    b_3_3 = b_0_3;
    a_3_3 = a_3_0;
    c_3_3 = c_3_3 + a_3_3 * b_3_3;
    b_3_3 = b_0_3;
    a_3_3 = a_3_0;
    c_3_3 = c_3_3 + a_3_3 * b_3_3;
    b_3_3 = b_0_3;
    a_3_3 = a_3_0;
    c_3_3 = c_3_3 + a_3_3 * b_3_3;
    c_0_0 = c_0_0;
    c_0_1 = c_0_1;
    c_0_2 = c_0_2;
    c_0_3 = c_0_3;
    c_1_0 = c_1_0;
    c_1_1 = c_1_1;
    c_1_2 = c_1_2;
    c_1_3 = c_1_3;
    c_2_0 = c_2_0;
    c_2_1 = c_2_1;
    c_2_2 = c_2_2;
    c_2_3 = c_2_3;
    c_3_0 = c_3_0;
    c_3_1 = c_3_1;
    c_3_2 = c_3_2;
    c_3_3 = c_3_3;
}