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


[4][4]nat a;
[4][4]nat b;
[4][4]nat c;
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];
}