; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (slantp)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @slantp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca i64, align 8
  %25 = alloca float, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %26 = load ptr, ptr %12, align 8, !tbaa !5
  %27 = getelementptr inbounds float, ptr %26, i32 -1
  store ptr %27, ptr %12, align 8, !tbaa !5
  %28 = load ptr, ptr %11, align 8, !tbaa !5
  %29 = getelementptr inbounds float, ptr %28, i32 -1
  store ptr %29, ptr %11, align 8, !tbaa !5
  %30 = load ptr, ptr %10, align 8, !tbaa !5
  %31 = load i64, ptr %30, align 8, !tbaa !9
  %32 = icmp eq i64 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %6
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  br label %933

34:                                               ; preds = %6
  %35 = load ptr, ptr %7, align 8, !tbaa !5
  %36 = call i64 @lsame_(ptr noundef %35, ptr noundef @.str)
  %37 = icmp ne i64 %36, 0
  br i1 %37, label %38, label %290

38:                                               ; preds = %34
  store i64 1, ptr %21, align 8, !tbaa !9
  %39 = load ptr, ptr %9, align 8, !tbaa !5
  %40 = call i64 @lsame_(ptr noundef %39, ptr noundef @.str.1)
  %41 = icmp ne i64 %40, 0
  br i1 %41, label %42, label %166

42:                                               ; preds = %38
  store float 1.000000e+00, ptr %25, align 4, !tbaa !11
  %43 = load ptr, ptr %8, align 8, !tbaa !5
  %44 = call i64 @lsame_(ptr noundef %43, ptr noundef @.str.1)
  %45 = icmp ne i64 %44, 0
  br i1 %45, label %46, label %102

46:                                               ; preds = %42
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %48, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %49

49:                                               ; preds = %98, %46
  %50 = load i64, ptr %20, align 8, !tbaa !9
  %51 = load i64, ptr %13, align 8, !tbaa !9
  %52 = icmp sle i64 %50, %51
  br i1 %52, label %53, label %101

53:                                               ; preds = %49
  %54 = load i64, ptr %21, align 8, !tbaa !9
  %55 = load i64, ptr %20, align 8, !tbaa !9
  %56 = add nsw i64 %54, %55
  %57 = sub nsw i64 %56, 2
  store i64 %57, ptr %14, align 8, !tbaa !9
  %58 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %58, ptr %19, align 8, !tbaa !9
  br label %59

59:                                               ; preds = %91, %53
  %60 = load i64, ptr %19, align 8, !tbaa !9
  %61 = load i64, ptr %14, align 8, !tbaa !9
  %62 = icmp sle i64 %60, %61
  br i1 %62, label %63, label %94

63:                                               ; preds = %59
  %64 = load float, ptr %25, align 4, !tbaa !11
  store float %64, ptr %17, align 4, !tbaa !11
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i64, ptr %19, align 8, !tbaa !9
  %67 = getelementptr inbounds float, ptr %65, i64 %66
  %68 = load float, ptr %67, align 4, !tbaa !11
  store float %68, ptr %16, align 4, !tbaa !11
  %69 = load float, ptr %16, align 4, !tbaa !11
  %70 = fcmp oge float %69, 0.000000e+00
  br i1 %70, label %71, label %73

71:                                               ; preds = %63
  %72 = load float, ptr %16, align 4, !tbaa !11
  br label %76

73:                                               ; preds = %63
  %74 = load float, ptr %16, align 4, !tbaa !11
  %75 = fneg float %74
  br label %76

76:                                               ; preds = %73, %71
  %77 = phi float [ %72, %71 ], [ %75, %73 ]
  %78 = fpext float %77 to double
  %79 = fptrunc double %78 to float
  store float %79, ptr %18, align 4, !tbaa !11
  %80 = load float, ptr %17, align 4, !tbaa !11
  %81 = load float, ptr %18, align 4, !tbaa !11
  %82 = fcmp oge float %80, %81
  br i1 %82, label %83, label %85

83:                                               ; preds = %76
  %84 = load float, ptr %17, align 4, !tbaa !11
  br label %87

85:                                               ; preds = %76
  %86 = load float, ptr %18, align 4, !tbaa !11
  br label %87

87:                                               ; preds = %85, %83
  %88 = phi float [ %84, %83 ], [ %86, %85 ]
  %89 = fpext float %88 to double
  %90 = fptrunc double %89 to float
  store float %90, ptr %25, align 4, !tbaa !11
  br label %91

91:                                               ; preds = %87
  %92 = load i64, ptr %19, align 8, !tbaa !9
  %93 = add nsw i64 %92, 1
  store i64 %93, ptr %19, align 8, !tbaa !9
  br label %59, !llvm.loop !13

94:                                               ; preds = %59
  %95 = load i64, ptr %20, align 8, !tbaa !9
  %96 = load i64, ptr %21, align 8, !tbaa !9
  %97 = add nsw i64 %96, %95
  store i64 %97, ptr %21, align 8, !tbaa !9
  br label %98

98:                                               ; preds = %94
  %99 = load i64, ptr %20, align 8, !tbaa !9
  %100 = add nsw i64 %99, 1
  store i64 %100, ptr %20, align 8, !tbaa !9
  br label %49, !llvm.loop !15

101:                                              ; preds = %49
  br label %165

102:                                              ; preds = %42
  %103 = load ptr, ptr %10, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  store i64 %104, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %161, %102
  %106 = load i64, ptr %20, align 8, !tbaa !9
  %107 = load i64, ptr %13, align 8, !tbaa !9
  %108 = icmp sle i64 %106, %107
  br i1 %108, label %109, label %164

109:                                              ; preds = %105
  %110 = load i64, ptr %21, align 8, !tbaa !9
  %111 = load ptr, ptr %10, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = add nsw i64 %110, %112
  %114 = load i64, ptr %20, align 8, !tbaa !9
  %115 = sub nsw i64 %113, %114
  store i64 %115, ptr %14, align 8, !tbaa !9
  %116 = load i64, ptr %21, align 8, !tbaa !9
  %117 = add nsw i64 %116, 1
  store i64 %117, ptr %19, align 8, !tbaa !9
  br label %118

118:                                              ; preds = %150, %109
  %119 = load i64, ptr %19, align 8, !tbaa !9
  %120 = load i64, ptr %14, align 8, !tbaa !9
  %121 = icmp sle i64 %119, %120
  br i1 %121, label %122, label %153

122:                                              ; preds = %118
  %123 = load float, ptr %25, align 4, !tbaa !11
  store float %123, ptr %17, align 4, !tbaa !11
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = load i64, ptr %19, align 8, !tbaa !9
  %126 = getelementptr inbounds float, ptr %124, i64 %125
  %127 = load float, ptr %126, align 4, !tbaa !11
  store float %127, ptr %16, align 4, !tbaa !11
  %128 = load float, ptr %16, align 4, !tbaa !11
  %129 = fcmp oge float %128, 0.000000e+00
  br i1 %129, label %130, label %132

130:                                              ; preds = %122
  %131 = load float, ptr %16, align 4, !tbaa !11
  br label %135

132:                                              ; preds = %122
  %133 = load float, ptr %16, align 4, !tbaa !11
  %134 = fneg float %133
  br label %135

135:                                              ; preds = %132, %130
  %136 = phi float [ %131, %130 ], [ %134, %132 ]
  %137 = fpext float %136 to double
  %138 = fptrunc double %137 to float
  store float %138, ptr %18, align 4, !tbaa !11
  %139 = load float, ptr %17, align 4, !tbaa !11
  %140 = load float, ptr %18, align 4, !tbaa !11
  %141 = fcmp oge float %139, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %135
  %143 = load float, ptr %17, align 4, !tbaa !11
  br label %146

144:                                              ; preds = %135
  %145 = load float, ptr %18, align 4, !tbaa !11
  br label %146

146:                                              ; preds = %144, %142
  %147 = phi float [ %143, %142 ], [ %145, %144 ]
  %148 = fpext float %147 to double
  %149 = fptrunc double %148 to float
  store float %149, ptr %25, align 4, !tbaa !11
  br label %150

150:                                              ; preds = %146
  %151 = load i64, ptr %19, align 8, !tbaa !9
  %152 = add nsw i64 %151, 1
  store i64 %152, ptr %19, align 8, !tbaa !9
  br label %118, !llvm.loop !16

153:                                              ; preds = %118
  %154 = load i64, ptr %21, align 8, !tbaa !9
  %155 = load ptr, ptr %10, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = add nsw i64 %154, %156
  %158 = load i64, ptr %20, align 8, !tbaa !9
  %159 = sub nsw i64 %157, %158
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %21, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %153
  %162 = load i64, ptr %20, align 8, !tbaa !9
  %163 = add nsw i64 %162, 1
  store i64 %163, ptr %20, align 8, !tbaa !9
  br label %105, !llvm.loop !17

164:                                              ; preds = %105
  br label %165

165:                                              ; preds = %164, %101
  br label %289

166:                                              ; preds = %38
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = call i64 @lsame_(ptr noundef %167, ptr noundef @.str.1)
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %226

170:                                              ; preds = %166
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  store i64 %172, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %222, %170
  %174 = load i64, ptr %20, align 8, !tbaa !9
  %175 = load i64, ptr %13, align 8, !tbaa !9
  %176 = icmp sle i64 %174, %175
  br i1 %176, label %177, label %225

177:                                              ; preds = %173
  %178 = load i64, ptr %21, align 8, !tbaa !9
  %179 = load i64, ptr %20, align 8, !tbaa !9
  %180 = add nsw i64 %178, %179
  %181 = sub nsw i64 %180, 1
  store i64 %181, ptr %14, align 8, !tbaa !9
  %182 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %182, ptr %19, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %215, %177
  %184 = load i64, ptr %19, align 8, !tbaa !9
  %185 = load i64, ptr %14, align 8, !tbaa !9
  %186 = icmp sle i64 %184, %185
  br i1 %186, label %187, label %218

187:                                              ; preds = %183
  %188 = load float, ptr %25, align 4, !tbaa !11
  store float %188, ptr %17, align 4, !tbaa !11
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = load i64, ptr %19, align 8, !tbaa !9
  %191 = getelementptr inbounds float, ptr %189, i64 %190
  %192 = load float, ptr %191, align 4, !tbaa !11
  store float %192, ptr %16, align 4, !tbaa !11
  %193 = load float, ptr %16, align 4, !tbaa !11
  %194 = fcmp oge float %193, 0.000000e+00
  br i1 %194, label %195, label %197

195:                                              ; preds = %187
  %196 = load float, ptr %16, align 4, !tbaa !11
  br label %200

197:                                              ; preds = %187
  %198 = load float, ptr %16, align 4, !tbaa !11
  %199 = fneg float %198
  br label %200

200:                                              ; preds = %197, %195
  %201 = phi float [ %196, %195 ], [ %199, %197 ]
  %202 = fpext float %201 to double
  %203 = fptrunc double %202 to float
  store float %203, ptr %18, align 4, !tbaa !11
  %204 = load float, ptr %17, align 4, !tbaa !11
  %205 = load float, ptr %18, align 4, !tbaa !11
  %206 = fcmp oge float %204, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %200
  %208 = load float, ptr %17, align 4, !tbaa !11
  br label %211

209:                                              ; preds = %200
  %210 = load float, ptr %18, align 4, !tbaa !11
  br label %211

211:                                              ; preds = %209, %207
  %212 = phi float [ %208, %207 ], [ %210, %209 ]
  %213 = fpext float %212 to double
  %214 = fptrunc double %213 to float
  store float %214, ptr %25, align 4, !tbaa !11
  br label %215

215:                                              ; preds = %211
  %216 = load i64, ptr %19, align 8, !tbaa !9
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %19, align 8, !tbaa !9
  br label %183, !llvm.loop !18

218:                                              ; preds = %183
  %219 = load i64, ptr %20, align 8, !tbaa !9
  %220 = load i64, ptr %21, align 8, !tbaa !9
  %221 = add nsw i64 %220, %219
  store i64 %221, ptr %21, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %218
  %223 = load i64, ptr %20, align 8, !tbaa !9
  %224 = add nsw i64 %223, 1
  store i64 %224, ptr %20, align 8, !tbaa !9
  br label %173, !llvm.loop !19

225:                                              ; preds = %173
  br label %288

226:                                              ; preds = %166
  %227 = load ptr, ptr %10, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  store i64 %228, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %284, %226
  %230 = load i64, ptr %20, align 8, !tbaa !9
  %231 = load i64, ptr %13, align 8, !tbaa !9
  %232 = icmp sle i64 %230, %231
  br i1 %232, label %233, label %287

233:                                              ; preds = %229
  %234 = load i64, ptr %21, align 8, !tbaa !9
  %235 = load ptr, ptr %10, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = add nsw i64 %234, %236
  %238 = load i64, ptr %20, align 8, !tbaa !9
  %239 = sub nsw i64 %237, %238
  store i64 %239, ptr %14, align 8, !tbaa !9
  %240 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %240, ptr %19, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %273, %233
  %242 = load i64, ptr %19, align 8, !tbaa !9
  %243 = load i64, ptr %14, align 8, !tbaa !9
  %244 = icmp sle i64 %242, %243
  br i1 %244, label %245, label %276

245:                                              ; preds = %241
  %246 = load float, ptr %25, align 4, !tbaa !11
  store float %246, ptr %17, align 4, !tbaa !11
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = load i64, ptr %19, align 8, !tbaa !9
  %249 = getelementptr inbounds float, ptr %247, i64 %248
  %250 = load float, ptr %249, align 4, !tbaa !11
  store float %250, ptr %16, align 4, !tbaa !11
  %251 = load float, ptr %16, align 4, !tbaa !11
  %252 = fcmp oge float %251, 0.000000e+00
  br i1 %252, label %253, label %255

253:                                              ; preds = %245
  %254 = load float, ptr %16, align 4, !tbaa !11
  br label %258

255:                                              ; preds = %245
  %256 = load float, ptr %16, align 4, !tbaa !11
  %257 = fneg float %256
  br label %258

258:                                              ; preds = %255, %253
  %259 = phi float [ %254, %253 ], [ %257, %255 ]
  %260 = fpext float %259 to double
  %261 = fptrunc double %260 to float
  store float %261, ptr %18, align 4, !tbaa !11
  %262 = load float, ptr %17, align 4, !tbaa !11
  %263 = load float, ptr %18, align 4, !tbaa !11
  %264 = fcmp oge float %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %258
  %266 = load float, ptr %17, align 4, !tbaa !11
  br label %269

267:                                              ; preds = %258
  %268 = load float, ptr %18, align 4, !tbaa !11
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi float [ %266, %265 ], [ %268, %267 ]
  %271 = fpext float %270 to double
  %272 = fptrunc double %271 to float
  store float %272, ptr %25, align 4, !tbaa !11
  br label %273

273:                                              ; preds = %269
  %274 = load i64, ptr %19, align 8, !tbaa !9
  %275 = add nsw i64 %274, 1
  store i64 %275, ptr %19, align 8, !tbaa !9
  br label %241, !llvm.loop !20

276:                                              ; preds = %241
  %277 = load i64, ptr %21, align 8, !tbaa !9
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = add nsw i64 %277, %279
  %281 = load i64, ptr %20, align 8, !tbaa !9
  %282 = sub nsw i64 %280, %281
  %283 = add nsw i64 %282, 1
  store i64 %283, ptr %21, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %276
  %285 = load i64, ptr %20, align 8, !tbaa !9
  %286 = add nsw i64 %285, 1
  store i64 %286, ptr %20, align 8, !tbaa !9
  br label %229, !llvm.loop !21

287:                                              ; preds = %229
  br label %288

