// ************************************************************************** //
//                                                                            //
//    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 MatrixMult {
    nat t_1,t_2,t_3,t_4,t_5,t_6,t_7,t_8,t_9,t_10,t_11,t_12,t_13,t_14,t_15,t_16,t_17,t_18,t_19,t_20,t_21,t_22,t_23,t_24,t_25,t_26,t_27,t_28,t_29,t_30,t_31,t_32,t_33,t_34,t_35,t_36,t_37,t_38,t_39,t_40,t_41,t_42,t_43,t_44,t_45,t_46,t_47,t_48,t_49,t_50,t_51,t_52,t_53,t_54,t_55,t_56,t_57,t_58,t_59,t_60,t_61,t_62,t_63,t_64,t_65,t_66,t_67,t_68,t_69,t_70,t_71,t_72,t_73,t_74,t_75,t_76,t_77,t_78,t_79,t_80,t_81,t_82,t_83,t_84,t_85,t_86,t_87,t_88,t_89,t_90,t_91,t_92,t_93,t_94,t_95,t_96,t_97,t_98,t_99,t_100,t_101,t_102,t_103,t_104,t_105,t_106,t_107,t_108,t_109,t_110,t_111,t_112;
    t_1 = a[0][0] * b[0][0];
    t_2 = a[0][1] * b[1][0];
    t_3 = a[0][2] * b[2][0];
    t_4 = a[0][3] * b[3][0];
    t_5 = t_1 + t_2;
    t_6 = t_3 + t_4;
    t_7 = t_5 + t_6;
    t_8 = a[0][0] * b[0][1];
    t_9 = a[0][1] * b[1][1];
    t_10 = a[0][2] * b[2][1];
    t_11 = a[0][3] * b[3][1];
    t_12 = t_8 + t_9;
    t_13 = t_10 + t_11;
    t_14 = t_12 + t_13;
    t_15 = a[0][0] * b[0][2];
    t_16 = a[0][1] * b[1][2];
    t_17 = a[0][2] * b[2][2];
    t_18 = a[0][3] * b[3][2];
    t_19 = t_15 + t_16;
    t_20 = t_17 + t_18;
    t_21 = t_19 + t_20;
    t_22 = a[0][0] * b[0][3];
    t_23 = a[0][1] * b[1][3];
    t_24 = a[0][2] * b[2][3];
    t_25 = a[0][3] * b[3][3];
    t_26 = t_22 + t_23;
    t_27 = t_24 + t_25;
    t_28 = t_26 + t_27;
    t_29 = a[1][0] * b[0][0];
    t_30 = a[1][1] * b[1][0];
    t_31 = a[1][2] * b[2][0];
    t_32 = a[1][3] * b[3][0];
    t_33 = t_29 + t_30;
    t_34 = t_31 + t_32;
    t_35 = t_33 + t_34;
    t_36 = a[1][0] * b[0][1];
    t_37 = a[1][1] * b[1][1];
    t_38 = a[1][2] * b[2][1];
    t_39 = a[1][3] * b[3][1];
    t_40 = t_36 + t_37;
    t_41 = t_38 + t_39;
    t_42 = t_40 + t_41;
    t_43 = a[1][0] * b[0][2];
    t_44 = a[1][1] * b[1][2];
    t_45 = a[1][2] * b[2][2];
    t_46 = a[1][3] * b[3][2];
    t_47 = t_43 + t_44;
    t_48 = t_45 + t_46;
    t_49 = t_47 + t_48;
    t_50 = a[1][0] * b[0][3];
    t_51 = a[1][1] * b[1][3];
    t_52 = a[1][2] * b[2][3];
    t_53 = a[1][3] * b[3][3];
    t_54 = t_50 + t_51;
    t_55 = t_52 + t_53;
    t_56 = t_54 + t_55;
    t_57 = a[2][0] * b[0][0];
    t_58 = a[2][1] * b[1][0];
    t_59 = a[2][2] * b[2][0];
    t_60 = a[2][3] * b[3][0];
    t_61 = t_57 + t_58;
    t_62 = t_59 + t_60;
    t_63 = t_61 + t_62;
    t_64 = a[2][0] * b[0][1];
    t_65 = a[2][1] * b[1][1];
    t_66 = a[2][2] * b[2][1];
    t_67 = a[2][3] * b[3][1];
    t_68 = t_64 + t_65;
    t_69 = t_66 + t_67;
    t_70 = t_68 + t_69;
    t_71 = a[2][0] * b[0][2];
    t_72 = a[2][1] * b[1][2];
    t_73 = a[2][2] * b[2][2];
    t_74 = a[2][3] * b[3][2];
    t_75 = t_71 + t_72;
    t_76 = t_73 + t_74;
    t_77 = t_75 + t_76;
    t_78 = a[2][0] * b[0][3];
    t_79 = a[2][1] * b[1][3];
    t_80 = a[2][2] * b[2][3];
    t_81 = a[2][3] * b[3][3];
    t_82 = t_78 + t_79;
    t_83 = t_80 + t_81;
    t_84 = t_82 + t_83;
    t_85 = a[3][0] * b[0][0];
    t_86 = a[3][1] * b[1][0];
    t_87 = a[3][2] * b[2][0];
    t_88 = a[3][3] * b[3][0];
    t_89 = t_85 + t_86;
    t_90 = t_87 + t_88;
    t_91 = t_89 + t_90;
    t_92 = a[3][0] * b[0][1];
    t_93 = a[3][1] * b[1][1];
    t_94 = a[3][2] * b[2][1];
    t_95 = a[3][3] * b[3][1];
    t_96 = t_92 + t_93;
    t_97 = t_94 + t_95;
    t_98 = t_96 + t_97;
    t_99 = a[3][0] * b[0][2];
    t_100 = a[3][1] * b[1][2];
    t_101 = a[3][2] * b[2][2];
    t_102 = a[3][3] * b[3][2];
    t_103 = t_99 + t_100;
    t_104 = t_101 + t_102;
    t_105 = t_103 + t_104;
    t_106 = a[3][0] * b[0][3];
    t_107 = a[3][1] * b[1][3];
    t_108 = a[3][2] * b[2][3];
    t_109 = a[3][3] * b[3][3];
    t_110 = t_106 + t_107;
    t_111 = t_108 + t_109;
    t_112 = t_110 + t_111;
    c[0][0] = t_7;
    c[0][1] = t_14;
    c[0][2] = t_21;
    c[0][3] = t_28;
    c[1][0] = t_35;
    c[1][1] = t_42;
    c[1][2] = t_49;
    c[1][3] = t_56;
    c[2][0] = t_63;
    c[2][1] = t_70;
    c[2][2] = t_77;
    c[2][3] = t_84;
    c[3][0] = t_91;
    c[3][1] = t_98;
    c[3][2] = t_105;
    c[3][3] = t_112;
}