mat_trans(t1, m1);
 
        for (i = 0; i < n; i++) {
-               for (j = 0; j < n; j++) {
+               int* d0 = m0->b->data + (i + m0->i) * m0->b->n + m0->j;
+               int* d  = m ->b->data + (i + m->i)  * m->b->n  + m->j;
 
-                       int* d0 = m0->b->data + (i + m0->i) * m0->b->n + m0->j;
+               for (j = 0; j < n; j++) {
                        int* d1 = t1->b->data + (j + t1->i) * t1->b->n + t1->j;
 
                        int sum = 0;
                                sum += d0[k] * d1[k];
                        }
 
-                       int ij  = (i + m->i) * m->b->n + (j + m->j);
-
-                       m->b->data[ij] = sum;
+                       d[j] = sum;
                }
        }