288:                                              ; preds = %287, %225
  br label %289

289:                                              ; preds = %288, %165
  br label %932

290:                                              ; preds = %34
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = call i64 @lsame_(ptr noundef %291, ptr noundef @.str.2)
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %299, label %294

294:                                              ; preds = %290
  %295 = load ptr, ptr %7, align 8, !tbaa !5
  %296 = load i8, ptr %295, align 1, !tbaa !22
  %297 = zext i8 %296 to i32
  %298 = icmp eq i32 %297, 49
  br i1 %298, label %299, label %505

299:                                              ; preds = %294, %290
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %300 = load ptr, ptr %9, align 8, !tbaa !5
  %301 = call i64 @lsame_(ptr noundef %300, ptr noundef @.str.1)
  store i64 %301, ptr %24, align 8, !tbaa !9
  %302 = load ptr, ptr %8, align 8, !tbaa !5
  %303 = call i64 @lsame_(ptr noundef %302, ptr noundef @.str.1)
  %304 = icmp ne i64 %303, 0
  br i1 %304, label %305, label %400

305:                                              ; preds = %299
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  store i64 %307, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %396, %305
  %309 = load i64, ptr %20, align 8, !tbaa !9
  %310 = load i64, ptr %13, align 8, !tbaa !9
  %311 = icmp sle i64 %309, %310
  br i1 %311, label %312, label %399

312:                                              ; preds = %308
  %313 = load i64, ptr %24, align 8, !tbaa !9
  %314 = icmp ne i64 %313, 0
  br i1 %314, label %315, label %348

315:                                              ; preds = %312
  store float 1.000000e+00, ptr %22, align 4, !tbaa !11
  %316 = load i64, ptr %21, align 8, !tbaa !9
  %317 = load i64, ptr %20, align 8, !tbaa !9
  %318 = add nsw i64 %316, %317
  %319 = sub nsw i64 %318, 2
  store i64 %319, ptr %14, align 8, !tbaa !9
  %320 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %320, ptr %19, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %344, %315
  %322 = load i64, ptr %19, align 8, !tbaa !9
  %323 = load i64, ptr %14, align 8, !tbaa !9
  %324 = icmp sle i64 %322, %323
  br i1 %324, label %325, label %347

325:                                              ; preds = %321
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = load i64, ptr %19, align 8, !tbaa !9
  %328 = getelementptr inbounds float, ptr %326, i64 %327
  %329 = load float, ptr %328, align 4, !tbaa !11
  store float %329, ptr %16, align 4, !tbaa !11
  %330 = load float, ptr %16, align 4, !tbaa !11
  %331 = fcmp oge float %330, 0.000000e+00
  br i1 %331, label %332, label %334

332:                                              ; preds = %325
  %333 = load float, ptr %16, align 4, !tbaa !11
  br label %337

334:                                              ; preds = %325
  %335 = load float, ptr %16, align 4, !tbaa !11
  %336 = fneg float %335
  br label %337

337:                                              ; preds = %334, %332
  %338 = phi float [ %333, %332 ], [ %336, %334 ]
  %339 = fpext float %338 to double
  %340 = load float, ptr %22, align 4, !tbaa !11
  %341 = fpext float %340 to double
  %342 = fadd double %341, %339
  %343 = fptrunc double %342 to float
  store float %343, ptr %22, align 4, !tbaa !11
  br label %344

344:                                              ; preds = %337
  %345 = load i64, ptr %19, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %19, align 8, !tbaa !9
  br label %321, !llvm.loop !23

347:                                              ; preds = %321
  br label %381

348:                                              ; preds = %312
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  %349 = load i64, ptr %21, align 8, !tbaa !9
  %350 = load i64, ptr %20, align 8, !tbaa !9
  %351 = add nsw i64 %349, %350
  %352 = sub nsw i64 %351, 1
  store i64 %352, ptr %14, align 8, !tbaa !9
  %353 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %353, ptr %19, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %377, %348
  %355 = load i64, ptr %19, align 8, !tbaa !9
  %356 = load i64, ptr %14, align 8, !tbaa !9
  %357 = icmp sle i64 %355, %356
  br i1 %357, label %358, label %380

358:                                              ; preds = %354
  %359 = load ptr, ptr %11, align 8, !tbaa !5
  %360 = load i64, ptr %19, align 8, !tbaa !9
  %361 = getelementptr inbounds float, ptr %359, i64 %360
  %362 = load float, ptr %361, align 4, !tbaa !11
  store float %362, ptr %16, align 4, !tbaa !11
  %363 = load float, ptr %16, align 4, !tbaa !11
  %364 = fcmp oge float %363, 0.000000e+00
  br i1 %364, label %365, label %367

365:                                              ; preds = %358
  %366 = load float, ptr %16, align 4, !tbaa !11
  br label %370

367:                                              ; preds = %358
  %368 = load float, ptr %16, align 4, !tbaa !11
  %369 = fneg float %368
  br label %370

370:                                              ; preds = %367, %365
  %371 = phi float [ %366, %365 ], [ %369, %367 ]
  %372 = fpext float %371 to double
  %373 = load float, ptr %22, align 4, !tbaa !11
  %374 = fpext float %373 to double
  %375 = fadd double %374, %372
  %376 = fptrunc double %375 to float
  store float %376, ptr %22, align 4, !tbaa !11
  br label %377

377:                                              ; preds = %370
  %378 = load i64, ptr %19, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  store i64 %379, ptr %19, align 8, !tbaa !9
  br label %354, !llvm.loop !24

380:                                              ; preds = %354
  br label %381

381:                                              ; preds = %380, %347
  %382 = load i64, ptr %20, align 8, !tbaa !9
  %383 = load i64, ptr %21, align 8, !tbaa !9
  %384 = add nsw i64 %383, %382
  store i64 %384, ptr %21, align 8, !tbaa !9
  %385 = load float, ptr %25, align 4, !tbaa !11
  %386 = load float, ptr %22, align 4, !tbaa !11
  %387 = fcmp oge float %385, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %381
  %389 = load float, ptr %25, align 4, !tbaa !11
  br label %392

390:                                              ; preds = %381
  %391 = load float, ptr %22, align 4, !tbaa !11
  br label %392

392:                                              ; preds = %390, %388
  %393 = phi float [ %389, %388 ], [ %391, %390 ]
  %394 = fpext float %393 to double
  %395 = fptrunc double %394 to float
  store float %395, ptr %25, align 4, !tbaa !11
  br label %396

396:                                              ; preds = %392
  %397 = load i64, ptr %20, align 8, !tbaa !9
  %398 = add nsw i64 %397, 1
  store i64 %398, ptr %20, align 8, !tbaa !9
  br label %308, !llvm.loop !25

399:                                              ; preds = %308
  br label %504

400:                                              ; preds = %299
  %401 = load ptr, ptr %10, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  store i64 %402, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %403

403:                                              ; preds = %500, %400
  %404 = load i64, ptr %20, align 8, !tbaa !9
  %405 = load i64, ptr %13, align 8, !tbaa !9
  %406 = icmp sle i64 %404, %405
  br i1 %406, label %407, label %503

407:                                              ; preds = %403
  %408 = load i64, ptr %24, align 8, !tbaa !9
  %409 = icmp ne i64 %408, 0
  br i1 %409, label %410, label %446

410:                                              ; preds = %407
  store float 1.000000e+00, ptr %22, align 4, !tbaa !11
  %411 = load i64, ptr %21, align 8, !tbaa !9
  %412 = load ptr, ptr %10, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = add nsw i64 %411, %413
  %415 = load i64, ptr %20, align 8, !tbaa !9
  %416 = sub nsw i64 %414, %415
  store i64 %416, ptr %14, align 8, !tbaa !9
  %417 = load i64, ptr %21, align 8, !tbaa !9
  %418 = add nsw i64 %417, 1
  store i64 %418, ptr %19, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %442, %410
  %420 = load i64, ptr %19, align 8, !tbaa !9
  %421 = load i64, ptr %14, align 8, !tbaa !9
  %422 = icmp sle i64 %420, %421
  br i1 %422, label %423, label %445

423:                                              ; preds = %419
  %424 = load ptr, ptr %11, align 8, !tbaa !5
  %425 = load i64, ptr %19, align 8, !tbaa !9
  %426 = getelementptr inbounds float, ptr %424, i64 %425
  %427 = load float, ptr %426, align 4, !tbaa !11
  store float %427, ptr %16, align 4, !tbaa !11
  %428 = load float, ptr %16, align 4, !tbaa !11
  %429 = fcmp oge float %428, 0.000000e+00
  br i1 %429, label %430, label %432

430:                                              ; preds = %423
  %431 = load float, ptr %16, align 4, !tbaa !11
  br label %435

432:                                              ; preds = %423
  %433 = load float, ptr %16, align 4, !tbaa !11
  %434 = fneg float %433
  br label %435

435:                                              ; preds = %432, %430
  %436 = phi float [ %431, %430 ], [ %434, %432 ]
  %437 = fpext float %436 to double
  %438 = load float, ptr %22, align 4, !tbaa !11
  %439 = fpext float %438 to double
  %440 = fadd double %439, %437
  %441 = fptrunc double %440 to float
  store float %441, ptr %22, align 4, !tbaa !11
  br label %442

442:                                              ; preds = %435
  %443 = load i64, ptr %19, align 8, !tbaa !9
  %444 = add nsw i64 %443, 1
  store i64 %444, ptr %19, align 8, !tbaa !9
  br label %419, !llvm.loop !26

445:                                              ; preds = %419
  br label %481

446:                                              ; preds = %407
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  %447 = load i64, ptr %21, align 8, !tbaa !9
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = add nsw i64 %447, %449
  %451 = load i64, ptr %20, align 8, !tbaa !9
  %452 = sub nsw i64 %450, %451
  store i64 %452, ptr %14, align 8, !tbaa !9
  %453 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %453, ptr %19, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %477, %446
  %455 = load i64, ptr %19, align 8, !tbaa !9
  %456 = load i64, ptr %14, align 8, !tbaa !9
  %457 = icmp sle i64 %455, %456
  br i1 %457, label %458, label %480

458:                                              ; preds = %454
  %459 = load ptr, ptr %11, align 8, !tbaa !5
  %460 = load i64, ptr %19, align 8, !tbaa !9
  %461 = getelementptr inbounds float, ptr %459, i64 %460
  %462 = load float, ptr %461, align 4, !tbaa !11
  store float %462, ptr %16, align 4, !tbaa !11
  %463 = load float, ptr %16, align 4, !tbaa !11
  %464 = fcmp oge float %463, 0.000000e+00
  br i1 %464, label %465, label %467

465:                                              ; preds = %458
  %466 = load float, ptr %16, align 4, !tbaa !11
  br label %470

467:                                              ; preds = %458
  %468 = load float, ptr %16, align 4, !tbaa !11
  %469 = fneg float %468
  br label %470

470:                                              ; preds = %467, %465
  %471 = phi float [ %466, %465 ], [ %469, %467 ]
  %472 = fpext float %471 to double
  %473 = load float, ptr %22, align 4, !tbaa !11
  %474 = fpext float %473 to double
  %475 = fadd double %474, %472
  %476 = fptrunc double %475 to float
  store float %476, ptr %22, align 4, !tbaa !11
  br label %477

477:                                              ; preds = %470
  %478 = load i64, ptr %19, align 8, !tbaa !9
  %479 = add nsw i64 %478, 1
  store i64 %479, ptr %19, align 8, !tbaa !9
  br label %454, !llvm.loop !27

480:                                              ; preds = %454
  br label %481

481:                                              ; preds = %480, %445
  %482 = load i64, ptr %21, align 8, !tbaa !9
  %483 = load ptr, ptr %10, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = add nsw i64 %482, %484
  %486 = load i64, ptr %20, align 8, !tbaa !9
  %487 = sub nsw i64 %485, %486
  %488 = add nsw i64 %487, 1
  store i64 %488, ptr %21, align 8, !tbaa !9
  %489 = load float, ptr %25, align 4, !tbaa !11
  %490 = load float, ptr %22, align 4, !tbaa !11
  %491 = fcmp oge float %489, %490
  br i1 %491, label %492, label %494

492:                                              ; preds = %481
  %493 = load float, ptr %25, align 4, !tbaa !11
  br label %496

494:                                              ; preds = %481
  %495 = load float, ptr %22, align 4, !tbaa !11
  br label %496

496:                                              ; preds = %494, %492
  %497 = phi float [ %493, %492 ], [ %495, %494 ]
  %498 = fpext float %497 to double
  %499 = fptrunc double %498 to float
  store float %499, ptr %25, align 4, !tbaa !11
  br label %500

500:                                              ; preds = %496
  %501 = load i64, ptr %20, align 8, !tbaa !9
  %502 = add nsw i64 %501, 1
  store i64 %502, ptr %20, align 8, !tbaa !9
  br label %403, !llvm.loop !28

503:                                              ; preds = %403
  br label %504

504:                                              ; preds = %503, %399
  br label %931

505:                                              ; preds = %294
  %506 = load ptr, ptr %7, align 8, !tbaa !5
  %507 = call i64 @lsame_(ptr noundef %506, ptr noundef @.str.3)
  %508 = icmp ne i64 %507, 0
  br i1 %508, label %509, label %797

509:                                              ; preds = %505
  store i64 1, ptr %21, align 8, !tbaa !9
  %510 = load ptr, ptr %8, align 8, !tbaa !5
  %511 = call i64 @lsame_(ptr noundef %510, ptr noundef @.str.1)
  %512 = icmp ne i64 %511, 0
  br i1 %512, label %513, label %639

513:                                              ; preds = %509
  %514 = load ptr, ptr %9, align 8, !tbaa !5
  %515 = call i64 @lsame_(ptr noundef %514, ptr noundef @.str.1)
  %516 = icmp ne i64 %515, 0
  br i1 %516, label %517, label %579

517:                                              ; preds = %513
  %518 = load ptr, ptr %10, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  store i64 %519, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %520

520:                                              ; preds = %528, %517
  %521 = load i64, ptr %19, align 8, !tbaa !9
  %522 = load i64, ptr %13, align 8, !tbaa !9
  %523 = icmp sle i64 %521, %522
  br i1 %523, label %524, label %531

524:                                              ; preds = %520
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = load i64, ptr %19, align 8, !tbaa !9
  %527 = getelementptr inbounds float, ptr %525, i64 %526
  store float 1.000000e+00, ptr %527, align 4, !tbaa !11
  br label %528

528:                                              ; preds = %524
  %529 = load i64, ptr %19, align 8, !tbaa !9
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %19, align 8, !tbaa !9
  br label %520, !llvm.loop !29

531:                                              ; preds = %520
  %532 = load ptr, ptr %10, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  store i64 %533, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %575, %531
  %535 = load i64, ptr %20, align 8, !tbaa !9
  %536 = load i64, ptr %13, align 8, !tbaa !9
  %537 = icmp sle i64 %535, %536
  br i1 %537, label %538, label %578

538:                                              ; preds = %534
  %539 = load i64, ptr %20, align 8, !tbaa !9
  %540 = sub nsw i64 %539, 1
  store i64 %540, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %569, %538
  %542 = load i64, ptr %19, align 8, !tbaa !9
  %543 = load i64, ptr %14, align 8, !tbaa !9
  %544 = icmp sle i64 %542, %543
  br i1 %544, label %545, label %572

545:                                              ; preds = %541
  %546 = load ptr, ptr %11, align 8, !tbaa !5
  %547 = load i64, ptr %21, align 8, !tbaa !9
  %548 = getelementptr inbounds float, ptr %546, i64 %547
  %549 = load float, ptr %548, align 4, !tbaa !11
  store float %549, ptr %16, align 4, !tbaa !11
  %550 = load float, ptr %16, align 4, !tbaa !11
  %551 = fcmp oge float %550, 0.000000e+00
  br i1 %551, label %552, label %554

