void pd_mul(const double *a, const double *b, double *c) {
  double f0, f1, f2, f3, f4, f5, p, e;
  f5 = a[1] * b[4];
  f5 = f5 + a[2] * b[3];
  f5 = f5 + a[3] * b[2];
  f5 = f5 + a[4] * b[1];
  f4 = dd_two_prod(a[0], b[4], &e);
  f5 = f5 + e;
  p = dd_two_prod(a[1], b[3], &e);
  f5 = f5 + e;
  f4 = dd_two_sum(f4, p, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[2], b[2], &e);
  f5 = f5 + e;
  f4 = dd_two_sum(f4, p, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[3], b[1], &e);
  f5 = f5 + e;
  f4 = dd_two_sum(f4, p, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[4], b[0], &e);
  f5 = f5 + e;
  f4 = dd_two_sum(f4, p, &e);
  f5 = f5 + e;
  f3 = dd_two_prod(a[0], b[3], &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[1], b[2], &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f3 = dd_two_sum(f3, p, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[2], b[1], &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f3 = dd_two_sum(f3, p, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[3], b[0], &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f3 = dd_two_sum(f3, p, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f2 = dd_two_prod(a[0], b[2], &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[1], b[1], &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f2 = dd_two_sum(f2, p, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[2], b[0], &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f2 = dd_two_sum(f2, p, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f1 = dd_two_prod(a[0], b[1], &e);
  f2 = dd_two_sum(f2, e, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  p = dd_two_prod(a[1], b[0], &e);
  f2 = dd_two_sum(f2, e, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f1 = dd_two_sum(f1, p, &e);
  f2 = dd_two_sum(f2, e, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  f0 = dd_two_prod(a[0], b[0], &e);
  f1 = dd_two_sum(f1, e, &e);
  f2 = dd_two_sum(f2, e, &e);
  f3 = dd_two_sum(f3, e, &e);
  f4 = dd_two_sum(f4, e, &e);
  f5 = f5 + e;
  pd_fast_renorm(f0, f1, f2, f3, f4, f5, &c[0], &c[1], &c[2], &c[3], &c[4]);
}


x86 assembly (clang, -O0):
<pd_mul>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
lea    -0x58(%rbp),%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
movsd  -0x48(%rbp),%xmm5
mov    -0x18(%rbp),%rdi
mov    -0x18(%rbp),%rsi
add    $0x8,%rsi
mov    -0x18(%rbp),%rdx
add    $0x10,%rdx
mov    -0x18(%rbp),%rcx
add    $0x18,%rcx
mov    -0x18(%rbp),%r8
add    $0x20,%r8
mov    $0x6,%al
call   1050 <pd_fast_renorm@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pd_mul>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%r12
movsd  0x20(%rsi),%xmm1
movsd  0x8(%rdi),%xmm2
mulsd  %xmm1,%xmm2
movsd  (%rdi),%xmm0
movsd  0x10(%rdi),%xmm3
mulsd  0x18(%rsi),%xmm3
addsd  %xmm2,%xmm3
movsd  0x18(%rdi),%xmm2
mulsd  0x10(%rsi),%xmm2
addsd  %xmm3,%xmm2
movsd  0x20(%rdi),%xmm3
mulsd  0x8(%rsi),%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x10(%rsp)
lea    0x8(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%r12),%xmm0
movsd  0x18(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x10(%r12),%xmm0
movsd  0x10(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x18(%r12),%xmm0
movsd  0x8(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%r12),%xmm0
movsd  (%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
movsd  0x18(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%r12),%xmm0
movsd  0x10(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x10(%r12),%xmm0
movsd  0x8(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x18(%r12),%xmm0
movsd  (%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
movsd  0x10(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%r12),%xmm0
movsd  0x8(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x10(%r12),%xmm0
movsd  (%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x38(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x40(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
movsd  0x8(%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%r12),%xmm0
movsd  (%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x48(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x40(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x50(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x48(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
movsd  (%r15),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1030 <dd_two_prod@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x38(%rsp),%xmm0
mov    %rbx,%rdi
mov    $0x2,%al
call   1040 <dd_two_sum@plt>
cvtsi2sd %eax,%xmm4
movsd  0x10(%rsp),%xmm5
addsd  0x8(%rsp),%xmm5
lea    0x8(%r14),%rsi
lea    0x10(%r14),%rdx
lea    0x18(%r14),%rcx
lea    0x20(%r14),%r8
movsd  0x28(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
movsd  0x30(%rsp),%xmm3
mov    %r14,%rdi
mov    $0x6,%al
call   1050 <pd_fast_renorm@plt>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @pd_mul(double* %0, double* %1, double* %2) {
%4 = alloca double*
%5 = alloca double*
%6 = alloca double*
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
store double* %0, double** %4
store double* %1, double** %5
store double* %2, double** %6
%15 = load double*, double** %4
%16 = getelementptr inbounds double, double* %15, i64 1
%17 = load double, double* %16
%18 = load double*, double** %5
%19 = getelementptr inbounds double, double* %18, i64 4
%20 = load double, double* %19
%21 = fmul double %17, %20
store double %21, double* %12
%22 = load double, double* %12
%23 = load double*, double** %4
%24 = getelementptr inbounds double, double* %23, i64 2
%25 = load double, double* %24
%26 = load double*, double** %5
%27 = getelementptr inbounds double, double* %26, i64 3
%28 = load double, double* %27
%29 = call double @llvm.fmuladd.f64(double %25, double %28, double %22)
store double %29, double* %12
%30 = load double, double* %12
%31 = load double*, double** %4
%32 = getelementptr inbounds double, double* %31, i64 3
%33 = load double, double* %32
%34 = load double*, double** %5
%35 = getelementptr inbounds double, double* %34, i64 2
%36 = load double, double* %35
%37 = call double @llvm.fmuladd.f64(double %33, double %36, double %30)
store double %37, double* %12
%38 = load double, double* %12
%39 = load double*, double** %4
%40 = getelementptr inbounds double, double* %39, i64 4
%41 = load double, double* %40
%42 = load double*, double** %5
%43 = getelementptr inbounds double, double* %42, i64 1
%44 = load double, double* %43
%45 = call double @llvm.fmuladd.f64(double %41, double %44, double %38)
store double %45, double* %12
%46 = load double*, double** %4
%47 = getelementptr inbounds double, double* %46, i64 0
%48 = load double, double* %47
%49 = load double*, double** %5
%50 = getelementptr inbounds double, double* %49, i64 4
%51 = load double, double* %50
%52 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %48, double %51, double* %14)
%53 = sitofp i32 %52 to double
store double %53, double* %11
%54 = load double, double* %12
%55 = load double, double* %14
%56 = fadd double %54, %55
store double %56, double* %12
%57 = load double*, double** %4
%58 = getelementptr inbounds double, double* %57, i64 1
%59 = load double, double* %58
%60 = load double*, double** %5
%61 = getelementptr inbounds double, double* %60, i64 3
%62 = load double, double* %61
%63 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %59, double %62, double* %14)
%64 = sitofp i32 %63 to double
store double %64, double* %13
%65 = load double, double* %12
%66 = load double, double* %14
%67 = fadd double %65, %66
store double %67, double* %12
%68 = load double, double* %11
%69 = load double, double* %13
%70 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %68, double %69, double* %14)
%71 = sitofp i32 %70 to double
store double %71, double* %11
%72 = load double, double* %12
%73 = load double, double* %14
%74 = fadd double %72, %73
store double %74, double* %12
%75 = load double*, double** %4
%76 = getelementptr inbounds double, double* %75, i64 2
%77 = load double, double* %76
%78 = load double*, double** %5
%79 = getelementptr inbounds double, double* %78, i64 2
%80 = load double, double* %79
%81 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %77, double %80, double* %14)
%82 = sitofp i32 %81 to double
store double %82, double* %13
%83 = load double, double* %12
%84 = load double, double* %14
%85 = fadd double %83, %84
store double %85, double* %12
%86 = load double, double* %11
%87 = load double, double* %13
%88 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %86, double %87, double* %14)
%89 = sitofp i32 %88 to double
store double %89, double* %11
%90 = load double, double* %12
%91 = load double, double* %14
%92 = fadd double %90, %91
store double %92, double* %12
%93 = load double*, double** %4
%94 = getelementptr inbounds double, double* %93, i64 3
%95 = load double, double* %94
%96 = load double*, double** %5
%97 = getelementptr inbounds double, double* %96, i64 1
%98 = load double, double* %97
%99 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %95, double %98, double* %14)
%100 = sitofp i32 %99 to double
store double %100, double* %13
%101 = load double, double* %12
%102 = load double, double* %14
%103 = fadd double %101, %102
store double %103, double* %12
%104 = load double, double* %11
%105 = load double, double* %13
%106 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %104, double %105, double* %14)
%107 = sitofp i32 %106 to double
store double %107, double* %11
%108 = load double, double* %12
%109 = load double, double* %14
%110 = fadd double %108, %109
store double %110, double* %12
%111 = load double*, double** %4
%112 = getelementptr inbounds double, double* %111, i64 4
%113 = load double, double* %112
%114 = load double*, double** %5
%115 = getelementptr inbounds double, double* %114, i64 0
%116 = load double, double* %115
%117 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %113, double %116, double* %14)
%118 = sitofp i32 %117 to double
store double %118, double* %13
%119 = load double, double* %12
%120 = load double, double* %14
%121 = fadd double %119, %120
store double %121, double* %12
%122 = load double, double* %11
%123 = load double, double* %13
%124 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %122, double %123, double* %14)
%125 = sitofp i32 %124 to double
store double %125, double* %11
%126 = load double, double* %12
%127 = load double, double* %14
%128 = fadd double %126, %127
store double %128, double* %12
%129 = load double*, double** %4
%130 = getelementptr inbounds double, double* %129, i64 0
%131 = load double, double* %130
%132 = load double*, double** %5
%133 = getelementptr inbounds double, double* %132, i64 3
%134 = load double, double* %133
%135 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %131, double %134, double* %14)
%136 = sitofp i32 %135 to double
store double %136, double* %10
%137 = load double, double* %11
%138 = load double, double* %14
%139 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %137, double %138, double* %14)
%140 = sitofp i32 %139 to double
store double %140, double* %11
%141 = load double, double* %12
%142 = load double, double* %14
%143 = fadd double %141, %142
store double %143, double* %12
%144 = load double*, double** %4
%145 = getelementptr inbounds double, double* %144, i64 1
%146 = load double, double* %145
%147 = load double*, double** %5
%148 = getelementptr inbounds double, double* %147, i64 2
%149 = load double, double* %148
%150 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %146, double %149, double* %14)
%151 = sitofp i32 %150 to double
store double %151, double* %13
%152 = load double, double* %11
%153 = load double, double* %14
%154 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %152, double %153, double* %14)
%155 = sitofp i32 %154 to double
store double %155, double* %11
%156 = load double, double* %12
%157 = load double, double* %14
%158 = fadd double %156, %157
store double %158, double* %12
%159 = load double, double* %10
%160 = load double, double* %13
%161 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %159, double %160, double* %14)
%162 = sitofp i32 %161 to double
store double %162, double* %10
%163 = load double, double* %11
%164 = load double, double* %14
%165 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %163, double %164, double* %14)
%166 = sitofp i32 %165 to double
store double %166, double* %11
%167 = load double, double* %12
%168 = load double, double* %14
%169 = fadd double %167, %168
store double %169, double* %12
%170 = load double*, double** %4
%171 = getelementptr inbounds double, double* %170, i64 2
%172 = load double, double* %171
%173 = load double*, double** %5
%174 = getelementptr inbounds double, double* %173, i64 1
%175 = load double, double* %174
%176 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %172, double %175, double* %14)
%177 = sitofp i32 %176 to double
store double %177, double* %13
%178 = load double, double* %11
%179 = load double, double* %14
%180 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %178, double %179, double* %14)
%181 = sitofp i32 %180 to double
store double %181, double* %11
%182 = load double, double* %12
%183 = load double, double* %14
%184 = fadd double %182, %183
store double %184, double* %12
%185 = load double, double* %10
%186 = load double, double* %13
%187 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %185, double %186, double* %14)
%188 = sitofp i32 %187 to double
store double %188, double* %10
%189 = load double, double* %11
%190 = load double, double* %14
%191 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %189, double %190, double* %14)
%192 = sitofp i32 %191 to double
store double %192, double* %11
%193 = load double, double* %12
%194 = load double, double* %14
%195 = fadd double %193, %194
store double %195, double* %12
%196 = load double*, double** %4
%197 = getelementptr inbounds double, double* %196, i64 3
%198 = load double, double* %197
%199 = load double*, double** %5
%200 = getelementptr inbounds double, double* %199, i64 0
%201 = load double, double* %200
%202 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %198, double %201, double* %14)
%203 = sitofp i32 %202 to double
store double %203, double* %13
%204 = load double, double* %11
%205 = load double, double* %14
%206 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %204, double %205, double* %14)
%207 = sitofp i32 %206 to double
store double %207, double* %11
%208 = load double, double* %12
%209 = load double, double* %14
%210 = fadd double %208, %209
store double %210, double* %12
%211 = load double, double* %10
%212 = load double, double* %13
%213 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %211, double %212, double* %14)
%214 = sitofp i32 %213 to double
store double %214, double* %10
%215 = load double, double* %11
%216 = load double, double* %14
%217 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %215, double %216, double* %14)
%218 = sitofp i32 %217 to double
store double %218, double* %11
%219 = load double, double* %12
%220 = load double, double* %14
%221 = fadd double %219, %220
store double %221, double* %12
%222 = load double*, double** %4
%223 = getelementptr inbounds double, double* %222, i64 0
%224 = load double, double* %223
%225 = load double*, double** %5
%226 = getelementptr inbounds double, double* %225, i64 2
%227 = load double, double* %226
%228 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %224, double %227, double* %14)
%229 = sitofp i32 %228 to double
store double %229, double* %9
%230 = load double, double* %10
%231 = load double, double* %14
%232 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %230, double %231, double* %14)
%233 = sitofp i32 %232 to double
store double %233, double* %10
%234 = load double, double* %11
%235 = load double, double* %14
%236 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %234, double %235, double* %14)
%237 = sitofp i32 %236 to double
store double %237, double* %11
%238 = load double, double* %12
%239 = load double, double* %14
%240 = fadd double %238, %239
store double %240, double* %12
%241 = load double*, double** %4
%242 = getelementptr inbounds double, double* %241, i64 1
%243 = load double, double* %242
%244 = load double*, double** %5
%245 = getelementptr inbounds double, double* %244, i64 1
%246 = load double, double* %245
%247 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %243, double %246, double* %14)
%248 = sitofp i32 %247 to double
store double %248, double* %13
%249 = load double, double* %10
%250 = load double, double* %14
%251 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %249, double %250, double* %14)
%252 = sitofp i32 %251 to double
store double %252, double* %10
%253 = load double, double* %11
%254 = load double, double* %14
%255 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %253, double %254, double* %14)
%256 = sitofp i32 %255 to double
store double %256, double* %11
%257 = load double, double* %12
%258 = load double, double* %14
%259 = fadd double %257, %258
store double %259, double* %12
%260 = load double, double* %9
%261 = load double, double* %13
%262 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %260, double %261, double* %14)
%263 = sitofp i32 %262 to double
store double %263, double* %9
%264 = load double, double* %10
%265 = load double, double* %14
%266 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %264, double %265, double* %14)
%267 = sitofp i32 %266 to double
store double %267, double* %10
%268 = load double, double* %11
%269 = load double, double* %14
%270 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %268, double %269, double* %14)
%271 = sitofp i32 %270 to double
store double %271, double* %11
%272 = load double, double* %12
%273 = load double, double* %14
%274 = fadd double %272, %273
store double %274, double* %12
%275 = load double*, double** %4
%276 = getelementptr inbounds double, double* %275, i64 2
%277 = load double, double* %276
%278 = load double*, double** %5
%279 = getelementptr inbounds double, double* %278, i64 0
%280 = load double, double* %279
%281 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %277, double %280, double* %14)
%282 = sitofp i32 %281 to double
store double %282, double* %13
%283 = load double, double* %10
%284 = load double, double* %14
%285 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %283, double %284, double* %14)
%286 = sitofp i32 %285 to double
store double %286, double* %10
%287 = load double, double* %11
%288 = load double, double* %14
%289 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %287, double %288, double* %14)
%290 = sitofp i32 %289 to double
store double %290, double* %11
%291 = load double, double* %12
%292 = load double, double* %14
%293 = fadd double %291, %292
store double %293, double* %12
%294 = load double, double* %9
%295 = load double, double* %13
%296 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %294, double %295, double* %14)
%297 = sitofp i32 %296 to double
store double %297, double* %9
%298 = load double, double* %10
%299 = load double, double* %14
%300 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %298, double %299, double* %14)
%301 = sitofp i32 %300 to double
store double %301, double* %10
%302 = load double, double* %11
%303 = load double, double* %14
%304 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %302, double %303, double* %14)
%305 = sitofp i32 %304 to double
store double %305, double* %11
%306 = load double, double* %12
%307 = load double, double* %14
%308 = fadd double %306, %307
store double %308, double* %12
%309 = load double*, double** %4
%310 = getelementptr inbounds double, double* %309, i64 0
%311 = load double, double* %310
%312 = load double*, double** %5
%313 = getelementptr inbounds double, double* %312, i64 1
%314 = load double, double* %313
%315 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %311, double %314, double* %14)
%316 = sitofp i32 %315 to double
store double %316, double* %8
%317 = load double, double* %9
%318 = load double, double* %14
%319 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %317, double %318, double* %14)
%320 = sitofp i32 %319 to double
store double %320, double* %9
%321 = load double, double* %10
%322 = load double, double* %14
%323 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %321, double %322, double* %14)
%324 = sitofp i32 %323 to double
store double %324, double* %10
%325 = load double, double* %11
%326 = load double, double* %14
%327 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %325, double %326, double* %14)
%328 = sitofp i32 %327 to double
store double %328, double* %11
%329 = load double, double* %12
%330 = load double, double* %14
%331 = fadd double %329, %330
store double %331, double* %12
%332 = load double*, double** %4
%333 = getelementptr inbounds double, double* %332, i64 1
%334 = load double, double* %333
%335 = load double*, double** %5
%336 = getelementptr inbounds double, double* %335, i64 0
%337 = load double, double* %336
%338 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %334, double %337, double* %14)
%339 = sitofp i32 %338 to double
store double %339, double* %13
%340 = load double, double* %9
%341 = load double, double* %14
%342 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %340, double %341, double* %14)
%343 = sitofp i32 %342 to double
store double %343, double* %9
%344 = load double, double* %10
%345 = load double, double* %14
%346 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %344, double %345, double* %14)
%347 = sitofp i32 %346 to double
store double %347, double* %10
%348 = load double, double* %11
%349 = load double, double* %14
%350 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %348, double %349, double* %14)
%351 = sitofp i32 %350 to double
store double %351, double* %11
%352 = load double, double* %12
%353 = load double, double* %14
%354 = fadd double %352, %353
store double %354, double* %12
%355 = load double, double* %8
%356 = load double, double* %13
%357 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %355, double %356, double* %14)
%358 = sitofp i32 %357 to double
store double %358, double* %8
%359 = load double, double* %9
%360 = load double, double* %14
%361 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %359, double %360, double* %14)
%362 = sitofp i32 %361 to double
store double %362, double* %9
%363 = load double, double* %10
%364 = load double, double* %14
%365 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %363, double %364, double* %14)
%366 = sitofp i32 %365 to double
store double %366, double* %10
%367 = load double, double* %11
%368 = load double, double* %14
%369 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %367, double %368, double* %14)
%370 = sitofp i32 %369 to double
store double %370, double* %11
%371 = load double, double* %12
%372 = load double, double* %14
%373 = fadd double %371, %372
store double %373, double* %12
%374 = load double*, double** %4
%375 = getelementptr inbounds double, double* %374, i64 0
%376 = load double, double* %375
%377 = load double*, double** %5
%378 = getelementptr inbounds double, double* %377, i64 0
%379 = load double, double* %378
%380 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %376, double %379, double* %14)
%381 = sitofp i32 %380 to double
store double %381, double* %7
%382 = load double, double* %8
%383 = load double, double* %14
%384 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %382, double %383, double* %14)
%385 = sitofp i32 %384 to double
store double %385, double* %8
%386 = load double, double* %9
%387 = load double, double* %14
%388 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %386, double %387, double* %14)
%389 = sitofp i32 %388 to double
store double %389, double* %9
%390 = load double, double* %10
%391 = load double, double* %14
%392 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %390, double %391, double* %14)
%393 = sitofp i32 %392 to double
store double %393, double* %10
%394 = load double, double* %11
%395 = load double, double* %14
%396 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %394, double %395, double* %14)
%397 = sitofp i32 %396 to double
store double %397, double* %11
%398 = load double, double* %12
%399 = load double, double* %14
%400 = fadd double %398, %399
store double %400, double* %12
%401 = load double, double* %7
%402 = load double, double* %8
%403 = load double, double* %9
%404 = load double, double* %10
%405 = load double, double* %11
%406 = load double, double* %12
%407 = load double*, double** %6
%408 = getelementptr inbounds double, double* %407, i64 0
%409 = load double*, double** %6
%410 = getelementptr inbounds double, double* %409, i64 1
%411 = load double*, double** %6
%412 = getelementptr inbounds double, double* %411, i64 2
%413 = load double*, double** %6
%414 = getelementptr inbounds double, double* %413, i64 3
%415 = load double*, double** %6
%416 = getelementptr inbounds double, double* %415, i64 4
%417 = call i32 (double, double, double, double, double, double, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @pd_fast_renorm to i32 (double, double, double, double, double, double, double*, double*, double*, double*, double*, ...)*)(double %401, double %402, double %403, double %404, double %405, double %406, double* %408, double* %410, double* %412, double* %414, double* %416)
ret void
}

