Group Multiplication Table for (Subscript[C, 4  v])

Define the names for the group elements

name = {e, (Subscript[C, 4]), (Subscript[C, 2]), 
          ((Subscript[C, 4])^3), (Subscript[σ, x]), (Subscript[σ, y]), (Subscript[σ, d1]), (Subscript[σ, d2])};

Give the obvious 4 dimensional representation as matrices which reorder the four corners of the square.

For example, denote the corners of the square {a,b,c,d} sequentially clockwise, starting at the upper left corner.  Then (Subscript[σ, x]), which is  a reflection about the x-axis, gives you a new square with the corners labelled as {d,c,b,a} = D((Subscript[σ, x])) . {a, b, c, 
                d} .   That gives us the matrix 
D((Subscript[σ, x])) = (({{0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 0}})) = {{0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 
                0}}
which is what I call dr[5], as (Subscript[σ, x])is  in the fifth position the way I ordered the group elements.

dr[1] = 
        IdentityMatrix[4];

    dr[2] = {{0, 0, 0, 1}, {1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 
            0}};

    dr[3] = dr[2] . dr[2];

    dr[4] = dr[2] . dr[3];

    dr[5] = {{0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 
            0}};

    dr[6] = {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 1, 
            0}};

    dr[7] = {{0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 
            1}};

    dr[8] = {{1, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 
            0}};

Define a function that can recognize which name goes with which matrix

namer[m_] := (k = 0; Do[k = If[m == dr[n], n, k], {n, 1, 8}]; 
          name[[k]]);

Now construct the multiplication table

MatrixForm[
      Table[namer[Evaluate[dr[i] . dr[j]]], {i, 1, 8}, {j, 1, 8}]]