Fixed code by openai o1 preview free:
for (size_t i = 0; i < len; ++i) {
uint64_t carry = 0;
for (size_t j = 0; j < len; ++j) {
// Multiply x[i] and y[j]
uint128_t product = multiply_uint64(x[i], y[j]);
// Add product.lo to result[i + j]
uint64_t sum1;
uint8_t c1 = _addcarry_u64(0, result[i + j], product.lo, &sum1);
// Add carry to sum1
uint64_t sum2;
uint8_t c2 = _addcarry_u64(0, sum1, carry, &sum2);
result[i + j] = sum2;
// Compute new carry
carry = product.hi + c1 + c2;
}
result[i + len] = carry;
}