LLVM IR (-O2):
define void @pd_mul(double* nocapture %0, double* nocapture %1, double* %2) {
%4 = alloca double
%5 = bitcast double* %4 to i8*
%6 = getelementptr inbounds double, double* %0, i64 1
%7 = load double, double* %6
%8 = getelementptr inbounds double, double* %1, i64 4
%9 = load double, double* %8
%10 = fmul double %7, %9
%11 = getelementptr inbounds double, double* %0, i64 2
%12 = load double, double* %11
%13 = getelementptr inbounds double, double* %1, i64 3
%14 = load double, double* %13
%15 = tail call double @llvm.fmuladd.f64(double %12, double %14, double %10)
%16 = getelementptr inbounds double, double* %0, i64 3
%17 = load double, double* %16
%18 = getelementptr inbounds double, double* %1, i64 2
%19 = load double, double* %18
%20 = tail call double @llvm.fmuladd.f64(double %17, double %19, double %15)
%21 = getelementptr inbounds double, double* %0, i64 4
%22 = load double, double* %21
%23 = getelementptr inbounds double, double* %1, i64 1
%24 = load double, double* %23
%25 = tail call double @llvm.fmuladd.f64(double %22, double %24, double %20)
%26 = load double, double* %0
%27 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %26, double %9, double* %4)
%28 = sitofp i32 %27 to double
%29 = load double, double* %4
%30 = fadd double %25, %29
%31 = load double, double* %6
%32 = load double, double* %13
%33 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %31, double %32, double* %4)
%34 = sitofp i32 %33 to double
%35 = load double, double* %4
%36 = fadd double %30, %35
%37 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %28, double %34, double* %4)
%38 = sitofp i32 %37 to double
%39 = load double, double* %4
%40 = fadd double %36, %39
%41 = load double, double* %11
%42 = load double, double* %18
%43 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %41, double %42, double* %4)
%44 = sitofp i32 %43 to double
%45 = load double, double* %4
%46 = fadd double %40, %45
%47 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %38, double %44, double* %4)
%48 = sitofp i32 %47 to double
%49 = load double, double* %4
%50 = fadd double %46, %49
%51 = load double, double* %16
%52 = load double, double* %23
%53 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %51, double %52, double* %4)
%54 = sitofp i32 %53 to double
%55 = load double, double* %4
%56 = fadd double %50, %55
%57 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %48, double %54, double* %4)
%58 = sitofp i32 %57 to double
%59 = load double, double* %4
%60 = fadd double %56, %59
%61 = load double, double* %21
%62 = load double, double* %1
%63 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %61, double %62, double* %4)
%64 = sitofp i32 %63 to double
%65 = load double, double* %4
%66 = fadd double %60, %65
%67 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %58, double %64, double* %4)
%68 = sitofp i32 %67 to double
%69 = load double, double* %4
%70 = fadd double %66, %69
%71 = load double, double* %0
%72 = load double, double* %13
%73 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %71, double %72, double* %4)
%74 = sitofp i32 %73 to double
%75 = load double, double* %4
%76 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %68, double %75, double* %4)
%77 = sitofp i32 %76 to double
%78 = load double, double* %4
%79 = fadd double %70, %78
%80 = load double, double* %6
%81 = load double, double* %18
%82 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %80, double %81, double* %4)
%83 = sitofp i32 %82 to double
%84 = load double, double* %4
%85 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %77, double %84, double* %4)
%86 = sitofp i32 %85 to double
%87 = load double, double* %4
%88 = fadd double %79, %87
%89 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %74, double %83, double* %4)
%90 = sitofp i32 %89 to double
%91 = load double, double* %4
%92 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %86, double %91, double* %4)
%93 = sitofp i32 %92 to double
%94 = load double, double* %4
%95 = fadd double %88, %94
%96 = load double, double* %11
%97 = load double, double* %23
%98 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %96, double %97, double* %4)
%99 = sitofp i32 %98 to double
%100 = load double, double* %4
%101 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %93, double %100, double* %4)
%102 = sitofp i32 %101 to double
%103 = load double, double* %4
%104 = fadd double %95, %103
%105 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %90, double %99, double* %4)
%106 = sitofp i32 %105 to double
%107 = load double, double* %4
%108 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %102, double %107, double* %4)
%109 = sitofp i32 %108 to double
%110 = load double, double* %4
%111 = fadd double %104, %110
%112 = load double, double* %16
%113 = load double, double* %1
%114 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %112, double %113, double* %4)
%115 = sitofp i32 %114 to double
%116 = load double, double* %4
%117 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %109, double %116, double* %4)
%118 = sitofp i32 %117 to double
%119 = load double, double* %4
%120 = fadd double %111, %119
%121 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %106, double %115, double* %4)
%122 = sitofp i32 %121 to double
%123 = load double, double* %4
%124 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %118, double %123, double* %4)
%125 = sitofp i32 %124 to double
%126 = load double, double* %4
%127 = fadd double %120, %126
%128 = load double, double* %0
%129 = load double, double* %18
%130 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %128, double %129, double* %4)
%131 = sitofp i32 %130 to double
%132 = load double, double* %4
%133 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %122, double %132, double* %4)
%134 = sitofp i32 %133 to double
%135 = load double, double* %4
%136 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %125, double %135, double* %4)
%137 = sitofp i32 %136 to double
%138 = load double, double* %4
%139 = fadd double %127, %138
%140 = load double, double* %6
%141 = load double, double* %23
%142 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %140, double %141, double* %4)
%143 = sitofp i32 %142 to double
%144 = load double, double* %4
%145 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %134, double %144, double* %4)
%146 = sitofp i32 %145 to double
%147 = load double, double* %4
%148 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %137, double %147, double* %4)
%149 = sitofp i32 %148 to double
%150 = load double, double* %4
%151 = fadd double %139, %150
%152 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %131, double %143, double* %4)
%153 = sitofp i32 %152 to double
%154 = load double, double* %4
%155 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %146, double %154, double* %4)
%156 = sitofp i32 %155 to double
%157 = load double, double* %4
%158 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %149, double %157, double* %4)
%159 = sitofp i32 %158 to double
%160 = load double, double* %4
%161 = fadd double %151, %160
%162 = load double, double* %11
%163 = load double, double* %1
%164 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %162, double %163, double* %4)
%165 = sitofp i32 %164 to double
%166 = load double, double* %4
%167 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %156, double %166, double* %4)
%168 = sitofp i32 %167 to double
%169 = load double, double* %4
%170 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %159, double %169, double* %4)
%171 = sitofp i32 %170 to double
%172 = load double, double* %4
%173 = fadd double %161, %172
%174 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %153, double %165, double* %4)
%175 = sitofp i32 %174 to double
%176 = load double, double* %4
%177 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %168, double %176, double* %4)
%178 = sitofp i32 %177 to double
%179 = load double, double* %4
%180 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %171, double %179, double* %4)
%181 = sitofp i32 %180 to double
%182 = load double, double* %4
%183 = fadd double %173, %182
%184 = load double, double* %0
%185 = load double, double* %23
%186 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %184, double %185, double* %4)
%187 = sitofp i32 %186 to double
%188 = load double, double* %4
%189 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %175, double %188, double* %4)
%190 = sitofp i32 %189 to double
%191 = load double, double* %4
%192 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %178, double %191, double* %4)
%193 = sitofp i32 %192 to double
%194 = load double, double* %4
%195 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %181, double %194, double* %4)
%196 = sitofp i32 %195 to double
%197 = load double, double* %4
%198 = fadd double %183, %197
%199 = load double, double* %6
%200 = load double, double* %1
%201 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %199, double %200, double* %4)
%202 = sitofp i32 %201 to double
%203 = load double, double* %4
%204 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %190, double %203, double* %4)
%205 = sitofp i32 %204 to double
%206 = load double, double* %4
%207 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %193, double %206, double* %4)
%208 = sitofp i32 %207 to double
%209 = load double, double* %4
%210 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %196, double %209, double* %4)
%211 = sitofp i32 %210 to double
%212 = load double, double* %4
%213 = fadd double %198, %212
%214 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %187, double %202, double* %4)
%215 = sitofp i32 %214 to double
%216 = load double, double* %4
%217 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %205, double %216, double* %4)
%218 = sitofp i32 %217 to double
%219 = load double, double* %4
%220 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %208, double %219, double* %4)
%221 = sitofp i32 %220 to double
%222 = load double, double* %4
%223 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %211, double %222, double* %4)
%224 = sitofp i32 %223 to double
%225 = load double, double* %4
%226 = fadd double %213, %225
%227 = load double, double* %0
%228 = load double, double* %1
%229 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_prod to i32 (double, double, double*, ...)*)(double %227, double %228, double* %4)
%230 = sitofp i32 %229 to double
%231 = load double, double* %4
%232 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %215, double %231, double* %4)
%233 = sitofp i32 %232 to double
%234 = load double, double* %4
%235 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %218, double %234, double* %4)
%236 = sitofp i32 %235 to double
%237 = load double, double* %4
%238 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %221, double %237, double* %4)
%239 = sitofp i32 %238 to double
%240 = load double, double* %4
%241 = call i32 (double, double, double*, ...) bitcast (i32 (...)* @dd_two_sum to i32 (double, double, double*, ...)*)(double %224, double %240, double* %4)
%242 = sitofp i32 %241 to double
%243 = load double, double* %4
%244 = fadd double %226, %243
%245 = getelementptr inbounds double, double* %2, i64 1
%246 = getelementptr inbounds double, double* %2, i64 2
%247 = getelementptr inbounds double, double* %2, i64 3
%248 = getelementptr inbounds double, double* %2, i64 4
%249 = call i32 (double, double, double, double, double, double, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @pd_fast_renorm to i32 (double, double, double, double, double, double, double*, double*, double*, double*, double*, ...)*)(double %230, double %233, double %236, double %239, double %242, double %244, double* %2, double* %245, double* %246, double* %247, double* %248)
ret void
}