#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 */
double _FDIV_(double, int, double, double);
double _FMUL_(double, double, double, double);
int _FSQRT_(double, double);
double _FSUB_(double, double, double, double);
int correlation_t(long gridsize, double missval1, double missval2, int *nofvals,
                  double *work0, double *work1, double *work2, double *work3,
                  double *work4) {
  long i;
  int nvals, nmiss = 0;
  double temp0, temp1, temp2, temp3, temp4, temp5, temp6;
  double cor;
  for (i = 0; i < gridsize; i++) {
    nvals = nofvals[i];
    if (nvals > 0) {
      temp0 = _FMUL_(work0[i], work1[i], missval1, missval2);
      temp1 = _FSUB_(work4[i], _FDIV_(temp0, nvals, missval1, missval2),
                     missval1, missval2);
      temp2 = _FMUL_(work0[i], work0[i], missval1, missval2);
      temp3 = _FMUL_(work1[i], work1[i], missval1, missval2);
      temp4 = _FSUB_(work2[i], _FDIV_(temp2, nvals, missval1, missval2),
                     missval1, missval2);
      temp5 = _FSUB_(work3[i], _FDIV_(temp3, nvals, missval1, missval2),
                     missval1, missval2);
      temp6 = _FMUL_(temp4, temp5, missval1, missval2);
      cor = _FDIV_(temp1, _FSQRT_(temp6, missval1), missval1, missval2);
      if ((((cor) != (cor)) || ((missval1) != (missval1))
               ? (((cor) != (cor)) && ((missval1) != (missval1)) ? 1 : 0)
               : !(cor < missval1 || missval1 < cor)))
        nmiss++;
    } else {
      nmiss++;
      cor = missval1;
    }
    work0[i] = cor;
  }
  return nmiss;
}


