Clear[Multiply]
Multiply[x_, y_] := 
      Module[{a, b, c, d, n, m}, 
n = 
            Length[IntegerDigits[x]]; 
m = 
            Length[IntegerDigits[y]]; 
m = 
            Max[n, m]; 
n = 1; 
          While[n < m, n = 2*n]; 
b = 
            Mod[x, 10^(n/2)]; 
a = (x - b)/
              10^(n/2); 
d = 
            Mod[y, 10^(n/2)]; 
c = (y - d)/
              10^(n/2); 
Multiply[a, c]*10^
                n + (Multiply[a, d] + Multiply[b, c])*10^(n/2) + 
            Multiply[b, d]] /; 
        Min[Length[IntegerDigits[x]], Length[IntegerDigits[y]]] > 
          1
Multiply[x_, y_] := x*y

Multiply[1234, 5678]

Flatten[Trace[Multiply[1234, 5678], Multiply[n_, m_] -> {n, m}]] // 
      MatrixForm