#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ assert(int /*<<< orphan*/);
double cos(double);
int /*<<< orphan*/ encloseellipse(double, double, double, size_t *, size_t *);
float *malloc(size_t);
double sin(double);
float sqrt(double);
void makecanvas(double a, double b, double theta_rad, float x_c, float y_c,
                float *m_i_c, float *m_j_c, size_t *x_w, size_t *y_w,
                float **mock) {
  float *pmock;
  int i, j, i_w, j_w;
  double x_n, y_n, diff_x, diff_y;
  register double co, si, i_c, j_c, q;
  q = b / a;
  encloseellipse(a, b, theta_rad, x_w, y_w);
  diff_x = x_c - (int)x_c;
  if (diff_x > 0.5) {
    x_c++;
    diff_x = 1 - diff_x;
  }
  diff_y = y_c - (int)y_c;
  if (diff_y > 0.5) {
    y_c++;
    diff_y = 1 - diff_y;
  }
  i_c = *x_w / 2 + diff_x;
  j_c = *y_w / 2 + diff_y;
  *mock = malloc((*x_w) * (*y_w) * sizeof(float));
  assert(*mock != NULL);
  pmock = *mock;
  co = cos(theta_rad);
  si = sin(theta_rad);
  i_w = *x_w;
  j_w = *y_w;
  for (i = 0; i < i_w; i++)
    for (j = 0; j < j_w; j++) {
      x_n = (i_c - i) * co + (j_c - j) * si;
      y_n = (j_c - j) * co - (i_c - i) * si;
      pmock[i * j_w + j] = sqrt(x_n * x_n + y_n * y_n / q / q);
    }
  *m_i_c = i_c;
  *m_j_c = j_c;
}


