#include <stdio.h>
#include <stdint.h>

uint16_t mul(uint16_t a, uint16_t b) {
  uint16_t res = 0;

  if (!a || !b) {
    return 0;
  }

  int i = 0;
  while (i < 16) {
    if (a & (1 << i)) {
      res += b;
    }
    b <<= 1;
    i++;
  }
  return res;
}

void example_mul(uint16_t a, uint16_t b) {
  printf("%d*%d = %d\n", a, b, mul(a, b));
}

int main() {
  example_mul(5, 6);
  example_mul(7, 4);
  example_mul(3, 21);
  return 0;
}
