void model_(int *CurSet, int *NoOfParams, int *NoOfDerived,
            int *TotalDataValues, int *MaxNoOfDataValues, int *NoOfDataCols,
            int *NoOfAdirissaCols, int *NoOfModelVectors, double Params[],
            double Derived[], double Adirissa[], double Signal[]) {
  int NoOfDoses = 4;
  int Emax_i, Constant_i, LinAmp_i, QuadAmp_i;
  double N = 1.0;
  double D[NoOfDoses];
  D[0] = 1.0;
  D[1] = 1.0;
  D[2] = 1.0;
  D[3] = 1.0;
  double TimeOfDose[NoOfDoses];
  TimeOfDose[0] = 8.0;
  TimeOfDose[1] = 16.0;
  TimeOfDose[2] = 24.0;
  TimeOfDose[3] = 32.0;
  int CurEntry, CurDose;
  double tHalf, EC50, TS, C, U, T;
  EC50 = Params[0];
  TS = Params[1];
  tHalf = Params[2];
  for (CurEntry = 0; CurEntry < *TotalDataValues; CurEntry++) {
    C = 0.0;
    for (CurDose = 0; CurDose < NoOfDoses; CurDose++) {
      T = Adirissa[CurEntry] - TS - TimeOfDose[CurDose];
      if (T < 0.0) {
        U = 0.0;
      } else {
        U = 1.0;
      }
      C = C + (D[CurDose]) * (pow(0.5, (T / tHalf))) * U;
    }
    Emax_i = CurEntry;
    Constant_i = CurEntry + 1 * (*TotalDataValues);
    LinAmp_i = CurEntry + 2 * (*TotalDataValues);
    QuadAmp_i = CurEntry + 3 * (*TotalDataValues);
    Signal[Emax_i] = pow(C, N) / (pow(EC50, N) + pow(C, N));
    Signal[Constant_i] = 1.0;
    Signal[LinAmp_i] = Adirissa[CurEntry];
    Signal[QuadAmp_i] = Adirissa[CurEntry] * Adirissa[CurEntry];
  }
  return;
}


