void dExp1(int *Dim, double *Xv, int *len, double *result) {
  int N = *Dim;
  int i, j, k;
  double tmp;
  double tmpij, tmpjk, tmpik;
  for (i = 0; i < *len; i++)
    result[i] = 0;
  for (i = 0; i < N - 1; i++) {
    for (j = i + 1; j < N; j++) {
      result[0] += Xv[i * N + j];
    }
  }
  result[0] = result[0] / (((double)N) * (N - 1) / 2);
  for (i = 0; i < N - 1; i++) {
    for (j = i + 1; j < N; j++) {
      Xv[i * N + j] -= result[0];
      Xv[j * N + i] -= result[0];
      tmp = Xv[i * N + j] * Xv[i * N + j];
      result[1] += tmp;
      tmp = tmp * Xv[i * N + j];
      result[3] += tmp;
      result[8] += tmp * Xv[i * N + j];
    }
  }
  result[1] = result[1] / (((double)N) * (N - 1) / 2);
  result[3] = result[3] / (((double)N) * (N - 1) / 2);
  result[8] = result[8] / (((double)N) * (N - 1) / 2);
  for (i = 0; i < N - 2; i++) {
    for (j = i + 1; j < N - 1; j++) {
      for (k = j + 1; k < N; k++) {
        result[2] += Xv[i * N + j] * Xv[i * N + k] +
                     Xv[i * N + j] * Xv[j * N + k] +
                     Xv[i * N + k] * Xv[j * N + k];
        tmpij = Xv[i * N + j] * Xv[i * N + j];
        tmpik = Xv[i * N + k] * Xv[i * N + k];
        tmpjk = Xv[j * N + k] * Xv[j * N + k];
        result[10] += tmpij * (tmpik + tmpjk) + tmpik * tmpjk;
        tmpij = tmpij * (Xv[i * N + k] + Xv[j * N + k]);
        tmpik = tmpik * (Xv[i * N + j] + Xv[j * N + k]);
        tmpjk = tmpjk * (Xv[i * N + j] + Xv[i * N + k]);
        result[4] += tmpij + tmpik + tmpjk;
        result[9] += tmpij * Xv[i * N + j] + tmpik * Xv[i * N + k] +
                     tmpjk * Xv[j * N + k];
        tmp = Xv[i * N + j] * Xv[j * N + k] * Xv[i * N + k];
        result[5] += tmp;
        result[11] += tmp * (Xv[i * N + j] + Xv[j * N + k] + Xv[i * N + k]);
      }
    }
  }
  result[2] = result[2] / 3 / (((double)N) * (N - 1) * (N - 2) / 6);
  result[10] = result[10] / 3 / (((double)N) * (N - 1) * (N - 2) / 6);
  result[4] = result[4] / 6 / (((double)N) * (N - 1) * (N - 2) / 6);
  result[9] = result[9] / 6 / (((double)N) * (N - 1) * (N - 2) / 6);
  result[5] = result[5] / (((double)N) * (N - 1) * (N - 2) / 6);
  result[11] = result[11] / 3 / (((double)N) * (N - 1) * (N - 2) / 6);
}


