Write a C program for handling 32-bit multiplication on a microprocessor where ALU supports only 16-bit multiplication
Asked in the Technical 2 stage. The task tests low-level bit manipulation and microprocessor arithmetic constraints. Implement the equivalent Python function below for grading.
multiply_32bit(a, b) receives two unsigned 32-bit integers and returns their unsigned 64-bit product. Split each operand into two 16-bit halves, use only 16-bit-by-16-bit multiplications, and propagate carries explicitly.
def multiply_32bit(a, b):