void combust(double *p, double *x, int m, int n, void *data) {
  double R, R5, R6, R7, R8, R9, R10;
  R = 10;
  R5 = 0.193;
  R6 = 4.10622 * 1e-4;
  R7 = 5.45177 * 1e-4;
  R8 = 4.4975 * 1e-7;
  R9 = 3.40735 * 1e-5;
  R10 = 9.615 * 1e-7;
  x[0] = p[0] * p[1] + p[0] - 3 * p[4];
  x[1] = 2 * p[0] * p[1] + p[0] + 3 * R10 * p[1] * p[1] + p[1] * p[2] * p[2] +
         R7 * p[1] * p[2] + R9 * p[1] * p[3] + R8 * p[1] - R * p[4];
  x[2] = 2 * p[1] * p[2] * p[2] + R7 * p[1] * p[2] + 2 * R5 * p[2] * p[2] +
         R6 * p[2] - 8 * p[4];
  x[3] = R9 * p[1] * p[3] + 2 * p[3] * p[3] - 4 * R * p[4];
  x[4] = p[0] * p[1] + p[0] + R10 * p[1] * p[1] + p[1] * p[2] * p[2] +
         R7 * p[1] * p[2] + R9 * p[1] * p[3] + R8 * p[1] + R5 * p[2] * p[2] +
         R6 * p[2] + p[3] * p[3] - 1.0;
}