x86 assembly (clang, -O0):
<dExp1>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jge    1151 <dExp1+0x51>
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1124 <dExp1+0x24>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    11c1 <dExp1+0xc1>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    11ae <dExp1+0xae>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1172 <dExp1+0x72>
jmp    11b3 <dExp1+0xb3>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1158 <dExp1+0x58>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe1c(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1338 <dExp1+0x238>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1325 <dExp1+0x225>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
addsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1215 <dExp1+0x115>
jmp    132a <dExp1+0x22a>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11fb <dExp1+0xfb>
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xca4(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc6f(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc3a(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jge    17a7 <dExp1+0x6a7>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1794 <dExp1+0x694>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1781 <dExp1+0x681>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
addsd  -0x48(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
addsd  0x50(%rax),%xmm0
movsd  %xmm0,0x50(%rax)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
addsd  0x20(%rax),%xmm0
movsd  %xmm0,0x20(%rax)
movsd  -0x40(%rbp),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
addsd  0x48(%rax),%xmm0
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
addsd  0x28(%rax),%xmm0
movsd  %xmm0,0x28(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x58(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1412 <dExp1+0x312>
jmp    1786 <dExp1+0x686>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    13f8 <dExp1+0x2f8>
jmp    1799 <dExp1+0x699>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    13de <dExp1+0x2de>
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0x858(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x823(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  0x809(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x7d4(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  0x7b2(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x785(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  0x763(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x736(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x6f3(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  0x6d9(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
mov    -0x24(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x6a4(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<dExp1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rcx,%rbx
mov    %rsi,%r14
mov    (%rdi),%r15d
mov    (%rdx),%edx
test   %edx,%edx
jle    113b <dExp1+0x2b>
shl    $0x3,%rdx
mov    %rbx,%rdi
xor    %esi,%esi
call   1030 <memset@plt>
lea    -0x1(%r15),%ecx
mov    %ecx,%r12d
cmp    $0x2,%r15d
jl     1195 <dExp1+0x85>
lea    0x8(,%r15,8),%rdx
xor    %esi,%esi
mov    %r15,%rdi
mov    %r14,%rbp
jmp    116c <dExp1+0x5c>
nopw   0x0(%rax,%rax,1)
add    %rdx,%rbp
add    $0xffffffffffffffff,%rdi
cmp    %r12,%rsi
je     1195 <dExp1+0x85>
add    $0x1,%rsi
cmp    %r15,%rsi
jae    1160 <dExp1+0x50>
movsd  (%rbx),%xmm0
mov    $0x1,%eax
xchg   %ax,%ax
addsd  0x0(%rbp,%rax,8),%xmm0
movsd  %xmm0,(%rbx)
add    $0x1,%rax
cmp    %rax,%rdi
jne    1180 <dExp1+0x70>
jmp    1160 <dExp1+0x50>
movsd  (%rbx),%xmm2
cvtsi2sd %r15d,%xmm1
cvtsi2sd %ecx,%xmm8
mulsd  %xmm1,%xmm8
movsd  0xe50(%rip),%xmm1
mulsd  %xmm8,%xmm1
divsd  %xmm1,%xmm2
movsd  %xmm2,(%rbx)
cmp    $0x2,%r15d
jl     1274 <dExp1+0x164>
lea    (%r14,%r15,8),%rax
lea    0x0(,%r15,8),%rdx
lea    0x8(,%r15,8),%r8
xor    %r9d,%r9d
mov    %r15,%rbp
mov    %r14,%rsi
jmp    11ff <dExp1+0xef>
cs nopw 0x0(%rax,%rax,1)
add    %r8,%rax
add    %r8,%rsi
add    $0xffffffffffffffff,%rbp
cmp    %r12,%r9
je     1274 <dExp1+0x164>
add    $0x1,%r9
cmp    %r15,%r9
jae    11f0 <dExp1+0xe0>
mov    $0x1,%edi
mov    %rax,%rcx
movsd  (%rsi,%rdi,8),%xmm2
subsd  (%rbx),%xmm2
movsd  %xmm2,(%rsi,%rdi,8)
movsd  (%rcx),%xmm2
subsd  (%rbx),%xmm2
movsd  %xmm2,(%rcx)
movsd  (%rsi,%rdi,8),%xmm2
mulsd  %xmm2,%xmm2
movsd  0x8(%rbx),%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x8(%rbx)
mulsd  (%rsi,%rdi,8),%xmm2
movsd  0x18(%rbx),%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x18(%rbx)
mulsd  (%rsi,%rdi,8),%xmm2
addsd  0x40(%rbx),%xmm2
movsd  %xmm2,0x40(%rbx)
add    %rdx,%rcx
add    $0x1,%rdi
cmp    %rdi,%rbp
jne    1210 <dExp1+0x100>
jmp    11f0 <dExp1+0xe0>
movsd  0x8(%rbx),%xmm2
movsd  0x18(%rbx),%xmm3
divsd  %xmm1,%xmm2
movsd  %xmm2,0x8(%rbx)
divsd  %xmm1,%xmm3
movsd  %xmm3,0x18(%rbx)
movsd  0x40(%rbx),%xmm2
divsd  %xmm1,%xmm2
movsd  %xmm2,0x40(%rbx)
lea    -0x2(%r15),%eax
mov    %eax,0x8(%rsp)
cmp    $0x3,%r15d
jl     14d6 <dExp1+0x3c6>
mov    0x8(%rsp),%eax
mov    %rax,0x18(%rsp)
lea    (%r14,%r15,8),%rax
add    $0x10,%rax
mov    %rax,0x10(%rsp)
lea    0x8(,%r15,8),%rdi
lea    0x10(%r14),%r13
movl   $0x2,0xc(%rsp)
mov    $0x1,%r11d
xor    %edx,%edx
jmp    1311 <dExp1+0x201>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
addl   $0x1,0xc(%rsp)
add    $0x1,%r11
add    %rdi,0x10(%rsp)
add    %rdi,%r13
mov    0x20(%rsp),%rdx
cmp    0x18(%rsp),%rdx
je     14d6 <dExp1+0x3c6>
lea    0x1(%rdx),%rax
mov    %rax,0x20(%rsp)
cmp    %r12,%rax
jae    12f0 <dExp1+0x1e0>
movslq 0xc(%rsp),%rbp
imul   %r15,%rdx
mov    %r13,%rcx
mov    0x10(%rsp),%r10
mov    %r11,%r9
jmp    1350 <dExp1+0x240>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbp
add    %rdi,%r10
add    $0x8,%rcx
cmp    %r12,%r9
je     12f0 <dExp1+0x1e0>
mov    %r9,%rsi
add    $0x1,%r9
cmp    %r15,%r9
jae    1340 <dExp1+0x230>
add    %rdx,%rsi
movsd  0x10(%rbx),%xmm9
movsd  0x20(%rbx),%xmm10
movsd  0x50(%rbx),%xmm11
movsd  0x48(%rbx),%xmm4
movsd  0x28(%rbx),%xmm5
movsd  0x58(%rbx),%xmm6
xor    %r8d,%r8d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  (%r14,%rsi,8),%xmm7
movsd  (%rcx,%r8,8),%xmm0
movsd  (%r10,%r8,8),%xmm1
movapd %xmm7,%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm7
addsd  %xmm2,%xmm7
mulsd  %xmm1,%xmm0
addsd  %xmm7,%xmm0
addsd  %xmm0,%xmm9
movsd  %xmm9,0x10(%rbx)
movsd  (%rcx,%r8,8),%xmm0
mulsd  %xmm0,%xmm0
movsd  (%r10,%r8,8),%xmm3
movhpd (%r14,%rsi,8),%xmm3
mulpd  %xmm3,%xmm3
movapd %xmm0,%xmm2
addsd  %xmm3,%xmm2
movapd %xmm0,%xmm7
mulsd  %xmm3,%xmm7
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm1,%xmm11
movsd  %xmm11,0x50(%rbx)
movsd  (%r10,%r8,8),%xmm1
movsd  (%r14,%rsi,8),%xmm7
movapd %xmm1,%xmm2
addsd  %xmm7,%xmm2
mulsd  %xmm0,%xmm2
movsd  (%rcx,%r8,8),%xmm0
unpcklpd %xmm0,%xmm0
unpcklpd %xmm1,%xmm7
addpd  %xmm0,%xmm7
mulpd  %xmm3,%xmm7
movapd %xmm7,%xmm0
unpckhpd %xmm7,%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm1,%xmm10
movsd  %xmm10,0x20(%rbx)
mulsd  (%rcx,%r8,8),%xmm2
movsd  (%r14,%rsi,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  (%r10,%r8,8),%xmm0
mulsd  %xmm7,%xmm0
addsd  %xmm1,%xmm0
addsd  %xmm0,%xmm4
movsd  %xmm4,0x48(%rbx)
movsd  (%r14,%rsi,8),%xmm0
mulsd  (%r10,%r8,8),%xmm0
mulsd  (%rcx,%r8,8),%xmm0
addsd  %xmm0,%xmm5
movsd  %xmm5,0x28(%rbx)
movsd  (%r14,%rsi,8),%xmm1
addsd  (%r10,%r8,8),%xmm1
addsd  (%rcx,%r8,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm6
movsd  %xmm6,0x58(%rbx)
lea    (%r8,%rbp,1),%rax
add    $0x1,%rax
add    $0x1,%r8
cmp    %r15,%rax
jl     1390 <dExp1+0x280>
jmp    1340 <dExp1+0x230>
movsd  0x10(%rbx),%xmm0
movsd  0x20(%rbx),%xmm1
movsd  0xb20(%rip),%xmm2
divsd  %xmm2,%xmm0
xorps  %xmm3,%xmm3
cvtsi2sdl 0x8(%rsp),%xmm3
mulsd  %xmm3,%xmm8
movsd  0xb0e(%rip),%xmm3
divsd  %xmm3,%xmm8
divsd  %xmm8,%xmm0
movsd  %xmm0,0x10(%rbx)
movupd 0x48(%rbx),%xmm0
divpd  0xb02(%rip),%xmm0
divsd  %xmm3,%xmm1
movapd %xmm8,%xmm3
unpcklpd %xmm8,%xmm3
divpd  %xmm3,%xmm0
movupd %xmm0,0x48(%rbx)
movhpd 0x28(%rbx),%xmm1
divpd  %xmm3,%xmm1
movupd %xmm1,0x20(%rbx)
movsd  0x58(%rbx),%xmm0
divsd  %xmm2,%xmm0
divsd  %xmm8,%xmm0
movsd  %xmm0,0x58(%rbx)
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @dExp1(i32* %0, double* %1, i32* %2, double* %3) {
%5 = alloca i32*
%6 = alloca double*
%7 = alloca i32*
%8 = alloca double*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
store i32* %0, i32** %5
store double* %1, double** %6
store i32* %2, i32** %7
store double* %3, double** %8
%17 = load i32*, i32** %5
%18 = load i32, i32* %17
store i32 %18, i32* %9
store i32 0, i32* %10
br label %19
19: ; preds = %29, %4
%20 = load i32, i32* %10
%21 = load i32*, i32** %7
%22 = load i32, i32* %21
%23 = icmp slt i32 %20, %22
br i1 %23, label %24, label %32
24: ; preds = %19
%25 = load double*, double** %8
%26 = load i32, i32* %10
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds double, double* %25, i64 %27
store double 0.000000e+00, double* %28
br label %29
29: ; preds = %24
%30 = load i32, i32* %10
%31 = add nsw i32 %30, 1
store i32 %31, i32* %10
br label %19
32: ; preds = %19
store i32 0, i32* %10
br label %33
33: ; preds = %63, %32
%34 = load i32, i32* %10
%35 = load i32, i32* %9
%36 = sub nsw i32 %35, 1
%37 = icmp slt i32 %34, %36
br i1 %37, label %38, label %66
38: ; preds = %33
%39 = load i32, i32* %10
%40 = add nsw i32 %39, 1
store i32 %40, i32* %11
br label %41
41: ; preds = %59, %38
%42 = load i32, i32* %11
%43 = load i32, i32* %9
%44 = icmp slt i32 %42, %43
br i1 %44, label %45, label %62
45: ; preds = %41
%46 = load double*, double** %6
%47 = load i32, i32* %10
%48 = load i32, i32* %9
%49 = mul nsw i32 %47, %48
%50 = load i32, i32* %11
%51 = add nsw i32 %49, %50
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds double, double* %46, i64 %52
%54 = load double, double* %53
%55 = load double*, double** %8
%56 = getelementptr inbounds double, double* %55, i64 0
%57 = load double, double* %56
%58 = fadd double %57, %54
store double %58, double* %56
br label %59
59: ; preds = %45
%60 = load i32, i32* %11
%61 = add nsw i32 %60, 1
store i32 %61, i32* %11
br label %41
62: ; preds = %41
br label %63
63: ; preds = %62
%64 = load i32, i32* %10
%65 = add nsw i32 %64, 1
store i32 %65, i32* %10
br label %33
66: ; preds = %33
%67 = load double*, double** %8
%68 = getelementptr inbounds double, double* %67, i64 0
%69 = load double, double* %68
%70 = load i32, i32* %9
%71 = sitofp i32 %70 to double
%72 = load i32, i32* %9
%73 = sub nsw i32 %72, 1
%74 = sitofp i32 %73 to double
%75 = fmul double %71, %74
%76 = fdiv double %75, 2.000000e+00
%77 = fdiv double %69, %76
%78 = load double*, double** %8
%79 = getelementptr inbounds double, double* %78, i64 0
store double %77, double* %79
store i32 0, i32* %10
br label %80
80: ; preds = %177, %66
%81 = load i32, i32* %10
%82 = load i32, i32* %9
%83 = sub nsw i32 %82, 1
%84 = icmp slt i32 %81, %83
br i1 %84, label %85, label %180
85: ; preds = %80
%86 = load i32, i32* %10
%87 = add nsw i32 %86, 1
store i32 %87, i32* %11
br label %88
88: ; preds = %173, %85
%89 = load i32, i32* %11
%90 = load i32, i32* %9
%91 = icmp slt i32 %89, %90
br i1 %91, label %92, label %176
92: ; preds = %88
%93 = load double*, double** %8
%94 = getelementptr inbounds double, double* %93, i64 0
%95 = load double, double* %94
%96 = load double*, double** %6
%97 = load i32, i32* %10
%98 = load i32, i32* %9
%99 = mul nsw i32 %97, %98
%100 = load i32, i32* %11
%101 = add nsw i32 %99, %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %96, i64 %102
%104 = load double, double* %103
%105 = fsub double %104, %95
store double %105, double* %103
%106 = load double*, double** %8
%107 = getelementptr inbounds double, double* %106, i64 0
%108 = load double, double* %107
%109 = load double*, double** %6
%110 = load i32, i32* %11
%111 = load i32, i32* %9
%112 = mul nsw i32 %110, %111
%113 = load i32, i32* %10
%114 = add nsw i32 %112, %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds double, double* %109, i64 %115
%117 = load double, double* %116
%118 = fsub double %117, %108
store double %118, double* %116
%119 = load double*, double** %6
%120 = load i32, i32* %10
%121 = load i32, i32* %9
%122 = mul nsw i32 %120, %121
%123 = load i32, i32* %11
%124 = add nsw i32 %122, %123
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %119, i64 %125
%127 = load double, double* %126
%128 = load double*, double** %6
%129 = load i32, i32* %10
%130 = load i32, i32* %9
%131 = mul nsw i32 %129, %130
%132 = load i32, i32* %11
%133 = add nsw i32 %131, %132
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds double, double* %128, i64 %134
%136 = load double, double* %135
%137 = fmul double %127, %136
store double %137, double* %13
%138 = load double, double* %13
%139 = load double*, double** %8
%140 = getelementptr inbounds double, double* %139, i64 1
%141 = load double, double* %140
%142 = fadd double %141, %138
store double %142, double* %140
%143 = load double, double* %13
%144 = load double*, double** %6
%145 = load i32, i32* %10
%146 = load i32, i32* %9
%147 = mul nsw i32 %145, %146
%148 = load i32, i32* %11
%149 = add nsw i32 %147, %148
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %144, i64 %150
%152 = load double, double* %151
%153 = fmul double %143, %152
store double %153, double* %13
%154 = load double, double* %13
%155 = load double*, double** %8
%156 = getelementptr inbounds double, double* %155, i64 3
%157 = load double, double* %156
%158 = fadd double %157, %154
store double %158, double* %156
%159 = load double, double* %13
%160 = load double*, double** %6
%161 = load i32, i32* %10
%162 = load i32, i32* %9
%163 = mul nsw i32 %161, %162
%164 = load i32, i32* %11
%165 = add nsw i32 %163, %164
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds double, double* %160, i64 %166
%168 = load double, double* %167
%169 = load double*, double** %8
%170 = getelementptr inbounds double, double* %169, i64 8
%171 = load double, double* %170
%172 = call double @llvm.fmuladd.f64(double %159, double %168, double %171)
store double %172, double* %170
br label %173
173: ; preds = %92
%174 = load i32, i32* %11
%175 = add nsw i32 %174, 1
store i32 %175, i32* %11
br label %88
176: ; preds = %88
br label %177
177: ; preds = %176
%178 = load i32, i32* %10
%179 = add nsw i32 %178, 1
store i32 %179, i32* %10
br label %80
180: ; preds = %80
%181 = load double*, double** %8
%182 = getelementptr inbounds double, double* %181, i64 1
%183 = load double, double* %182
%184 = load i32, i32* %9
%185 = sitofp i32 %184 to double
%186 = load i32, i32* %9
%187 = sub nsw i32 %186, 1
%188 = sitofp i32 %187 to double
%189 = fmul double %185, %188
%190 = fdiv double %189, 2.000000e+00
%191 = fdiv double %183, %190
%192 = load double*, double** %8
%193 = getelementptr inbounds double, double* %192, i64 1
store double %191, double* %193
%194 = load double*, double** %8
%195 = getelementptr inbounds double, double* %194, i64 3
%196 = load double, double* %195
%197 = load i32, i32* %9
%198 = sitofp i32 %197 to double
%199 = load i32, i32* %9
%200 = sub nsw i32 %199, 1
%201 = sitofp i32 %200 to double
%202 = fmul double %198, %201
%203 = fdiv double %202, 2.000000e+00
%204 = fdiv double %196, %203
%205 = load double*, double** %8
%206 = getelementptr inbounds double, double* %205, i64 3
store double %204, double* %206
%207 = load double*, double** %8
%208 = getelementptr inbounds double, double* %207, i64 8
%209 = load double, double* %208
%210 = load i32, i32* %9
%211 = sitofp i32 %210 to double
%212 = load i32, i32* %9
%213 = sub nsw i32 %212, 1
%214 = sitofp i32 %213 to double
%215 = fmul double %211, %214
%216 = fdiv double %215, 2.000000e+00
%217 = fdiv double %209, %216
%218 = load double*, double** %8
%219 = getelementptr inbounds double, double* %218, i64 8
store double %217, double* %219
store i32 0, i32* %10
br label %220
220: ; preds = %556, %180
%221 = load i32, i32* %10
%222 = load i32, i32* %9
%223 = sub nsw i32 %222, 2
%224 = icmp slt i32 %221, %223
br i1 %224, label %225, label %559
225: ; preds = %220
%226 = load i32, i32* %10
%227 = add nsw i32 %226, 1
store i32 %227, i32* %11
br label %228
228: ; preds = %552, %225
%229 = load i32, i32* %11
%230 = load i32, i32* %9
%231 = sub nsw i32 %230, 1
%232 = icmp slt i32 %229, %231
br i1 %232, label %233, label %555
233: ; preds = %228
%234 = load i32, i32* %11
%235 = add nsw i32 %234, 1
store i32 %235, i32* %12
br label %236
236: ; preds = %548, %233
%237 = load i32, i32* %12
%238 = load i32, i32* %9
%239 = icmp slt i32 %237, %238
br i1 %239, label %240, label %551
240: ; preds = %236
%241 = load double*, double** %6
%242 = load i32, i32* %10
%243 = load i32, i32* %9
%244 = mul nsw i32 %242, %243
%245 = load i32, i32* %11
%246 = add nsw i32 %244, %245
%247 = sext i32 %246 to i64
%248 = getelementptr inbounds double, double* %241, i64 %247
%249 = load double, double* %248
%250 = load double*, double** %6
%251 = load i32, i32* %10
%252 = load i32, i32* %9
%253 = mul nsw i32 %251, %252
%254 = load i32, i32* %12
%255 = add nsw i32 %253, %254
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds double, double* %250, i64 %256
%258 = load double, double* %257
%259 = load double*, double** %6
%260 = load i32, i32* %10
%261 = load i32, i32* %9
%262 = mul nsw i32 %260, %261
%263 = load i32, i32* %11
%264 = add nsw i32 %262, %263
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds double, double* %259, i64 %265
%267 = load double, double* %266
%268 = load double*, double** %6
%269 = load i32, i32* %11
%270 = load i32, i32* %9
%271 = mul nsw i32 %269, %270
%272 = load i32, i32* %12
%273 = add nsw i32 %271, %272
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds double, double* %268, i64 %274
%276 = load double, double* %275
%277 = fmul double %267, %276
%278 = call double @llvm.fmuladd.f64(double %249, double %258, double %277)
%279 = load double*, double** %6
%280 = load i32, i32* %10
%281 = load i32, i32* %9
%282 = mul nsw i32 %280, %281
%283 = load i32, i32* %12
%284 = add nsw i32 %282, %283
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds double, double* %279, i64 %285
%287 = load double, double* %286
%288 = load double*, double** %6
%289 = load i32, i32* %11
%290 = load i32, i32* %9
%291 = mul nsw i32 %289, %290
%292 = load i32, i32* %12
%293 = add nsw i32 %291, %292
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %288, i64 %294
%296 = load double, double* %295
%297 = call double @llvm.fmuladd.f64(double %287, double %296, double %278)
%298 = load double*, double** %8
%299 = getelementptr inbounds double, double* %298, i64 2
%300 = load double, double* %299
%301 = fadd double %300, %297
store double %301, double* %299
%302 = load double*, double** %6
%303 = load i32, i32* %10
%304 = load i32, i32* %9
%305 = mul nsw i32 %303, %304
%306 = load i32, i32* %11
%307 = add nsw i32 %305, %306
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds double, double* %302, i64 %308
%310 = load double, double* %309
%311 = load double*, double** %6
%312 = load i32, i32* %10
%313 = load i32, i32* %9
%314 = mul nsw i32 %312, %313
%315 = load i32, i32* %11
%316 = add nsw i32 %314, %315
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds double, double* %311, i64 %317
%319 = load double, double* %318
%320 = fmul double %310, %319
store double %320, double* %14
%321 = load double*, double** %6
%322 = load i32, i32* %10
%323 = load i32, i32* %9
%324 = mul nsw i32 %322, %323
%325 = load i32, i32* %12
%326 = add nsw i32 %324, %325
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds double, double* %321, i64 %327
%329 = load double, double* %328
%330 = load double*, double** %6
%331 = load i32, i32* %10
%332 = load i32, i32* %9
%333 = mul nsw i32 %331, %332
%334 = load i32, i32* %12
%335 = add nsw i32 %333, %334
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds double, double* %330, i64 %336
%338 = load double, double* %337
%339 = fmul double %329, %338
store double %339, double* %16
%340 = load double*, double** %6
%341 = load i32, i32* %11
%342 = load i32, i32* %9
%343 = mul nsw i32 %341, %342
%344 = load i32, i32* %12
%345 = add nsw i32 %343, %344
%346 = sext i32 %345 to i64
%347 = getelementptr inbounds double, double* %340, i64 %346
%348 = load double, double* %347
%349 = load double*, double** %6
%350 = load i32, i32* %11
%351 = load i32, i32* %9
%352 = mul nsw i32 %350, %351
%353 = load i32, i32* %12
%354 = add nsw i32 %352, %353
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds double, double* %349, i64 %355
%357 = load double, double* %356
%358 = fmul double %348, %357
store double %358, double* %15
%359 = load double, double* %14
%360 = load double, double* %16
%361 = load double, double* %15
%362 = fadd double %360, %361
%363 = load double, double* %16
%364 = load double, double* %15
%365 = fmul double %363, %364
%366 = call double @llvm.fmuladd.f64(double %359, double %362, double %365)
%367 = load double*, double** %8
%368 = getelementptr inbounds double, double* %367, i64 10
%369 = load double, double* %368
%370 = fadd double %369, %366
store double %370, double* %368
%371 = load double, double* %14
%372 = load double*, double** %6
%373 = load i32, i32* %10
%374 = load i32, i32* %9
%375 = mul nsw i32 %373, %374
%376 = load i32, i32* %12
%377 = add nsw i32 %375, %376
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds double, double* %372, i64 %378
%380 = load double, double* %379
%381 = load double*, double** %6
%382 = load i32, i32* %11
%383 = load i32, i32* %9
%384 = mul nsw i32 %382, %383
%385 = load i32, i32* %12
%386 = add nsw i32 %384, %385
%387 = sext i32 %386 to i64
%388 = getelementptr inbounds double, double* %381, i64 %387
%389 = load double, double* %388
%390 = fadd double %380, %389
%391 = fmul double %371, %390
store double %391, double* %14
%392 = load double, double* %16
%393 = load double*, double** %6
%394 = load i32, i32* %10
%395 = load i32, i32* %9
%396 = mul nsw i32 %394, %395
%397 = load i32, i32* %11
%398 = add nsw i32 %396, %397
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds double, double* %393, i64 %399
%401 = load double, double* %400
%402 = load double*, double** %6
%403 = load i32, i32* %11
%404 = load i32, i32* %9
%405 = mul nsw i32 %403, %404
%406 = load i32, i32* %12
%407 = add nsw i32 %405, %406
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds double, double* %402, i64 %408
%410 = load double, double* %409
%411 = fadd double %401, %410
%412 = fmul double %392, %411
store double %412, double* %16
%413 = load double, double* %15
%414 = load double*, double** %6
%415 = load i32, i32* %10
%416 = load i32, i32* %9
%417 = mul nsw i32 %415, %416
%418 = load i32, i32* %11
%419 = add nsw i32 %417, %418
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds double, double* %414, i64 %420
%422 = load double, double* %421
%423 = load double*, double** %6
%424 = load i32, i32* %10
%425 = load i32, i32* %9
%426 = mul nsw i32 %424, %425
%427 = load i32, i32* %12
%428 = add nsw i32 %426, %427
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds double, double* %423, i64 %429
%431 = load double, double* %430
%432 = fadd double %422, %431
%433 = fmul double %413, %432
store double %433, double* %15
%434 = load double, double* %14
%435 = load double, double* %16
%436 = fadd double %434, %435
%437 = load double, double* %15
%438 = fadd double %436, %437
%439 = load double*, double** %8
%440 = getelementptr inbounds double, double* %439, i64 4
%441 = load double, double* %440
%442 = fadd double %441, %438
store double %442, double* %440
%443 = load double, double* %14
%444 = load double*, double** %6
%445 = load i32, i32* %10
%446 = load i32, i32* %9
%447 = mul nsw i32 %445, %446
%448 = load i32, i32* %11
%449 = add nsw i32 %447, %448
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds double, double* %444, i64 %450
%452 = load double, double* %451
%453 = load double, double* %16
%454 = load double*, double** %6
%455 = load i32, i32* %10
%456 = load i32, i32* %9
%457 = mul nsw i32 %455, %456
%458 = load i32, i32* %12
%459 = add nsw i32 %457, %458
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds double, double* %454, i64 %460
%462 = load double, double* %461
%463 = fmul double %453, %462
%464 = call double @llvm.fmuladd.f64(double %443, double %452, double %463)
%465 = load double, double* %15
%466 = load double*, double** %6
%467 = load i32, i32* %11
%468 = load i32, i32* %9
%469 = mul nsw i32 %467, %468
%470 = load i32, i32* %12
%471 = add nsw i32 %469, %470
%472 = sext i32 %471 to i64
%473 = getelementptr inbounds double, double* %466, i64 %472
%474 = load double, double* %473
%475 = call double @llvm.fmuladd.f64(double %465, double %474, double %464)
%476 = load double*, double** %8
%477 = getelementptr inbounds double, double* %476, i64 9
%478 = load double, double* %477
%479 = fadd double %478, %475
store double %479, double* %477
%480 = load double*, double** %6
%481 = load i32, i32* %10
%482 = load i32, i32* %9
%483 = mul nsw i32 %481, %482
%484 = load i32, i32* %11
%485 = add nsw i32 %483, %484
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds double, double* %480, i64 %486
%488 = load double, double* %487
%489 = load double*, double** %6
%490 = load i32, i32* %11
%491 = load i32, i32* %9
%492 = mul nsw i32 %490, %491
%493 = load i32, i32* %12
%494 = add nsw i32 %492, %493
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds double, double* %489, i64 %495
%497 = load double, double* %496
%498 = fmul double %488, %497
%499 = load double*, double** %6
%500 = load i32, i32* %10
%501 = load i32, i32* %9
%502 = mul nsw i32 %500, %501
%503 = load i32, i32* %12
%504 = add nsw i32 %502, %503
%505 = sext i32 %504 to i64
%506 = getelementptr inbounds double, double* %499, i64 %505
%507 = load double, double* %506
%508 = fmul double %498, %507
store double %508, double* %13
%509 = load double, double* %13
%510 = load double*, double** %8
%511 = getelementptr inbounds double, double* %510, i64 5
%512 = load double, double* %511
%513 = fadd double %512, %509
store double %513, double* %511
%514 = load double, double* %13
%515 = load double*, double** %6
%516 = load i32, i32* %10
%517 = load i32, i32* %9
%518 = mul nsw i32 %516, %517
%519 = load i32, i32* %11
%520 = add nsw i32 %518, %519
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds double, double* %515, i64 %521
%523 = load double, double* %522
%524 = load double*, double** %6
%525 = load i32, i32* %11
%526 = load i32, i32* %9
%527 = mul nsw i32 %525, %526
%528 = load i32, i32* %12
%529 = add nsw i32 %527, %528
%530 = sext i32 %529 to i64
%531 = getelementptr inbounds double, double* %524, i64 %530
%532 = load double, double* %531
%533 = fadd double %523, %532
%534 = load double*, double** %6
%535 = load i32, i32* %10
%536 = load i32, i32* %9
%537 = mul nsw i32 %535, %536
%538 = load i32, i32* %12
%539 = add nsw i32 %537, %538
%540 = sext i32 %539 to i64
%541 = getelementptr inbounds double, double* %534, i64 %540
%542 = load double, double* %541
%543 = fadd double %533, %542
%544 = load double*, double** %8
%545 = getelementptr inbounds double, double* %544, i64 11
%546 = load double, double* %545
%547 = call double @llvm.fmuladd.f64(double %514, double %543, double %546)
store double %547, double* %545
br label %548
548: ; preds = %240
%549 = load i32, i32* %12
%550 = add nsw i32 %549, 1
store i32 %550, i32* %12
br label %236
551: ; preds = %236
br label %552
552: ; preds = %551
%553 = load i32, i32* %11
%554 = add nsw i32 %553, 1
store i32 %554, i32* %11
br label %228
555: ; preds = %228
br label %556
556: ; preds = %555
%557 = load i32, i32* %10
%558 = add nsw i32 %557, 1
store i32 %558, i32* %10
br label %220
559: ; preds = %220
%560 = load double*, double** %8
%561 = getelementptr inbounds double, double* %560, i64 2
%562 = load double, double* %561
%563 = fdiv double %562, 3.000000e+00
%564 = load i32, i32* %9
%565 = sitofp i32 %564 to double
%566 = load i32, i32* %9
%567 = sub nsw i32 %566, 1
%568 = sitofp i32 %567 to double
%569 = fmul double %565, %568
%570 = load i32, i32* %9
%571 = sub nsw i32 %570, 2
%572 = sitofp i32 %571 to double
%573 = fmul double %569, %572
%574 = fdiv double %573, 6.000000e+00
%575 = fdiv double %563, %574
%576 = load double*, double** %8
%577 = getelementptr inbounds double, double* %576, i64 2
store double %575, double* %577
%578 = load double*, double** %8
%579 = getelementptr inbounds double, double* %578, i64 10
%580 = load double, double* %579
%581 = fdiv double %580, 3.000000e+00
%582 = load i32, i32* %9
%583 = sitofp i32 %582 to double
%584 = load i32, i32* %9
%585 = sub nsw i32 %584, 1
%586 = sitofp i32 %585 to double
%587 = fmul double %583, %586
%588 = load i32, i32* %9
%589 = sub nsw i32 %588, 2
%590 = sitofp i32 %589 to double
%591 = fmul double %587, %590
%592 = fdiv double %591, 6.000000e+00
%593 = fdiv double %581, %592
%594 = load double*, double** %8
%595 = getelementptr inbounds double, double* %594, i64 10
store double %593, double* %595
%596 = load double*, double** %8
%597 = getelementptr inbounds double, double* %596, i64 4
%598 = load double, double* %597
%599 = fdiv double %598, 6.000000e+00
%600 = load i32, i32* %9
%601 = sitofp i32 %600 to double
%602 = load i32, i32* %9
%603 = sub nsw i32 %602, 1
%604 = sitofp i32 %603 to double
%605 = fmul double %601, %604
%606 = load i32, i32* %9
%607 = sub nsw i32 %606, 2
%608 = sitofp i32 %607 to double
%609 = fmul double %605, %608
%610 = fdiv double %609, 6.000000e+00
%611 = fdiv double %599, %610
%612 = load double*, double** %8
%613 = getelementptr inbounds double, double* %612, i64 4
store double %611, double* %613
%614 = load double*, double** %8
%615 = getelementptr inbounds double, double* %614, i64 9
%616 = load double, double* %615
%617 = fdiv double %616, 6.000000e+00
%618 = load i32, i32* %9
%619 = sitofp i32 %618 to double
%620 = load i32, i32* %9
%621 = sub nsw i32 %620, 1
%622 = sitofp i32 %621 to double
%623 = fmul double %619, %622
%624 = load i32, i32* %9
%625 = sub nsw i32 %624, 2
%626 = sitofp i32 %625 to double
%627 = fmul double %623, %626
%628 = fdiv double %627, 6.000000e+00
%629 = fdiv double %617, %628
%630 = load double*, double** %8
%631 = getelementptr inbounds double, double* %630, i64 9
store double %629, double* %631
%632 = load double*, double** %8
%633 = getelementptr inbounds double, double* %632, i64 5
%634 = load double, double* %633
%635 = load i32, i32* %9
%636 = sitofp i32 %635 to double
%637 = load i32, i32* %9
%638 = sub nsw i32 %637, 1
%639 = sitofp i32 %638 to double
%640 = fmul double %636, %639
%641 = load i32, i32* %9
%642 = sub nsw i32 %641, 2
%643 = sitofp i32 %642 to double
%644 = fmul double %640, %643
%645 = fdiv double %644, 6.000000e+00
%646 = fdiv double %634, %645
%647 = load double*, double** %8
%648 = getelementptr inbounds double, double* %647, i64 5
store double %646, double* %648
%649 = load double*, double** %8
%650 = getelementptr inbounds double, double* %649, i64 11
%651 = load double, double* %650
%652 = fdiv double %651, 3.000000e+00
%653 = load i32, i32* %9
%654 = sitofp i32 %653 to double
%655 = load i32, i32* %9
%656 = sub nsw i32 %655, 1
%657 = sitofp i32 %656 to double
%658 = fmul double %654, %657
%659 = load i32, i32* %9
%660 = sub nsw i32 %659, 2
%661 = sitofp i32 %660 to double
%662 = fmul double %658, %661
%663 = fdiv double %662, 6.000000e+00
%664 = fdiv double %652, %663
%665 = load double*, double** %8
%666 = getelementptr inbounds double, double* %665, i64 11
store double %664, double* %666
ret void
}

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