void correct_xvals(long nlon, long inc, double *xvals) {
  long i;
  if ((!(xvals[0] < xvals[(nlon - 1) * inc] ||
         xvals[(nlon - 1) * inc] < xvals[0])))
    xvals[(nlon - 1) * inc] += 360;
  if (xvals[0] > xvals[(nlon - 1) * inc])
    for (i = 0; i < nlon; i++)
      if (xvals[i * inc] >= 180)
        xvals[i * inc] -= 360;
  for (i = 0; i < nlon; i++) {
    if (xvals[i * inc] < -180)
      xvals[i * inc] += 360;
    if (xvals[i * inc] > 360)
      xvals[i * inc] -= 360;
  }
  if (xvals[0] > xvals[(nlon - 1) * inc])
    for (i = 1; i < nlon; i++)
      if (xvals[i * inc] < xvals[(i - 1) * inc])
        xvals[i * inc] += 360;
}


x86 assembly (clang, -O0):
<correct_xvals>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
ja     1183 <correct_xvals+0x83>
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
ja     1183 <correct_xvals+0x83>
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
movsd  0xe87(%rip),%xmm0
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    121f <correct_xvals+0x11f>
movq   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x8(%rbp),%rax
jge    121a <correct_xvals+0x11a>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xe39(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1204 <correct_xvals+0x104>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xe05(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1209 <correct_xvals+0x109>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    11af <correct_xvals+0xaf>
jmp    121f <correct_xvals+0x11f>
movq   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x8(%rbp),%rax
jge    12d1 <correct_xvals+0x1d1>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  0xdbe(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    1274 <correct_xvals+0x174>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  0xd96(%rip),%xmm0
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd72(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12bb <correct_xvals+0x1bb>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd4e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    12c0 <correct_xvals+0x1c0>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1227 <correct_xvals+0x127>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1377 <correct_xvals+0x277>
movq   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x8(%rbp),%rax
jge    1372 <correct_xvals+0x272>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    $0x1,%rcx
imul   -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    135c <correct_xvals+0x25c>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
imul   -0x10(%rbp),%rcx
movsd  0xcae(%rip),%xmm0
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1361 <correct_xvals+0x261>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    12fd <correct_xvals+0x1fd>
jmp    1377 <correct_xvals+0x277>
pop    %rbp
ret

x86 assembly (clang, -O2):
<correct_xvals>:
movsd  (%rdx),%xmm1
lea    -0x1(%rdi),%r8
mov    %r8,%r9
imul   %rsi,%r9
movsd  (%rdx,%r9,8),%xmm0
ucomisd %xmm0,%xmm1
jne    112d <correct_xvals+0x2d>
addsd  0xedd(%rip),%xmm0
movsd  %xmm0,(%rdx,%r9,8)
movsd  (%rdx),%xmm1
ucomisd %xmm0,%xmm1
jbe    11cc <correct_xvals+0xcc>
test   %rdi,%rdi
jle    11cc <correct_xvals+0xcc>
test   %r8,%r8
je     11a4 <correct_xvals+0xa4>
mov    %rdi,%r10
and    $0xfffffffffffffffe,%r10
mov    %rsi,%r11
shl    $0x4,%r11
xor    %eax,%eax
movsd  0xeab(%rip),%xmm0
movsd  0xeab(%rip),%xmm1
mov    %rdx,%rcx
jmp    117c <correct_xvals+0x7c>
nopw   0x0(%rax,%rax,1)
add    $0x2,%rax
add    %r11,%rcx
cmp    %rax,%r10
je     11a6 <correct_xvals+0xa6>
movsd  (%rcx),%xmm2
ucomisd %xmm0,%xmm2
jb     118e <correct_xvals+0x8e>
addsd  %xmm1,%xmm2
movsd  %xmm2,(%rcx)
movsd  (%rcx,%rsi,8),%xmm2
ucomisd %xmm0,%xmm2
jb     1170 <correct_xvals+0x70>
addsd  %xmm1,%xmm2
movsd  %xmm2,(%rcx,%rsi,8)
jmp    1170 <correct_xvals+0x70>
xor    %eax,%eax
test   $0x1,%dil
je     11cc <correct_xvals+0xcc>
imul   %rsi,%rax
movsd  (%rdx,%rax,8),%xmm0
ucomisd 0xe4b(%rip),%xmm0
jb     11cc <correct_xvals+0xcc>
addsd  0xe49(%rip),%xmm0
movsd  %xmm0,(%rdx,%rax,8)
test   %rdi,%rdi
jle    12a4 <correct_xvals+0x1a4>
lea    0x0(,%rsi,8),%r10
movsd  0xe33(%rip),%xmm1
movsd  0xe13(%rip),%xmm0
movsd  0xe1b(%rip),%xmm2
mov    %rdx,%rcx
mov    %rdi,%rax
jmp    122a <correct_xvals+0x12a>
nopl   (%rax)
movapd %xmm3,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm0,%xmm5
cmpltsd %xmm3,%xmm5
andpd  %xmm5,%xmm4
andnpd %xmm3,%xmm5
orpd   %xmm4,%xmm5
movlpd %xmm5,(%rcx)
add    %r10,%rcx
add    $0xffffffffffffffff,%rax
je     1259 <correct_xvals+0x159>
movsd  (%rcx),%xmm4
ucomisd %xmm4,%xmm1
movapd %xmm4,%xmm5
addsd  %xmm0,%xmm5
movapd %xmm4,%xmm3
cmpltsd %xmm1,%xmm3
andpd  %xmm3,%xmm5
andnpd %xmm4,%xmm3
orpd   %xmm5,%xmm3
ja     1200 <correct_xvals+0x100>
ucomisd %xmm0,%xmm3
jbe    1221 <correct_xvals+0x121>
jmp    1200 <correct_xvals+0x100>
movsd  (%rdx),%xmm1
ucomisd (%rdx,%r9,8),%xmm1
jbe    12a4 <correct_xvals+0x1a4>
cmp    $0x2,%rdi
jl     12a4 <correct_xvals+0x1a4>
mov    $0x1,%eax
jne    12a5 <correct_xvals+0x1a5>
test   $0x1,%r8b
je     12a4 <correct_xvals+0x1a4>
mov    %rax,%rcx
imul   %rsi,%rcx
movsd  (%rdx,%rcx,8),%xmm0
add    $0xffffffffffffffff,%rax
imul   %rsi,%rax
movsd  (%rdx,%rax,8),%xmm1
ucomisd %xmm0,%xmm1
jbe    12a4 <correct_xvals+0x1a4>
addsd  0xd61(%rip),%xmm0
movsd  %xmm0,(%rdx,%rcx,8)
ret
mov    %rsi,%r10
shl    $0x4,%r10
mov    %r8,%r9
and    $0xfffffffffffffffe,%r9
neg    %r9
mov    $0x1,%eax
mov    %rdx,%rdi
jmp    12d5 <correct_xvals+0x1d5>
add    %r10,%rdi
lea    (%r9,%rax,1),%rcx
add    $0x2,%rcx
add    $0x2,%rax
cmp    $0x1,%rcx
je     1272 <correct_xvals+0x172>
movsd  (%rdi,%rsi,8),%xmm1
movsd  (%rdi),%xmm2
ucomisd %xmm1,%xmm2
jbe    12ed <correct_xvals+0x1ed>
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi,%rsi,8)
movsd  (%rdi,%r10,1),%xmm1
movsd  (%rdi,%rsi,8),%xmm2
ucomisd %xmm1,%xmm2
jbe    12c0 <correct_xvals+0x1c0>
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi,%r10,1)
jmp    12c0 <correct_xvals+0x1c0>

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

LLVM IR (-O2):
define void @correct_xvals(i64 %0, i64 %1, double* nocapture %2) {
%4 = load double, double* %2
%5 = add nsw i64 %0, -1
%6 = mul nsw i64 %5, %1
%7 = getelementptr inbounds double, double* %2, i64 %6
%8 = load double, double* %7
%9 = fcmp ueq double %4, %8
br i1 %9, label %10, label %13
10: ; preds = %3
%11 = fadd double %8, 3.600000e+02
store double %11, double* %7
%12 = load double, double* %2
br label %13
13: ; preds = %10, %3
%14 = phi double [ %11, %10 ], [ %8, %3 ]
%15 = phi double [ %12, %10 ], [ %4, %3 ]
%16 = fcmp ogt double %15, %14
%17 = icmp sgt i64 %0, 0
%18 = and i1 %16, %17
br i1 %18, label %19, label %55
19: ; preds = %13
%20 = and i64 %0, 1
%21 = icmp eq i64 %5, 0
br i1 %21, label %45, label %22
22: ; preds = %19
%23 = and i64 %0, -2
br label %24
24: ; preds = %41, %22
%25 = phi i64 [ 0, %22 ], [ %42, %41 ]
%26 = phi i64 [ 0, %22 ], [ %43, %41 ]
%27 = mul nsw i64 %25, %1
%28 = getelementptr inbounds double, double* %2, i64 %27
%29 = load double, double* %28
%30 = fcmp ult double %29, 1.800000e+02
br i1 %30, label %33, label %31
31: ; preds = %24
%32 = fadd double %29, -3.600000e+02
store double %32, double* %28
br label %33
33: ; preds = %24, %31
%34 = or i64 %25, 1
%35 = mul nsw i64 %34, %1
%36 = getelementptr inbounds double, double* %2, i64 %35
%37 = load double, double* %36
%38 = fcmp ult double %37, 1.800000e+02
br i1 %38, label %41, label %39
39: ; preds = %33
%40 = fadd double %37, -3.600000e+02
store double %40, double* %36
br label %41
41: ; preds = %39, %33
%42 = add nuw nsw i64 %25, 2
%43 = add i64 %26, 2
%44 = icmp eq i64 %43, %23
br i1 %44, label %45, label %24
45: ; preds = %41, %19
%46 = phi i64 [ 0, %19 ], [ %42, %41 ]
%47 = icmp eq i64 %20, 0
br i1 %47, label %55, label %48
48: ; preds = %45
%49 = mul nsw i64 %46, %1
%50 = getelementptr inbounds double, double* %2, i64 %49
%51 = load double, double* %50
%52 = fcmp ult double %51, 1.800000e+02
br i1 %52, label %55, label %53
53: ; preds = %48
%54 = fadd double %51, -3.600000e+02
store double %54, double* %50
br label %55
55: ; preds = %45, %53, %48, %13
br i1 %17, label %56, label %125
56: ; preds = %55, %69
%57 = phi i64 [ %70, %69 ], [ 0, %55 ]
%58 = mul nsw i64 %57, %1
%59 = getelementptr inbounds double, double* %2, i64 %58
%60 = load double, double* %59
%61 = fcmp olt double %60, -1.800000e+02
%62 = fadd double %60, 3.600000e+02
%63 = select i1 %61, double %62, double %60
%64 = fcmp ogt double %63, 3.600000e+02
%65 = or i1 %61, %64
br i1 %65, label %66, label %69
66: ; preds = %56
%67 = fadd double %63, -3.600000e+02
%68 = select i1 %64, double %67, double %63
store double %68, double* %59
br label %69
69: ; preds = %56, %66
%70 = add nuw nsw i64 %57, 1
%71 = icmp eq i64 %70, %0
br i1 %71, label %72, label %56
72: ; preds = %69
%73 = load double, double* %2
%74 = load double, double* %7
%75 = fcmp ogt double %73, %74
%76 = icmp sgt i64 %0, 1
%77 = and i1 %75, %76
br i1 %77, label %78, label %125
78: ; preds = %72
%79 = and i64 %5, 1
%80 = icmp eq i64 %0, 2
br i1 %80, label %111, label %81
81: ; preds = %78
%82 = and i64 %5, -2
br label %83
83: ; preds = %107, %81
%84 = phi i64 [ 1, %81 ], [ %108, %107 ]
%85 = phi i64 [ 0, %81 ], [ %109, %107 ]
%86 = mul nsw i64 %84, %1
%87 = getelementptr inbounds double, double* %2, i64 %86
%88 = load double, double* %87
%89 = add nsw i64 %84, -1
%90 = mul nsw i64 %89, %1
%91 = getelementptr inbounds double, double* %2, i64 %90
%92 = load double, double* %91
%93 = fcmp olt double %88, %92
br i1 %93, label %94, label %96
94: ; preds = %83
%95 = fadd double %88, 3.600000e+02
store double %95, double* %87
br label %96
96: ; preds = %83, %94
%97 = add nuw nsw i64 %84, 1
%98 = mul nsw i64 %97, %1
%99 = getelementptr inbounds double, double* %2, i64 %98
%100 = load double, double* %99
%101 = mul nsw i64 %84, %1
%102 = getelementptr inbounds double, double* %2, i64 %101
%103 = load double, double* %102
%104 = fcmp olt double %100, %103
br i1 %104, label %105, label %107
105: ; preds = %96
%106 = fadd double %100, 3.600000e+02
store double %106, double* %99
br label %107
107: ; preds = %105, %96
%108 = add nuw nsw i64 %84, 2
%109 = add i64 %85, 2
%110 = icmp eq i64 %109, %82
br i1 %110, label %111, label %83
111: ; preds = %107, %78
%112 = phi i64 [ 1, %78 ], [ %108, %107 ]
%113 = icmp eq i64 %79, 0
br i1 %113, label %125, label %114
114: ; preds = %111
%115 = mul nsw i64 %112, %1
%116 = getelementptr inbounds double, double* %2, i64 %115
%117 = load double, double* %116
%118 = add nsw i64 %112, -1
%119 = mul nsw i64 %118, %1
%120 = getelementptr inbounds double, double* %2, i64 %119
%121 = load double, double* %120
%122 = fcmp olt double %117, %121
br i1 %122, label %123, label %125
123: ; preds = %114
%124 = fadd double %117, 3.600000e+02
store double %124, double* %116
br label %125
125: ; preds = %111, %123, %114, %55, %72
ret void
}