According to the spec, MULx operation is defined as -
MULx maps 16 bits to 8 bits. Let V and c be 8-bit input values. Then MULx is defined: If the leftmost (i.e. the most significant) bit of V equals 1, then MULx(V, c) = (V <<8 1) ⊕ c, else MULx(V, c) = V <<8 1. Example: MULx(0x69,0x1B) = 0xC2 MULx(0x96,0x1B) = 0x2C ⊕ 0x1B = 0x37.
What does it really do ?