552:                                              ; preds = %545
  %553 = load float, ptr %16, align 4, !tbaa !11
  br label %557

554:                                              ; preds = %545
  %555 = load float, ptr %16, align 4, !tbaa !11
  %556 = fneg float %555
  br label %557

557:                                              ; preds = %554, %552
  %558 = phi float [ %553, %552 ], [ %556, %554 ]
  %559 = fpext float %558 to double
  %560 = load ptr, ptr %12, align 8, !tbaa !5
  %561 = load i64, ptr %19, align 8, !tbaa !9
  %562 = getelementptr inbounds float, ptr %560, i64 %561
  %563 = load float, ptr %562, align 4, !tbaa !11
  %564 = fpext float %563 to double
  %565 = fadd double %564, %559
  %566 = fptrunc double %565 to float
  store float %566, ptr %562, align 4, !tbaa !11
  %567 = load i64, ptr %21, align 8, !tbaa !9
  %568 = add nsw i64 %567, 1
  store i64 %568, ptr %21, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %557
  %570 = load i64, ptr %19, align 8, !tbaa !9
  %571 = add nsw i64 %570, 1
  store i64 %571, ptr %19, align 8, !tbaa !9
  br label %541, !llvm.loop !30

572:                                              ; preds = %541
  %573 = load i64, ptr %21, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  store i64 %574, ptr %21, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %572
  %576 = load i64, ptr %20, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %20, align 8, !tbaa !9
  br label %534, !llvm.loop !31

578:                                              ; preds = %534
  br label %638

579:                                              ; preds = %513
  %580 = load ptr, ptr %10, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  store i64 %581, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %582

582:                                              ; preds = %590, %579
  %583 = load i64, ptr %19, align 8, !tbaa !9
  %584 = load i64, ptr %13, align 8, !tbaa !9
  %585 = icmp sle i64 %583, %584
  br i1 %585, label %586, label %593

586:                                              ; preds = %582
  %587 = load ptr, ptr %12, align 8, !tbaa !5
  %588 = load i64, ptr %19, align 8, !tbaa !9
  %589 = getelementptr inbounds float, ptr %587, i64 %588
  store float 0.000000e+00, ptr %589, align 4, !tbaa !11
  br label %590

590:                                              ; preds = %586
  %591 = load i64, ptr %19, align 8, !tbaa !9
  %592 = add nsw i64 %591, 1
  store i64 %592, ptr %19, align 8, !tbaa !9
  br label %582, !llvm.loop !32

593:                                              ; preds = %582
  %594 = load ptr, ptr %10, align 8, !tbaa !5
  %595 = load i64, ptr %594, align 8, !tbaa !9
  store i64 %595, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %634, %593
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = load i64, ptr %13, align 8, !tbaa !9
  %599 = icmp sle i64 %597, %598
  br i1 %599, label %600, label %637

600:                                              ; preds = %596
  %601 = load i64, ptr %20, align 8, !tbaa !9
  store i64 %601, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %602

602:                                              ; preds = %630, %600
  %603 = load i64, ptr %19, align 8, !tbaa !9
  %604 = load i64, ptr %14, align 8, !tbaa !9
  %605 = icmp sle i64 %603, %604
  br i1 %605, label %606, label %633

606:                                              ; preds = %602
  %607 = load ptr, ptr %11, align 8, !tbaa !5
  %608 = load i64, ptr %21, align 8, !tbaa !9
  %609 = getelementptr inbounds float, ptr %607, i64 %608
  %610 = load float, ptr %609, align 4, !tbaa !11
  store float %610, ptr %16, align 4, !tbaa !11
  %611 = load float, ptr %16, align 4, !tbaa !11
  %612 = fcmp oge float %611, 0.000000e+00
  br i1 %612, label %613, label %615

613:                                              ; preds = %606
  %614 = load float, ptr %16, align 4, !tbaa !11
  br label %618

615:                                              ; preds = %606
  %616 = load float, ptr %16, align 4, !tbaa !11
  %617 = fneg float %616
  br label %618

618:                                              ; preds = %615, %613
  %619 = phi float [ %614, %613 ], [ %617, %615 ]
  %620 = fpext float %619 to double
  %621 = load ptr, ptr %12, align 8, !tbaa !5
  %622 = load i64, ptr %19, align 8, !tbaa !9
  %623 = getelementptr inbounds float, ptr %621, i64 %622
  %624 = load float, ptr %623, align 4, !tbaa !11
  %625 = fpext float %624 to double
  %626 = fadd double %625, %620
  %627 = fptrunc double %626 to float
  store float %627, ptr %623, align 4, !tbaa !11
  %628 = load i64, ptr %21, align 8, !tbaa !9
  %629 = add nsw i64 %628, 1
  store i64 %629, ptr %21, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %618
  %631 = load i64, ptr %19, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %19, align 8, !tbaa !9
  br label %602, !llvm.loop !33

633:                                              ; preds = %602
  br label %634

634:                                              ; preds = %633
  %635 = load i64, ptr %20, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  store i64 %636, ptr %20, align 8, !tbaa !9
  br label %596, !llvm.loop !34

637:                                              ; preds = %596
  br label %638

638:                                              ; preds = %637, %578
  br label %769

639:                                              ; preds = %509
  %640 = load ptr, ptr %9, align 8, !tbaa !5
  %641 = call i64 @lsame_(ptr noundef %640, ptr noundef @.str.1)
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %643, label %707

643:                                              ; preds = %639
  %644 = load ptr, ptr %10, align 8, !tbaa !5
  %645 = load i64, ptr %644, align 8, !tbaa !9
  store i64 %645, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %646

646:                                              ; preds = %654, %643
  %647 = load i64, ptr %19, align 8, !tbaa !9
  %648 = load i64, ptr %13, align 8, !tbaa !9
  %649 = icmp sle i64 %647, %648
  br i1 %649, label %650, label %657

650:                                              ; preds = %646
  %651 = load ptr, ptr %12, align 8, !tbaa !5
  %652 = load i64, ptr %19, align 8, !tbaa !9
  %653 = getelementptr inbounds float, ptr %651, i64 %652
  store float 1.000000e+00, ptr %653, align 4, !tbaa !11
  br label %654

654:                                              ; preds = %650
  %655 = load i64, ptr %19, align 8, !tbaa !9
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %19, align 8, !tbaa !9
  br label %646, !llvm.loop !35

657:                                              ; preds = %646
  %658 = load ptr, ptr %10, align 8, !tbaa !5
  %659 = load i64, ptr %658, align 8, !tbaa !9
  store i64 %659, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %703, %657
  %661 = load i64, ptr %20, align 8, !tbaa !9
  %662 = load i64, ptr %13, align 8, !tbaa !9
  %663 = icmp sle i64 %661, %662
  br i1 %663, label %664, label %706

664:                                              ; preds = %660
  %665 = load i64, ptr %21, align 8, !tbaa !9
  %666 = add nsw i64 %665, 1
  store i64 %666, ptr %21, align 8, !tbaa !9
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = load i64, ptr %667, align 8, !tbaa !9
  store i64 %668, ptr %14, align 8, !tbaa !9
  %669 = load i64, ptr %20, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  store i64 %670, ptr %19, align 8, !tbaa !9
  br label %671

671:                                              ; preds = %699, %664
  %672 = load i64, ptr %19, align 8, !tbaa !9
  %673 = load i64, ptr %14, align 8, !tbaa !9
  %674 = icmp sle i64 %672, %673
  br i1 %674, label %675, label %702

675:                                              ; preds = %671
  %676 = load ptr, ptr %11, align 8, !tbaa !5
  %677 = load i64, ptr %21, align 8, !tbaa !9
  %678 = getelementptr inbounds float, ptr %676, i64 %677
  %679 = load float, ptr %678, align 4, !tbaa !11
  store float %679, ptr %16, align 4, !tbaa !11
  %680 = load float, ptr %16, align 4, !tbaa !11
  %681 = fcmp oge float %680, 0.000000e+00
  br i1 %681, label %682, label %684

682:                                              ; preds = %675
  %683 = load float, ptr %16, align 4, !tbaa !11
  br label %687

684:                                              ; preds = %675
  %685 = load float, ptr %16, align 4, !tbaa !11
  %686 = fneg float %685
  br label %687

687:                                              ; preds = %684, %682
  %688 = phi float [ %683, %682 ], [ %686, %684 ]
  %689 = fpext float %688 to double
  %690 = load ptr, ptr %12, align 8, !tbaa !5
  %691 = load i64, ptr %19, align 8, !tbaa !9
  %692 = getelementptr inbounds float, ptr %690, i64 %691
  %693 = load float, ptr %692, align 4, !tbaa !11
  %694 = fpext float %693 to double
  %695 = fadd double %694, %689
  %696 = fptrunc double %695 to float
  store float %696, ptr %692, align 4, !tbaa !11
  %697 = load i64, ptr %21, align 8, !tbaa !9
  %698 = add nsw i64 %697, 1
  store i64 %698, ptr %21, align 8, !tbaa !9
  br label %699

699:                                              ; preds = %687
  %700 = load i64, ptr %19, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  store i64 %701, ptr %19, align 8, !tbaa !9
  br label %671, !llvm.loop !36

702:                                              ; preds = %671
  br label %703

703:                                              ; preds = %702
  %704 = load i64, ptr %20, align 8, !tbaa !9
  %705 = add nsw i64 %704, 1
  store i64 %705, ptr %20, align 8, !tbaa !9
  br label %660, !llvm.loop !37

706:                                              ; preds = %660
  br label %768

707:                                              ; preds = %639
  %708 = load ptr, ptr %10, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  store i64 %709, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %710

710:                                              ; preds = %718, %707
  %711 = load i64, ptr %19, align 8, !tbaa !9
  %712 = load i64, ptr %13, align 8, !tbaa !9
  %713 = icmp sle i64 %711, %712
  br i1 %713, label %714, label %721

714:                                              ; preds = %710
  %715 = load ptr, ptr %12, align 8, !tbaa !5
  %716 = load i64, ptr %19, align 8, !tbaa !9
  %717 = getelementptr inbounds float, ptr %715, i64 %716
  store float 0.000000e+00, ptr %717, align 4, !tbaa !11
  br label %718

718:                                              ; preds = %714
  %719 = load i64, ptr %19, align 8, !tbaa !9
  %720 = add nsw i64 %719, 1
  store i64 %720, ptr %19, align 8, !tbaa !9
  br label %710, !llvm.loop !38

721:                                              ; preds = %710
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  store i64 %723, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %724

724:                                              ; preds = %764, %721
  %725 = load i64, ptr %20, align 8, !tbaa !9
  %726 = load i64, ptr %13, align 8, !tbaa !9
  %727 = icmp sle i64 %725, %726
  br i1 %727, label %728, label %767

728:                                              ; preds = %724
  %729 = load ptr, ptr %10, align 8, !tbaa !5
  %730 = load i64, ptr %729, align 8, !tbaa !9
  store i64 %730, ptr %14, align 8, !tbaa !9
  %731 = load i64, ptr %20, align 8, !tbaa !9
  store i64 %731, ptr %19, align 8, !tbaa !9
  br label %732

732:                                              ; preds = %760, %728
  %733 = load i64, ptr %19, align 8, !tbaa !9
  %734 = load i64, ptr %14, align 8, !tbaa !9
  %735 = icmp sle i64 %733, %734
  br i1 %735, label %736, label %763

736:                                              ; preds = %732
  %737 = load ptr, ptr %11, align 8, !tbaa !5
  %738 = load i64, ptr %21, align 8, !tbaa !9
  %739 = getelementptr inbounds float, ptr %737, i64 %738
  %740 = load float, ptr %739, align 4, !tbaa !11
  store float %740, ptr %16, align 4, !tbaa !11
  %741 = load float, ptr %16, align 4, !tbaa !11
  %742 = fcmp oge float %741, 0.000000e+00
  br i1 %742, label %743, label %745

743:                                              ; preds = %736
  %744 = load float, ptr %16, align 4, !tbaa !11
  br label %748

745:                                              ; preds = %736
  %746 = load float, ptr %16, align 4, !tbaa !11
  %747 = fneg float %746
  br label %748

748:                                              ; preds = %745, %743
  %749 = phi float [ %744, %743 ], [ %747, %745 ]
  %750 = fpext float %749 to double
  %751 = load ptr, ptr %12, align 8, !tbaa !5
  %752 = load i64, ptr %19, align 8, !tbaa !9
  %753 = getelementptr inbounds float, ptr %751, i64 %752
  %754 = load float, ptr %753, align 4, !tbaa !11
  %755 = fpext float %754 to double
  %756 = fadd double %755, %750
  %757 = fptrunc double %756 to float
  store float %757, ptr %753, align 4, !tbaa !11
  %758 = load i64, ptr %21, align 8, !tbaa !9
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %21, align 8, !tbaa !9
  br label %760

760:                                              ; preds = %748
  %761 = load i64, ptr %19, align 8, !tbaa !9
  %762 = add nsw i64 %761, 1
  store i64 %762, ptr %19, align 8, !tbaa !9
  br label %732, !llvm.loop !39

763:                                              ; preds = %732
  br label %764

764:                                              ; preds = %763
  %765 = load i64, ptr %20, align 8, !tbaa !9
  %766 = add nsw i64 %765, 1
  store i64 %766, ptr %20, align 8, !tbaa !9
  br label %724, !llvm.loop !40

767:                                              ; preds = %724
  br label %768

768:                                              ; preds = %767, %706
  br label %769

769:                                              ; preds = %768, %638
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  %770 = load ptr, ptr %10, align 8, !tbaa !5
  %771 = load i64, ptr %770, align 8, !tbaa !9
  store i64 %771, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %772

772:                                              ; preds = %793, %769
  %773 = load i64, ptr %19, align 8, !tbaa !9
  %774 = load i64, ptr %13, align 8, !tbaa !9
  %775 = icmp sle i64 %773, %774
  br i1 %775, label %776, label %796

776:                                              ; preds = %772
  %777 = load float, ptr %25, align 4, !tbaa !11
  store float %777, ptr %16, align 4, !tbaa !11
  %778 = load ptr, ptr %12, align 8, !tbaa !5
  %779 = load i64, ptr %19, align 8, !tbaa !9
  %780 = getelementptr inbounds float, ptr %778, i64 %779
  %781 = load float, ptr %780, align 4, !tbaa !11
  store float %781, ptr %17, align 4, !tbaa !11
  %782 = load float, ptr %16, align 4, !tbaa !11
  %783 = load float, ptr %17, align 4, !tbaa !11
  %784 = fcmp oge float %782, %783
  br i1 %784, label %785, label %787

785:                                              ; preds = %776
  %786 = load float, ptr %16, align 4, !tbaa !11
  br label %789

787:                                              ; preds = %776
  %788 = load float, ptr %17, align 4, !tbaa !11
  br label %789

789:                                              ; preds = %787, %785
  %790 = phi float [ %786, %785 ], [ %788, %787 ]
  %791 = fpext float %790 to double
  %792 = fptrunc double %791 to float
  store float %792, ptr %25, align 4, !tbaa !11
  br label %793

793:                                              ; preds = %789
  %794 = load i64, ptr %19, align 8, !tbaa !9
  %795 = add nsw i64 %794, 1
  store i64 %795, ptr %19, align 8, !tbaa !9
  br label %772, !llvm.loop !41

796:                                              ; preds = %772
  br label %930

