void simp2(float **a, int m, int n, int *ip, int kp) {
  int k, i;
  float qp, q0, q, q1;
  *ip = 0;
  for (i = 1; i <= m; i++)
    if (a[i + 1][kp + 1] < -1.0e-6)
      break;
  if (i > m)
    return;
  q1 = -a[i + 1][1] / a[i + 1][kp + 1];
  *ip = i;
  for (i = *ip + 1; i <= m; i++) {
    if (a[i + 1][kp + 1] < -1.0e-6) {
      q = -a[i + 1][1] / a[i + 1][kp + 1];
      if (q < q1) {
        *ip = i;
        q1 = q;
      } else if (q == q1) {
        for (k = 1; k <= n; k++) {
          qp = -a[*ip + 1][k + 1] / a[*ip + 1][kp + 1];
          q0 = -a[i + 1][k + 1] / a[i + 1][kp + 1];
          if (q0 != qp)
            break;
        }
        if (q0 < qp)
          *ip = i;
      }
    }
  }
}


x86 assembly (clang, -O0):
<simp2>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x1,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1180 <simp2+0x80>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xea2(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    116d <simp2+0x6d>
jmp    1180 <simp2+0x80>
jmp    1172 <simp2+0x72>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1127 <simp2+0x27>
mov    -0x24(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    1191 <simp2+0x91>
jmp    13de <simp2+0x2de>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movss  0x4(%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     13de <simp2+0x2de>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xddc(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    13cb <simp2+0x2cb>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movss  0x4(%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    12a0 <simp2+0x1a0>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    13c6 <simp2+0x2c6>
movss  -0x30(%rbp),%xmm0
ucomiss -0x34(%rbp),%xmm0
jne    13c1 <simp2+0x2c1>
jp     13c1 <simp2+0x2c1>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     13a0 <simp2+0x2a0>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
ucomiss -0x28(%rbp),%xmm0
jne    1388 <simp2+0x288>
jp     1388 <simp2+0x288>
jmp    138d <simp2+0x28d>
jmp    13a0 <simp2+0x2a0>
jmp    1392 <simp2+0x292>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12bc <simp2+0x1bc>
movss  -0x2c(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    13bc <simp2+0x2bc>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    13c1 <simp2+0x2c1>
jmp    13c6 <simp2+0x2c6>
jmp    13cb <simp2+0x2cb>
jmp    13d0 <simp2+0x2d0>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11ed <simp2+0xed>
pop    %rbp
ret

x86 assembly (clang, -O2):
<simp2>:
push   %r15
push   %r14
push   %r12
push   %rbx
movl   $0x0,(%rcx)
add    $0x1,%r8d
movslq %r8d,%r8
xor    %r12d,%r12d
test   %esi,%esi
mov    $0x0,%r9d
cmovg  %esi,%r9d
movsd  0xed5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
cmp    %r12,%r9
je     1246 <simp2+0x146>
mov    0x10(%rdi,%r12,8),%rbx
movss  (%rbx,%r8,4),%xmm1
cvtss2sd %xmm1,%xmm1
add    $0x1,%r12
ucomisd %xmm1,%xmm0
jbe    1130 <simp2+0x30>
mov    0x8(%rdi,%r12,8),%rbx
movss  0x4(%rbx),%xmm1
movss  (%rbx,%r8,4),%xmm2
mov    %r12d,(%rcx)
cmp    %esi,%r12d
jge    1246 <simp2+0x146>
lea    0x1(%r12),%r9
xorps  0xe96(%rip),%xmm1
divss  %xmm2,%xmm1
movslq %edx,%r10
add    $0x1,%esi
movaps 0xe85(%rip),%xmm2
jmp    11a2 <simp2+0xa2>
nopl   (%rax)
movaps %xmm4,%xmm1
mov    %r11d,(%rcx)
mov    %r11d,%r12d
cmp    %rsi,%r9
je     1246 <simp2+0x146>
mov    %r9,%r11
add    $0x1,%r9
mov    0x8(%rdi,%r11,8),%r15
movss  (%r15,%r8,4),%xmm5
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
ucomisd %xmm4,%xmm0
jbe    1199 <simp2+0x99>
movss  0x4(%r15),%xmm4
xorps  %xmm2,%xmm4
divss  %xmm5,%xmm4
ucomiss %xmm4,%xmm1
ja     1190 <simp2+0x90>
ucomiss %xmm1,%xmm4
jne    1199 <simp2+0x99>
jp     1199 <simp2+0x99>
test   %edx,%edx
jle    1231 <simp2+0x131>
movslq %r12d,%rbx
mov    0x8(%rdi,%rbx,8),%r14
movss  (%r14,%r8,4),%xmm4
unpcklps %xmm5,%xmm4
mov    $0x1,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movss  0x4(%r15,%rbx,4),%xmm5
movss  0x4(%r14,%rbx,4),%xmm3
unpcklps %xmm5,%xmm3
xorps  %xmm2,%xmm3
divps  %xmm4,%xmm3
movaps %xmm3,%xmm5
shufps $0x55,%xmm3,%xmm5
ucomiss %xmm3,%xmm5
jne    1231 <simp2+0x131>
jp     1231 <simp2+0x131>
lea    0x1(%rbx),%rax
cmp    %r10,%rbx
mov    %rax,%rbx
jl     1200 <simp2+0x100>
movaps %xmm3,%xmm4
shufps $0x55,%xmm3,%xmm4
ucomiss %xmm4,%xmm3
ja     1193 <simp2+0x93>
jmp    1199 <simp2+0x99>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
define void @simp2(float** nocapture %0, i32 %1, i32 %2, i32* nocapture %3, i32 %4) {
store i32 0, i32* %3
%6 = add nsw i32 %4, 1
%7 = sext i32 %6 to i64
%8 = call i32 @llvm.smax.i32(i32 %1, i32 0)
%9 = add nuw i32 %8, 1
%10 = zext i32 %9 to i64
br label %11
11: ; preds = %14, %5
%12 = phi i64 [ %15, %14 ], [ 1, %5 ]
%13 = icmp eq i64 %12, %10
br i1 %13, label %100, label %14
14: ; preds = %11
%15 = add nuw nsw i64 %12, 1
%16 = getelementptr inbounds float*, float** %0, i64 %15
%17 = load float*, float** %16
%18 = getelementptr inbounds float, float* %17, i64 %7
%19 = load float, float* %18
%20 = fpext float %19 to double
%21 = fcmp olt double %20, 0xBEB0C6F7A0B5ED8D
br i1 %21, label %22, label %11
22: ; preds = %14
%23 = trunc i64 %12 to i32
%24 = add nuw i64 %12, 1
%25 = and i64 %24, 4294967295
%26 = getelementptr inbounds float*, float** %0, i64 %25
%27 = load float*, float** %26
%28 = getelementptr inbounds float, float* %27, i64 1
%29 = load float, float* %28
%30 = getelementptr inbounds float, float* %27, i64 %7
%31 = load float, float* %30
store i32 %23, i32* %3
%32 = icmp slt i32 %23, %1
br i1 %32, label %33, label %100
33: ; preds = %22
%34 = fneg float %29
%35 = fdiv float %34, %31
%36 = icmp slt i32 %2, 1
%37 = sext i32 %2 to i64
%38 = add i32 %1, 1
%39 = zext i32 %38 to i64
br label %40
40: ; preds = %33, %95
%41 = phi i32 [ %23, %33 ], [ %96, %95 ]
%42 = phi i64 [ %15, %33 ], [ %45, %95 ]
%43 = phi float [ %35, %33 ], [ %97, %95 ]
%44 = phi <2 x float> [ undef, %33 ], [ %98, %95 ]
%45 = add nuw nsw i64 %42, 1
%46 = getelementptr inbounds float*, float** %0, i64 %45
%47 = load float*, float** %46
%48 = getelementptr inbounds float, float* %47, i64 %7
%49 = load float, float* %48
%50 = fpext float %49 to double
%51 = fcmp olt double %50, 0xBEB0C6F7A0B5ED8D
br i1 %51, label %52, label %95
52: ; preds = %40
%53 = getelementptr inbounds float, float* %47, i64 1
%54 = load float, float* %53
%55 = fneg float %54
%56 = fdiv float %55, %49
%57 = fcmp olt float %56, %43
br i1 %57, label %91, label %58
58: ; preds = %52
%59 = fcmp oeq float %56, %43
br i1 %59, label %60, label %95
60: ; preds = %58
br i1 %36, label %86, label %61
61: ; preds = %60
%62 = add nsw i32 %41, 1
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds float*, float** %0, i64 %63
%65 = load float*, float** %64
%66 = getelementptr inbounds float, float* %65, i64 %7
%67 = load float, float* %66
%68 = insertelement <2 x float> poison, float %67, i64 0
%69 = insertelement <2 x float> %68, float %49, i64 1
br label %70
70: ; preds = %70, %61
%71 = phi i64 [ %72, %70 ], [ 1, %61 ]
%72 = add nuw nsw i64 %71, 1
%73 = getelementptr inbounds float, float* %65, i64 %72
%74 = load float, float* %73
%75 = getelementptr inbounds float, float* %47, i64 %72
%76 = load float, float* %75
%77 = insertelement <2 x float> poison, float %74, i64 0
%78 = insertelement <2 x float> %77, float %76, i64 1
%79 = fneg <2 x float> %78
%80 = fdiv <2 x float> %79, %69
%81 = extractelement <2 x float> %80, i64 0
%82 = extractelement <2 x float> %80, i64 1
%83 = fcmp une float %82, %81
%84 = icmp sge i64 %71, %37
%85 = select i1 %83, i1 true, i1 %84
br i1 %85, label %86, label %70
86: ; preds = %70, %60
%87 = phi <2 x float> [ %44, %60 ], [ %80, %70 ]
%88 = extractelement <2 x float> %87, i64 0
%89 = extractelement <2 x float> %87, i64 1
%90 = fcmp olt float %89, %88
br i1 %90, label %91, label %95
91: ; preds = %86, %52
%92 = phi float [ %56, %52 ], [ %43, %86 ]
%93 = phi <2 x float> [ %44, %52 ], [ %87, %86 ]
%94 = trunc i64 %42 to i32
store i32 %94, i32* %3
br label %95
95: ; preds = %91, %40, %58, %86
%96 = phi i32 [ %41, %86 ], [ %41, %58 ], [ %41, %40 ], [ %94, %91 ]
%97 = phi float [ %43, %86 ], [ %43, %58 ], [ %43, %40 ], [ %92, %91 ]
%98 = phi <2 x float> [ %87, %86 ], [ %44, %58 ], [ %44, %40 ], [ %93, %91 ]
%99 = icmp eq i64 %45, %39
br i1 %99, label %100, label %40
100: ; preds = %11, %95, %22
ret void
}