x86 assembly (clang, -O0):
<makecanvas>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movss  %xmm3,-0x1c(%rbp)
movss  %xmm4,-0x20(%rbp)
mov    %rdi,-0x28(%rbp)
mov    %rsi,-0x30(%rbp)
mov    %rdx,-0x38(%rbp)
mov    %rcx,-0x40(%rbp)
mov    %r8,-0x48(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
call   1030 <encloseellipse@plt>
movss  -0x1c(%rbp),%xmm0
cvttss2si -0x1c(%rbp),%eax
cvtsi2ss %eax,%xmm1
subss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  0xe12(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    121c <makecanvas+0xbc>
movss  0xe10(%rip),%xmm0
addss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movsd  0xdf6(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movss  -0x20(%rbp),%xmm0
cvttss2si -0x20(%rbp),%eax
cvtsi2ss %eax,%xmm1
subss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0xdbc(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1272 <makecanvas+0x112>
movss  0xdba(%rip),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movsd  0xda0(%rip),%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x38(%rbp),%rax
mov    (%rax),%rax
shr    %rax
cvtsi2sd %rax,%xmm0
movsd  -0x78(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x40(%rbp),%rax
mov    (%rax),%rax
shr    %rax
cvtsi2sd %rax,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    (%rax),%rdi
mov    -0x40(%rbp),%rax
imul   (%rax),%rdi
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,%rcx
mov    -0x48(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x48(%rbp),%rax
cmpq   $0x0,(%rax)
setne  %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
mov    -0x48(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    (%rax),%rax
mov    %eax,-0x5c(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%rax
mov    %eax,-0x60(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jge    144b <makecanvas+0x2eb>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x60(%rbp),%eax
jge    1438 <makecanvas+0x2d8>
movsd  -0x98(%rbp),%xmm0
ff
cvtsi2sdl -0x54(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
cvtsi2sdl -0x58(%rbp),%xmm3
subsd  %xmm3,%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
cvtsi2sdl -0x58(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
cvtsi2sdl -0x54(%rbp),%xmm3
subsd  %xmm3,%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
divsd  -0xa8(%rbp),%xmm1
ff
divsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
mov    -0x50(%rbp),%rax
mov    -0x54(%rbp),%ecx
imul   -0x60(%rbp),%ecx
add    -0x58(%rbp),%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1342 <makecanvas+0x1e2>
jmp    143d <makecanvas+0x2dd>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    132f <makecanvas+0x1cf>
movsd  -0x98(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<makecanvas>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r8,%r13
mov    %rcx,%r12
mov    %rdx,%rbp
mov    %rsi,0x58(%rsp)
mov    %rdi,0x50(%rsp)
movapd %xmm4,0x30(%rsp)
movaps %xmm3,0x10(%rsp)
movsd  %xmm0,0x40(%rsp)
movsd  %xmm1,0x8(%rsp)
movsd  %xmm2,(%rsp)
mov    %rdx,%rdi
mov    %rcx,%rsi
call   1030 <encloseellipse@plt>
movaps 0x30(%rsp),%xmm3
unpcklps 0x10(%rsp),%xmm3
cvttps2dq %xmm3,%xmm0
cvtdq2ps %xmm0,%xmm0
subps  %xmm0,%xmm3
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0xe2e(%rip),%xmm1
movaps 0xe37(%rip),%xmm0
cmpltps %xmm3,%xmm0
unpcklps %xmm0,%xmm0
movmskpd %xmm0,%eax
test   $0x2,%al
je     11f4 <makecanvas+0x94>
movapd %xmm1,%xmm0
subsd  %xmm2,%xmm0
movapd %xmm0,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm3,%xmm0
test   $0x1,%al
je     1207 <makecanvas+0xa7>
subsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mov    0x0(%rbp),%rdi
mov    %rdi,%rax
shr    %rax
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
addsd  %xmm1,%xmm2
movsd  %xmm2,0x28(%rsp)
mov    (%r12),%rax
imul   %rax,%rdi
shr    %rax
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,0x0(%r13)
xor    %edi,%edi
test   %rax,%rax
setne  %dil
call   1040 <assert@plt>
mov    0x0(%r13),%rbx
movsd  (%rsp),%xmm0
call   1070 <cos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1050 <sin@plt>
mov    0x0(%rbp),%rax
test   %eax,%eax
movsd  0x8(%rsp),%xmm3
jle    1385 <makecanvas+0x225>
movapd %xmm0,%xmm1
divsd  0x40(%rsp),%xmm3
mov    %eax,%r13d
mov    (%r12),%ebp
movslq %ebp,%r12
shl    $0x2,%r12
xor    %r14d,%r14d
movsd  %xmm3,0x8(%rsp)
movsd  %xmm0,(%rsp)
jmp    12d0 <makecanvas+0x170>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%r14
add    %r12,%rbx
cmp    %r13,%r14
je     1385 <makecanvas+0x225>
test   %ebp,%ebp
movsd  0x10(%rsp),%xmm2
movsd  0x30(%rsp),%xmm4
jle    12c0 <makecanvas+0x160>
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
movsd  0x28(%rsp),%xmm5
subsd  %xmm0,%xmm5
movapd %xmm5,0x40(%rsp)
xorpd  0xd20(%rip),%xmm5
mulsd  %xmm1,%xmm5
movapd %xmm5,0x60(%rsp)
xor    %r15d,%r15d
nopl   (%rax)
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
movsd  (%rsp),%xmm2
mulsd  %xmm1,%xmm2
movapd 0x40(%rsp),%xmm0
mulsd  %xmm4,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm4,%xmm1
addsd  0x60(%rsp),%xmm1
mulsd  %xmm1,%xmm1
divsd  %xmm3,%xmm1
divsd  %xmm3,%xmm1
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  0x30(%rsp),%xmm4
movsd  0x10(%rsp),%xmm2
movsd  (%rsp),%xmm1
movsd  0x8(%rsp),%xmm3
movss  %xmm0,(%rbx,%r15,4)
add    $0x1,%r15
cmp    %r15,%rbp
jne    1310 <makecanvas+0x1b0>
jmp    12c0 <makecanvas+0x160>
movsd  0x28(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x50(%rsp),%rax
movss  %xmm0,(%rax)
movsd  0x10(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x58(%rsp),%rax
movss  %xmm0,(%rax)
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @makecanvas(double %0, double %1, double %2, float %3, float %4, float* nocapture writeonly %5, float* nocapture writeonly %6, i64* %7, i64* %8, float** nocapture %9) {
%11 = fdiv double %1, %0
%12 = tail call i32 @encloseellipse(double %0, double %1, double %2, i64* %7, i64* %8)
%13 = insertelement <2 x float> poison, float %4, i64 0
%14 = insertelement <2 x float> %13, float %3, i64 1
%15 = fptosi <2 x float> %14 to <2 x i32>
%16 = sitofp <2 x i32> %15 to <2 x float>
%17 = fsub <2 x float> %14, %16
%18 = extractelement <2 x float> %17, i64 1
%19 = fpext float %18 to double
%20 = fsub double 1.000000e+00, %19
%21 = fcmp ogt <2 x float> %17, <float 5.000000e-01, float 5.000000e-01>
%22 = extractelement <2 x i1> %21, i64 1
%23 = select i1 %22, double %20, double %19
%24 = extractelement <2 x float> %17, i64 0
%25 = fpext float %24 to double
%26 = fsub double 1.000000e+00, %25
%27 = extractelement <2 x i1> %21, i64 0
%28 = select i1 %27, double %26, double %25
%29 = load i64, i64* %7
%30 = lshr i64 %29, 1
%31 = uitofp i64 %30 to double
%32 = fadd double %23, %31
%33 = load i64, i64* %8
%34 = lshr i64 %33, 1
%35 = uitofp i64 %34 to double
%36 = fadd double %28, %35
%37 = shl i64 %29, 2
%38 = mul i64 %37, %33
%39 = tail call float* @malloc(i64 %38)
store float* %39, float** %9
%40 = icmp ne float* %39, null
%41 = zext i1 %40 to i32
%42 = tail call i32 @assert(i32 %41)
%43 = load float*, float** %9
%44 = tail call double @cos(double %2)
%45 = tail call double @sin(double %2)
%46 = load i64, i64* %7
%47 = trunc i64 %46 to i32
%48 = load i64, i64* %8
%49 = icmp sgt i32 %47, 0
br i1 %49, label %50, label %86
50: ; preds = %10
%51 = trunc i64 %48 to i32
%52 = icmp sgt i32 %51, 0
%53 = shl i64 %48, 32
%54 = ashr exact i64 %53, 32
%55 = and i64 %46, 4294967295
%56 = and i64 %48, 4294967295
br label %57
57: ; preds = %50, %83
%58 = phi i64 [ 0, %50 ], [ %84, %83 ]
br i1 %52, label %59, label %83
59: ; preds = %57
%60 = trunc i64 %58 to i32
%61 = sitofp i32 %60 to double
%62 = fsub double %32, %61
%63 = fneg double %62
%64 = fmul double %45, %63
%65 = mul nsw i64 %58, %54
br label %66
66: ; preds = %59, %66
%67 = phi i64 [ 0, %59 ], [ %81, %66 ]
%68 = trunc i64 %67 to i32
%69 = sitofp i32 %68 to double
%70 = fsub double %36, %69
%71 = fmul double %45, %70
%72 = tail call double @llvm.fmuladd.f64(double %62, double %44, double %71)
%73 = tail call double @llvm.fmuladd.f64(double %70, double %44, double %64)
%74 = fmul double %73, %73
%75 = fdiv double %74, %11
%76 = fdiv double %75, %11
%77 = tail call double @llvm.fmuladd.f64(double %72, double %72, double %76)
%78 = tail call float @sqrt(double %77)
%79 = add nsw i64 %67, %65
%80 = getelementptr inbounds float, float* %43, i64 %79
store float %78, float* %80
%81 = add nuw nsw i64 %67, 1
%82 = icmp eq i64 %81, %56
br i1 %82, label %83, label %66
83: ; preds = %66, %57
%84 = add nuw nsw i64 %58, 1
%85 = icmp eq i64 %84, %55
br i1 %85, label %86, label %57
86: ; preds = %83, %10
%87 = fptrunc double %32 to float
store float %87, float* %5
%88 = fptrunc double %36 to float
store float %88, float* %6
ret void
}