It is able to multiply two 4 digit hexadecimal numbers together. The main components are the adder and the shift registers. The adder has built-in memory and accepts a 2 tick pulse as an input. It will add the strength of the pulse to what is stored in memory. If a carry was generated, it will pulse into a counter. The shift registers shift A up and B down. Shifting allows me to effectively multiply by 16 and reuse the same circuitry.
Input A (yellow in the picture provided) is added onto itself B1 times for the first digit in B, is shifted up, then is added onto itself B2 times for the second digit in B. The memory in the adders are never shifted, but the carry is added during the A and B shifts. This process repeats for all four digits in B.
When the registers for B are empty, the registers for A are cleared and allows carry to be passed through three digits (like in the case of 1001xFFFF). There is a bug, however, when B = 0. The values for A will be stored in the shift registers and won't be reset.
There is also some timing logic to account for zeroes in B (except for when they are all zero). I hope I didn't leave anything out xD
Put in two numbers, they can be anything as long as B is not 0000. The values range from 1-15 where 1 is the furthest away from the machine (will label). Once the numbers are entered, hit the button marked "multiply" (it's on the diamond block). It's that simple! Be sure to wait for the calculation to finish before hitting "multiply" again.