sub3
unsigned long long sub0, sub1, sub2, sub3;
sub3 = (x & 0xffffffffLL) * (unsigned long) (y & 0xffffffffLL);
low = sub3;
sub3 += (sub1 << 32);
if (low > sub3)
low = sub3;
sub3 += (sub2 << 32);
if (low > sub3)
low = sub3;
res3 = sub3(5) + 6; /* (5 + 3 + (4 + 1)) + 6 = 19 */
return w + sub3(5) + sub1(6);
res1 = sub1(1) + sub3(2); /* (1 + 1) + (2 + 3 + (4 + 1)) = 12 */
res2 = sub2(3) + sub3(4); /* (3 + 2) + (4 + 3 + (4 + 1)) = 17 */