797:                                              ; preds = %505
  %798 = load ptr, ptr %7, align 8, !tbaa !5
  %799 = call i64 @lsame_(ptr noundef %798, ptr noundef @.str.4)
  %800 = icmp ne i64 %799, 0
  br i1 %800, label %805, label %801

801:                                              ; preds = %797
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = call i64 @lsame_(ptr noundef %802, ptr noundef @.str.5)
  %804 = icmp ne i64 %803, 0
  br i1 %804, label %805, label %929

805:                                              ; preds = %801, %797
  %806 = load ptr, ptr %8, align 8, !tbaa !5
  %807 = call i64 @lsame_(ptr noundef %806, ptr noundef @.str.1)
  %808 = icmp ne i64 %807, 0
  br i1 %808, label %809, label %857

809:                                              ; preds = %805
  %810 = load ptr, ptr %9, align 8, !tbaa !5
  %811 = call i64 @lsame_(ptr noundef %810, ptr noundef @.str.1)
  %812 = icmp ne i64 %811, 0
  br i1 %812, label %813, label %837

813:                                              ; preds = %809
  store float 1.000000e+00, ptr %23, align 4, !tbaa !11
  %814 = load ptr, ptr %10, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  %816 = sitofp i64 %815 to float
  store float %816, ptr %22, align 4, !tbaa !11
  store i64 2, ptr %21, align 8, !tbaa !9
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  %818 = load i64, ptr %817, align 8, !tbaa !9
  store i64 %818, ptr %13, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  br label %819

819:                                              ; preds = %833, %813
  %820 = load i64, ptr %20, align 8, !tbaa !9
  %821 = load i64, ptr %13, align 8, !tbaa !9
  %822 = icmp sle i64 %820, %821
  br i1 %822, label %823, label %836

