void simp2(float **a, int n, int l2[], int nl2, int *ip, int kp, float *q1) {
  int k, ii, i;
  float qp, q0, q;
  *ip = 0;
  for (i = 1; i <= nl2; i++) {
    if (a[l2[i] + 1][kp + 1] < -1.0e-6) {
      *q1 = -a[l2[i] + 1][1] / a[l2[i] + 1][kp + 1];
      *ip = l2[i];
      for (i = i + 1; i <= nl2; i++) {
        ii = l2[i];
        if (a[ii + 1][kp + 1] < -1.0e-6) {
          q = -a[ii + 1][1] / a[ii + 1][kp + 1];
          if (q < *q1) {
            *ip = ii;
            *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[ii + 1][k + 1] / a[ii + 1][kp + 1];
              if (q0 != qp)
                break;
            }
            if (q0 < qp)
              *ip = ii;
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<simp2>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jg     140c <simp2+0x30c>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x38(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe92(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    13f9 <simp2+0x2f9>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x38(%rbp),%rdx
mov    (%rcx,%rdx,4),%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    -0x18(%rbp),%rcx
movslq -0x38(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jg     13f4 <simp2+0x2f4>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xdcf(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    13e1 <simp2+0x2e1>
mov    -0x8(%rbp),%rax
mov    -0x34(%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    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm1
mov    0x10(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    12b3 <simp2+0x1b3>
mov    -0x34(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
movss  -0x44(%rbp),%xmm0
mov    0x10(%rbp),%rax
movss  %xmm0,(%rax)
jmp    13dc <simp2+0x2dc>
movss  -0x44(%rbp),%xmm0
mov    0x10(%rbp),%rax
ucomiss (%rax),%xmm0
jne    13d7 <simp2+0x2d7>
jp     13d7 <simp2+0x2d7>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     13b6 <simp2+0x2b6>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x30(%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    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x30(%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    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
divss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    139e <simp2+0x29e>
jp     139e <simp2+0x29e>
jmp    13a3 <simp2+0x2a3>
jmp    13b6 <simp2+0x2b6>
jmp    13a8 <simp2+0x2a8>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12d2 <simp2+0x1d2>
movss  -0x40(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    13d2 <simp2+0x2d2>
mov    -0x34(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
jmp    13d7 <simp2+0x2d7>
jmp    13dc <simp2+0x2dc>
jmp    13e1 <simp2+0x2e1>
jmp    13e6 <simp2+0x2e6>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11ec <simp2+0xec>
jmp    13f9 <simp2+0x2f9>
jmp    13fe <simp2+0x2fe>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    112f <simp2+0x2f>
pop    %rbp
ret

x86 assembly (clang, -O2):
<simp2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %esi,-0x4(%rsp)
movl   $0x0,(%r8)
test   %ecx,%ecx
jle    1268 <simp2+0x168>
mov    0x38(%rsp),%rsi
add    $0x1,%r9d
movslq %r9d,%r9
movslq -0x4(%rsp),%r14
lea    0x1(%rcx),%r11d
mov    $0x1,%eax
movsd  0xec1(%rip),%xmm0
movaps 0xeca(%rip),%xmm1
jmp    1160 <simp2+0x60>
nopl   0x0(%rax,%rax,1)
mov    %r11d,%eax
lea    0x1(%rax),%ebp
cmp    %ecx,%eax
mov    %ebp,%eax
jge    1268 <simp2+0x168>
movslq %eax,%r13
movslq (%rdx,%r13,4),%r15
mov    0x8(%rdi,%r15,8),%rbx
movss  (%rbx,%r9,4),%xmm4
xorps  %xmm3,%xmm3
cvtss2sd %xmm4,%xmm3
ucomisd %xmm3,%xmm0
jbe    1153 <simp2+0x53>
movss  0x4(%rbx),%xmm3
xorps  %xmm1,%xmm3
divss  %xmm4,%xmm3
movss  %xmm3,(%rsi)
mov    %r15d,(%r8)
cmp    %ecx,%eax
jge    1260 <simp2+0x160>
add    $0x1,%r13
jmp    11b6 <simp2+0xb6>
mov    %r12d,(%r8)
movss  %xmm4,(%rsi)
add    $0x1,%r13
mov    %r12d,%r15d
movaps %xmm4,%xmm3
cmp    %r13d,%r11d
je     1150 <simp2+0x50>
movslq (%rdx,%r13,4),%r12
mov    0x8(%rdi,%r12,8),%rax
movss  (%rax,%r9,4),%xmm5
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
ucomisd %xmm4,%xmm0
jbe    1250 <simp2+0x150>
movss  0x4(%rax),%xmm4
xorps  %xmm1,%xmm4
divss  %xmm5,%xmm4
ucomiss %xmm4,%xmm3
ja     11a0 <simp2+0xa0>
ucomiss %xmm3,%xmm4
jne    1250 <simp2+0x150>
jp     1250 <simp2+0x150>
cmpl   $0x0,-0x4(%rsp)
jle    123f <simp2+0x13f>
movslq %r15d,%rbx
mov    0x8(%rdi,%rbx,8),%rbx
movss  (%rbx,%r9,4),%xmm4
unpcklps %xmm5,%xmm4
mov    $0x1,%ebp
nopw   0x0(%rax,%rax,1)
movss  0x4(%rax,%rbp,4),%xmm5
movss  0x4(%rbx,%rbp,4),%xmm2
unpcklps %xmm5,%xmm2
xorps  %xmm1,%xmm2
divps  %xmm4,%xmm2
movaps %xmm2,%xmm5
shufps $0x55,%xmm2,%xmm5
ucomiss %xmm2,%xmm5
jne    123f <simp2+0x13f>
jp     123f <simp2+0x13f>
lea    0x1(%rbp),%r10
cmp    %r14,%rbp
mov    %r10,%rbp
jl     1210 <simp2+0x110>
movaps %xmm2,%xmm4
shufps $0x55,%xmm2,%xmm4
ucomiss %xmm4,%xmm2
jbe    1250 <simp2+0x150>
mov    %r12d,(%r8)
jmp    1253 <simp2+0x153>
mov    %r15d,%r12d
movaps %xmm3,%xmm4
jmp    11a7 <simp2+0xa7>
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
jmp    1153 <simp2+0x53>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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