x86 assembly (clang, -O0):
<combust>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
movsd  0xf42(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xf2d(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xf18(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xf03(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xeee(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xed9(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xec4(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  0xe85(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  0xe51(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe3c(%rip),%xmm1
mulsd  -0x58(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
movsd  0xd54(%rip),%xmm1
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
movsd  -0x40(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd16(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  0xcd8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x50(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0xc9c(%rip),%xmm0
mulsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc76(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x58(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb2a(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<combust>:
movsd  (%rdi),%xmm0
movsd  0x20(%rdi),%xmm1
movsd  0x8(%rdi),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm0,%xmm2
mulsd  0xee2(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,(%rsi)
movsd  (%rdi),%xmm0
movsd  0x8(%rdi),%xmm3
movapd %xmm0,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
movsd  0xec1(%rip),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm1,%xmm0
movsd  0x10(%rdi),%xmm1
movapd %xmm3,%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  0xea0(%rip),%xmm0
movapd %xmm3,%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm2,%xmm4
movsd  0xe90(%rip),%xmm1
movapd %xmm3,%xmm5
mulsd  %xmm1,%xmm5
mulsd  0x18(%rdi),%xmm5
addsd  %xmm4,%xmm5
movsd  0xe7f(%rip),%xmm2
mulsd  %xmm2,%xmm3
addsd  %xmm5,%xmm3
movsd  0x20(%rdi),%xmm4
mulsd  0xe72(%rip),%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x8(%rsi)
movsd  0x8(%rdi),%xmm3
movsd  0x10(%rdi),%xmm4
movapd %xmm3,%xmm5
addsd  %xmm3,%xmm5
mulsd  %xmm4,%xmm5
mulsd  %xmm0,%xmm3
mulsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm5
addsd  %xmm3,%xmm5
movsd  0xe43(%rip),%xmm6
mulsd  %xmm4,%xmm6
mulsd  %xmm4,%xmm6
addsd  %xmm5,%xmm6
movsd  0xe37(%rip),%xmm3
mulsd  %xmm3,%xmm4
addsd  %xmm6,%xmm4
movsd  0x20(%rdi),%xmm5
mulsd  0xe2a(%rip),%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,0x10(%rsi)
movsd  0x8(%rdi),%xmm4
mulsd  %xmm1,%xmm4
movsd  0x18(%rdi),%xmm5
movsd  0x20(%rdi),%xmm6
movapd %xmm5,%xmm7
addsd  %xmm5,%xmm7
mulsd  %xmm5,%xmm7
mulsd  %xmm5,%xmm4
addsd  %xmm7,%xmm4
mulsd  0xdfa(%rip),%xmm6
addsd  %xmm4,%xmm6
movsd  %xmm6,0x18(%rsi)
movsd  (%rdi),%xmm5
movsd  0x8(%rdi),%xmm4
movapd %xmm5,%xmm6
mulsd  %xmm4,%xmm6
addsd  %xmm5,%xmm6
movsd  0xddc(%rip),%xmm7
mulsd  %xmm4,%xmm7
mulsd  %xmm4,%xmm7
addsd  %xmm6,%xmm7
movsd  0x10(%rdi),%xmm5
movapd %xmm4,%xmm6
mulsd  %xmm5,%xmm6
mulsd  %xmm5,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm4,%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm6,%xmm0
mulsd  %xmm4,%xmm1
movsd  0x18(%rdi),%xmm6
mulsd  %xmm6,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm4
addsd  %xmm1,%xmm4
movsd  0xd96(%rip),%xmm0
mulsd  %xmm5,%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm5
addsd  %xmm0,%xmm5
mulsd  %xmm6,%xmm6
addsd  %xmm5,%xmm6
addsd  0xd7a(%rip),%xmm6
movsd  %xmm6,0x20(%rsi)
ret

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

LLVM IR (-O2):
define void @combust(double* nocapture %0, double* nocapture writeonly %1, i32 %2, i32 %3, i8* nocapture readnone %4) {
%6 = load double, double* %0
%7 = getelementptr inbounds double, double* %0, i64 1
%8 = load double, double* %7
%9 = tail call double @llvm.fmuladd.f64(double %6, double %8, double %6)
%10 = getelementptr inbounds double, double* %0, i64 4
%11 = load double, double* %10
%12 = tail call double @llvm.fmuladd.f64(double %11, double -3.000000e+00, double %9)
store double %12, double* %1
%13 = load double, double* %0
%14 = fmul double %13, 2.000000e+00
%15 = load double, double* %7
%16 = tail call double @llvm.fmuladd.f64(double %14, double %15, double %13)
%17 = fmul double %15, 2.884500e-06
%18 = tail call double @llvm.fmuladd.f64(double %17, double %15, double %16)
%19 = getelementptr inbounds double, double* %0, i64 2
%20 = load double, double* %19
%21 = fmul double %15, %20
%22 = tail call double @llvm.fmuladd.f64(double %21, double %20, double %18)
%23 = fmul double %15, 5.451770e-04
%24 = tail call double @llvm.fmuladd.f64(double %23, double %20, double %22)
%25 = fmul double %15, 0x3F01DD448B979AB4
%26 = getelementptr inbounds double, double* %0, i64 3
%27 = load double, double* %26
%28 = tail call double @llvm.fmuladd.f64(double %25, double %27, double %24)
%29 = tail call double @llvm.fmuladd.f64(double %15, double 0x3E9E2EA56B1A3B7B, double %28)
%30 = load double, double* %10
%31 = tail call double @llvm.fmuladd.f64(double %30, double -1.000000e+01, double %29)
%32 = getelementptr inbounds double, double* %1, i64 1
store double %31, double* %32
%33 = load double, double* %7
%34 = fmul double %33, 2.000000e+00
%35 = load double, double* %19
%36 = fmul double %34, %35
%37 = fmul double %33, 5.451770e-04
%38 = fmul double %37, %35
%39 = tail call double @llvm.fmuladd.f64(double %36, double %35, double %38)
%40 = fmul double %35, 3.860000e-01
%41 = tail call double @llvm.fmuladd.f64(double %40, double %35, double %39)
%42 = tail call double @llvm.fmuladd.f64(double %35, double 0x3F3AE9180F9EE20D, double %41)
%43 = load double, double* %10
%44 = tail call double @llvm.fmuladd.f64(double %43, double -8.000000e+00, double %42)
%45 = getelementptr inbounds double, double* %1, i64 2
store double %44, double* %45
%46 = load double, double* %7
%47 = fmul double %46, 0x3F01DD448B979AB4
%48 = load double, double* %26
%49 = fmul double %48, 2.000000e+00
%50 = fmul double %48, %49
%51 = tail call double @llvm.fmuladd.f64(double %47, double %48, double %50)
%52 = load double, double* %10
%53 = tail call double @llvm.fmuladd.f64(double %52, double -4.000000e+01, double %51)
%54 = getelementptr inbounds double, double* %1, i64 3
store double %53, double* %54
%55 = load double, double* %0
%56 = load double, double* %7
%57 = tail call double @llvm.fmuladd.f64(double %55, double %56, double %55)
%58 = fmul double %56, 9.615000e-07
%59 = tail call double @llvm.fmuladd.f64(double %58, double %56, double %57)
%60 = load double, double* %19
%61 = fmul double %56, %60
%62 = tail call double @llvm.fmuladd.f64(double %61, double %60, double %59)
%63 = fmul double %56, 5.451770e-04
%64 = tail call double @llvm.fmuladd.f64(double %63, double %60, double %62)
%65 = fmul double %56, 0x3F01DD448B979AB4
%66 = load double, double* %26
%67 = tail call double @llvm.fmuladd.f64(double %65, double %66, double %64)
%68 = tail call double @llvm.fmuladd.f64(double %56, double 0x3E9E2EA56B1A3B7B, double %67)
%69 = fmul double %60, 1.930000e-01
%70 = tail call double @llvm.fmuladd.f64(double %69, double %60, double %68)
%71 = tail call double @llvm.fmuladd.f64(double %60, double 0x3F3AE9180F9EE20D, double %70)
%72 = tail call double @llvm.fmuladd.f64(double %66, double %66, double %71)
%73 = fadd double %72, -1.000000e+00
%74 = getelementptr inbounds double, double* %1, i64 4
store double %73, double* %74
ret void
}