823:                                              ; preds = %819
  %824 = load i64, ptr %20, align 8, !tbaa !9
  %825 = sub nsw i64 %824, 1
  store i64 %825, ptr %14, align 8, !tbaa !9
  %826 = load ptr, ptr %11, align 8, !tbaa !5
  %827 = load i64, ptr %21, align 8, !tbaa !9
  %828 = getelementptr inbounds float, ptr %826, i64 %827
  %829 = call i32 @slassq_(ptr noundef %14, ptr noundef %828, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %830 = load i64, ptr %20, align 8, !tbaa !9
  %831 = load i64, ptr %21, align 8, !tbaa !9
  %832 = add nsw i64 %831, %830
  store i64 %832, ptr %21, align 8, !tbaa !9
  br label %833

833:                                              ; preds = %823
  %834 = load i64, ptr %20, align 8, !tbaa !9
  %835 = add nsw i64 %834, 1
  store i64 %835, ptr %20, align 8, !tbaa !9
  br label %819, !llvm.loop !42

836:                                              ; preds = %819
  br label %856

837:                                              ; preds = %809
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  store float 1.000000e+00, ptr %22, align 4, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %838 = load ptr, ptr %10, align 8, !tbaa !5
  %839 = load i64, ptr %838, align 8, !tbaa !9
  store i64 %839, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %840

840:                                              ; preds = %852, %837
  %841 = load i64, ptr %20, align 8, !tbaa !9
  %842 = load i64, ptr %13, align 8, !tbaa !9
  %843 = icmp sle i64 %841, %842
  br i1 %843, label %844, label %855

844:                                              ; preds = %840
  %845 = load ptr, ptr %11, align 8, !tbaa !5
  %846 = load i64, ptr %21, align 8, !tbaa !9
  %847 = getelementptr inbounds float, ptr %845, i64 %846
  %848 = call i32 @slassq_(ptr noundef %20, ptr noundef %847, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %849 = load i64, ptr %20, align 8, !tbaa !9
  %850 = load i64, ptr %21, align 8, !tbaa !9
  %851 = add nsw i64 %850, %849
  store i64 %851, ptr %21, align 8, !tbaa !9
  br label %852

852:                                              ; preds = %844
  %853 = load i64, ptr %20, align 8, !tbaa !9
  %854 = add nsw i64 %853, 1
  store i64 %854, ptr %20, align 8, !tbaa !9
  br label %840, !llvm.loop !43

855:                                              ; preds = %840
  br label %856

856:                                              ; preds = %855, %836
  br label %921

857:                                              ; preds = %805
  %858 = load ptr, ptr %9, align 8, !tbaa !5
  %859 = call i64 @lsame_(ptr noundef %858, ptr noundef @.str.1)
  %860 = icmp ne i64 %859, 0
  br i1 %860, label %861, label %892

861:                                              ; preds = %857
  store float 1.000000e+00, ptr %23, align 4, !tbaa !11
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  %863 = load i64, ptr %862, align 8, !tbaa !9
  %864 = sitofp i64 %863 to float
  store float %864, ptr %22, align 4, !tbaa !11
  store i64 2, ptr %21, align 8, !tbaa !9
  %865 = load ptr, ptr %10, align 8, !tbaa !5
  %866 = load i64, ptr %865, align 8, !tbaa !9
  %867 = sub nsw i64 %866, 1
  store i64 %867, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %868

868:                                              ; preds = %888, %861
  %869 = load i64, ptr %20, align 8, !tbaa !9
  %870 = load i64, ptr %13, align 8, !tbaa !9
  %871 = icmp sle i64 %869, %870
  br i1 %871, label %872, label %891

872:                                              ; preds = %868
  %873 = load ptr, ptr %10, align 8, !tbaa !5
  %874 = load i64, ptr %873, align 8, !tbaa !9
  %875 = load i64, ptr %20, align 8, !tbaa !9
  %876 = sub nsw i64 %874, %875
  store i64 %876, ptr %14, align 8, !tbaa !9
  %877 = load ptr, ptr %11, align 8, !tbaa !5
  %878 = load i64, ptr %21, align 8, !tbaa !9
  %879 = getelementptr inbounds float, ptr %877, i64 %878
  %880 = call i32 @slassq_(ptr noundef %14, ptr noundef %879, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %881 = load i64, ptr %21, align 8, !tbaa !9
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = load i64, ptr %882, align 8, !tbaa !9
  %884 = add nsw i64 %881, %883
  %885 = load i64, ptr %20, align 8, !tbaa !9
  %886 = sub nsw i64 %884, %885
  %887 = add nsw i64 %886, 1
  store i64 %887, ptr %21, align 8, !tbaa !9
  br label %888

888:                                              ; preds = %872
  %889 = load i64, ptr %20, align 8, !tbaa !9
  %890 = add nsw i64 %889, 1
  store i64 %890, ptr %20, align 8, !tbaa !9
  br label %868, !llvm.loop !44

891:                                              ; preds = %868
  br label %920

892:                                              ; preds = %857
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  store float 1.000000e+00, ptr %22, align 4, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  store i64 %894, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %895

895:                                              ; preds = %916, %892
  %896 = load i64, ptr %20, align 8, !tbaa !9
  %897 = load i64, ptr %13, align 8, !tbaa !9
  %898 = icmp sle i64 %896, %897
  br i1 %898, label %899, label %919

899:                                              ; preds = %895
  %900 = load ptr, ptr %10, align 8, !tbaa !5
  %901 = load i64, ptr %900, align 8, !tbaa !9
  %902 = load i64, ptr %20, align 8, !tbaa !9
  %903 = sub nsw i64 %901, %902
  %904 = add nsw i64 %903, 1
  store i64 %904, ptr %14, align 8, !tbaa !9
  %905 = load ptr, ptr %11, align 8, !tbaa !5
  %906 = load i64, ptr %21, align 8, !tbaa !9
  %907 = getelementptr inbounds float, ptr %905, i64 %906
  %908 = call i32 @slassq_(ptr noundef %14, ptr noundef %907, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %909 = load i64, ptr %21, align 8, !tbaa !9
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  %911 = load i64, ptr %910, align 8, !tbaa !9
  %912 = add nsw i64 %909, %911
  %913 = load i64, ptr %20, align 8, !tbaa !9
  %914 = sub nsw i64 %912, %913
  %915 = add nsw i64 %914, 1
  store i64 %915, ptr %21, align 8, !tbaa !9
  br label %916

916:                                              ; preds = %899
  %917 = load i64, ptr %20, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %20, align 8, !tbaa !9
  br label %895, !llvm.loop !45

919:                                              ; preds = %895
  br label %920

920:                                              ; preds = %919, %891
  br label %921

921:                                              ; preds = %920, %856
  %922 = load float, ptr %23, align 4, !tbaa !11
  %923 = fpext float %922 to double
  %924 = load float, ptr %22, align 4, !tbaa !11
  %925 = fpext float %924 to double
  %926 = call double @sqrt(double noundef %925) #4
  %927 = fmul double %923, %926
  %928 = fptrunc double %927 to float
  store float %928, ptr %25, align 4, !tbaa !11
  br label %929

929:                                              ; preds = %921, %801
  br label %930

930:                                              ; preds = %929, %796
  br label %931

931:                                              ; preds = %930, %504
  br label %932

932:                                              ; preds = %931, %289
  br label %933

933:                                              ; preds = %932, %33
  %934 = load float, ptr %25, align 4, !tbaa !11
  store float %934, ptr %15, align 4, !tbaa !11
  %935 = load float, ptr %15, align 4, !tbaa !11
  %936 = fpext float %935 to double
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  ret double %936
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare i64 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @slassq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @slantp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef %5) local_unnamed_addr #0 {
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %11 = getelementptr inbounds i8, ptr %5, i64 -4
  %12 = getelementptr inbounds i8, ptr %4, i64 -4
  %13 = load i64, ptr %3, align 8, !tbaa !5
  %14 = icmp eq i64 %13, 0
  br i1 %14, label %.loopexit365, label %15

15:                                               ; preds = %6
  %16 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %16, 0
  br i1 %.not, label %90, label %17

17:                                               ; preds = %15
  %18 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not340 = icmp eq i64 %18, 0
  %19 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not341 = icmp eq i64 %19, 0
  %20 = load i64, ptr %3, align 8, !tbaa !5
  %.not343430 = icmp slt i64 %20, 1
  br i1 %.not340, label %63, label %21

21:                                               ; preds = %17
  br i1 %.not341, label %51, label %22

22:                                               ; preds = %21
  br i1 %.not343430, label %.loopexit365, label %.lr.ph385

.lr.ph385:                                        ; preds = %22, %._crit_edge
  %indvar846 = phi i64 [ %indvar.next847, %._crit_edge ], [ 0, %22 ]
  %.0383 = phi float [ %.1.lcssa, %._crit_edge ], [ 1.000000e+00, %22 ]
  %.0257382 = phi i64 [ %23, %._crit_edge ], [ 1, %22 ]
  %storemerge352381 = phi i64 [ %50, %._crit_edge ], [ 1, %22 ]
  %23 = add nuw nsw i64 %.0257382, %storemerge352381
  %24 = add nsw i64 %23, -2
  %.not354377 = icmp sgt i64 %.0257382, %24
  br i1 %.not354377, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph385
  %xtraiter = and i64 %indvar846, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %25 = getelementptr inbounds float, ptr %12, i64 %.0257382
  %26 = load float, ptr %25, align 4, !tbaa !9
  %27 = fcmp oge float %26, 0.000000e+00
  %28 = fneg float %26
  %29 = select i1 %27, float %26, float %28
  %30 = fcmp oge float %.0383, %29
  %31 = select i1 %30, float %.0383, float %29
  %32 = add nuw nsw i64 %.0257382, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.1379.unr = phi float [ %.0383, %.lr.ph.preheader ], [ %31, %.lr.ph.prol ]
  %.0269378.unr = phi i64 [ %.0257382, %.lr.ph.preheader ], [ %32, %.lr.ph.prol ]
  %.lcssa845.unr = phi float [ poison, %.lr.ph.preheader ], [ %31, %.lr.ph.prol ]
  %33 = icmp eq i64 %indvar846, 1
  br i1 %33, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.1379 = phi float [ %48, %.lr.ph ], [ %.1379.unr, %.lr.ph.prol.loopexit ]
  %.0269378 = phi i64 [ %49, %.lr.ph ], [ %.0269378.unr, %.lr.ph.prol.loopexit ]
  %34 = getelementptr inbounds float, ptr %12, i64 %.0269378
  %35 = load float, ptr %34, align 4, !tbaa !9
  %36 = fcmp oge float %35, 0.000000e+00
  %37 = fneg float %35
  %38 = select i1 %36, float %35, float %37
  %39 = fcmp oge float %.1379, %38
  %40 = select i1 %39, float %.1379, float %38
  %41 = add nuw nsw i64 %.0269378, 1
  %42 = getelementptr float, ptr %4, i64 %.0269378
  %43 = load float, ptr %42, align 4, !tbaa !9
  %44 = fcmp oge float %43, 0.000000e+00
  %45 = fneg float %43
  %46 = select i1 %44, float %43, float %45
  %47 = fcmp oge float %40, %46
  %48 = select i1 %47, float %40, float %46
  %49 = add nuw nsw i64 %.0269378, 2
  %.not354.not.1 = icmp slt i64 %41, %24
  br i1 %.not354.not.1, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %.lr.ph385
  %.1.lcssa = phi float [ %.0383, %.lr.ph385 ], [ %.lcssa845.unr, %.lr.ph.prol.loopexit ], [ %48, %.lr.ph ]
  %50 = add nuw i64 %storemerge352381, 1
  %exitcond.not = icmp eq i64 %storemerge352381, %20
  %indvar.next847 = add i64 %indvar846, 1
  br i1 %exitcond.not, label %.loopexit365, label %.lr.ph385, !llvm.loop !13

51:                                               ; preds = %21
  br i1 %.not343430, label %.loopexit365, label %.lr.ph403

.lr.ph403:                                        ; preds = %51, %._crit_edge394
  %.2401 = phi float [ %.3.lcssa, %._crit_edge394 ], [ 1.000000e+00, %51 ]
  %.1258400 = phi i64 [ %61, %._crit_edge394 ], [ 1, %51 ]
  %storemerge349399 = phi i64 [ %62, %._crit_edge394 ], [ 1, %51 ]
  %52 = sub nsw i64 %20, %storemerge349399
  %53 = add i64 %52, %.1258400
  %.not351.not389 = icmp slt i64 %.1258400, %53
  br i1 %.not351.not389, label %.lr.ph393, label %._crit_edge394

.lr.ph393:                                        ; preds = %.lr.ph403, %.lr.ph393
  %.3391 = phi float [ %60, %.lr.ph393 ], [ %.2401, %.lr.ph403 ]
  %.1270.in390 = phi i64 [ %.1270, %.lr.ph393 ], [ %.1258400, %.lr.ph403 ]
  %.1270 = add nsw i64 %.1270.in390, 1
  %54 = getelementptr float, ptr %4, i64 %.1270.in390
  %55 = load float, ptr %54, align 4, !tbaa !9
  %56 = fcmp oge float %55, 0.000000e+00
  %57 = fneg float %55
  %58 = select i1 %56, float %55, float %57
  %59 = fcmp oge float %.3391, %58
  %60 = select i1 %59, float %.3391, float %58
  %.not351.not = icmp slt i64 %.1270, %53
  br i1 %.not351.not, label %.lr.ph393, label %._crit_edge394, !llvm.loop !14

._crit_edge394:                                   ; preds = %.lr.ph393, %.lr.ph403
  %.3.lcssa = phi float [ %.2401, %.lr.ph403 ], [ %60, %.lr.ph393 ]
  %61 = add nsw i64 %53, 1
  %62 = add nuw i64 %storemerge349399, 1
  %exitcond625.not = icmp eq i64 %storemerge349399, %20
  br i1 %exitcond625.not, label %.loopexit365, label %.lr.ph403, !llvm.loop !15

63:                                               ; preds = %17
  br i1 %.not341, label %77, label %64

64:                                               ; preds = %63
  br i1 %.not343430, label %.loopexit365, label %.lr.ph416

.lr.ph416:                                        ; preds = %64, %75
  %.4414 = phi float [ %73, %75 ], [ 0.000000e+00, %64 ]
  %.2259413 = phi i64 [ %65, %75 ], [ 1, %64 ]
  %storemerge345412 = phi i64 [ %76, %75 ], [ 1, %64 ]
  %65 = add nuw nsw i64 %.2259413, %storemerge345412
  br label %66

66:                                               ; preds = %.lr.ph416, %66
  %.5408 = phi float [ %.4414, %.lr.ph416 ], [ %73, %66 ]
  %.2271407 = phi i64 [ %.2259413, %.lr.ph416 ], [ %74, %66 ]
  %67 = getelementptr inbounds float, ptr %12, i64 %.2271407
  %68 = load float, ptr %67, align 4, !tbaa !9
  %69 = fcmp oge float %68, 0.000000e+00
  %70 = fneg float %68
  %71 = select i1 %69, float %68, float %70
  %72 = fcmp oge float %.5408, %71
  %73 = select i1 %72, float %.5408, float %71
  %74 = add nuw nsw i64 %.2271407, 1
  %.not347.not = icmp ult i64 %74, %65
  br i1 %.not347.not, label %66, label %75, !llvm.loop !16

75:                                               ; preds = %66
  %76 = add nuw i64 %storemerge345412, 1
  %exitcond626.not = icmp eq i64 %storemerge345412, %20
  br i1 %exitcond626.not, label %.loopexit365, label %.lr.ph416, !llvm.loop !17

77:                                               ; preds = %63
  br i1 %.not343430, label %.loopexit365, label %.lr.ph435

.lr.ph435:                                        ; preds = %77, %._crit_edge426
  %.6433 = phi float [ %.7.lcssa, %._crit_edge426 ], [ 0.000000e+00, %77 ]
  %.3260432 = phi i64 [ %88, %._crit_edge426 ], [ 1, %77 ]
  %storemerge342431 = phi i64 [ %89, %._crit_edge426 ], [ 1, %77 ]
  %78 = sub nsw i64 %20, %storemerge342431
  %79 = add i64 %78, %.3260432
  %.not344421 = icmp sgt i64 %.3260432, %79
  br i1 %.not344421, label %._crit_edge426, label %.lr.ph425

.lr.ph425:                                        ; preds = %.lr.ph435, %.lr.ph425
  %.7423 = phi float [ %86, %.lr.ph425 ], [ %.6433, %.lr.ph435 ]
  %.3272422 = phi i64 [ %87, %.lr.ph425 ], [ %.3260432, %.lr.ph435 ]
  %80 = getelementptr inbounds float, ptr %12, i64 %.3272422
  %81 = load float, ptr %80, align 4, !tbaa !9
  %82 = fcmp oge float %81, 0.000000e+00
  %83 = fneg float %81
  %84 = select i1 %82, float %81, float %83
  %85 = fcmp oge float %.7423, %84
  %86 = select i1 %85, float %.7423, float %84
  %87 = add nsw i64 %.3272422, 1
  %.not344.not = icmp slt i64 %.3272422, %79
  br i1 %.not344.not, label %.lr.ph425, label %._crit_edge426, !llvm.loop !18

._crit_edge426:                                   ; preds = %.lr.ph425, %.lr.ph435
  %.7.lcssa = phi float [ %.6433, %.lr.ph435 ], [ %86, %.lr.ph425 ]
  %88 = add nsw i64 %79, 1
  %89 = add nuw i64 %storemerge342431, 1
  %exitcond627.not = icmp eq i64 %storemerge342431, %20
  br i1 %exitcond627.not, label %.loopexit365, label %.lr.ph435, !llvm.loop !19

90:                                               ; preds = %15
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not295 = icmp eq i64 %91, 0
  br i1 %.not295, label %92, label %95

92:                                               ; preds = %90
  %93 = load i8, ptr %0, align 1, !tbaa !20
  %94 = icmp eq i8 %93, 49
  br i1 %94, label %95, label %167

95:                                               ; preds = %92, %90
  %96 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not329 = icmp eq i64 %97, 0
  %98 = load i64, ptr %3, align 8, !tbaa !5
  %.not331577 = icmp slt i64 %98, 1
  br i1 %.not329, label %138, label %99

99:                                               ; preds = %95
  br i1 %.not331577, label %.loopexit365, label %.lr.ph553

.lr.ph553:                                        ; preds = %99
  %.not337 = icmp eq i64 %96, 0
  br label %100

100:                                              ; preds = %.lr.ph553, %.loopexit358
  %indvar857 = phi i64 [ 0, %.lr.ph553 ], [ %indvar.next858, %.loopexit358 ]
  %.8551 = phi float [ 0.000000e+00, %.lr.ph553 ], [ %136, %.loopexit358 ]
  %.4261549 = phi i64 [ 1, %.lr.ph553 ], [ %101, %.loopexit358 ]
  %storemerge335548 = phi i64 [ 1, %.lr.ph553 ], [ %137, %.loopexit358 ]
  %101 = add nuw nsw i64 %.4261549, %storemerge335548
  br i1 %.not337, label %.preheader, label %102

102:                                              ; preds = %100
  %103 = add nsw i64 %101, -2
  %.not339534 = icmp sgt i64 %.4261549, %103
  br i1 %.not339534, label %.loopexit358, label %.lr.ph537.preheader

.lr.ph537.preheader:                              ; preds = %102
  %xtraiter859 = and i64 %indvar857, 1
  %lcmp.mod860.not = icmp eq i64 %xtraiter859, 0
  br i1 %lcmp.mod860.not, label %.lr.ph537.prol.loopexit, label %.lr.ph537.prol

.lr.ph537.prol:                                   ; preds = %.lr.ph537.preheader
  %104 = getelementptr inbounds float, ptr %12, i64 %.4261549
  %105 = load float, ptr %104, align 4, !tbaa !9
  %106 = fcmp oge float %105, 0.000000e+00
  %107 = fneg float %105
  %108 = select i1 %106, float %105, float %107
  %109 = fadd float %108, 1.000000e+00
  %110 = add nuw nsw i64 %.4261549, 1
  br label %.lr.ph537.prol.loopexit

.lr.ph537.prol.loopexit:                          ; preds = %.lr.ph537.prol, %.lr.ph537.preheader
  %.4273535.unr = phi i64 [ %.4261549, %.lr.ph537.preheader ], [ %110, %.lr.ph537.prol ]
  %.unr = phi float [ 1.000000e+00, %.lr.ph537.preheader ], [ %109, %.lr.ph537.prol ]
  %.lcssa821.unr = phi float [ poison, %.lr.ph537.preheader ], [ %109, %.lr.ph537.prol ]
  %111 = icmp eq i64 %indvar857, 1
  br i1 %111, label %.loopexit358, label %.lr.ph537

.lr.ph537:                                        ; preds = %.lr.ph537.prol.loopexit, %.lr.ph537
  %.4273535 = phi i64 [ %126, %.lr.ph537 ], [ %.4273535.unr, %.lr.ph537.prol.loopexit ]
  %112 = phi float [ %125, %.lr.ph537 ], [ %.unr, %.lr.ph537.prol.loopexit ]
  %113 = getelementptr inbounds float, ptr %12, i64 %.4273535
  %114 = load float, ptr %113, align 4, !tbaa !9
  %115 = fcmp oge float %114, 0.000000e+00
  %116 = fneg float %114
  %117 = select i1 %115, float %114, float %116
  %118 = fadd float %112, %117
  %119 = add nuw nsw i64 %.4273535, 1
  %120 = getelementptr float, ptr %4, i64 %.4273535
  %121 = load float, ptr %120, align 4, !tbaa !9
  %122 = fcmp oge float %121, 0.000000e+00
  %123 = fneg float %121
  %124 = select i1 %122, float %121, float %123
  %125 = fadd float %118, %124
  %126 = add nuw nsw i64 %.4273535, 2
  %.not339.not.1 = icmp slt i64 %119, %103
  br i1 %.not339.not.1, label %.lr.ph537, label %.loopexit358, !llvm.loop !21

.preheader:                                       ; preds = %100, %.preheader
  %.5274541 = phi i64 [ %134, %.preheader ], [ %.4261549, %100 ]
  %127 = phi float [ %133, %.preheader ], [ 0.000000e+00, %100 ]
  %128 = getelementptr inbounds float, ptr %12, i64 %.5274541
  %129 = load float, ptr %128, align 4, !tbaa !9
  %130 = fcmp oge float %129, 0.000000e+00
  %131 = fneg float %129
  %132 = select i1 %130, float %129, float %131
  %133 = fadd float %127, %132
  %134 = add nuw nsw i64 %.5274541, 1
  %.not338.not = icmp ult i64 %134, %101
  br i1 %.not338.not, label %.preheader, label %.loopexit358, !llvm.loop !22

.loopexit358:                                     ; preds = %.lr.ph537.prol.loopexit, %.lr.ph537, %.preheader, %102
  %.lcssa540543 = phi float [ 1.000000e+00, %102 ], [ %133, %.preheader ], [ %.lcssa821.unr, %.lr.ph537.prol.loopexit ], [ %125, %.lr.ph537 ]
  %135 = fcmp oge float %.8551, %.lcssa540543
  %136 = select i1 %135, float %.8551, float %.lcssa540543
  %137 = add nuw i64 %storemerge335548, 1
  %exitcond637.not = icmp eq i64 %storemerge335548, %98
  %indvar.next858 = add i64 %indvar857, 1
  br i1 %exitcond637.not, label %.loopexit365, label %100, !llvm.loop !23

138:                                              ; preds = %95
  br i1 %.not331577, label %.loopexit365, label %.lr.ph584

.lr.ph584:                                        ; preds = %138
  %.not332 = icmp eq i64 %96, 0
  %139 = add nuw i64 %98, 1
  br label %140

140:                                              ; preds = %.lr.ph584, %.loopexit
  %storemerge330.neg582 = phi i64 [ -1, %.lr.ph584 ], [ %storemerge330.neg, %.loopexit ]
  %.9581 = phi float [ 0.000000e+00, %.lr.ph584 ], [ %165, %.loopexit ]
  %.5262579 = phi i64 [ 1, %.lr.ph584 ], [ %163, %.loopexit ]
  %storemerge330578 = phi i64 [ 1, %.lr.ph584 ], [ %166, %.loopexit ]
  br i1 %.not332, label %151, label %141

141:                                              ; preds = %140
  %142 = add i64 %storemerge330.neg582, %98
  %143 = add i64 %142, %.5262579
  %.not334.not560 = icmp slt i64 %.5262579, %143
  br i1 %.not334.not560, label %.lr.ph563, label %.loopexit

.lr.ph563:                                        ; preds = %141, %.lr.ph563
  %.6275.in561 = phi i64 [ %.6275, %.lr.ph563 ], [ %.5262579, %141 ]
  %144 = phi float [ %150, %.lr.ph563 ], [ 1.000000e+00, %141 ]
  %.6275 = add nsw i64 %.6275.in561, 1
  %145 = getelementptr float, ptr %4, i64 %.6275.in561
  %146 = load float, ptr %145, align 4, !tbaa !9
  %147 = fcmp oge float %146, 0.000000e+00
  %148 = fneg float %146
  %149 = select i1 %147, float %146, float %148
  %150 = fadd float %144, %149
  %.not334.not = icmp slt i64 %.6275, %143
  br i1 %.not334.not, label %.lr.ph563, label %.loopexit, !llvm.loop !24

151:                                              ; preds = %140
  %152 = add nsw i64 %.5262579, %98
  %153 = add i64 %152, %storemerge330.neg582
  %.not333567 = icmp sgt i64 %.5262579, %153
  br i1 %.not333567, label %.loopexit, label %.lr.ph570

.lr.ph570:                                        ; preds = %151, %.lr.ph570
  %.7276568 = phi i64 [ %161, %.lr.ph570 ], [ %.5262579, %151 ]
  %154 = phi float [ %160, %.lr.ph570 ], [ 0.000000e+00, %151 ]
  %155 = getelementptr inbounds float, ptr %12, i64 %.7276568
  %156 = load float, ptr %155, align 4, !tbaa !9
  %157 = fcmp oge float %156, 0.000000e+00
  %158 = fneg float %156
  %159 = select i1 %157, float %156, float %158
  %160 = fadd float %154, %159
  %161 = add nsw i64 %.7276568, 1
  %.not333.not = icmp slt i64 %.7276568, %153
  br i1 %.not333.not, label %.lr.ph570, label %.loopexit, !llvm.loop !25

.loopexit:                                        ; preds = %.lr.ph563, %.lr.ph570, %141, %151
  %.lcssa566573 = phi float [ 0.000000e+00, %151 ], [ 1.000000e+00, %141 ], [ %160, %.lr.ph570 ], [ %150, %.lr.ph563 ]
  %162 = add i64 %139, %storemerge330.neg582
  %163 = add i64 %162, %.5262579
  %164 = fcmp oge float %.9581, %.lcssa566573
  %165 = select i1 %164, float %.9581, float %.lcssa566573
  %166 = add nuw i64 %storemerge330578, 1
  %storemerge330.neg = xor i64 %storemerge330578, -1
  %exitcond638.not = icmp eq i64 %storemerge330578, %98
  br i1 %exitcond638.not, label %.loopexit365, label %140, !llvm.loop !26

167:                                              ; preds = %92
  %168 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #6
  %.not296 = icmp eq i64 %168, 0
  br i1 %.not296, label %380, label %169

169:                                              ; preds = %167
  %170 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not309 = icmp eq i64 %170, 0
  %171 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not310 = icmp eq i64 %171, 0
  %172 = load i64, ptr %3, align 8, !tbaa !5
  %.not311493 = icmp slt i64 %172, 1
  br i1 %.not309, label %290, label %173

173:                                              ; preds = %169
  br i1 %.not310, label %235, label %174

174:                                              ; preds = %173
  br i1 %.not311493, label %.loopexit366, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %174
  %min.iters.check = icmp ult i64 %172, 8
  br i1 %min.iters.check, label %.lr.ph442.preheader837, label %vector.ph

.lr.ph442.preheader837:                           ; preds = %middle.block, %.lr.ph442.preheader
  %.8277440.ph = phi i64 [ 1, %.lr.ph442.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph442

vector.ph:                                        ; preds = %.lr.ph442.preheader
  %n.vec = and i64 %172, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %175 = getelementptr float, ptr %5, i64 %index
  %176 = getelementptr inbounds i8, ptr %175, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %175, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %176, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %177 = icmp eq i64 %index.next, %n.vec
  br i1 %177, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %172, %n.vec
  br i1 %cmp.n, label %.preheader371, label %.lr.ph442.preheader837

.preheader371:                                    ; preds = %.lr.ph442, %middle.block
  br i1 %.not311493, label %.loopexit366, label %.lr.ph455

.lr.ph442:                                        ; preds = %.lr.ph442.preheader837, %.lr.ph442
  %.8277440 = phi i64 [ %179, %.lr.ph442 ], [ %.8277440.ph, %.lr.ph442.preheader837 ]
  %178 = getelementptr inbounds float, ptr %11, i64 %.8277440
  store float 1.000000e+00, ptr %178, align 4, !tbaa !9
  %179 = add nuw i64 %.8277440, 1
  %exitcond628.not = icmp eq i64 %.8277440, %172
  br i1 %exitcond628.not, label %.preheader371, label %.lr.ph442, !llvm.loop !30

.lr.ph455:                                        ; preds = %.preheader371, %._crit_edge448
  %scev.check.iv683 = phi ptr [ %scevgep684, %._crit_edge448 ], [ %4, %.preheader371 ]
  %scev.check.iv = phi ptr [ %scevgep682, %._crit_edge448 ], [ %4, %.preheader371 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge448 ], [ 0, %.preheader371 ]
  %.6263454 = phi i64 [ %233, %._crit_edge448 ], [ 1, %.preheader371 ]
  %storemerge325453 = phi i64 [ %234, %._crit_edge448 ], [ 1, %.preheader371 ]
  %180 = add nsw i64 %indvars.iv, -1
  %181 = shl i64 %indvars.iv, 2
  %182 = add i64 %181, 8
  %183 = shl i64 %indvars.iv, 2
  %184 = add i64 %183, 4
  %185 = shl i64 %indvars.iv, 2
  %scevgep = getelementptr i8, ptr %5, i64 %185
  %.not328.not443 = icmp ugt i64 %storemerge325453, 1
  br i1 %.not328.not443, label %.lr.ph447.preheader, label %._crit_edge448

.lr.ph447.preheader:                              ; preds = %.lr.ph455
  %186 = add i64 %.6263454, %indvars.iv
  %min.iters.check687 = icmp ult i64 %indvars.iv, 8
  br i1 %min.iters.check687, label %.lr.ph447.preheader835, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph447.preheader
  %bound0 = icmp ugt ptr %scev.check.iv683, %5
  %bound1 = icmp ult ptr %scev.check.iv, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph447.preheader835, label %vector.ph688

vector.ph688:                                     ; preds = %vector.memcheck
  %n.vec690 = and i64 %indvars.iv, 9223372036854775800
  %ind.end691 = add i64 %.6263454, %n.vec690
  %ind.end693 = or disjoint i64 %n.vec690, 1
  %187 = getelementptr float, ptr %12, i64 %.6263454
  br label %vector.body695

vector.body695:                                   ; preds = %vector.body695, %vector.ph688
  %index696 = phi i64 [ 0, %vector.ph688 ], [ %index.next702, %vector.body695 ]
  %188 = getelementptr float, ptr %187, i64 %index696
  %189 = getelementptr inbounds i8, ptr %188, i64 16
  %wide.load = load <4 x float>, ptr %188, align 4, !tbaa !9, !alias.scope !31
  %wide.load699 = load <4 x float>, ptr %189, align 4, !tbaa !9, !alias.scope !31
  %190 = fcmp oge <4 x float> %wide.load, zeroinitializer
  %191 = fcmp oge <4 x float> %wide.load699, zeroinitializer
  %192 = fneg <4 x float> %wide.load
  %193 = fneg <4 x float> %wide.load699
  %194 = select <4 x i1> %190, <4 x float> %wide.load, <4 x float> %192
  %195 = select <4 x i1> %191, <4 x float> %wide.load699, <4 x float> %193
  %196 = getelementptr float, ptr %5, i64 %index696
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  %wide.load700 = load <4 x float>, ptr %196, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  %wide.load701 = load <4 x float>, ptr %197, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  %198 = fadd <4 x float> %wide.load700, %194
  %199 = fadd <4 x float> %wide.load701, %195
  store <4 x float> %198, ptr %196, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  store <4 x float> %199, ptr %197, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  %index.next702 = add nuw i64 %index696, 8
  %200 = icmp eq i64 %index.next702, %n.vec690
  br i1 %200, label %middle.block685, label %vector.body695, !llvm.loop !36

middle.block685:                                  ; preds = %vector.body695
  %cmp.n703 = icmp eq i64 %indvars.iv, %n.vec690
  br i1 %cmp.n703, label %._crit_edge448, label %.lr.ph447.preheader835

.lr.ph447.preheader835:                           ; preds = %middle.block685, %vector.memcheck, %.lr.ph447.preheader
  %.7264445.ph = phi i64 [ %.6263454, %vector.memcheck ], [ %.6263454, %.lr.ph447.preheader ], [ %ind.end691, %middle.block685 ]
  %.9278444.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph447.preheader ], [ %ind.end693, %middle.block685 ]
  %201 = add i64 %.6263454, %indvars.iv
  %202 = sub i64 %201, %.7264445.ph
  %203 = add i64 %.6263454, %180
  %xtraiter848 = and i64 %202, 1
  %lcmp.mod849.not = icmp eq i64 %xtraiter848, 0
  br i1 %lcmp.mod849.not, label %.lr.ph447.prol.loopexit, label %.lr.ph447.prol

.lr.ph447.prol:                                   ; preds = %.lr.ph447.preheader835
  %204 = getelementptr inbounds float, ptr %12, i64 %.7264445.ph
  %205 = load float, ptr %204, align 4, !tbaa !9
  %206 = fcmp oge float %205, 0.000000e+00
  %207 = fneg float %205
  %208 = select i1 %206, float %205, float %207
  %209 = getelementptr inbounds float, ptr %11, i64 %.9278444.ph
  %210 = load float, ptr %209, align 4, !tbaa !9
  %211 = fadd float %210, %208
  store float %211, ptr %209, align 4, !tbaa !9
  %212 = add i64 %.7264445.ph, 1
  %213 = add nuw nsw i64 %.9278444.ph, 1
  br label %.lr.ph447.prol.loopexit

.lr.ph447.prol.loopexit:                          ; preds = %.lr.ph447.prol, %.lr.ph447.preheader835
  %.7264445.unr = phi i64 [ %.7264445.ph, %.lr.ph447.preheader835 ], [ %212, %.lr.ph447.prol ]
  %.9278444.unr = phi i64 [ %.9278444.ph, %.lr.ph447.preheader835 ], [ %213, %.lr.ph447.prol ]
  %214 = icmp eq i64 %203, %.7264445.ph
  br i1 %214, label %._crit_edge448, label %.lr.ph447

.lr.ph447:                                        ; preds = %.lr.ph447.prol.loopexit, %.lr.ph447
  %.7264445 = phi i64 [ %231, %.lr.ph447 ], [ %.7264445.unr, %.lr.ph447.prol.loopexit ]
  %.9278444 = phi i64 [ %232, %.lr.ph447 ], [ %.9278444.unr, %.lr.ph447.prol.loopexit ]
  %215 = getelementptr inbounds float, ptr %12, i64 %.7264445
  %216 = load float, ptr %215, align 4, !tbaa !9
  %217 = fcmp oge float %216, 0.000000e+00
  %218 = fneg float %216
  %219 = select i1 %217, float %216, float %218
  %220 = getelementptr inbounds float, ptr %11, i64 %.9278444
  %221 = load float, ptr %220, align 4, !tbaa !9
  %222 = fadd float %221, %219
  store float %222, ptr %220, align 4, !tbaa !9
  %223 = getelementptr float, ptr %4, i64 %.7264445
  %224 = load float, ptr %223, align 4, !tbaa !9
  %225 = fcmp oge float %224, 0.000000e+00
  %226 = fneg float %224
  %227 = select i1 %225, float %224, float %226
  %228 = getelementptr float, ptr %5, i64 %.9278444
  %229 = load float, ptr %228, align 4, !tbaa !9
  %230 = fadd float %229, %227
  store float %230, ptr %228, align 4, !tbaa !9
  %231 = add i64 %.7264445, 2
  %232 = add nuw nsw i64 %.9278444, 2
  %exitcond629.not.1 = icmp eq i64 %231, %186
  br i1 %exitcond629.not.1, label %._crit_edge448, label %.lr.ph447, !llvm.loop !37

._crit_edge448:                                   ; preds = %.lr.ph447.prol.loopexit, %.lr.ph447, %middle.block685, %.lr.ph455
  %.7264.lcssa = phi i64 [ %.6263454, %.lr.ph455 ], [ %186, %middle.block685 ], [ %186, %.lr.ph447 ], [ %186, %.lr.ph447.prol.loopexit ]
  %233 = add nsw i64 %.7264.lcssa, 1
  %234 = add nuw nsw i64 %storemerge325453, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond630.not = icmp eq i64 %indvars.iv.next, %172
  %scevgep682 = getelementptr i8, ptr %scev.check.iv, i64 %184
  %scevgep684 = getelementptr i8, ptr %scev.check.iv683, i64 %182
  br i1 %exitcond630.not, label %.loopexit366, label %.lr.ph455, !llvm.loop !38

235:                                              ; preds = %173
  br i1 %.not311493, label %.loopexit366, label %.lr.ph469.preheader

.lr.ph469.preheader:                              ; preds = %235
  %236 = shl nuw i64 %172, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %5, i8 0, i64 %236, i1 false), !tbaa !9
  %scevgep708 = getelementptr i8, ptr %4, i64 4
  %invariant.gep = getelementptr i8, ptr %5, i64 4
  br label %.lr.ph469

.lr.ph469:                                        ; preds = %.lr.ph469.preheader, %.loopexit815
  %loop-unroll.iv850 = phi i64 [ 1, %.lr.ph469.preheader ], [ %loop-unroll.iv.next851, %.loopexit815 ]
  %loop-unroll.iv = phi i64 [ 2, %.lr.ph469.preheader ], [ %loop-unroll.iv.next, %.loopexit815 ]
  %scev.check.iv709 = phi ptr [ %scevgep708, %.lr.ph469.preheader ], [ %scevgep710, %.loopexit815 ]
  %scev.check.iv706 = phi ptr [ %4, %.lr.ph469.preheader ], [ %scevgep707, %.loopexit815 ]
  %indvar = phi i64 [ 0, %.lr.ph469.preheader ], [ %indvar.next, %.loopexit815 ]
  %.8265468 = phi i64 [ 1, %.lr.ph469.preheader ], [ %243, %.loopexit815 ]
  %storemerge321467 = phi i64 [ 1, %.lr.ph469.preheader ], [ %289, %.loopexit815 ]
  %237 = add i64 %indvar, 2
  %238 = add i64 %indvar, 2
  %239 = shl i64 %indvar, 2
  %240 = add i64 %239, 8
  %241 = shl i64 %indvar, 2
  %242 = add i64 %241, 4
  %243 = add i64 %.8265468, %storemerge321467
  %min.iters.check716 = icmp ult i64 %storemerge321467, 8
  br i1 %min.iters.check716, label %scalar.ph715.preheader, label %vector.memcheck704

vector.memcheck704:                               ; preds = %.lr.ph469
  %244 = shl i64 %indvar, 2
  %gep = getelementptr i8, ptr %invariant.gep, i64 %244
  %bound0711 = icmp ugt ptr %scev.check.iv709, %5
  %bound1712 = icmp ult ptr %scev.check.iv706, %gep
  %found.conflict713 = and i1 %bound0711, %bound1712
  br i1 %found.conflict713, label %scalar.ph715.preheader, label %vector.ph717

vector.ph717:                                     ; preds = %vector.memcheck704
  %n.vec719 = and i64 %storemerge321467, -8
  %ind.end720 = add i64 %.8265468, %n.vec719
  %ind.end722 = or disjoint i64 %n.vec719, 1
  %245 = getelementptr float, ptr %12, i64 %.8265468
  br label %vector.body724

vector.body724:                                   ; preds = %vector.body724, %vector.ph717
  %index725 = phi i64 [ 0, %vector.ph717 ], [ %index.next732, %vector.body724 ]
  %246 = getelementptr float, ptr %245, i64 %index725
  %247 = getelementptr inbounds i8, ptr %246, i64 16
  %wide.load728 = load <4 x float>, ptr %246, align 4, !tbaa !9, !alias.scope !39
  %wide.load729 = load <4 x float>, ptr %247, align 4, !tbaa !9, !alias.scope !39
  %248 = fcmp oge <4 x float> %wide.load728, zeroinitializer
  %249 = fcmp oge <4 x float> %wide.load729, zeroinitializer
  %250 = fneg <4 x float> %wide.load728
  %251 = fneg <4 x float> %wide.load729
  %252 = select <4 x i1> %248, <4 x float> %wide.load728, <4 x float> %250
  %253 = select <4 x i1> %249, <4 x float> %wide.load729, <4 x float> %251
  %254 = getelementptr float, ptr %5, i64 %index725
  %255 = getelementptr inbounds i8, ptr %254, i64 16
  %wide.load730 = load <4 x float>, ptr %254, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load731 = load <4 x float>, ptr %255, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %256 = fadd <4 x float> %wide.load730, %252
  %257 = fadd <4 x float> %wide.load731, %253
  store <4 x float> %256, ptr %254, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  store <4 x float> %257, ptr %255, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %index.next732 = add nuw i64 %index725, 8
  %258 = icmp eq i64 %index.next732, %n.vec719
  br i1 %258, label %middle.block714, label %vector.body724, !llvm.loop !44

middle.block714:                                  ; preds = %vector.body724
  %cmp.n733 = icmp eq i64 %storemerge321467, %n.vec719
  br i1 %cmp.n733, label %.loopexit815, label %scalar.ph715.preheader

scalar.ph715.preheader:                           ; preds = %middle.block714, %vector.memcheck704, %.lr.ph469
  %.9266463.ph = phi i64 [ %.8265468, %vector.memcheck704 ], [ %.8265468, %.lr.ph469 ], [ %ind.end720, %middle.block714 ]
  %.11280462.ph = phi i64 [ 1, %vector.memcheck704 ], [ 1, %.lr.ph469 ], [ %ind.end722, %middle.block714 ]
  %259 = sub i64 %loop-unroll.iv, %.9266463.ph
  %xtraiter852 = and i64 %259, 1
  %lcmp.mod853.not = icmp eq i64 %xtraiter852, 0
  br i1 %lcmp.mod853.not, label %scalar.ph715.prol.loopexit, label %scalar.ph715.prol

scalar.ph715.prol:                                ; preds = %scalar.ph715.preheader
  %260 = getelementptr inbounds float, ptr %12, i64 %.9266463.ph
  %261 = load float, ptr %260, align 4, !tbaa !9
  %262 = fcmp oge float %261, 0.000000e+00
  %263 = fneg float %261
  %264 = select i1 %262, float %261, float %263
  %265 = getelementptr inbounds float, ptr %11, i64 %.11280462.ph
  %266 = load float, ptr %265, align 4, !tbaa !9
  %267 = fadd float %266, %264
  store float %267, ptr %265, align 4, !tbaa !9
  %268 = add i64 %.9266463.ph, 1
  %269 = add nuw nsw i64 %.11280462.ph, 1
  br label %scalar.ph715.prol.loopexit

scalar.ph715.prol.loopexit:                       ; preds = %scalar.ph715.prol, %scalar.ph715.preheader
  %.9266463.unr = phi i64 [ %.9266463.ph, %scalar.ph715.preheader ], [ %268, %scalar.ph715.prol ]
  %.11280462.unr = phi i64 [ %.11280462.ph, %scalar.ph715.preheader ], [ %269, %scalar.ph715.prol ]
  %270 = icmp eq i64 %loop-unroll.iv850, %.9266463.ph
  br i1 %270, label %.loopexit815, label %scalar.ph715

scalar.ph715:                                     ; preds = %scalar.ph715.prol.loopexit, %scalar.ph715
  %.9266463 = phi i64 [ %287, %scalar.ph715 ], [ %.9266463.unr, %scalar.ph715.prol.loopexit ]
  %.11280462 = phi i64 [ %288, %scalar.ph715 ], [ %.11280462.unr, %scalar.ph715.prol.loopexit ]
  %271 = getelementptr inbounds float, ptr %12, i64 %.9266463
  %272 = load float, ptr %271, align 4, !tbaa !9
  %273 = fcmp oge float %272, 0.000000e+00
  %274 = fneg float %272
  %275 = select i1 %273, float %272, float %274
  %276 = getelementptr inbounds float, ptr %11, i64 %.11280462
  %277 = load float, ptr %276, align 4, !tbaa !9
  %278 = fadd float %277, %275
  store float %278, ptr %276, align 4, !tbaa !9
  %279 = getelementptr float, ptr %4, i64 %.9266463
  %280 = load float, ptr %279, align 4, !tbaa !9
  %281 = fcmp oge float %280, 0.000000e+00
  %282 = fneg float %280
  %283 = select i1 %281, float %280, float %282
  %284 = getelementptr float, ptr %5, i64 %.11280462
  %285 = load float, ptr %284, align 4, !tbaa !9
  %286 = fadd float %285, %283
  store float %286, ptr %284, align 4, !tbaa !9
  %287 = add i64 %.9266463, 2
  %288 = add nuw nsw i64 %.11280462, 2
  %exitcond631.not.1 = icmp eq i64 %287, %243
  br i1 %exitcond631.not.1, label %.loopexit815, label %scalar.ph715, !llvm.loop !45

.loopexit815:                                     ; preds = %scalar.ph715.prol.loopexit, %scalar.ph715, %middle.block714
  %289 = add nuw i64 %storemerge321467, 1
  %exitcond632.not = icmp eq i64 %storemerge321467, %172
  %indvar.next = add i64 %indvar, 1
  %scevgep707 = getelementptr i8, ptr %scev.check.iv706, i64 %242
  %scevgep710 = getelementptr i8, ptr %scev.check.iv709, i64 %240
  %loop-unroll.iv.next = add i64 %loop-unroll.iv, %238
  %loop-unroll.iv.next851 = add i64 %loop-unroll.iv850, %237
  br i1 %exitcond632.not, label %.loopexit366, label %.lr.ph469, !llvm.loop !46

290:                                              ; preds = %169
  br i1 %.not310, label %329, label %291

291:                                              ; preds = %290
  br i1 %.not311493, label %.loopexit366, label %.lr.ph475.preheader

.lr.ph475.preheader:                              ; preds = %291
  %min.iters.check736 = icmp ult i64 %172, 8
  br i1 %min.iters.check736, label %.lr.ph475.preheader833, label %vector.ph737

.lr.ph475.preheader833:                           ; preds = %middle.block734, %.lr.ph475.preheader
  %.12281473.ph = phi i64 [ 1, %.lr.ph475.preheader ], [ %ind.end740, %middle.block734 ]
  br label %.lr.ph475

vector.ph737:                                     ; preds = %.lr.ph475.preheader
  %n.vec739 = and i64 %172, 9223372036854775800
  %ind.end740 = or disjoint i64 %n.vec739, 1
  br label %vector.body742

vector.body742:                                   ; preds = %vector.body742, %vector.ph737
  %index743 = phi i64 [ 0, %vector.ph737 ], [ %index.next745, %vector.body742 ]
  %292 = getelementptr float, ptr %5, i64 %index743
  %293 = getelementptr inbounds i8, ptr %292, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %292, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %293, align 4, !tbaa !9
  %index.next745 = add nuw i64 %index743, 8
  %294 = icmp eq i64 %index.next745, %n.vec739
  br i1 %294, label %middle.block734, label %vector.body742, !llvm.loop !47

middle.block734:                                  ; preds = %vector.body742
  %cmp.n746 = icmp eq i64 %172, %n.vec739
  br i1 %cmp.n746, label %.preheader367, label %.lr.ph475.preheader833

.preheader367:                                    ; preds = %.lr.ph475, %middle.block734
  br i1 %.not311493, label %.loopexit366, label %.lr.ph490.preheader

.lr.ph490.preheader:                              ; preds = %.preheader367
  %295 = shl i64 %172, 2
  %scevgep751 = getelementptr i8, ptr %5, i64 %295
  %296 = add i64 %295, -4
  %invariant.gep875 = getelementptr i8, ptr %5, i64 4
  br label %.lr.ph490

.lr.ph475:                                        ; preds = %.lr.ph475.preheader833, %.lr.ph475
  %.12281473 = phi i64 [ %298, %.lr.ph475 ], [ %.12281473.ph, %.lr.ph475.preheader833 ]
  %297 = getelementptr inbounds float, ptr %11, i64 %.12281473
  store float 1.000000e+00, ptr %297, align 4, !tbaa !9
  %298 = add nuw i64 %.12281473, 1
  %exitcond633.not = icmp eq i64 %.12281473, %172
  br i1 %exitcond633.not, label %.preheader367, label %.lr.ph475, !llvm.loop !48

.lr.ph490:                                        ; preds = %.lr.ph490.preheader, %._crit_edge483
  %indvar748 = phi i64 [ 0, %.lr.ph490.preheader ], [ %indvar.next749, %._crit_edge483 ]
  %.10267489 = phi i64 [ 1, %.lr.ph490.preheader ], [ %.11268.lcssa, %._crit_edge483 ]
  %storemerge316488 = phi i64 [ 1, %.lr.ph490.preheader ], [ %328, %._crit_edge483 ]
  %299 = xor i64 %indvar748, -1
  %300 = add i64 %172, %299
  %301 = shl i64 %indvar748, 2
  %gep876 = getelementptr i8, ptr %invariant.gep875, i64 %301
  %302 = shl i64 %indvar748, 2
  %303 = sub i64 %296, %302
  %scevgep753 = getelementptr i8, ptr %4, i64 %303
  %.11268476 = add nsw i64 %.10267489, 1
  %.not318.not477 = icmp slt i64 %storemerge316488, %172
  br i1 %.not318.not477, label %.lr.ph482.preheader, label %._crit_edge483

.lr.ph482.preheader:                              ; preds = %.lr.ph490
  %min.iters.check760 = icmp ult i64 %300, 8
  br i1 %min.iters.check760, label %.lr.ph482.preheader830, label %vector.memcheck747

vector.memcheck747:                               ; preds = %.lr.ph482.preheader
  %304 = shl i64 %.10267489, 2
  %scevgep752 = getelementptr i8, ptr %4, i64 %304
  %scevgep754 = getelementptr i8, ptr %scevgep753, i64 %304
  %bound0755 = icmp ult ptr %gep876, %scevgep754
  %bound1756 = icmp ult ptr %scevgep752, %scevgep751
  %found.conflict757 = and i1 %bound0755, %bound1756
  br i1 %found.conflict757, label %.lr.ph482.preheader830, label %vector.ph761

vector.ph761:                                     ; preds = %vector.memcheck747
  %n.vec763 = and i64 %300, -8
  %ind.end764 = add i64 %.11268476, %n.vec763
  %ind.end766 = add i64 %.10267489, %n.vec763
  %ind.end768 = add i64 %storemerge316488, %n.vec763
  %305 = getelementptr float, ptr %4, i64 %.10267489
  %306 = getelementptr float, ptr %5, i64 %storemerge316488
  br label %vector.body770

vector.body770:                                   ; preds = %vector.body770, %vector.ph761
  %index771 = phi i64 [ 0, %vector.ph761 ], [ %index.next779, %vector.body770 ]
  %307 = getelementptr float, ptr %305, i64 %index771
  %308 = getelementptr i8, ptr %307, i64 16
  %wide.load775 = load <4 x float>, ptr %307, align 4, !tbaa !9, !alias.scope !49
  %wide.load776 = load <4 x float>, ptr %308, align 4, !tbaa !9, !alias.scope !49
  %309 = fcmp oge <4 x float> %wide.load775, zeroinitializer
  %310 = fcmp oge <4 x float> %wide.load776, zeroinitializer
  %311 = fneg <4 x float> %wide.load775
  %312 = fneg <4 x float> %wide.load776
  %313 = select <4 x i1> %309, <4 x float> %wide.load775, <4 x float> %311
  %314 = select <4 x i1> %310, <4 x float> %wide.load776, <4 x float> %312
  %315 = getelementptr float, ptr %306, i64 %index771
  %316 = getelementptr i8, ptr %315, i64 16
  %wide.load777 = load <4 x float>, ptr %315, align 4, !tbaa !9, !alias.scope !52, !noalias !49
  %wide.load778 = load <4 x float>, ptr %316, align 4, !tbaa !9, !alias.scope !52, !noalias !49
  %317 = fadd <4 x float> %wide.load777, %313
  %318 = fadd <4 x float> %wide.load778, %314
  store <4 x float> %317, ptr %315, align 4, !tbaa !9, !alias.scope !52, !noalias !49
  store <4 x float> %318, ptr %316, align 4, !tbaa !9, !alias.scope !52, !noalias !49
  %index.next779 = add nuw i64 %index771, 8
  %319 = icmp eq i64 %index.next779, %n.vec763
  br i1 %319, label %middle.block758, label %vector.body770, !llvm.loop !54

middle.block758:                                  ; preds = %vector.body770
  %cmp.n780 = icmp eq i64 %300, %n.vec763
  br i1 %cmp.n780, label %._crit_edge483, label %.lr.ph482.preheader830

.lr.ph482.preheader830:                           ; preds = %middle.block758, %vector.memcheck747, %.lr.ph482.preheader
  %.11268480.ph = phi i64 [ %.11268476, %vector.memcheck747 ], [ %.11268476, %.lr.ph482.preheader ], [ %ind.end764, %middle.block758 ]
  %.11268.in479.ph = phi i64 [ %.10267489, %vector.memcheck747 ], [ %.10267489, %.lr.ph482.preheader ], [ %ind.end766, %middle.block758 ]
  %.13282.in478.ph = phi i64 [ %storemerge316488, %vector.memcheck747 ], [ %storemerge316488, %.lr.ph482.preheader ], [ %ind.end768, %middle.block758 ]
  br label %.lr.ph482

.lr.ph482:                                        ; preds = %.lr.ph482.preheader830, %.lr.ph482
  %.11268480 = phi i64 [ %.11268, %.lr.ph482 ], [ %.11268480.ph, %.lr.ph482.preheader830 ]
  %.11268.in479 = phi i64 [ %.11268480, %.lr.ph482 ], [ %.11268.in479.ph, %.lr.ph482.preheader830 ]
  %.13282.in478 = phi i64 [ %.13282, %.lr.ph482 ], [ %.13282.in478.ph, %.lr.ph482.preheader830 ]
  %.13282 = add nuw nsw i64 %.13282.in478, 1
  %320 = getelementptr float, ptr %4, i64 %.11268.in479
  %321 = load float, ptr %320, align 4, !tbaa !9
  %322 = fcmp oge float %321, 0.000000e+00
  %323 = fneg float %321
  %324 = select i1 %322, float %321, float %323
  %325 = getelementptr float, ptr %5, i64 %.13282.in478
  %326 = load float, ptr %325, align 4, !tbaa !9
  %327 = fadd float %326, %324
  store float %327, ptr %325, align 4, !tbaa !9
  %.11268 = add nsw i64 %.11268480, 1
  %.not318.not = icmp slt i64 %.13282, %172
  br i1 %.not318.not, label %.lr.ph482, label %._crit_edge483, !llvm.loop !55

._crit_edge483:                                   ; preds = %.lr.ph482, %middle.block758, %.lr.ph490
  %.11268.lcssa = phi i64 [ %.11268476, %.lr.ph490 ], [ %ind.end764, %middle.block758 ], [ %.11268, %.lr.ph482 ]
  %328 = add nuw i64 %storemerge316488, 1
  %exitcond634.not = icmp eq i64 %storemerge316488, %172
  %indvar.next749 = add i64 %indvar748, 1
  br i1 %exitcond634.not, label %.loopexit366, label %.lr.ph490, !llvm.loop !56

329:                                              ; preds = %290
  br i1 %.not311493, label %.loopexit366, label %.lr.ph504.preheader

.lr.ph504.preheader:                              ; preds = %329
  %330 = shl nuw i64 %172, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %5, i8 0, i64 %330, i1 false), !tbaa !9
  %scevgep787 = getelementptr i8, ptr %4, i64 -4
  %invariant.gep877 = getelementptr i8, ptr %5, i64 4
  br label %.lr.ph504

.lr.ph504:                                        ; preds = %.lr.ph504.preheader, %.loopexit814
  %indvar782 = phi i64 [ 0, %.lr.ph504.preheader ], [ %indvar.next783, %.loopexit814 ]
  %.12503 = phi i64 [ 1, %.lr.ph504.preheader ], [ %.lcssa676, %.loopexit814 ]
  %storemerge312502 = phi i64 [ 1, %.lr.ph504.preheader ], [ %363, %.loopexit814 ]
  %smax793 = tail call i64 @llvm.smax.i64(i64 %172, i64 %storemerge312502)
  %331 = sub i64 %smax793, %indvar782
  %min.iters.check796 = icmp ult i64 %331, 8
  br i1 %min.iters.check796, label %scalar.ph795.preheader, label %vector.memcheck781

vector.memcheck781:                               ; preds = %.lr.ph504
  %332 = shl i64 %indvar782, 2
  %gep878 = getelementptr i8, ptr %invariant.gep877, i64 %332
  %smax = tail call i64 @llvm.smax.i64(i64 %172, i64 %storemerge312502)
  %333 = xor i64 %indvar782, -1
  %334 = add i64 %smax, %333
  %335 = shl i64 %334, 2
  %scevgep786 = getelementptr i8, ptr %gep878, i64 %335
  %scevgep784 = getelementptr i8, ptr %5, i64 %332
  %336 = shl i64 %.12503, 2
  %scevgep788 = getelementptr i8, ptr %scevgep787, i64 %336
  %337 = getelementptr i8, ptr %4, i64 %336
  %scevgep789 = getelementptr i8, ptr %337, i64 %335
  %bound0790 = icmp ult ptr %scevgep784, %scevgep789
  %bound1791 = icmp ult ptr %scevgep788, %scevgep786
  %found.conflict792 = and i1 %bound0790, %bound1791
  br i1 %found.conflict792, label %scalar.ph795.preheader, label %vector.ph797

vector.ph797:                                     ; preds = %vector.memcheck781
  %n.vec799 = and i64 %331, -8
  %ind.end800 = add i64 %.12503, %n.vec799
  %ind.end802 = add i64 %storemerge312502, %n.vec799
  %338 = getelementptr float, ptr %12, i64 %.12503
  %339 = getelementptr float, ptr %11, i64 %storemerge312502
  br label %vector.body804

vector.body804:                                   ; preds = %vector.body804, %vector.ph797
  %index805 = phi i64 [ 0, %vector.ph797 ], [ %index.next812, %vector.body804 ]
  %340 = getelementptr float, ptr %338, i64 %index805
  %341 = getelementptr inbounds i8, ptr %340, i64 16
  %wide.load808 = load <4 x float>, ptr %340, align 4, !tbaa !9, !alias.scope !57
  %wide.load809 = load <4 x float>, ptr %341, align 4, !tbaa !9, !alias.scope !57
  %342 = fcmp oge <4 x float> %wide.load808, zeroinitializer
  %343 = fcmp oge <4 x float> %wide.load809, zeroinitializer
  %344 = fneg <4 x float> %wide.load808
  %345 = fneg <4 x float> %wide.load809
  %346 = select <4 x i1> %342, <4 x float> %wide.load808, <4 x float> %344
  %347 = select <4 x i1> %343, <4 x float> %wide.load809, <4 x float> %345
  %348 = getelementptr float, ptr %339, i64 %index805
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %wide.load810 = load <4 x float>, ptr %348, align 4, !tbaa !9, !alias.scope !60, !noalias !57
  %wide.load811 = load <4 x float>, ptr %349, align 4, !tbaa !9, !alias.scope !60, !noalias !57
  %350 = fadd <4 x float> %wide.load810, %346
  %351 = fadd <4 x float> %wide.load811, %347
  store <4 x float> %350, ptr %348, align 4, !tbaa !9, !alias.scope !60, !noalias !57
  store <4 x float> %351, ptr %349, align 4, !tbaa !9, !alias.scope !60, !noalias !57
  %index.next812 = add nuw i64 %index805, 8
  %352 = icmp eq i64 %index.next812, %n.vec799
  br i1 %352, label %middle.block794, label %vector.body804, !llvm.loop !62

middle.block794:                                  ; preds = %vector.body804
  %cmp.n813 = icmp eq i64 %331, %n.vec799
  br i1 %cmp.n813, label %.loopexit814, label %scalar.ph795.preheader

scalar.ph795.preheader:                           ; preds = %middle.block794, %vector.memcheck781, %.lr.ph504
  %.13498.ph = phi i64 [ %.12503, %vector.memcheck781 ], [ %.12503, %.lr.ph504 ], [ %ind.end800, %middle.block794 ]
  %.15284497.ph = phi i64 [ %storemerge312502, %vector.memcheck781 ], [ %storemerge312502, %.lr.ph504 ], [ %ind.end802, %middle.block794 ]
  br label %scalar.ph795

scalar.ph795:                                     ; preds = %scalar.ph795.preheader, %scalar.ph795
  %.13498 = phi i64 [ %361, %scalar.ph795 ], [ %.13498.ph, %scalar.ph795.preheader ]
  %.15284497 = phi i64 [ %362, %scalar.ph795 ], [ %.15284497.ph, %scalar.ph795.preheader ]
  %353 = getelementptr inbounds float, ptr %12, i64 %.13498
  %354 = load float, ptr %353, align 4, !tbaa !9
  %355 = fcmp oge float %354, 0.000000e+00
  %356 = fneg float %354
  %357 = select i1 %355, float %354, float %356
  %358 = getelementptr inbounds float, ptr %11, i64 %.15284497
  %359 = load float, ptr %358, align 4, !tbaa !9
  %360 = fadd float %359, %357
  store float %360, ptr %358, align 4, !tbaa !9
  %361 = add nsw i64 %.13498, 1
  %362 = add nuw nsw i64 %.15284497, 1
  %.not314.not = icmp slt i64 %.15284497, %172
  br i1 %.not314.not, label %scalar.ph795, label %.loopexit814, !llvm.loop !63

.loopexit814:                                     ; preds = %scalar.ph795, %middle.block794
  %.lcssa676 = phi i64 [ %ind.end800, %middle.block794 ], [ %361, %scalar.ph795 ]
  %363 = add nuw i64 %storemerge312502, 1
  %exitcond635.not = icmp eq i64 %storemerge312502, %172
  %indvar.next783 = add i64 %indvar782, 1
  br i1 %exitcond635.not, label %.loopexit366, label %.lr.ph504, !llvm.loop !64

.loopexit366:                                     ; preds = %._crit_edge448, %.loopexit815, %._crit_edge483, %.loopexit814, %.preheader371, %174, %235, %.preheader367, %291, %329
  %.not327507 = icmp slt i64 %172, 1
  br i1 %.not327507, label %.loopexit365, label %.lr.ph511.preheader

.lr.ph511.preheader:                              ; preds = %.loopexit366
  %xtraiter854 = and i64 %172, 3
  %364 = icmp ult i64 %172, 4
  br i1 %364, label %.loopexit365.loopexit827.unr-lcssa, label %.lr.ph511.preheader.new

.lr.ph511.preheader.new:                          ; preds = %.lr.ph511.preheader
  %unroll_iter = and i64 %172, 9223372036854775804
  %invariant.gep879 = getelementptr i8, ptr %11, i64 8
  %invariant.gep881 = getelementptr i8, ptr %11, i64 12
  br label %.lr.ph511

.lr.ph511:                                        ; preds = %.lr.ph511, %.lr.ph511.preheader.new
  %.10509 = phi float [ 0.000000e+00, %.lr.ph511.preheader.new ], [ %378, %.lr.ph511 ]
  %.16285508 = phi i64 [ 1, %.lr.ph511.preheader.new ], [ %379, %.lr.ph511 ]
  %niter = phi i64 [ 0, %.lr.ph511.preheader.new ], [ %niter.next.3, %.lr.ph511 ]
  %365 = getelementptr inbounds float, ptr %11, i64 %.16285508
  %366 = load float, ptr %365, align 4, !tbaa !9
  %367 = fcmp oge float %.10509, %366
  %368 = select i1 %367, float %.10509, float %366
  %369 = getelementptr float, ptr %5, i64 %.16285508
  %370 = load float, ptr %369, align 4, !tbaa !9
  %371 = fcmp oge float %368, %370
  %372 = select i1 %371, float %368, float %370
  %gep880 = getelementptr float, ptr %invariant.gep879, i64 %.16285508
  %373 = load float, ptr %gep880, align 4, !tbaa !9
  %374 = fcmp oge float %372, %373
  %375 = select i1 %374, float %372, float %373
  %gep882 = getelementptr float, ptr %invariant.gep881, i64 %.16285508
  %376 = load float, ptr %gep882, align 4, !tbaa !9
  %377 = fcmp oge float %375, %376
  %378 = select i1 %377, float %375, float %376
  %379 = add nuw i64 %.16285508, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit365.loopexit827.unr-lcssa, label %.lr.ph511, !llvm.loop !65

380:                                              ; preds = %167
  %381 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #6
  %.not297 = icmp eq i64 %381, 0
  br i1 %.not297, label %382, label %384

382:                                              ; preds = %380
  %383 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not298 = icmp eq i64 %383, 0
  br i1 %.not298, label %.loopexit365, label %384

384:                                              ; preds = %382, %380
  %385 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not299 = icmp eq i64 %385, 0
  %386 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not300 = icmp eq i64 %386, 0
  br i1 %.not299, label %403, label %387

387:                                              ; preds = %384
  br i1 %.not300, label %396, label %388

388:                                              ; preds = %387
  store float 1.000000e+00, ptr %10, align 4, !tbaa !9
  %389 = load i64, ptr %3, align 8, !tbaa !5
  %390 = sitofp i64 %389 to float
  store float %390, ptr %9, align 4, !tbaa !9
  %.not308513 = icmp slt i64 %389, 2
  br i1 %.not308513, label %.loopexit361, label %.lr.ph517

.lr.ph517:                                        ; preds = %388, %.lr.ph517
  %391 = phi i64 [ %395, %.lr.ph517 ], [ 2, %388 ]
  %.14515 = phi i64 [ %394, %.lr.ph517 ], [ 2, %388 ]
  %storemerge307514 = phi i64 [ %391, %.lr.ph517 ], [ 1, %388 ]
  store i64 %storemerge307514, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds float, ptr %12, i64 %.14515
  %393 = call i32 @slassq_(ptr noundef nonnull %7, ptr noundef nonnull %392, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %394 = add nuw nsw i64 %391, %.14515
  %395 = add nuw nsw i64 %391, 1
  %.not308.not = icmp slt i64 %391, %389
  br i1 %.not308.not, label %.lr.ph517, label %.loopexit361, !llvm.loop !66

396:                                              ; preds = %387
  store float 0.000000e+00, ptr %10, align 4, !tbaa !9
  store float 1.000000e+00, ptr %9, align 4, !tbaa !9
  %397 = load i64, ptr %3, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not306518 = icmp slt i64 %397, 1
  br i1 %.not306518, label %.loopexit361, label %.lr.ph521

.lr.ph521:                                        ; preds = %396, %.lr.ph521
  %.15519 = phi i64 [ %401, %.lr.ph521 ], [ 1, %396 ]
  %398 = getelementptr inbounds float, ptr %12, i64 %.15519
  %399 = call i32 @slassq_(ptr noundef nonnull %8, ptr noundef nonnull %398, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %400 = load i64, ptr %8, align 8, !tbaa !5
  %401 = add nsw i64 %400, %.15519
  %402 = add nsw i64 %400, 1
  store i64 %402, ptr %8, align 8, !tbaa !5
  %.not306.not = icmp slt i64 %400, %397
  br i1 %.not306.not, label %.lr.ph521, label %.loopexit361, !llvm.loop !67

403:                                              ; preds = %384
  br i1 %.not300, label %417, label %404

404:                                              ; preds = %403
  store float 1.000000e+00, ptr %10, align 4, !tbaa !9
  %405 = load i64, ptr %3, align 8, !tbaa !5
  %406 = sitofp i64 %405 to float
  store float %406, ptr %9, align 4, !tbaa !9
  %.not303.not522 = icmp sgt i64 %405, 1
  br i1 %.not303.not522, label %.lr.ph526, label %.loopexit361

.lr.ph526:                                        ; preds = %404, %.lr.ph526
  %407 = phi i64 [ %412, %.lr.ph526 ], [ %405, %404 ]
  %.16524 = phi i64 [ %415, %.lr.ph526 ], [ 2, %404 ]
  %408 = phi i64 [ %416, %.lr.ph526 ], [ 1, %404 ]
  %409 = sub nsw i64 %407, %408
  store i64 %409, ptr %7, align 8, !tbaa !5
  %410 = getelementptr inbounds float, ptr %12, i64 %.16524
  %411 = call i32 @slassq_(ptr noundef nonnull %7, ptr noundef nonnull %410, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %412 = load i64, ptr %3, align 8, !tbaa !5
  %413 = add i64 %.16524, 1
  %414 = add i64 %413, %412
  %415 = sub i64 %414, %408
  %416 = add nuw nsw i64 %408, 1
  %.not303.not = icmp slt i64 %416, %405
  br i1 %.not303.not, label %.lr.ph526, label %.loopexit361, !llvm.loop !68

417:                                              ; preds = %403
  store float 0.000000e+00, ptr %10, align 4, !tbaa !9
  store float 1.000000e+00, ptr %9, align 4, !tbaa !9
  %418 = load i64, ptr %3, align 8, !tbaa !5
  %.not301527 = icmp slt i64 %418, 1
  br i1 %.not301527, label %.loopexit361, label %.lr.ph531

.lr.ph531:                                        ; preds = %417, %.lr.ph531
  %419 = phi i64 [ %429, %.lr.ph531 ], [ 1, %417 ]
  %420 = phi i64 [ %425, %.lr.ph531 ], [ %418, %417 ]
  %.17529 = phi i64 [ %428, %.lr.ph531 ], [ 1, %417 ]
  %storemerge528.neg = phi i64 [ %.neg, %.lr.ph531 ], [ -1, %417 ]
  %421 = add i64 %storemerge528.neg, 1
  %422 = add i64 %421, %420
  store i64 %422, ptr %7, align 8, !tbaa !5
  %423 = getelementptr inbounds float, ptr %12, i64 %.17529
  %424 = call i32 @slassq_(ptr noundef nonnull %7, ptr noundef nonnull %423, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %425 = load i64, ptr %3, align 8, !tbaa !5
  %426 = add i64 %.17529, 1
  %427 = add i64 %426, %425
  %428 = sub i64 %427, %419
  %.neg = xor i64 %419, -1
  %429 = add nuw nsw i64 %419, 1
  %.not301.not = icmp slt i64 %419, %418
  br i1 %.not301.not, label %.lr.ph531, label %.loopexit361, !llvm.loop !69

.loopexit361:                                     ; preds = %.lr.ph517, %.lr.ph521, %.lr.ph526, %.lr.ph531, %388, %396, %404, %417
  %430 = load float, ptr %10, align 4, !tbaa !9
  %431 = fpext float %430 to double
  %432 = load float, ptr %9, align 4, !tbaa !9
  %433 = fpext float %432 to double
  %434 = call double @sqrt(double noundef %433) #6
  %435 = fmul double %434, %431
  %436 = fptrunc double %435 to float
  br label %.loopexit365

.loopexit365.loopexit827.unr-lcssa:               ; preds = %.lr.ph511, %.lr.ph511.preheader
  %.lcssa828.ph = phi float [ poison, %.lr.ph511.preheader ], [ %378, %.lr.ph511 ]
  %.10509.unr = phi float [ 0.000000e+00, %.lr.ph511.preheader ], [ %378, %.lr.ph511 ]
  %.16285508.unr = phi i64 [ 1, %.lr.ph511.preheader ], [ %379, %.lr.ph511 ]
  %lcmp.mod855.not = icmp eq i64 %xtraiter854, 0
  br i1 %lcmp.mod855.not, label %.loopexit365, label %.lr.ph511.epil

.lr.ph511.epil:                                   ; preds = %.loopexit365.loopexit827.unr-lcssa, %.lr.ph511.epil
  %.10509.epil = phi float [ %440, %.lr.ph511.epil ], [ %.10509.unr, %.loopexit365.loopexit827.unr-lcssa ]
  %.16285508.epil = phi i64 [ %441, %.lr.ph511.epil ], [ %.16285508.unr, %.loopexit365.loopexit827.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph511.epil ], [ 0, %.loopexit365.loopexit827.unr-lcssa ]
  %437 = getelementptr inbounds float, ptr %11, i64 %.16285508.epil
  %438 = load float, ptr %437, align 4, !tbaa !9
  %439 = fcmp oge float %.10509.epil, %438
  %440 = select i1 %439, float %.10509.epil, float %438
  %441 = add nuw i64 %.16285508.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter854
  br i1 %epil.iter.cmp.not, label %.loopexit365, label %.lr.ph511.epil, !llvm.loop !70

.loopexit365:                                     ; preds = %._crit_edge, %._crit_edge394, %75, %._crit_edge426, %.loopexit365.loopexit827.unr-lcssa, %.lr.ph511.epil, %.loopexit358, %.loopexit, %22, %51, %64, %77, %99, %138, %.loopexit366, %6, %.loopexit361, %382
  %.11 = phi float [ %436, %.loopexit361 ], [ undef, %382 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %.loopexit366 ], [ 0.000000e+00, %138 ], [ 0.000000e+00, %99 ], [ 0.000000e+00, %77 ], [ 0.000000e+00, %64 ], [ 1.000000e+00, %51 ], [ 1.000000e+00, %22 ], [ %165, %.loopexit ], [ %136, %.loopexit358 ], [ %.lcssa828.ph, %.loopexit365.loopexit827.unr-lcssa ], [ %440, %.lr.ph511.epil ], [ %.7.lcssa, %._crit_edge426 ], [ %73, %75 ], [ %.3.lcssa, %._crit_edge394 ], [ %.1.lcssa, %._crit_edge ]
  %442 = fpext float %.11 to double
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  ret double %442
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @slassq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12, !28, !29}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = distinct !{!30, !12, !29, !28}
!31 = !{!32}
!32 = distinct !{!32, !33}
!33 = distinct !{!33, !"LVerDomain"}
!34 = !{!35}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !12, !28, !29}
!37 = distinct !{!37, !12, !28}
!38 = distinct !{!38, !12}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !12, !28, !29}
!45 = distinct !{!45, !12, !28}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12, !28, !29}
!48 = distinct !{!48, !12, !29, !28}
!49 = !{!50}
!50 = distinct !{!50, !51}
!51 = distinct !{!51, !"LVerDomain"}
!52 = !{!53}
!53 = distinct !{!53, !51}
!54 = distinct !{!54, !12, !28, !29}
!55 = distinct !{!55, !12, !28}
!56 = distinct !{!56, !12}
!57 = !{!58}
!58 = distinct !{!58, !59}
!59 = distinct !{!59, !"LVerDomain"}
!60 = !{!61}
!61 = distinct !{!61, !59}
!62 = distinct !{!62, !12, !28, !29}
!63 = distinct !{!63, !12, !28}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.unroll.disable"}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass