inputs, such as nonces or randomly-generated numbers.

The MAA calculations rely upon conventional 32-bit logical and arithmetic operations, among which: (conjunction), (disjunction), (exclusive disjunction), (circular rotation by one bit to the left), (addition), (carry bit generated by 32-bit addition), (multiplication, sometimes decomposed into and , which denote the most- and least-significant blocks in the 64-bit product of a 32-bit multiplication). On this basis, more involved operations are defined, among which (result of a 32-bit multiplication modulo $2^{32}-1$), (result of a 32-bit multiplication modulo $2^{32}-2$), (faster version of ), and (two unary functions[^1] respectively defined as $x \rightarrow {\mbox{\tt AND}} ({\mbox{\tt OR}} (x, {\mbox{\tt A}}), {\mbox{\tt C}})$ and $x \rightarrow {\mbox{\tt AND}} ({\mbox{\tt OR}} (x, {\mbox{\tt B}}), {\mbox{\tt D}})$, where , , , and are four hexadecimal block constants = 02040801, = 00804021, = BFEF7FDF, and = 7DFEFBFF). The MAA operates in three successive phases:

-   The [*prelude*]{} takes the two blocks $J$ and $K$ of the key and converts them into six blocks $X_0$, $Y_0$, $V_0$, $W$, $S$, and $T$. This phase is executed once. After the prelude, $J$ and $K$ are no longer used.

-   The [*main loop*]{} successively iterates on each block of the message. This phase maintains 