void fill_coeffs(int rowmax, int colmax, float th_cond, float dx, float dy,
                 float width, float TN, float *aP, float *aW, float *aE,
                 float *aS, float *aN, float *b) {
  int col, row;
  for (col = 0; col < colmax; ++col) {
    for (row = 0; row < rowmax; ++row) {
      int ind = col * rowmax + row;
      b[ind] = 0.0f;
      float SP = 0.0f;
      if (col == 0) {
        aW[ind] = 0.0f;
        SP = -2.0f * th_cond * width * dy / dx;
      } else {
        aW[ind] = th_cond * width * dy / dx;
      }
      if (col == colmax - 1) {
        aE[ind] = 0.0f;
        SP = -2.0f * th_cond * width * dy / dx;
      } else {
        aE[ind] = th_cond * width * dy / dx;
      }
      if (row == 0) {
        aS[ind] = 0.0f;
        SP = -2.0f * th_cond * width * dx / dy;
      } else {
        aS[ind] = th_cond * width * dx / dy;
      }
      if (row == rowmax - 1) {
        aN[ind] = 0.0f;
        b[ind] = 2.0f * th_cond * width * dx * TN / dy;
        SP = -2.0f * th_cond * width * dx / dy;
      } else {
        aN[ind] = th_cond * width * dx / dy;
      }
      aP[ind] = aW[ind] + aE[ind] + aS[ind] + aN[ind] - SP;
    }
  }
}


