void RHS_fn(double *hx, double *hy, double *fn, int M) {
  int i, j, x, z;
  double dhx_dx, dhy_dy, phi, dp_dx, dp_dy, dphi_dx, dphi_dy;
  for (i = 1; i < M - 2; i++) {
    for (j = 1; j < M - 2; j++) {
      z = i * M + j;
      x = i * (M - 1) + j;
      dhx_dx =
          0.5 * (1.0 / 1.0) * (hx[z + 1] - hx[z] + hx[z + 1 + M] - hx[z + M]);
      dhy_dy =
          0.5 * (1.0 / 1.0) * (hy[z + 1 + M] - hy[z + 1] + hy[z + M] - hy[z]);
      fn[x] = dhx_dx + dhy_dy;
    }
  }
}


x86 assembly (clang, -O0):
<RHS_fn>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jge    1248 <RHS_fn+0x148>
movl   $0x1,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jge    1235 <RHS_fn+0x135>
mov    -0x20(%rbp),%eax
imul   -0x1c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0xe50(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0xdf9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1132 <RHS_fn+0x32>
jmp    123a <RHS_fn+0x13a>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    111a <RHS_fn+0x1a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<RHS_fn>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x30,%rsp
mov    %rdx,-0x68(%rsp)
mov    %rsi,-0x70(%rsp)
mov    %rdi,-0x78(%rsp)
cmp    $0x4,%ecx
jl     149d <RHS_fn+0x39d>
mov    %rcx,%rdx
add    $0xfffffffe,%ecx
mov    %edx,%esi
add    $0xffffffff,%edx
lea    0x1(%rdx),%rax
mov    %rax,0x10(%rsp)
lea    (%rdx,%rcx,1),%rax
mov    %rax,0x8(%rsp)
lea    (%rsi,%rsi,1),%rbp
lea    0x1(%rsi,%rsi,1),%rax
mov    %rax,(%rsp)
lea    0x1(%rcx,%rsi,2),%rax
mov    %rax,-0x8(%rsp)
lea    0x1(%rsi),%rax
mov    %rax,-0x10(%rsp)
lea    0x1(%rsi,%rcx,1),%rax
mov    %rax,-0x18(%rsp)
mov    %rcx,-0x38(%rsp)
lea    -0x1(%rcx),%rax
mov    %rax,%rcx
and    $0xfffffffffffffffe,%rcx
mov    %rcx,-0x20(%rsp)
mov    %rax,-0x58(%rsp)
or     $0x1,%rax
mov    %rax,-0x28(%rsp)
mov    -0x70(%rsp),%rcx
lea    (%rcx,%rsi,8),%r9
add    $0x10,%r9
mov    %rsi,%rax
shl    $0x4,%rax
lea    (%rcx,%rax,1),%r10
add    $0x10,%r10
mov    -0x78(%rsp),%rcx
lea    0x10(%rcx,%rax,1),%r14
movsd  0xe52(%rip),%xmm0
movapd 0xe3a(%rip),%xmm1
lea    0x0(,%rsi,8),%rax
mov    %rax,0x20(%rsp)
lea    0x10(%rcx,%rsi,8),%r12
mov    -0x68(%rsp),%rax
lea    0x8(%rax,%rdx,8),%r13
lea    0x0(,%rdx,8),%rax
mov    %rax,0x18(%rsp)
mov    $0x1,%ecx
xor    %eax,%eax
mov    %rax,-0x50(%rsp)
mov    %rsi,-0x48(%rsp)
mov    %rsi,-0x30(%rsp)
mov    %rdx,-0x40(%rsp)
jmp    1252 <RHS_fn+0x152>
nopl   0x0(%rax)
mov    0x28(%rsp),%rcx
add    $0x1,%rcx
addq   $0x1,-0x50(%rsp)
mov    0x20(%rsp),%rax
add    %rax,%r9
add    %rax,%r10
add    %rax,%r14
add    %rax,%r12
add    0x18(%rsp),%r13
add    -0x40(%rsp),%rdx
mov    -0x48(%rsp),%rax
add    %rax,%rbp
add    %rax,-0x30(%rsp)
cmp    -0x38(%rsp),%rcx
je     149d <RHS_fn+0x39d>
mov    %rcx,0x28(%rsp)
mov    $0x1,%ebx
cmpq   $0x2,-0x58(%rsp)
jae    1310 <RHS_fn+0x210>
lea    (%rbx,%rdx,1),%rax
mov    -0x68(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
mov    -0x38(%rsp),%r15
sub    %rbx,%r15
lea    (%rbx,%rbp,1),%rax
mov    %rdx,%r8
mov    -0x70(%rsp),%rdx
lea    (%rdx,%rax,8),%rsi
mov    %rbp,-0x60(%rsp)
mov    -0x78(%rsp),%rbp
lea    0x0(,%rax,8),%rdi
add    %rbp,%rdi
add    -0x30(%rsp),%rbx
lea    (%rdx,%rbx,8),%rax
mov    %r8,%rdx
lea    0x0(,%rbx,8),%r11
add    %rbp,%r11
mov    -0x60(%rsp),%rbp
xor    %ebx,%ebx
movsd  0x8(%r11,%rbx,8),%xmm2
subsd  (%r11,%rbx,8),%xmm2
addsd  0x8(%rdi,%rbx,8),%xmm2
subsd  (%rdi,%rbx,8),%xmm2
movsd  0x8(%rsi,%rbx,8),%xmm3
subsd  0x8(%rax,%rbx,8),%xmm3
addsd  (%rsi,%rbx,8),%xmm3
mulsd  %xmm0,%xmm2
subsd  (%rax,%rbx,8),%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,(%rcx,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%r15
jne    12c0 <RHS_fn+0x1c0>
jmp    1210 <RHS_fn+0x110>
nopl   (%rax)
mov    -0x50(%rsp),%rsi
mov    %rsi,%rax
imul   -0x40(%rsp),%rax
mov    0x10(%rsp),%rcx
lea    (%rcx,%rax,1),%r11
add    0x8(%rsp),%rax
imul   -0x48(%rsp),%rsi
mov    (%rsp),%rcx
lea    (%rcx,%rsi,1),%r8
mov    -0x8(%rsp),%rcx
lea    (%rcx,%rsi,1),%rbx
mov    -0x10(%rsp),%rcx
add    %rsi,%rcx
add    -0x18(%rsp),%rsi
mov    -0x68(%rsp),%rdi
lea    (%rdi,%r11,8),%r11
lea    (%rdi,%rax,8),%r15
mov    %rdx,-0x60(%rsp)
mov    -0x78(%rsp),%rdx
lea    (%rdx,%rsi,8),%rax
lea    (%rdx,%rbx,8),%rdi
cmp    %rdi,%r11
lea    (%rdx,%r8,8),%rdi
setb   -0x79(%rsp)
cmp    %r15,%rdi
setb   -0x7a(%rsp)
cmp    %rax,%r11
lea    (%rdx,%rcx,8),%rdi
setb   %al
cmp    %r15,%rdi
mov    -0x70(%rsp),%rdx
lea    (%rdx,%rsi,8),%rdi
setb   -0x7b(%rsp)
cmp    %rdi,%r11
lea    (%rdx,%rcx,8),%rdi
setb   %sil
cmp    %r15,%rdi
lea    (%rdx,%rbx,8),%rdi
setb   -0x7c(%rsp)
cmp    %rdi,%r11
lea    (%rdx,%r8,8),%rbx
mov    -0x60(%rsp),%rdx
setb   %dil
cmp    %r15,%rbx
setb   %r11b
mov    $0x1,%ebx
mov    -0x7a(%rsp),%cl
test   %cl,-0x79(%rsp)
jne    1268 <RHS_fn+0x168>
mov    $0x1,%ebx
and    -0x7b(%rsp),%al
jne    1268 <RHS_fn+0x168>
mov    $0x1,%ebx
and    -0x7c(%rsp),%sil
jne    1268 <RHS_fn+0x168>
mov    $0x1,%ebx
and    %r11b,%dil
jne    1268 <RHS_fn+0x168>
xor    %ecx,%ecx
mov    -0x20(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movupd -0x8(%r12,%rcx,8),%xmm2
movupd (%r12,%rcx,8),%xmm3
subpd  %xmm2,%xmm3
movupd -0x8(%r14,%rcx,8),%xmm2
movupd (%r14,%rcx,8),%xmm4
addpd  %xmm3,%xmm4
subpd  %xmm2,%xmm4
mulpd  %xmm1,%xmm4
movupd -0x8(%r10,%rcx,8),%xmm2
movupd (%r10,%rcx,8),%xmm3
movupd -0x8(%r9,%rcx,8),%xmm5
movupd (%r9,%rcx,8),%xmm6
subpd  %xmm6,%xmm3
addpd  %xmm2,%xmm3
subpd  %xmm5,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm4,%xmm3
movupd %xmm3,0x0(%r13,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%rax
jne    1420 <RHS_fn+0x320>
mov    -0x28(%rsp),%rbx
cmp    %rax,-0x58(%rsp)
je     1210 <RHS_fn+0x110>
jmp    1268 <RHS_fn+0x168>
add    $0x30,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @RHS_fn(double* %0, double* %1, double* %2, i32 %3) {
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
store double* %0, double** %5
store double* %1, double** %6
store double* %2, double** %7
store i32 %3, i32* %8
store i32 1, i32* %9
br label %20
20: ; preds = %114, %4
%21 = load i32, i32* %9
%22 = load i32, i32* %8
%23 = sub nsw i32 %22, 2
%24 = icmp slt i32 %21, %23
br i1 %24, label %25, label %117
25: ; preds = %20
store i32 1, i32* %10
br label %26
26: ; preds = %110, %25
%27 = load i32, i32* %10
%28 = load i32, i32* %8
%29 = sub nsw i32 %28, 2
%30 = icmp slt i32 %27, %29
br i1 %30, label %31, label %113
31: ; preds = %26
%32 = load i32, i32* %9
%33 = load i32, i32* %8
%34 = mul nsw i32 %32, %33
%35 = load i32, i32* %10
%36 = add nsw i32 %34, %35
store i32 %36, i32* %12
%37 = load i32, i32* %9
%38 = load i32, i32* %8
%39 = sub nsw i32 %38, 1
%40 = mul nsw i32 %37, %39
%41 = load i32, i32* %10
%42 = add nsw i32 %40, %41
store i32 %42, i32* %11
%43 = load double*, double** %5
%44 = load i32, i32* %12
%45 = add nsw i32 %44, 1
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %43, i64 %46
%48 = load double, double* %47
%49 = load double*, double** %5
%50 = load i32, i32* %12
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds double, double* %49, i64 %51
%53 = load double, double* %52
%54 = fsub double %48, %53
%55 = load double*, double** %5
%56 = load i32, i32* %12
%57 = add nsw i32 %56, 1
%58 = load i32, i32* %8
%59 = add nsw i32 %57, %58
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds double, double* %55, i64 %60
%62 = load double, double* %61
%63 = fadd double %54, %62
%64 = load double*, double** %5
%65 = load i32, i32* %12
%66 = load i32, i32* %8
%67 = add nsw i32 %65, %66
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds double, double* %64, i64 %68
%70 = load double, double* %69
%71 = fsub double %63, %70
%72 = fmul double 5.000000e-01, %71
store double %72, double* %13
%73 = load double*, double** %6
%74 = load i32, i32* %12
%75 = add nsw i32 %74, 1
%76 = load i32, i32* %8
%77 = add nsw i32 %75, %76
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds double, double* %73, i64 %78
%80 = load double, double* %79
%81 = load double*, double** %6
%82 = load i32, i32* %12
%83 = add nsw i32 %82, 1
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds double, double* %81, i64 %84
%86 = load double, double* %85
%87 = fsub double %80, %86
%88 = load double*, double** %6
%89 = load i32, i32* %12
%90 = load i32, i32* %8
%91 = add nsw i32 %89, %90
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds double, double* %88, i64 %92
%94 = load double, double* %93
%95 = fadd double %87, %94
%96 = load double*, double** %6
%97 = load i32, i32* %12
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds double, double* %96, i64 %98
%100 = load double, double* %99
%101 = fsub double %95, %100
%102 = fmul double 5.000000e-01, %101
store double %102, double* %14
%103 = load double, double* %13
%104 = load double, double* %14
%105 = fadd double %103, %104
%106 = load double*, double** %7
%107 = load i32, i32* %11
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %106, i64 %108
store double %105, double* %109
br label %110
110: ; preds = %31
%111 = load i32, i32* %10
%112 = add nsw i32 %111, 1
store i32 %112, i32* %10
br label %26
113: ; preds = %26
br label %114
114: ; preds = %113
%115 = load i32, i32* %9
%116 = add nsw i32 %115, 1
store i32 %116, i32* %9
br label %20
117: ; preds = %20
ret void
}

LLVM IR (-O2):
define void @RHS_fn(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2, i32 %3) {
%5 = icmp sgt i32 %3, 3
br i1 %5, label %6, label %152
6: ; preds = %4
%7 = add nsw i32 %3, -2
%8 = add nsw i32 %3, -1
%9 = zext i32 %3 to i64
%10 = zext i32 %8 to i64
%11 = zext i32 %7 to i64
%12 = add nuw nsw i64 %10, 1
%13 = add nuw nsw i64 %10, %11
%14 = shl nuw nsw i64 %9, 1
%15 = or i64 %14, 1
%16 = add nuw nsw i64 %14, %11
%17 = add nuw nsw i64 %16, 1
%18 = add nuw nsw i64 %9, 1
%19 = add nuw nsw i64 %9, %11
%20 = add nuw nsw i64 %19, 1
%21 = add nsw i64 %11, -1
%22 = icmp ult i64 %21, 2
%23 = and i64 %21, -2
%24 = or i64 %21, 1
%25 = icmp eq i64 %21, %23
br label %26
26: ; preds = %148, %6
%27 = phi i64 [ %151, %148 ], [ 0, %6 ]
%28 = phi i64 [ %149, %148 ], [ 1, %6 ]
%29 = mul i64 %27, %10
%30 = add i64 %12, %29
%31 = getelementptr double, double* %2, i64 %30
%32 = add i64 %13, %29
%33 = getelementptr double, double* %2, i64 %32
%34 = mul i64 %27, %9
%35 = add i64 %15, %34
%36 = add i64 %17, %34
%37 = add i64 %18, %34
%38 = add i64 %20, %34
%39 = mul nsw i64 %28, %9
%40 = mul nsw i64 %28, %10
br i1 %22, label %111, label %41
41: ; preds = %26
%42 = getelementptr double, double* %1, i64 %36
%43 = getelementptr double, double* %1, i64 %35
%44 = getelementptr double, double* %1, i64 %38
%45 = getelementptr double, double* %1, i64 %37
%46 = getelementptr double, double* %0, i64 %38
%47 = getelementptr double, double* %0, i64 %37
%48 = getelementptr double, double* %0, i64 %36
%49 = getelementptr double, double* %0, i64 %35
%50 = icmp ult double* %31, %48
%51 = icmp ult double* %49, %33
%52 = and i1 %50, %51
%53 = icmp ult double* %31, %46
%54 = icmp ult double* %47, %33
%55 = and i1 %53, %54
%56 = or i1 %52, %55
%57 = icmp ult double* %31, %44
%58 = icmp ult double* %45, %33
%59 = and i1 %57, %58
%60 = or i1 %56, %59
%61 = icmp ult double* %31, %42
%62 = icmp ult double* %43, %33
%63 = and i1 %61, %62
%64 = or i1 %60, %63
br i1 %64, label %111, label %65
65: ; preds = %41, %65
%66 = phi i64 [ %108, %65 ], [ 0, %41 ]
%67 = or i64 %66, 1
%68 = add nuw nsw i64 %67, %39
%69 = add nuw nsw i64 %67, %40
%70 = add nuw nsw i64 %68, 1
%71 = getelementptr inbounds double, double* %0, i64 %70
%72 = bitcast double* %71 to <2 x double>*
%73 = load <2 x double>, <2 x double>* %72
%74 = getelementptr inbounds double, double* %0, i64 %68
%75 = bitcast double* %74 to <2 x double>*
%76 = load <2 x double>, <2 x double>* %75
%77 = fsub <2 x double> %73, %76
%78 = add nuw nsw i64 %70, %9
%79 = getelementptr inbounds double, double* %0, i64 %78
%80 = bitcast double* %79 to <2 x double>*
%81 = load <2 x double>, <2 x double>* %80
%82 = fadd <2 x double> %77, %81
%83 = add nuw nsw i64 %68, %9
%84 = getelementptr inbounds double, double* %0, i64 %83
%85 = bitcast double* %84 to <2 x double>*
%86 = load <2 x double>, <2 x double>* %85
%87 = fsub <2 x double> %82, %86
%88 = fmul <2 x double> %87, <double 5.000000e-01, double 5.000000e-01>
%89 = getelementptr inbounds double, double* %1, i64 %78
%90 = bitcast double* %89 to <2 x double>*
%91 = load <2 x double>, <2 x double>* %90
%92 = getelementptr inbounds double, double* %1, i64 %70
%93 = bitcast double* %92 to <2 x double>*
%94 = load <2 x double>, <2 x double>* %93
%95 = fsub <2 x double> %91, %94
%96 = getelementptr inbounds double, double* %1, i64 %83
%97 = bitcast double* %96 to <2 x double>*
%98 = load <2 x double>, <2 x double>* %97
%99 = fadd <2 x double> %95, %98
%100 = getelementptr inbounds double, double* %1, i64 %68
%101 = bitcast double* %100 to <2 x double>*
%102 = load <2 x double>, <2 x double>* %101
%103 = fsub <2 x double> %99, %102
%104 = fmul <2 x double> %103, <double 5.000000e-01, double 5.000000e-01>
%105 = fadd <2 x double> %88, %104
%106 = getelementptr inbounds double, double* %2, i64 %69
%107 = bitcast double* %106 to <2 x double>*
store <2 x double> %105, <2 x double>* %107
%108 = add nuw i64 %66, 2
%109 = icmp eq i64 %108, %23
br i1 %109, label %110, label %65
110: ; preds = %65
br i1 %25, label %148, label %111
111: ; preds = %41, %26, %110
%112 = phi i64 [ 1, %41 ], [ 1, %26 ], [ %24, %110 ]
br label %113
113: ; preds = %111, %113
%114 = phi i64 [ %146, %113 ], [ %112, %111 ]
%115 = add nuw nsw i64 %114, %39
%116 = add nuw nsw i64 %114, %40
%117 = add nuw nsw i64 %115, 1
%118 = getelementptr inbounds double, double* %0, i64 %117
%119 = load double, double* %118
%120 = getelementptr inbounds double, double* %0, i64 %115
%121 = load double, double* %120
%122 = fsub double %119, %121
%123 = add nuw nsw i64 %117, %9
%124 = getelementptr inbounds double, double* %0, i64 %123
%125 = load double, double* %124
%126 = fadd double %122, %125
%127 = add nuw nsw i64 %115, %9
%128 = getelementptr inbounds double, double* %0, i64 %127
%129 = load double, double* %128
%130 = fsub double %126, %129
%131 = fmul double %130, 5.000000e-01
%132 = getelementptr inbounds double, double* %1, i64 %123
%133 = load double, double* %132
%134 = getelementptr inbounds double, double* %1, i64 %117
%135 = load double, double* %134
%136 = fsub double %133, %135
%137 = getelementptr inbounds double, double* %1, i64 %127
%138 = load double, double* %137
%139 = fadd double %136, %138
%140 = getelementptr inbounds double, double* %1, i64 %115
%141 = load double, double* %140
%142 = fsub double %139, %141
%143 = fmul double %142, 5.000000e-01
%144 = fadd double %131, %143
%145 = getelementptr inbounds double, double* %2, i64 %116
store double %144, double* %145
%146 = add nuw nsw i64 %114, 1
%147 = icmp eq i64 %146, %11
br i1 %147, label %148, label %113
148: ; preds = %113, %110
%149 = add nuw nsw i64 %28, 1
%150 = icmp eq i64 %149, %11
%151 = add i64 %27, 1
br i1 %150, label %152, label %26
152: ; preds = %148, %4
ret void
}