x86 assembly (clang, -O0):
<model_>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x4,-0x34(%rbp)
movabs $0x3ff0000000000000,%rdx
mov    %rdx,-0x50(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,%edi
mov    %rsp,%rax
mov    %rax,-0x58(%rbp)
lea    0xf(,%rdi,8),%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%rax
mov    %rax,%rsi
sub    %rcx,%rsi
mov    %rsi,-0xb0(%rbp)
mov    %rsi,%rsp
mov    %rdi,-0x60(%rbp)
mov    %rdx,(%rsi)
mov    %rdx,0x8(%rsi)
mov    %rdx,0x10(%rsi)
neg    %rcx
mov    %rdx,0x18(%rax,%rcx,1)
mov    -0x34(%rbp),%eax
mov    %eax,%ecx
lea    0xf(,%rcx,8),%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rax
sub    %rdx,%rax
mov    %rax,-0xa8(%rbp)
mov    %rax,%rsp
mov    %rcx,-0x68(%rbp)
movsd  0xe49(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0xe35(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
movsd  0xe20(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
movsd  0xe0b(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
jge    143d <model_+0x32d>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movl   $0x0,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1337 <model_+0x227>
mov    -0xa8(%rbp),%rax
mov    0x30(%rbp),%rcx
movslq -0x6c(%rbp),%rdx
movsd  (%rcx,%rdx,8),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movslq -0x70(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    12a8 <model_+0x198>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
jmp    12b8 <model_+0x1a8>
movsd  0xd70(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0xb0(%rbp),%rax
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movslq -0x70(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
divsd  -0x78(%rbp),%xmm1
movsd  0xd33(%rip),%xmm0
call   1030 <pow@plt>
movsd  -0xc0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x98(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    124e <model_+0x13e>
mov    -0x6c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x6c(%rbp),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x0,%ecx
add    %ecx,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x6c(%rbp),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x40(%rbp)
mov    -0x6c(%rbp),%eax
mov    -0x20(%rbp),%rcx
imul   $0x3,(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x44(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
call   1030 <pow@plt>
movsd  -0xd0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xc8(%rbp),%xmm0
ff
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    0x38(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  0xc37(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x30(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x38(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x30(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x6c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    122d <model_+0x11d>
mov    -0x58(%rbp),%rax
mov    %rax,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<model_>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x40,%rsp
cmpl   $0x0,(%rcx)
jle    131b <model_+0x20b>
mov    %rcx,%r14
mov    0x98(%rsp),%r15
mov    0x90(%rsp),%r12
mov    0x80(%rsp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,(%rsp)
xor    %ebx,%ebx
movabs $0x3ff0000000000000,%r13
nopl   0x0(%rax)
movsd  (%r12,%rbx,8),%xmm0
subsd  0x8(%rsp),%xmm0
addsd  0xe7c(%rip),%xmm0
movapd %xmm0,%xmm2
xorpd  %xmm1,%xmm1
cmpltsd %xmm1,%xmm2
movsd  0xe6f(%rip),%xmm1
andnpd %xmm1,%xmm2
movapd %xmm2,0x10(%rsp)
movapd 0xe85(%rip),%xmm1
xorpd  %xmm1,%xmm0
divsd  (%rsp),%xmm0
call   1030 <exp2@plt>
mulsd  0x10(%rsp),%xmm0
xorpd  %xmm1,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12,%rbx,8),%xmm0
subsd  0x8(%rsp),%xmm0
addsd  0xe2f(%rip),%xmm0
movapd %xmm0,%xmm2
cmpltsd %xmm1,%xmm2
movsd  0xe16(%rip),%xmm1
andnpd %xmm1,%xmm2
movapd %xmm2,0x20(%rsp)
xorpd  0xe2c(%rip),%xmm0
divsd  (%rsp),%xmm0
call   1030 <exp2@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12,%rbx,8),%xmm0
subsd  0x8(%rsp),%xmm0
addsd  0xde4(%rip),%xmm0
movapd %xmm0,%xmm2
cmpltsd 0xde7(%rip),%xmm2
movsd  0xdbf(%rip),%xmm1
andnpd %xmm1,%xmm2
movapd %xmm2,0x20(%rsp)
xorpd  0xdd5(%rip),%xmm0
divsd  (%rsp),%xmm0
call   1030 <exp2@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r12,%rbx,8),%xmm0
subsd  0x8(%rsp),%xmm0
addsd  0xd95(%rip),%xmm0
movapd %xmm0,%xmm2
cmpltsd 0xd90(%rip),%xmm2
movsd  0xd68(%rip),%xmm1
andnpd %xmm1,%xmm2
movapd %xmm2,0x20(%rsp)
xorpd  0xd7e(%rip),%xmm0
divsd  (%rsp),%xmm0
call   1030 <exp2@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movslq (%r14),%rax
lea    (%rax,%rax,2),%rcx
movsd  0x38(%rsp),%xmm1
addsd  %xmm0,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r15,%rbx,8)
lea    (%rbx,%rax,1),%rdx
mov    %r13,(%r15,%rdx,8)
movsd  (%r12,%rbx,8),%xmm0
lea    (%rbx,%rax,2),%rdx
movsd  %xmm0,(%r15,%rdx,8)
movsd  (%r12,%rbx,8),%xmm0
mulsd  %xmm0,%xmm0
add    %rbx,%rcx
movsd  %xmm0,(%r15,%rcx,8)
add    $0x1,%rbx
cmp    %rax,%rbx
jl     1170 <model_+0x60>
add    $0x40,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @model_(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, double* %8, double* %9, double* %10, double* %11) {
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca i32*
%16 = alloca i32*
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca double
%31 = alloca i8*
%32 = alloca i64
%33 = alloca i64
%34 = alloca i32
%35 = alloca i32
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
store i32* %0, i32** %13
store i32* %1, i32** %14
store i32* %2, i32** %15
store i32* %3, i32** %16
store i32* %4, i32** %17
store i32* %5, i32** %18
store i32* %6, i32** %19
store i32* %7, i32** %20
store double* %8, double** %21
store double* %9, double** %22
store double* %10, double** %23
store double* %11, double** %24
store i32 4, i32* %25
store double 1.000000e+00, double* %30
%42 = load i32, i32* %25
%43 = zext i32 %42 to i64
%44 = call i8* @llvm.stacksave()
store i8* %44, i8** %31
%45 = alloca double, i64 %43
store i64 %43, i64* %32
%46 = getelementptr inbounds double, double* %45, i64 0
store double 1.000000e+00, double* %46
%47 = getelementptr inbounds double, double* %45, i64 1
store double 1.000000e+00, double* %47
%48 = getelementptr inbounds double, double* %45, i64 2
store double 1.000000e+00, double* %48
%49 = getelementptr inbounds double, double* %45, i64 3
store double 1.000000e+00, double* %49
%50 = load i32, i32* %25
%51 = zext i32 %50 to i64
%52 = alloca double, i64 %51
store i64 %51, i64* %33
%53 = getelementptr inbounds double, double* %52, i64 0
store double 8.000000e+00, double* %53
%54 = getelementptr inbounds double, double* %52, i64 1
store double 1.600000e+01, double* %54
%55 = getelementptr inbounds double, double* %52, i64 2
store double 2.400000e+01, double* %55
%56 = getelementptr inbounds double, double* %52, i64 3
store double 3.200000e+01, double* %56
%57 = load double*, double** %21
%58 = getelementptr inbounds double, double* %57, i64 0
%59 = load double, double* %58
store double %59, double* %37
%60 = load double*, double** %21
%61 = getelementptr inbounds double, double* %60, i64 1
%62 = load double, double* %61
store double %62, double* %38
%63 = load double*, double** %21
%64 = getelementptr inbounds double, double* %63, i64 2
%65 = load double, double* %64
store double %65, double* %36
store i32 0, i32* %34
br label %66
66: ; preds = %169, %12
%67 = load i32, i32* %34
%68 = load i32*, i32** %16
%69 = load i32, i32* %68
%70 = icmp slt i32 %67, %69
br i1 %70, label %71, label %172
71: ; preds = %66
store double 0.000000e+00, double* %39
store i32 0, i32* %35
br label %72
72: ; preds = %106, %71
%73 = load i32, i32* %35
%74 = load i32, i32* %25
%75 = icmp slt i32 %73, %74
br i1 %75, label %76, label %109
76: ; preds = %72
%77 = load double*, double** %23
%78 = load i32, i32* %34
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds double, double* %77, i64 %79
%81 = load double, double* %80
%82 = load double, double* %38
%83 = fsub double %81, %82
%84 = load i32, i32* %35
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds double, double* %52, i64 %85
%87 = load double, double* %86
%88 = fsub double %83, %87
store double %88, double* %41
%89 = load double, double* %41
%90 = fcmp olt double %89, 0.000000e+00
br i1 %90, label %91, label %92
91: ; preds = %76
store double 0.000000e+00, double* %40
br label %93
92: ; preds = %76
store double 1.000000e+00, double* %40
br label %93
93: ; preds = %92, %91
%94 = load double, double* %39
%95 = load i32, i32* %35
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds double, double* %45, i64 %96
%98 = load double, double* %97
%99 = load double, double* %41
%100 = load double, double* %36
%101 = fdiv double %99, %100
%102 = call double @pow(double 5.000000e-01, double %101)
%103 = fmul double %98, %102
%104 = load double, double* %40
%105 = call double @llvm.fmuladd.f64(double %103, double %104, double %94)
store double %105, double* %39
br label %106
106: ; preds = %93
%107 = load i32, i32* %35
%108 = add nsw i32 %107, 1
store i32 %108, i32* %35
br label %72
109: ; preds = %72
%110 = load i32, i32* %34
store i32 %110, i32* %26
%111 = load i32, i32* %34
%112 = load i32*, i32** %16
%113 = load i32, i32* %112
%114 = mul nsw i32 1, %113
%115 = add nsw i32 %111, %114
store i32 %115, i32* %27
%116 = load i32, i32* %34
%117 = load i32*, i32** %16
%118 = load i32, i32* %117
%119 = mul nsw i32 2, %118
%120 = add nsw i32 %116, %119
store i32 %120, i32* %28
%121 = load i32, i32* %34
%122 = load i32*, i32** %16
%123 = load i32, i32* %122
%124 = mul nsw i32 3, %123
%125 = add nsw i32 %121, %124
store i32 %125, i32* %29
%126 = load double, double* %39
%127 = load double, double* %30
%128 = call double @pow(double %126, double %127)
%129 = load double, double* %37
%130 = load double, double* %30
%131 = call double @pow(double %129, double %130)
%132 = load double, double* %39
%133 = load double, double* %30
%134 = call double @pow(double %132, double %133)
%135 = fadd double %131, %134
%136 = fdiv double %128, %135
%137 = load double*, double** %24
%138 = load i32, i32* %26
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds double, double* %137, i64 %139
store double %136, double* %140
%141 = load double*, double** %24
%142 = load i32, i32* %27
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
store double 1.000000e+00, double* %144
%145 = load double*, double** %23
%146 = load i32, i32* %34
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %145, i64 %147
%149 = load double, double* %148
%150 = load double*, double** %24
%151 = load i32, i32* %28
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds double, double* %150, i64 %152
store double %149, double* %153
%154 = load double*, double** %23
%155 = load i32, i32* %34
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds double, double* %154, i64 %156
%158 = load double, double* %157
%159 = load double*, double** %23
%160 = load i32, i32* %34
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds double, double* %159, i64 %161
%163 = load double, double* %162
%164 = fmul double %158, %163
%165 = load double*, double** %24
%166 = load i32, i32* %29
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
store double %164, double* %168
br label %169
169: ; preds = %109
%170 = load i32, i32* %34
%171 = add nsw i32 %170, 1
store i32 %171, i32* %34
br label %66
172: ; preds = %66
%173 = load i8*, i8** %31
ret void
}

LLVM IR (-O2):
define void @model_(i32* nocapture readnone %0, i32* nocapture readnone %1, i32* nocapture readnone %2, i32* nocapture %3, i32* nocapture readnone %4, i32* nocapture readnone %5, i32* nocapture readnone %6, i32* nocapture readnone %7, double* nocapture %8, double* nocapture readnone %9, double* nocapture %10, double* nocapture writeonly %11) {
%13 = load double, double* %8
%14 = getelementptr inbounds double, double* %8, i64 1
%15 = load double, double* %14
%16 = getelementptr inbounds double, double* %8, i64 2
%17 = load double, double* %16
%18 = load i32, i32* %3
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %81
20: ; preds = %12, %20
%21 = phi i64 [ %78, %20 ], [ 0, %12 ]
%22 = getelementptr inbounds double, double* %10, i64 %21
%23 = load double, double* %22
%24 = fsub double %23, %15
%25 = fadd double %24, -8.000000e+00
%26 = fcmp olt double %25, 0.000000e+00
%27 = select i1 %26, double 0.000000e+00, double 1.000000e+00
%28 = fneg double %25
%29 = fdiv double %28, %17
%30 = tail call double @exp2(double %29)
%31 = tail call double @llvm.fmuladd.f64(double %30, double %27, double 0.000000e+00)
%32 = load double, double* %22
%33 = fsub double %32, %15
%34 = fadd double %33, -1.600000e+01
%35 = fcmp olt double %34, 0.000000e+00
%36 = select i1 %35, double 0.000000e+00, double 1.000000e+00
%37 = fneg double %34
%38 = fdiv double %37, %17
%39 = tail call double @exp2(double %38)
%40 = tail call double @llvm.fmuladd.f64(double %39, double %36, double %31)
%41 = load double, double* %22
%42 = fsub double %41, %15
%43 = fadd double %42, -2.400000e+01
%44 = fcmp olt double %43, 0.000000e+00
%45 = select i1 %44, double 0.000000e+00, double 1.000000e+00
%46 = fneg double %43
%47 = fdiv double %46, %17
%48 = tail call double @exp2(double %47)
%49 = tail call double @llvm.fmuladd.f64(double %48, double %45, double %40)
%50 = load double, double* %22
%51 = fsub double %50, %15
%52 = fadd double %51, -3.200000e+01
%53 = fcmp olt double %52, 0.000000e+00
%54 = select i1 %53, double 0.000000e+00, double 1.000000e+00
%55 = fneg double %52
%56 = fdiv double %55, %17
%57 = tail call double @exp2(double %56)
%58 = tail call double @llvm.fmuladd.f64(double %57, double %54, double %49)
%59 = load i32, i32* %3
%60 = trunc i64 %21 to i32
%61 = add nsw i32 %59, %60
%62 = shl nsw i32 %59, 1
%63 = add nsw i32 %62, %60
%64 = mul nsw i32 %59, 3
%65 = add nsw i32 %64, %60
%66 = fadd double %13, %58
%67 = fdiv double %58, %66
%68 = getelementptr inbounds double, double* %11, i64 %21
store double %67, double* %68
%69 = sext i32 %61 to i64
%70 = getelementptr inbounds double, double* %11, i64 %69
store double 1.000000e+00, double* %70
%71 = load double, double* %22
%72 = sext i32 %63 to i64
%73 = getelementptr inbounds double, double* %11, i64 %72
store double %71, double* %73
%74 = load double, double* %22
%75 = fmul double %74, %74
%76 = sext i32 %65 to i64
%77 = getelementptr inbounds double, double* %11, i64 %76
store double %75, double* %77
%78 = add nuw nsw i64 %21, 1
%79 = sext i32 %59 to i64
%80 = icmp slt i64 %78, %79
br i1 %80, label %20, label %81
81: ; preds = %20, %12
ret void
}