x86 assembly (clang, -O0):
<correlation_t>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movl   $0x0,-0x50(%rbp)
movq   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x8(%rbp),%rax
jge    147b <correlation_t+0x33b>
mov    -0x20(%rbp),%rax
mov    -0x48(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
jle    143f <correlation_t+0x2ff>
mov    -0x28(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,-0x58(%rbp)
mov    0x10(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
mov    -0x4c(%rbp),%edi
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1040 <_FSUB_@plt>
movsd  %xmm0,-0x60(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x30(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,-0x70(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    -0x4c(%rbp),%edi
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1040 <_FSUB_@plt>
movsd  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mov    -0x4c(%rbp),%edi
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1040 <_FSUB_@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
call   1050 <_FSQRT_@plt>
movsd  -0x98(%rbp),%xmm0
ff
mov    %eax,%edi
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1060 <_FDIV_@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0x90(%rbp),%xmm0
ff
jne    13a9 <correlation_t+0x269>
jp     13a9 <correlation_t+0x269>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    13a9 <correlation_t+0x269>
jp     13a9 <correlation_t+0x269>
jmp    1403 <correlation_t+0x2c3>
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0x90(%rbp),%xmm0
ff
jne    13ca <correlation_t+0x28a>
jp     13ca <correlation_t+0x28a>
jmp    13f4 <correlation_t+0x2b4>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    13e5 <correlation_t+0x2a5>
jp     13e5 <correlation_t+0x2a5>
jmp    13f4 <correlation_t+0x2b4>
mov    $0x1,%al
test   $0x1,%al
jne    1431 <correlation_t+0x2f1>
jmp    143a <correlation_t+0x2fa>
xor    %eax,%eax
test   $0x1,%al
jne    1431 <correlation_t+0x2f1>
jmp    143a <correlation_t+0x2fa>
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x10(%rbp),%xmm0
ucomisd %xmm1,%xmm0
ja     143a <correlation_t+0x2fa>
movsd  -0x10(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
ja     143a <correlation_t+0x2fa>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1455 <correlation_t+0x315>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x48(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
jmp    1180 <correlation_t+0x40>
mov    -0x50(%rbp),%eax
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<correlation_t>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9,0x30(%rsp)
mov    %r8,0x28(%rsp)
mov    %rsi,0x38(%rsp)
movsd  %xmm1,0x8(%rsp)
movsd  %xmm0,(%rsp)
test   %rdi,%rdi
jle    1351 <correlation_t+0x211>
mov    %rcx,%r12
mov    %rdx,%rbx
mov    %rdi,%rbp
xor    %r13d,%r13d
xor    %r14d,%r14d
jmp    11ac <correlation_t+0x6c>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r14d
movsd  (%rsp),%xmm0
movsd  %xmm0,(%rbx,%r13,8)
add    $0x1,%r13
cmp    %r13,%rbp
je     1354 <correlation_t+0x214>
mov    0x38(%rsp),%rax
mov    (%rax,%r13,4),%r15d
test   %r15d,%r15d
jle    1190 <correlation_t+0x50>
movsd  (%rbx,%r13,8),%xmm0
movsd  (%r12,%r13,8),%xmm1
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1030 <_FMUL_@plt>
mov    0x80(%rsp),%rax
movsd  (%rax,%r13,8),%xmm1
movsd  %xmm1,0x20(%rsp)
mov    %r15d,%edi
movsd  (%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  0x20(%rsp),%xmm0
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1040 <_FSUB_@plt>
movsd  %xmm0,0x20(%rsp)
movsd  (%rbx,%r13,8),%xmm0
movaps %xmm0,%xmm1
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,0x18(%rsp)
movsd  (%r12,%r13,8),%xmm0
movaps %xmm0,%xmm1
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1030 <_FMUL_@plt>
movsd  %xmm0,0x40(%rsp)
mov    0x28(%rsp),%rax
movsd  (%rax,%r13,8),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x18(%rsp),%xmm0
mov    %r15d,%edi
movsd  (%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1040 <_FSUB_@plt>
movsd  %xmm0,0x18(%rsp)
mov    0x30(%rsp),%rax
movsd  (%rax,%r13,8),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x40(%rsp),%xmm0
mov    %r15d,%edi
movsd  (%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1060 <_FDIV_@plt>
movaps %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1040 <_FSUB_@plt>
movaps %xmm0,%xmm1
movsd  0x18(%rsp),%xmm0
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
call   1030 <_FMUL_@plt>
movsd  (%rsp),%xmm1
call   1050 <_FSQRT_@plt>
movsd  0x20(%rsp),%xmm0
mov    %eax,%edi
movsd  (%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1060 <_FDIV_@plt>
ucomisd (%rsp),%xmm0
jp     1337 <correlation_t+0x1f7>
jne    1199 <correlation_t+0x59>
add    $0x1,%r14d
jmp    1199 <correlation_t+0x59>
movsd  (%rsp),%xmm1
ucomisd %xmm1,%xmm1
jnp    1199 <correlation_t+0x59>
ucomisd %xmm0,%xmm0
jp     132e <correlation_t+0x1ee>
jmp    1199 <correlation_t+0x59>
xor    %r14d,%r14d
mov    %r14d,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @correlation_t(i64 %0, double %1, double %2, i32* nocapture %3, double* nocapture %4, double* nocapture %5, double* nocapture %6, double* nocapture %7, double* nocapture %8) {
%10 = icmp sgt i64 %0, 0
br i1 %10, label %11, label %60
11: ; preds = %9
%12 = fcmp uno double %1, 0.000000e+00
br label %13
13: ; preds = %11, %54
%14 = phi i64 [ 0, %11 ], [ %58, %54 ]
%15 = phi i32 [ 0, %11 ], [ %55, %54 ]
%16 = getelementptr inbounds i32, i32* %3, i64 %14
%17 = load i32, i32* %16
%18 = icmp sgt i32 %17, 0
br i1 %18, label %19, label %52
19: ; preds = %13
%20 = getelementptr inbounds double, double* %4, i64 %14
%21 = load double, double* %20
%22 = getelementptr inbounds double, double* %5, i64 %14
%23 = load double, double* %22
%24 = tail call double @_FMUL_(double %21, double %23, double %1, double %2)
%25 = getelementptr inbounds double, double* %8, i64 %14
%26 = load double, double* %25
%27 = tail call double @_FDIV_(double %24, i32 %17, double %1, double %2)
%28 = tail call double @_FSUB_(double %26, double %27, double %1, double %2)
%29 = load double, double* %20
%30 = tail call double @_FMUL_(double %29, double %29, double %1, double %2)
%31 = load double, double* %22
%32 = tail call double @_FMUL_(double %31, double %31, double %1, double %2)
%33 = getelementptr inbounds double, double* %6, i64 %14
%34 = load double, double* %33
%35 = tail call double @_FDIV_(double %30, i32 %17, double %1, double %2)
%36 = tail call double @_FSUB_(double %34, double %35, double %1, double %2)
%37 = getelementptr inbounds double, double* %7, i64 %14
%38 = load double, double* %37
%39 = tail call double @_FDIV_(double %32, i32 %17, double %1, double %2)
%40 = tail call double @_FSUB_(double %38, double %39, double %1, double %2)
%41 = tail call double @_FMUL_(double %36, double %40, double %1, double %2)
%42 = tail call i32 @_FSQRT_(double %41, double %1)
%43 = tail call double @_FDIV_(double %28, i32 %42, double %1, double %2)
%44 = fcmp uno double %43, %1
br i1 %44, label %45, label %48
45: ; preds = %19
%46 = fcmp uno double %43, 0.000000e+00
%47 = and i1 %12, %46
br i1 %47, label %50, label %54
48: ; preds = %19
%49 = fcmp ueq double %43, %1
br i1 %49, label %50, label %54
50: ; preds = %48, %45
%51 = add nsw i32 %15, 1
br label %54
52: ; preds = %13
%53 = add nsw i32 %15, 1
br label %54
54: ; preds = %48, %50, %45, %52
%55 = phi i32 [ %51, %50 ], [ %15, %45 ], [ %15, %48 ], [ %53, %52 ]
%56 = phi double [ %43, %50 ], [ %43, %45 ], [ %43, %48 ], [ %1, %52 ]
%57 = getelementptr inbounds double, double* %4, i64 %14
store double %56, double* %57
%58 = add nuw nsw i64 %14, 1
%59 = icmp eq i64 %58, %0
br i1 %59, label %60, label %13
60: ; preds = %54, %9
%61 = phi i32 [ 0, %9 ], [ %55, %54 ]
ret i32 %61
}