x86 assembly (clang, -O0):
<fill_coeffs>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
movss  %xmm1,-0x10(%rbp)
movss  %xmm2,-0x14(%rbp)
movss  %xmm3,-0x18(%rbp)
movss  %xmm4,-0x1c(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13ad <fill_coeffs+0x2ad>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    139a <fill_coeffs+0x29a>
mov    -0x44(%rbp),%eax
imul   -0x4(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
cmpl   $0x0,-0x44(%rbp)
jne    11c6 <fill_coeffs+0xc6>
mov    -0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  0xe58(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
divss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    11e7 <fill_coeffs+0xe7>
movss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
divss  -0x10(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x44(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    122e <fill_coeffs+0x12e>
mov    -0x38(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  0xdf0(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
divss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    124f <fill_coeffs+0x14f>
movss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
divss  -0x10(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x0,-0x48(%rbp)
jne    128f <fill_coeffs+0x18f>
mov    -0x40(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  0xd8f(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
divss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    12b0 <fill_coeffs+0x1b0>
movss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
divss  -0x14(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x48(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1325 <fill_coeffs+0x225>
mov    0x10(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  0xd2b(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
mulss  -0x1c(%rbp),%xmm0
divss  -0x14(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  0xcf9(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
divss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1346 <fill_coeffs+0x246>
movss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
divss  -0x14(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x4c(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x4c(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
movslq -0x4c(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
subss  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1155 <fill_coeffs+0x55>
jmp    139f <fill_coeffs+0x29f>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1142 <fill_coeffs+0x42>
pop    %rbp
ret

x86 assembly (clang, -O2):
<fill_coeffs>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %r9,-0x38(%rsp)
mov    %rdx,-0x30(%rsp)
test   %esi,%esi
jle    1344 <fill_coeffs+0x244>
mov    0x40(%rsp),%r15
mov    0x38(%rsp),%r11
movaps %xmm0,%xmm5
mulss  %xmm3,%xmm5
movaps %xmm5,%xmm9
mulss  %xmm2,%xmm9
divss  %xmm1,%xmm9
movss  0xebc(%rip),%xmm10
mulss  %xmm0,%xmm10
mulss  %xmm3,%xmm10
movaps %xmm10,%xmm8
mulss  %xmm2,%xmm8
divss  %xmm1,%xmm8
lea    -0x1(%rsi),%eax
mov    %rax,-0x28(%rsp)
mulss  %xmm1,%xmm5
divss  %xmm2,%xmm5
mulss  %xmm1,%xmm10
divss  %xmm2,%xmm10
lea    -0x1(%rdi),%ebx
addss  %xmm0,%xmm0
mulss  %xmm3,%xmm0
mulss  %xmm1,%xmm0
mulss  %xmm4,%xmm0
divss  %xmm2,%xmm0
movslq %edi,%rdx
mov    %esi,%eax
mov    %rax,-0x8(%rsp)
mov    %edx,%eax
mov    %rdx,-0x20(%rsp)
lea    0x0(,%rdx,4),%rdx
mov    %rdx,-0x10(%rsp)
xor    %r12d,%r12d
mov    -0x30(%rsp),%rbp
mov    %r15,%r10
mov    %rcx,%r13
mov    %r8,%r14
mov    -0x38(%rsp),%r9
mov    %rdi,-0x18(%rsp)
jmp    11f6 <fill_coeffs+0xf6>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r12
mov    -0x10(%rsp),%rdx
add    %rdx,%r9
add    %rdx,%r14
add    %rdx,%r13
add    %rdx,%r10
add    %rdx,%r11
add    %rdx,%rbp
cmp    -0x8(%rsp),%r12
je     1344 <fill_coeffs+0x244>
test   %edi,%edi
jle    11d0 <fill_coeffs+0xd0>
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
test   %r12,%r12
je     1209 <fill_coeffs+0x109>
movaps %xmm9,%xmm2
mov    %r12,%rdx
imul   -0x20(%rsp),%rdx
cmp    -0x28(%rsp),%r12
je     121d <fill_coeffs+0x11d>
movaps %xmm9,%xmm1
movl   $0x0,(%r15,%rdx,4)
movss  %xmm2,(%rcx,%rdx,4)
movss  %xmm1,(%r8,%rdx,4)
mov    -0x38(%rsp),%rsi
movl   $0x0,(%rsi,%rdx,4)
mov    0x38(%rsp),%rsi
test   %rbx,%rbx
je     1250 <fill_coeffs+0x150>
movss  %xmm5,(%rsi,%rdx,4)
movaps %xmm5,%xmm1
jmp    1262 <fill_coeffs+0x162>
movl   $0x0,(%rsi,%rdx,4)
movss  %xmm0,(%r15,%rdx,4)
movss  (%rsi,%rdx,4),%xmm1
movss  (%rcx,%rdx,4),%xmm2
addss  (%r8,%rdx,4),%xmm2
mov    -0x38(%rsp),%r15
addss  (%r15,%rdx,4),%xmm2
addss  %xmm1,%xmm2
subss  %xmm10,%xmm2
mov    -0x30(%rsp),%rsi
movss  %xmm2,(%rsi,%rdx,4)
mov    -0x18(%rsp),%rdi
cmp    $0x1,%edi
mov    0x40(%rsp),%r15
je     11d0 <fill_coeffs+0xd0>
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
movaps %xmm8,%xmm4
test   %r12,%r12
je     12b4 <fill_coeffs+0x1b4>
movaps %xmm9,%xmm2
xorps  %xmm4,%xmm4
movaps %xmm8,%xmm3
cmp    -0x28(%rsp),%r12
je     12c6 <fill_coeffs+0x1c6>
movaps %xmm9,%xmm1
movaps %xmm4,%xmm3
mov    $0x1,%edx
jmp    130a <fill_coeffs+0x20a>
nopl   (%rax)
movss  %xmm5,(%r11,%rdx,4)
movaps %xmm5,%xmm4
movaps %xmm3,%xmm7
movss  0x0(%r13,%rdx,4),%xmm6
addss  (%r14,%rdx,4),%xmm6
addss  (%r9,%rdx,4),%xmm6
addss  %xmm4,%xmm6
subss  %xmm7,%xmm6
movss  %xmm6,0x0(%rbp,%rdx,4)
add    $0x1,%rdx
cmp    %rdx,%rax
je     11d0 <fill_coeffs+0xd0>
movl   $0x0,(%r10,%rdx,4)
movss  %xmm2,0x0(%r13,%rdx,4)
movss  %xmm1,(%r14,%rdx,4)
movss  %xmm5,(%r9,%rdx,4)
cmp    %rdx,%rbx
jne    12d0 <fill_coeffs+0x1d0>
movl   $0x0,(%r11,%rdx,4)
movss  %xmm0,(%r10,%rdx,4)
movss  (%r11,%rdx,4),%xmm4
movaps %xmm10,%xmm7
jmp    12dc <fill_coeffs+0x1dc>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @fill_coeffs(i32 %0, i32 %1, float %2, float %3, float %4, float %5, float %6, float* nocapture writeonly %7, float* nocapture %8, float* nocapture %9, float* nocapture %10, float* nocapture %11, float* nocapture writeonly %12) {
%14 = icmp sgt i32 %1, 0
br i1 %14, label %15, label %101
15: ; preds = %13
%16 = icmp sgt i32 %0, 0
%17 = fmul float %2, %5
%18 = fmul float %17, %4
%19 = fdiv float %18, %3
%20 = fmul float %2, -2.000000e+00
%21 = fmul float %20, %5
%22 = fmul float %21, %4
%23 = fdiv float %22, %3
%24 = add nsw i32 %1, -1
%25 = fmul float %17, %3
%26 = fdiv float %25, %4
%27 = fmul float %21, %3
%28 = fdiv float %27, %4
%29 = add nsw i32 %0, -1
%30 = fmul float %2, 2.000000e+00
%31 = fmul float %30, %5
%32 = fmul float %31, %3
%33 = fmul float %32, %6
%34 = fdiv float %33, %4
%35 = zext i32 %29 to i64
%36 = sext i32 %0 to i64
%37 = zext i32 %24 to i64
%38 = zext i32 %1 to i64
%39 = zext i32 %0 to i64
%40 = icmp eq i32 %29, 0
%41 = icmp eq i32 %0, 1
br label %42
42: ; preds = %15, %98
%43 = phi i64 [ 0, %15 ], [ %99, %98 ]
br i1 %16, label %44, label %98
44: ; preds = %42
%45 = mul nsw i64 %43, %36
%46 = icmp eq i64 %43, 0
%47 = icmp eq i64 %43, %37
%48 = getelementptr inbounds float, float* %12, i64 %45
store float 0.000000e+00, float* %48
%49 = select i1 %46, float 0.000000e+00, float %19
%50 = getelementptr inbounds float, float* %8, i64 %45
store float %49, float* %50
%51 = select i1 %47, float 0.000000e+00, float %19
%52 = getelementptr inbounds float, float* %9, i64 %45
store float %51, float* %52
%53 = getelementptr inbounds float, float* %10, i64 %45
store float 0.000000e+00, float* %53
%54 = getelementptr inbounds float, float* %11, i64 %45
br i1 %40, label %56, label %55
55: ; preds = %44
store float %26, float* %54
br label %58
56: ; preds = %44
store float 0.000000e+00, float* %54
store float %34, float* %48
%57 = load float, float* %54
br label %58
58: ; preds = %56, %55
%59 = phi float [ %57, %56 ], [ %26, %55 ]
%60 = load float, float* %50
%61 = load float, float* %52
%62 = fadd float %60, %61
%63 = load float, float* %53
%64 = fadd float %62, %63
%65 = fadd float %64, %59
%66 = fsub float %65, %28
%67 = getelementptr inbounds float, float* %7, i64 %45
store float %66, float* %67
br i1 %41, label %98, label %68
68: ; preds = %58
%69 = select i1 %46, float 0.000000e+00, float %19
%70 = select i1 %47, float 0.000000e+00, float %19
%71 = or i1 %47, %46
%72 = select i1 %71, float %23, float 0.000000e+00
br label %73
73: ; preds = %68, %85
%74 = phi i64 [ %96, %85 ], [ 1, %68 ]
%75 = add nsw i64 %74, %45
%76 = getelementptr inbounds float, float* %12, i64 %75
store float 0.000000e+00, float* %76
%77 = getelementptr inbounds float, float* %8, i64 %75
store float %69, float* %77
%78 = getelementptr inbounds float, float* %9, i64 %75
store float %70, float* %78
%79 = getelementptr inbounds float, float* %10, i64 %75
store float %26, float* %79
%80 = icmp eq i64 %74, %35
%81 = getelementptr inbounds float, float* %11, i64 %75
br i1 %80, label %82, label %84
82: ; preds = %73
store float 0.000000e+00, float* %81
store float %34, float* %76
%83 = load float, float* %81
br label %85
84: ; preds = %73
store float %26, float* %81
br label %85
85: ; preds = %84, %82
%86 = phi float [ %83, %82 ], [ %26, %84 ]
%87 = phi float [ %28, %82 ], [ %72, %84 ]
%88 = load float, float* %77
%89 = load float, float* %78
%90 = fadd float %88, %89
%91 = load float, float* %79
%92 = fadd float %90, %91
%93 = fadd float %92, %86
%94 = fsub float %93, %87
%95 = getelementptr inbounds float, float* %7, i64 %75
store float %94, float* %95
%96 = add nuw nsw i64 %74, 1
%97 = icmp eq i64 %96, %39
br i1 %97, label %98, label %73
98: ; preds = %85, %58, %42
%99 = add nuw nsw i64 %43, 1
%100 = icmp eq i64 %99, %38
br i1 %100, label %101, label %42
101: ; preds = %98, %13
ret void
}