; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/TESTING (sblat3)

; 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.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local i32 @smake_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, i64 noundef %13) #2 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store i64 %11, ptr %26, align 8, !tbaa !9
  store i64 %12, ptr %27, align 8, !tbaa !9
  store i64 %13, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  %43 = load ptr, ptr %21, align 8, !tbaa !5
  %44 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %44, ptr %29, align 8, !tbaa !9
  %45 = load i64, ptr %29, align 8, !tbaa !9
  %46 = add nsw i64 1, %45
  store i64 %46, ptr %30, align 8, !tbaa !9
  %47 = load i64, ptr %30, align 8, !tbaa !9
  %48 = load ptr, ptr %20, align 8, !tbaa !5
  %49 = sub i64 0, %47
  %50 = getelementptr inbounds float, ptr %48, i64 %49
  store ptr %50, ptr %20, align 8, !tbaa !5
  %51 = load ptr, ptr %22, align 8, !tbaa !5
  %52 = getelementptr inbounds float, ptr %51, i32 -1
  store ptr %52, ptr %22, align 8, !tbaa !5
  %53 = load ptr, ptr %15, align 8, !tbaa !5
  %54 = call i64 @s_cmp(ptr noundef %53, ptr noundef @.str.4, i64 noundef 2, i64 noundef 2)
  %55 = icmp eq i64 %54, 0
  %56 = zext i1 %55 to i32
  %57 = sext i32 %56 to i64
  store i64 %57, ptr %35, align 8, !tbaa !9
  %58 = load ptr, ptr %15, align 8, !tbaa !5
  %59 = call i64 @s_cmp(ptr noundef %58, ptr noundef @.str.6, i64 noundef 2, i64 noundef 2)
  %60 = icmp eq i64 %59, 0
  %61 = zext i1 %60 to i32
  %62 = sext i32 %61 to i64
  store i64 %62, ptr %37, align 8, !tbaa !9
  %63 = load ptr, ptr %15, align 8, !tbaa !5
  %64 = call i64 @s_cmp(ptr noundef %63, ptr noundef @.str.7, i64 noundef 2, i64 noundef 2)
  %65 = icmp eq i64 %64, 0
  %66 = zext i1 %65 to i32
  %67 = sext i32 %66 to i64
  store i64 %67, ptr %36, align 8, !tbaa !9
  %68 = load i64, ptr %37, align 8, !tbaa !9
  %69 = icmp ne i64 %68, 0
  br i1 %69, label %73, label %70

70:                                               ; preds = %14
  %71 = load i64, ptr %36, align 8, !tbaa !9
  %72 = icmp ne i64 %71, 0
  br i1 %72, label %73, label %78

73:                                               ; preds = %70, %14
  %74 = load ptr, ptr %16, align 8, !tbaa !5
  %75 = load i8, ptr %74, align 1, !tbaa !11
  %76 = zext i8 %75 to i32
  %77 = icmp eq i32 %76, 85
  br label %78

78:                                               ; preds = %73, %70
  %79 = phi i1 [ false, %70 ], [ %77, %73 ]
  %80 = zext i1 %79 to i32
  %81 = sext i32 %80 to i64
  store i64 %81, ptr %42, align 8, !tbaa !9
  %82 = load i64, ptr %37, align 8, !tbaa !9
  %83 = icmp ne i64 %82, 0
  br i1 %83, label %87, label %84

84:                                               ; preds = %78
  %85 = load i64, ptr %36, align 8, !tbaa !9
  %86 = icmp ne i64 %85, 0
  br i1 %86, label %87, label %92

87:                                               ; preds = %84, %78
  %88 = load ptr, ptr %16, align 8, !tbaa !5
  %89 = load i8, ptr %88, align 1, !tbaa !11
  %90 = zext i8 %89 to i32
  %91 = icmp eq i32 %90, 76
  br label %92

92:                                               ; preds = %87, %84
  %93 = phi i1 [ false, %84 ], [ %91, %87 ]
  %94 = zext i1 %93 to i32
  %95 = sext i32 %94 to i64
  store i64 %95, ptr %41, align 8, !tbaa !9
  %96 = load i64, ptr %36, align 8, !tbaa !9
  %97 = icmp ne i64 %96, 0
  br i1 %97, label %98, label %103

98:                                               ; preds = %92
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = load i8, ptr %99, align 1, !tbaa !11
  %101 = zext i8 %100 to i32
  %102 = icmp eq i32 %101, 85
  br label %103

103:                                              ; preds = %98, %92
  %104 = phi i1 [ false, %92 ], [ %102, %98 ]
  %105 = zext i1 %104 to i32
  %106 = sext i32 %105 to i64
  store i64 %106, ptr %40, align 8, !tbaa !9
  %107 = load ptr, ptr %19, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %109

109:                                              ; preds = %235, %103
  %110 = load i64, ptr %34, align 8, !tbaa !9
  %111 = load i64, ptr %31, align 8, !tbaa !9
  %112 = icmp sle i64 %110, %111
  br i1 %112, label %113, label %238

113:                                              ; preds = %109
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  store i64 %115, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %207, %113
  %117 = load i64, ptr %33, align 8, !tbaa !9
  %118 = load i64, ptr %32, align 8, !tbaa !9
  %119 = icmp sle i64 %117, %118
  br i1 %119, label %120, label %210

120:                                              ; preds = %116
  %121 = load i64, ptr %35, align 8, !tbaa !9
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %137, label %123

123:                                              ; preds = %120
  %124 = load i64, ptr %42, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %130

126:                                              ; preds = %123
  %127 = load i64, ptr %33, align 8, !tbaa !9
  %128 = load i64, ptr %34, align 8, !tbaa !9
  %129 = icmp sle i64 %127, %128
  br i1 %129, label %137, label %130

130:                                              ; preds = %126, %123
  %131 = load i64, ptr %41, align 8, !tbaa !9
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %133, label %206

133:                                              ; preds = %130
  %134 = load i64, ptr %33, align 8, !tbaa !9
  %135 = load i64, ptr %34, align 8, !tbaa !9
  %136 = icmp sge i64 %134, %135
  br i1 %136, label %137, label %206

137:                                              ; preds = %133, %126, %120
  %138 = load ptr, ptr %24, align 8, !tbaa !5
  %139 = call double @sbeg_(ptr noundef %138)
  %140 = load ptr, ptr %25, align 8, !tbaa !5
  %141 = load float, ptr %140, align 4, !tbaa !12
  %142 = fpext float %141 to double
  %143 = fadd double %139, %142
  %144 = fptrunc double %143 to float
  %145 = load ptr, ptr %20, align 8, !tbaa !5
  %146 = load i64, ptr %33, align 8, !tbaa !9
  %147 = load i64, ptr %34, align 8, !tbaa !9
  %148 = load i64, ptr %29, align 8, !tbaa !9
  %149 = mul nsw i64 %147, %148
  %150 = add nsw i64 %146, %149
  %151 = getelementptr inbounds float, ptr %145, i64 %150
  store float %144, ptr %151, align 4, !tbaa !12
  %152 = load i64, ptr %33, align 8, !tbaa !9
  %153 = load i64, ptr %34, align 8, !tbaa !9
  %154 = icmp ne i64 %152, %153
  br i1 %154, label %155, label %205

155:                                              ; preds = %137
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp sgt i64 %157, 3
  br i1 %158, label %159, label %173

159:                                              ; preds = %155
  %160 = load i64, ptr %34, align 8, !tbaa !9
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = sdiv i64 %162, 2
  %164 = icmp eq i64 %160, %163
  br i1 %164, label %165, label %173

165:                                              ; preds = %159
  %166 = load ptr, ptr %20, align 8, !tbaa !5
  %167 = load i64, ptr %33, align 8, !tbaa !9
  %168 = load i64, ptr %34, align 8, !tbaa !9
  %169 = load i64, ptr %29, align 8, !tbaa !9
  %170 = mul nsw i64 %168, %169
  %171 = add nsw i64 %167, %170
  %172 = getelementptr inbounds float, ptr %166, i64 %171
  store float 0.000000e+00, ptr %172, align 4, !tbaa !12
  br label %173

173:                                              ; preds = %165, %159, %155
  %174 = load i64, ptr %37, align 8, !tbaa !9
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %176, label %192

176:                                              ; preds = %173
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i64, ptr %33, align 8, !tbaa !9
  %179 = load i64, ptr %34, align 8, !tbaa !9
  %180 = load i64, ptr %29, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %178, %181
  %183 = getelementptr inbounds float, ptr %177, i64 %182
  %184 = load float, ptr %183, align 4, !tbaa !12
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = load i64, ptr %34, align 8, !tbaa !9
  %187 = load i64, ptr %33, align 8, !tbaa !9
  %188 = load i64, ptr %29, align 8, !tbaa !9
  %189 = mul nsw i64 %187, %188
  %190 = add nsw i64 %186, %189
  %191 = getelementptr inbounds float, ptr %185, i64 %190
  store float %184, ptr %191, align 4, !tbaa !12
  br label %204

192:                                              ; preds = %173
  %193 = load i64, ptr %36, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %203

195:                                              ; preds = %192
  %196 = load ptr, ptr %20, align 8, !tbaa !5
  %197 = load i64, ptr %34, align 8, !tbaa !9
  %198 = load i64, ptr %33, align 8, !tbaa !9
  %199 = load i64, ptr %29, align 8, !tbaa !9
  %200 = mul nsw i64 %198, %199
  %201 = add nsw i64 %197, %200
  %202 = getelementptr inbounds float, ptr %196, i64 %201
  store float 0.000000e+00, ptr %202, align 4, !tbaa !12
  br label %203

203:                                              ; preds = %195, %192
  br label %204

204:                                              ; preds = %203, %176
  br label %205

205:                                              ; preds = %204, %137
  br label %206

206:                                              ; preds = %205, %133, %130
  br label %207

207:                                              ; preds = %206
  %208 = load i64, ptr %33, align 8, !tbaa !9
  %209 = add nsw i64 %208, 1
  store i64 %209, ptr %33, align 8, !tbaa !9
  br label %116, !llvm.loop !14

210:                                              ; preds = %116
  %211 = load i64, ptr %36, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %213, label %223

213:                                              ; preds = %210
  %214 = load ptr, ptr %20, align 8, !tbaa !5
  %215 = load i64, ptr %34, align 8, !tbaa !9
  %216 = load i64, ptr %34, align 8, !tbaa !9
  %217 = load i64, ptr %29, align 8, !tbaa !9
  %218 = mul nsw i64 %216, %217
  %219 = add nsw i64 %215, %218
  %220 = getelementptr inbounds float, ptr %214, i64 %219
  %221 = load float, ptr %220, align 4, !tbaa !12
  %222 = fadd float %221, 1.000000e+00
  store float %222, ptr %220, align 4, !tbaa !12
  br label %223

223:                                              ; preds = %213, %210
  %224 = load i64, ptr %40, align 8, !tbaa !9
  %225 = icmp ne i64 %224, 0
  br i1 %225, label %226, label %234

226:                                              ; preds = %223
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i64, ptr %34, align 8, !tbaa !9
  %229 = load i64, ptr %34, align 8, !tbaa !9
  %230 = load i64, ptr %29, align 8, !tbaa !9
  %231 = mul nsw i64 %229, %230
  %232 = add nsw i64 %228, %231
  %233 = getelementptr inbounds float, ptr %227, i64 %232
  store float 1.000000e+00, ptr %233, align 4, !tbaa !12
  br label %234

234:                                              ; preds = %226, %223
  br label %235

235:                                              ; preds = %234
  %236 = load i64, ptr %34, align 8, !tbaa !9
  %237 = add nsw i64 %236, 1
  store i64 %237, ptr %34, align 8, !tbaa !9
  br label %109, !llvm.loop !16

238:                                              ; preds = %109
  %239 = load ptr, ptr %15, align 8, !tbaa !5
  %240 = call i64 @s_cmp(ptr noundef %239, ptr noundef @.str.4, i64 noundef 2, i64 noundef 2)
  %241 = icmp eq i64 %240, 0
  br i1 %241, label %242, label %305

242:                                              ; preds = %238
  %243 = load ptr, ptr %19, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  store i64 %244, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %301, %242
  %246 = load i64, ptr %34, align 8, !tbaa !9
  %247 = load i64, ptr %31, align 8, !tbaa !9
  %248 = icmp sle i64 %246, %247
  br i1 %248, label %249, label %304

249:                                              ; preds = %245
  %250 = load ptr, ptr %18, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  store i64 %251, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %274, %249
  %253 = load i64, ptr %33, align 8, !tbaa !9
  %254 = load i64, ptr %32, align 8, !tbaa !9
  %255 = icmp sle i64 %253, %254
  br i1 %255, label %256, label %277

256:                                              ; preds = %252
  %257 = load ptr, ptr %20, align 8, !tbaa !5
  %258 = load i64, ptr %33, align 8, !tbaa !9
  %259 = load i64, ptr %34, align 8, !tbaa !9
  %260 = load i64, ptr %29, align 8, !tbaa !9
  %261 = mul nsw i64 %259, %260
  %262 = add nsw i64 %258, %261
  %263 = getelementptr inbounds float, ptr %257, i64 %262
  %264 = load float, ptr %263, align 4, !tbaa !12
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = load i64, ptr %33, align 8, !tbaa !9
  %267 = load i64, ptr %34, align 8, !tbaa !9
  %268 = sub nsw i64 %267, 1
  %269 = load ptr, ptr %23, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = mul nsw i64 %268, %270
  %272 = add nsw i64 %266, %271
  %273 = getelementptr inbounds float, ptr %265, i64 %272
  store float %264, ptr %273, align 4, !tbaa !12
  br label %274

274:                                              ; preds = %256
  %275 = load i64, ptr %33, align 8, !tbaa !9
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %33, align 8, !tbaa !9
  br label %252, !llvm.loop !17

277:                                              ; preds = %252
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  store i64 %279, ptr %32, align 8, !tbaa !9
  %280 = load ptr, ptr %18, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = add nsw i64 %281, 1
  store i64 %282, ptr %33, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %297, %277
  %284 = load i64, ptr %33, align 8, !tbaa !9
  %285 = load i64, ptr %32, align 8, !tbaa !9
  %286 = icmp sle i64 %284, %285
  br i1 %286, label %287, label %300

287:                                              ; preds = %283
  %288 = load ptr, ptr %22, align 8, !tbaa !5
  %289 = load i64, ptr %33, align 8, !tbaa !9
  %290 = load i64, ptr %34, align 8, !tbaa !9
  %291 = sub nsw i64 %290, 1
  %292 = load ptr, ptr %23, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = mul nsw i64 %291, %293
  %295 = add nsw i64 %289, %294
  %296 = getelementptr inbounds float, ptr %288, i64 %295
  store float -1.000000e+10, ptr %296, align 4, !tbaa !12
  br label %297

297:                                              ; preds = %287
  %298 = load i64, ptr %33, align 8, !tbaa !9
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %33, align 8, !tbaa !9
  br label %283, !llvm.loop !18

300:                                              ; preds = %283
  br label %301

301:                                              ; preds = %300
  %302 = load i64, ptr %34, align 8, !tbaa !9
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %34, align 8, !tbaa !9
  br label %245, !llvm.loop !19

304:                                              ; preds = %245
  br label %419

305:                                              ; preds = %238
  %306 = load ptr, ptr %15, align 8, !tbaa !5
  %307 = call i64 @s_cmp(ptr noundef %306, ptr noundef @.str.6, i64 noundef 2, i64 noundef 2)
  %308 = icmp eq i64 %307, 0
  br i1 %308, label %313, label %309

309:                                              ; preds = %305
  %310 = load ptr, ptr %15, align 8, !tbaa !5
  %311 = call i64 @s_cmp(ptr noundef %310, ptr noundef @.str.7, i64 noundef 2, i64 noundef 2)
  %312 = icmp eq i64 %311, 0
  br i1 %312, label %313, label %418

313:                                              ; preds = %309, %305
  %314 = load ptr, ptr %19, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  store i64 %315, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %316

316:                                              ; preds = %414, %313
  %317 = load i64, ptr %34, align 8, !tbaa !9
  %318 = load i64, ptr %31, align 8, !tbaa !9
  %319 = icmp sle i64 %317, %318
  br i1 %319, label %320, label %417

320:                                              ; preds = %316
  %321 = load i64, ptr %42, align 8, !tbaa !9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %332

323:                                              ; preds = %320
  store i64 1, ptr %38, align 8, !tbaa !9
  %324 = load i64, ptr %40, align 8, !tbaa !9
  %325 = icmp ne i64 %324, 0
  br i1 %325, label %326, label %329

326:                                              ; preds = %323
  %327 = load i64, ptr %34, align 8, !tbaa !9
  %328 = sub nsw i64 %327, 1
  store i64 %328, ptr %39, align 8, !tbaa !9
  br label %331

329:                                              ; preds = %323
  %330 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %330, ptr %39, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %329, %326
  br label %343

332:                                              ; preds = %320
  %333 = load i64, ptr %40, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %338

335:                                              ; preds = %332
  %336 = load i64, ptr %34, align 8, !tbaa !9
  %337 = add nsw i64 %336, 1
  store i64 %337, ptr %38, align 8, !tbaa !9
  br label %340

338:                                              ; preds = %332
  %339 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %339, ptr %38, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %338, %335
  %341 = load ptr, ptr %19, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  store i64 %342, ptr %39, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %340, %331
  %344 = load i64, ptr %38, align 8, !tbaa !9
  %345 = sub nsw i64 %344, 1
  store i64 %345, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %360, %343
  %347 = load i64, ptr %33, align 8, !tbaa !9
  %348 = load i64, ptr %32, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %363

350:                                              ; preds = %346
  %351 = load ptr, ptr %22, align 8, !tbaa !5
  %352 = load i64, ptr %33, align 8, !tbaa !9
  %353 = load i64, ptr %34, align 8, !tbaa !9
  %354 = sub nsw i64 %353, 1
  %355 = load ptr, ptr %23, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = mul nsw i64 %354, %356
  %358 = add nsw i64 %352, %357
  %359 = getelementptr inbounds float, ptr %351, i64 %358
  store float -1.000000e+10, ptr %359, align 4, !tbaa !12
  br label %360

360:                                              ; preds = %350
  %361 = load i64, ptr %33, align 8, !tbaa !9
  %362 = add nsw i64 %361, 1
  store i64 %362, ptr %33, align 8, !tbaa !9
  br label %346, !llvm.loop !20

363:                                              ; preds = %346
  %364 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %364, ptr %32, align 8, !tbaa !9
  %365 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %365, ptr %33, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %388, %363
  %367 = load i64, ptr %33, align 8, !tbaa !9
  %368 = load i64, ptr %32, align 8, !tbaa !9
  %369 = icmp sle i64 %367, %368
  br i1 %369, label %370, label %391

370:                                              ; preds = %366
  %371 = load ptr, ptr %20, align 8, !tbaa !5
  %372 = load i64, ptr %33, align 8, !tbaa !9
  %373 = load i64, ptr %34, align 8, !tbaa !9
  %374 = load i64, ptr %29, align 8, !tbaa !9
  %375 = mul nsw i64 %373, %374
  %376 = add nsw i64 %372, %375
  %377 = getelementptr inbounds float, ptr %371, i64 %376
  %378 = load float, ptr %377, align 4, !tbaa !12
  %379 = load ptr, ptr %22, align 8, !tbaa !5
  %380 = load i64, ptr %33, align 8, !tbaa !9
  %381 = load i64, ptr %34, align 8, !tbaa !9
  %382 = sub nsw i64 %381, 1
  %383 = load ptr, ptr %23, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = mul nsw i64 %382, %384
  %386 = add nsw i64 %380, %385
  %387 = getelementptr inbounds float, ptr %379, i64 %386
  store float %378, ptr %387, align 4, !tbaa !12
  br label %388

388:                                              ; preds = %370
  %389 = load i64, ptr %33, align 8, !tbaa !9
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %33, align 8, !tbaa !9
  br label %366, !llvm.loop !21

391:                                              ; preds = %366
  %392 = load ptr, ptr %23, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  store i64 %393, ptr %32, align 8, !tbaa !9
  %394 = load i64, ptr %39, align 8, !tbaa !9
  %395 = add nsw i64 %394, 1
  store i64 %395, ptr %33, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %410, %391
  %397 = load i64, ptr %33, align 8, !tbaa !9
  %398 = load i64, ptr %32, align 8, !tbaa !9
  %399 = icmp sle i64 %397, %398
  br i1 %399, label %400, label %413

400:                                              ; preds = %396
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = load i64, ptr %33, align 8, !tbaa !9
  %403 = load i64, ptr %34, align 8, !tbaa !9
  %404 = sub nsw i64 %403, 1
  %405 = load ptr, ptr %23, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = mul nsw i64 %404, %406
  %408 = add nsw i64 %402, %407
  %409 = getelementptr inbounds float, ptr %401, i64 %408
  store float -1.000000e+10, ptr %409, align 4, !tbaa !12
  br label %410

410:                                              ; preds = %400
  %411 = load i64, ptr %33, align 8, !tbaa !9
  %412 = add nsw i64 %411, 1
  store i64 %412, ptr %33, align 8, !tbaa !9
  br label %396, !llvm.loop !22

413:                                              ; preds = %396
  br label %414

414:                                              ; preds = %413
  %415 = load i64, ptr %34, align 8, !tbaa !9
  %416 = add nsw i64 %415, 1
  store i64 %416, ptr %34, align 8, !tbaa !9
  br label %316, !llvm.loop !23

417:                                              ; preds = %316
  br label %418

418:                                              ; preds = %417, %309
  br label %419

419:                                              ; preds = %418, %304
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  ret i32 0
}

; Function Attrs: nounwind uwtable
declare dso_local double @sbeg_(ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #3 = { 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 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}


; 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.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @smake_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef writeonly %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr nocapture noundef readonly %10, i64 noundef %11, i64 noundef %12, i64 noundef %13) local_unnamed_addr #1 {
  %15 = ptrtoint ptr %5 to i64
  %16 = ptrtoint ptr %7 to i64
  %17 = load i64, ptr %6, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds float, ptr %5, i64 %18
  %20 = getelementptr inbounds i8, ptr %7, i64 -4
  %21 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.4, i64 noundef 2, i64 noundef 2) #2
  %22 = icmp eq i64 %21, 0
  %23 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.6, i64 noundef 2, i64 noundef 2) #2
  %.fr224 = freeze i64 %23
  %24 = icmp eq i64 %.fr224, 0
  %25 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.7, i64 noundef 2, i64 noundef 2) #2
  %26 = icmp eq i64 %25, 0
  %or.cond = select i1 %24, i1 true, i1 %26
  br i1 %or.cond, label %27, label %.thread166

27:                                               ; preds = %14
  %28 = load i8, ptr %1, align 1, !tbaa !9
  %29 = icmp eq i8 %28, 85
  %30 = icmp eq i8 %28, 76
  br i1 %26, label %31, label %.thread166

31:                                               ; preds = %27
  %32 = load i8, ptr %2, align 1, !tbaa !9
  %33 = icmp eq i8 %32, 85
  br label %.thread166

.thread166:                                       ; preds = %14, %31, %27
  %34 = phi i1 [ %30, %27 ], [ %30, %31 ], [ false, %14 ]
  %35 = phi i1 [ %29, %27 ], [ %29, %31 ], [ false, %14 ]
  %36 = phi i1 [ false, %27 ], [ %33, %31 ], [ false, %14 ]
  %37 = load i64, ptr %4, align 8, !tbaa !5
  %.not172 = icmp slt i64 %37, 1
  br i1 %.not172, label %._crit_edge176, label %.lr.ph175

.lr.ph175:                                        ; preds = %.thread166
  %38 = add i64 %17, 1
  %39 = load i64, ptr %3, align 8, !tbaa !5
  %40 = icmp slt i64 %39, 1
  br i1 %40, label %.lr.ph175.split.us, label %.lr.ph175.split

.lr.ph175.split.us:                               ; preds = %.lr.ph175
  br i1 %26, label %.lr.ph175.split.us.split.us, label %.lr.ph175.split.us.split

.lr.ph175.split.us.split.us:                      ; preds = %.lr.ph175.split.us
  br i1 %36, label %.lr.ph175.split.us.split.us.split.us.preheader, label %.lr.ph175.split.us.split.us.split.preheader

.lr.ph175.split.us.split.us.split.preheader:      ; preds = %.lr.ph175.split.us.split.us
  %xtraiter342 = and i64 %37, 3
  %41 = icmp ult i64 %37, 4
  br i1 %41, label %._crit_edge176.loopexit338.unr-lcssa, label %.lr.ph175.split.us.split.us.split.preheader.new

.lr.ph175.split.us.split.us.split.preheader.new:  ; preds = %.lr.ph175.split.us.split.us.split.preheader
  %unroll_iter345 = and i64 %37, 9223372036854775804
  br label %.lr.ph175.split.us.split.us.split

.lr.ph175.split.us.split.us.split.us.preheader:   ; preds = %.lr.ph175.split.us.split.us
  %xtraiter347 = and i64 %37, 3
  %42 = icmp ult i64 %37, 4
  br i1 %42, label %._crit_edge176.loopexit.unr-lcssa, label %.lr.ph175.split.us.split.us.split.us.preheader.new

.lr.ph175.split.us.split.us.split.us.preheader.new: ; preds = %.lr.ph175.split.us.split.us.split.us.preheader
  %unroll_iter350 = and i64 %37, 9223372036854775804
  br label %.lr.ph175.split.us.split.us.split.us

.lr.ph175.split.us.split.us.split.us:             ; preds = %.lr.ph175.split.us.split.us.split.us, %.lr.ph175.split.us.split.us.split.us.preheader.new
  %.0145173.us.us.us = phi i64 [ 1, %.lr.ph175.split.us.split.us.split.us.preheader.new ], [ %54, %.lr.ph175.split.us.split.us.split.us ]
  %niter351 = phi i64 [ 0, %.lr.ph175.split.us.split.us.split.us.preheader.new ], [ %niter351.next.3, %.lr.ph175.split.us.split.us.split.us ]
  %43 = mul i64 %.0145173.us.us.us, %38
  %44 = getelementptr inbounds float, ptr %19, i64 %43
  store float 1.000000e+00, ptr %44, align 4, !tbaa !10
  %45 = add nuw nsw i64 %.0145173.us.us.us, 1
  %46 = mul i64 %45, %38
  %47 = getelementptr inbounds float, ptr %19, i64 %46
  store float 1.000000e+00, ptr %47, align 4, !tbaa !10
  %48 = add nuw nsw i64 %.0145173.us.us.us, 2
  %49 = mul i64 %48, %38
  %50 = getelementptr inbounds float, ptr %19, i64 %49
  store float 1.000000e+00, ptr %50, align 4, !tbaa !10
  %51 = add nuw i64 %.0145173.us.us.us, 3
  %52 = mul i64 %51, %38
  %53 = getelementptr inbounds float, ptr %19, i64 %52
  store float 1.000000e+00, ptr %53, align 4, !tbaa !10
  %54 = add nuw i64 %.0145173.us.us.us, 4
  %niter351.next.3 = add nuw i64 %niter351, 4
  %niter351.ncmp.3 = icmp eq i64 %niter351.next.3, %unroll_iter350
  br i1 %niter351.ncmp.3, label %._crit_edge176.loopexit.unr-lcssa, label %.lr.ph175.split.us.split.us.split.us, !llvm.loop !12

.lr.ph175.split.us.split.us.split:                ; preds = %.lr.ph175.split.us.split.us.split, %.lr.ph175.split.us.split.us.split.preheader.new
  %.0145173.us.us = phi i64 [ 1, %.lr.ph175.split.us.split.us.split.preheader.new ], [ %74, %.lr.ph175.split.us.split.us.split ]
  %niter346 = phi i64 [ 0, %.lr.ph175.split.us.split.us.split.preheader.new ], [ %niter346.next.3, %.lr.ph175.split.us.split.us.split ]
  %55 = mul i64 %.0145173.us.us, %38
  %56 = getelementptr inbounds float, ptr %19, i64 %55
  %57 = load float, ptr %56, align 4, !tbaa !10
  %58 = fadd float %57, 1.000000e+00
  store float %58, ptr %56, align 4, !tbaa !10
  %59 = add nuw nsw i64 %.0145173.us.us, 1
  %60 = mul i64 %59, %38
  %61 = getelementptr inbounds float, ptr %19, i64 %60
  %62 = load float, ptr %61, align 4, !tbaa !10
  %63 = fadd float %62, 1.000000e+00
  store float %63, ptr %61, align 4, !tbaa !10
  %64 = add nuw nsw i64 %.0145173.us.us, 2
  %65 = mul i64 %64, %38
  %66 = getelementptr inbounds float, ptr %19, i64 %65
  %67 = load float, ptr %66, align 4, !tbaa !10
  %68 = fadd float %67, 1.000000e+00
  store float %68, ptr %66, align 4, !tbaa !10
  %69 = add nuw i64 %.0145173.us.us, 3
  %70 = mul i64 %69, %38
  %71 = getelementptr inbounds float, ptr %19, i64 %70
  %72 = load float, ptr %71, align 4, !tbaa !10
  %73 = fadd float %72, 1.000000e+00
  store float %73, ptr %71, align 4, !tbaa !10
  %74 = add nuw i64 %.0145173.us.us, 4
  %niter346.next.3 = add nuw i64 %niter346, 4
  %niter346.ncmp.3 = icmp eq i64 %niter346.next.3, %unroll_iter345
  br i1 %niter346.ncmp.3, label %._crit_edge176.loopexit338.unr-lcssa, label %.lr.ph175.split.us.split.us.split, !llvm.loop !12

.lr.ph175.split.us.split:                         ; preds = %.lr.ph175.split.us
  br i1 %36, label %.lr.ph175.split.us.split.split.us.preheader, label %._crit_edge176

.lr.ph175.split.us.split.split.us.preheader:      ; preds = %.lr.ph175.split.us.split
  %xtraiter = and i64 %37, 3
  %75 = icmp ult i64 %37, 4
  br i1 %75, label %._crit_edge176.loopexit339.unr-lcssa, label %.lr.ph175.split.us.split.split.us.preheader.new

.lr.ph175.split.us.split.split.us.preheader.new:  ; preds = %.lr.ph175.split.us.split.split.us.preheader
  %unroll_iter = and i64 %37, 9223372036854775804
  br label %.lr.ph175.split.us.split.split.us

.lr.ph175.split.us.split.split.us:                ; preds = %.lr.ph175.split.us.split.split.us, %.lr.ph175.split.us.split.split.us.preheader.new
  %.0145173.us.us177 = phi i64 [ 1, %.lr.ph175.split.us.split.split.us.preheader.new ], [ %87, %.lr.ph175.split.us.split.split.us ]
  %niter = phi i64 [ 0, %.lr.ph175.split.us.split.split.us.preheader.new ], [ %niter.next.3, %.lr.ph175.split.us.split.split.us ]
  %76 = mul i64 %.0145173.us.us177, %38
  %77 = getelementptr inbounds float, ptr %19, i64 %76
  store float 1.000000e+00, ptr %77, align 4, !tbaa !10
  %78 = add nuw nsw i64 %.0145173.us.us177, 1
  %79 = mul i64 %78, %38
  %80 = getelementptr inbounds float, ptr %19, i64 %79
  store float 1.000000e+00, ptr %80, align 4, !tbaa !10
  %81 = add nuw nsw i64 %.0145173.us.us177, 2
  %82 = mul i64 %81, %38
  %83 = getelementptr inbounds float, ptr %19, i64 %82
  store float 1.000000e+00, ptr %83, align 4, !tbaa !10
  %84 = add nuw i64 %.0145173.us.us177, 3
  %85 = mul i64 %84, %38
  %86 = getelementptr inbounds float, ptr %19, i64 %85
  store float 1.000000e+00, ptr %86, align 4, !tbaa !10
  %87 = add nuw i64 %.0145173.us.us177, 4
  %niter.next.3 = add nuw i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge176.loopexit339.unr-lcssa, label %.lr.ph175.split.us.split.split.us, !llvm.loop !12

.lr.ph175.splitthread-pre-split:                  ; preds = %137
  %88 = add nuw i64 %.0145173, 1
  %.pr = load i64, ptr %3, align 8, !tbaa !5
  br label %.lr.ph175.split

.lr.ph175.split:                                  ; preds = %.lr.ph175, %.lr.ph175.splitthread-pre-split
  %89 = phi i64 [ %.pr, %.lr.ph175.splitthread-pre-split ], [ %39, %.lr.ph175 ]
  %.0145173 = phi i64 [ %88, %.lr.ph175.splitthread-pre-split ], [ 1, %.lr.ph175 ]
  %.not156170 = icmp slt i64 %89, 1
  br i1 %.not156170, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph175.split
  %90 = mul nsw i64 %.0145173, %17
  %invariant.gep = getelementptr float, ptr %19, i64 %90
  %91 = getelementptr float, ptr %19, i64 %.0145173
  br i1 %24, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %108
  %.0143171.us = phi i64 [ %109, %108 ], [ 1, %.lr.ph ]
  %.not157.us = icmp ule i64 %.0143171.us, %.0145173
  %or.cond161.not.us = and i1 %35, %.not157.us
  %or.cond167.us = select i1 %22, i1 true, i1 %or.cond161.not.us
  %.not158.us = icmp uge i64 %.0143171.us, %.0145173
  %or.cond163.not.us = and i1 %34, %.not158.us
  %or.cond168.us = select i1 %or.cond167.us, i1 true, i1 %or.cond163.not.us
  br i1 %or.cond168.us, label %92, label %108

92:                                               ; preds = %.lr.ph.split.us
  %93 = tail call double @sbeg_(ptr noundef %9)
  %94 = load float, ptr %10, align 4, !tbaa !10
  %95 = fpext float %94 to double
  %96 = fadd double %93, %95
  %97 = fptrunc double %96 to float
  %gep.us = getelementptr float, ptr %invariant.gep, i64 %.0143171.us
  store float %97, ptr %gep.us, align 4, !tbaa !10
  %.not159.us = icmp eq i64 %.0143171.us, %.0145173
  br i1 %.not159.us, label %108, label %98

98:                                               ; preds = %92
  %99 = load i64, ptr %4, align 8, !tbaa !5
  %100 = icmp sgt i64 %99, 3
  %101 = lshr i64 %99, 1
  %102 = icmp eq i64 %.0145173, %101
  %or.cond165.us = and i1 %100, %102
  br i1 %or.cond165.us, label %103, label %104

103:                                              ; preds = %98
  store float 0.000000e+00, ptr %gep.us, align 4, !tbaa !10
  br label %104

104:                                              ; preds = %103, %98
  %105 = phi float [ 0.000000e+00, %103 ], [ %97, %98 ]
  %106 = mul nsw i64 %.0143171.us, %17
  %107 = getelementptr float, ptr %91, i64 %106
  store float %105, ptr %107, align 4, !tbaa !10
  br label %108

108:                                              ; preds = %104, %92, %.lr.ph.split.us
  %109 = add nuw i64 %.0143171.us, 1
  %exitcond233.not = icmp eq i64 %.0143171.us, %89
  br i1 %exitcond233.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !14

.lr.ph.split:                                     ; preds = %.lr.ph, %126
  %.0143171 = phi i64 [ %127, %126 ], [ 1, %.lr.ph ]
  %.not157 = icmp ule i64 %.0143171, %.0145173
  %or.cond161.not = and i1 %35, %.not157
  %or.cond167 = select i1 %22, i1 true, i1 %or.cond161.not
  %.not158 = icmp uge i64 %.0143171, %.0145173
  %or.cond163.not = and i1 %34, %.not158
  %or.cond168 = select i1 %or.cond167, i1 true, i1 %or.cond163.not
  br i1 %or.cond168, label %110, label %126

110:                                              ; preds = %.lr.ph.split
  %111 = tail call double @sbeg_(ptr noundef %9)
  %112 = load float, ptr %10, align 4, !tbaa !10
  %113 = fpext float %112 to double
  %114 = fadd double %111, %113
  %115 = fptrunc double %114 to float
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0143171
  store float %115, ptr %gep, align 4, !tbaa !10
  %.not159 = icmp eq i64 %.0143171, %.0145173
  br i1 %.not159, label %126, label %116

116:                                              ; preds = %110
  %117 = load i64, ptr %4, align 8, !tbaa !5
  %118 = icmp sgt i64 %117, 3
  %119 = lshr i64 %117, 1
  %120 = icmp eq i64 %.0145173, %119
  %or.cond165 = and i1 %118, %120
  br i1 %or.cond165, label %121, label %122

121:                                              ; preds = %116
  store float 0.000000e+00, ptr %gep, align 4, !tbaa !10
  br label %122

122:                                              ; preds = %121, %116
  br i1 %26, label %123, label %126

123:                                              ; preds = %122
  %124 = mul nsw i64 %.0143171, %17
  %125 = getelementptr float, ptr %91, i64 %124
  store float 0.000000e+00, ptr %125, align 4, !tbaa !10
  br label %126

126:                                              ; preds = %.lr.ph.split, %123, %122, %110
  %127 = add nuw i64 %.0143171, 1
  %exitcond.not = icmp eq i64 %.0143171, %89
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !14

._crit_edge:                                      ; preds = %126, %108, %.lr.ph175.split
  br i1 %26, label %128, label %133

128:                                              ; preds = %._crit_edge
  %129 = mul i64 %.0145173, %38
  %130 = getelementptr inbounds float, ptr %19, i64 %129
  %131 = load float, ptr %130, align 4, !tbaa !10
  %132 = fadd float %131, 1.000000e+00
  store float %132, ptr %130, align 4, !tbaa !10
  br label %133

133:                                              ; preds = %128, %._crit_edge
  br i1 %36, label %134, label %137

134:                                              ; preds = %133
  %135 = mul i64 %.0145173, %38
  %136 = getelementptr inbounds float, ptr %19, i64 %135
  store float 1.000000e+00, ptr %136, align 4, !tbaa !10
  br label %137

137:                                              ; preds = %133, %134
  %exitcond234.not = icmp eq i64 %.0145173, %37
  br i1 %exitcond234.not, label %._crit_edge176, label %.lr.ph175.splitthread-pre-split, !llvm.loop !15

._crit_edge176.loopexit.unr-lcssa:                ; preds = %.lr.ph175.split.us.split.us.split.us, %.lr.ph175.split.us.split.us.split.us.preheader
  %.0145173.us.us.us.unr = phi i64 [ 1, %.lr.ph175.split.us.split.us.split.us.preheader ], [ %54, %.lr.ph175.split.us.split.us.split.us ]
  %lcmp.mod349.not = icmp eq i64 %xtraiter347, 0
  br i1 %lcmp.mod349.not, label %._crit_edge176, label %.lr.ph175.split.us.split.us.split.us.epil

.lr.ph175.split.us.split.us.split.us.epil:        ; preds = %._crit_edge176.loopexit.unr-lcssa, %.lr.ph175.split.us.split.us.split.us.epil
  %.0145173.us.us.us.epil = phi i64 [ %140, %.lr.ph175.split.us.split.us.split.us.epil ], [ %.0145173.us.us.us.unr, %._crit_edge176.loopexit.unr-lcssa ]
  %epil.iter348 = phi i64 [ %epil.iter348.next, %.lr.ph175.split.us.split.us.split.us.epil ], [ 0, %._crit_edge176.loopexit.unr-lcssa ]
  %138 = mul i64 %.0145173.us.us.us.epil, %38
  %139 = getelementptr inbounds float, ptr %19, i64 %138
  store float 1.000000e+00, ptr %139, align 4, !tbaa !10
  %140 = add nuw i64 %.0145173.us.us.us.epil, 1
  %epil.iter348.next = add i64 %epil.iter348, 1
  %epil.iter348.cmp.not = icmp eq i64 %epil.iter348.next, %xtraiter347
  br i1 %epil.iter348.cmp.not, label %._crit_edge176, label %.lr.ph175.split.us.split.us.split.us.epil, !llvm.loop !17

._crit_edge176.loopexit338.unr-lcssa:             ; preds = %.lr.ph175.split.us.split.us.split, %.lr.ph175.split.us.split.us.split.preheader
  %.0145173.us.us.unr = phi i64 [ 1, %.lr.ph175.split.us.split.us.split.preheader ], [ %74, %.lr.ph175.split.us.split.us.split ]
  %lcmp.mod344.not = icmp eq i64 %xtraiter342, 0
  br i1 %lcmp.mod344.not, label %._crit_edge176, label %.lr.ph175.split.us.split.us.split.epil

.lr.ph175.split.us.split.us.split.epil:           ; preds = %._crit_edge176.loopexit338.unr-lcssa, %.lr.ph175.split.us.split.us.split.epil
  %.0145173.us.us.epil = phi i64 [ %145, %.lr.ph175.split.us.split.us.split.epil ], [ %.0145173.us.us.unr, %._crit_edge176.loopexit338.unr-lcssa ]
  %epil.iter343 = phi i64 [ %epil.iter343.next, %.lr.ph175.split.us.split.us.split.epil ], [ 0, %._crit_edge176.loopexit338.unr-lcssa ]
  %141 = mul i64 %.0145173.us.us.epil, %38
  %142 = getelementptr inbounds float, ptr %19, i64 %141
  %143 = load float, ptr %142, align 4, !tbaa !10
  %144 = fadd float %143, 1.000000e+00
  store float %144, ptr %142, align 4, !tbaa !10
  %145 = add nuw i64 %.0145173.us.us.epil, 1
  %epil.iter343.next = add i64 %epil.iter343, 1
  %epil.iter343.cmp.not = icmp eq i64 %epil.iter343.next, %xtraiter342
  br i1 %epil.iter343.cmp.not, label %._crit_edge176, label %.lr.ph175.split.us.split.us.split.epil, !llvm.loop !19

._crit_edge176.loopexit339.unr-lcssa:             ; preds = %.lr.ph175.split.us.split.split.us, %.lr.ph175.split.us.split.split.us.preheader
  %.0145173.us.us177.unr = phi i64 [ 1, %.lr.ph175.split.us.split.split.us.preheader ], [ %87, %.lr.ph175.split.us.split.split.us ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge176, label %.lr.ph175.split.us.split.split.us.epil

.lr.ph175.split.us.split.split.us.epil:           ; preds = %._crit_edge176.loopexit339.unr-lcssa, %.lr.ph175.split.us.split.split.us.epil
  %.0145173.us.us177.epil = phi i64 [ %148, %.lr.ph175.split.us.split.split.us.epil ], [ %.0145173.us.us177.unr, %._crit_edge176.loopexit339.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph175.split.us.split.split.us.epil ], [ 0, %._crit_edge176.loopexit339.unr-lcssa ]
  %146 = mul i64 %.0145173.us.us177.epil, %38
  %147 = getelementptr inbounds float, ptr %19, i64 %146
  store float 1.000000e+00, ptr %147, align 4, !tbaa !10
  %148 = add nuw i64 %.0145173.us.us177.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge176, label %.lr.ph175.split.us.split.split.us.epil, !llvm.loop !20

._crit_edge176:                                   ; preds = %137, %._crit_edge176.loopexit339.unr-lcssa, %.lr.ph175.split.us.split.split.us.epil, %._crit_edge176.loopexit338.unr-lcssa, %.lr.ph175.split.us.split.us.split.epil, %._crit_edge176.loopexit.unr-lcssa, %.lr.ph175.split.us.split.us.split.us.epil, %.lr.ph175.split.us.split, %.thread166
  %149 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.4, i64 noundef 2, i64 noundef 2) #2
  %150 = icmp eq i64 %149, 0
  br i1 %150, label %151, label %202

151:                                              ; preds = %._crit_edge176
  %152 = load i64, ptr %4, align 8, !tbaa !5
  %.not153220 = icmp slt i64 %152, 1
  br i1 %.not153220, label %.loopexit, label %.lr.ph223

.lr.ph223:                                        ; preds = %151
  %153 = load i64, ptr %3, align 8, !tbaa !5
  %.not154204 = icmp slt i64 %153, 1
  %154 = load i64, ptr %8, align 8, !tbaa !5
  %.not155.not213 = icmp slt i64 %153, %154
  br i1 %.not154204, label %.lr.ph223.split.us, label %.lr.ph207.preheader

.lr.ph207.preheader:                              ; preds = %.lr.ph223
  %155 = sub i64 %154, %153
  %156 = add nsw i64 %152, -1
  %157 = mul i64 %154, %156
  %158 = add i64 %157, %153
  %159 = shl i64 %158, 2
  %scevgep = getelementptr i8, ptr %7, i64 %159
  %160 = mul i64 %17, %156
  %161 = add i64 %160, %153
  %162 = shl i64 %161, 2
  %scevgep304 = getelementptr i8, ptr %5, i64 %162
  %163 = add nuw i64 %153, 1
  %min.iters.check308 = icmp ult i64 %153, 8
  %bound0 = icmp ugt ptr %scevgep304, %7
  %bound1 = icmp ugt ptr %scevgep, %5
  %found.conflict = and i1 %bound0, %bound1
  %164 = or i64 %154, %17
  %165 = and i64 %164, 2305843009213693952
  %166 = icmp ne i64 %165, 0
  %167 = or i1 %found.conflict, %166
  %n.vec311 = and i64 %153, 9223372036854775800
  %ind.end312 = or disjoint i64 %n.vec311, 1
  %cmp.n320 = icmp eq i64 %153, %n.vec311
  %min.iters.check292 = icmp ult i64 %155, 8
  %n.vec295 = and i64 %155, -8
  %ind.end296 = add i64 %153, %n.vec295
  %cmp.n302 = icmp eq i64 %155, %n.vec295
  br label %.lr.ph207

.lr.ph223.split.us:                               ; preds = %.lr.ph223
  br i1 %.not155.not213, label %.lr.ph216.us.us.preheader, label %.loopexit

.lr.ph216.us.us.preheader:                        ; preds = %.lr.ph223.split.us
  %168 = sub i64 %154, %153
  %min.iters.check323 = icmp ult i64 %168, 8
  %n.vec326 = and i64 %168, -8
  %ind.end327 = add i64 %153, %n.vec326
  %cmp.n333 = icmp eq i64 %168, %n.vec326
  br label %.lr.ph216.us.us

.lr.ph216.us.us:                                  ; preds = %.lr.ph216.us.us.preheader, %._crit_edge217.us.us
  %.1146221.us.us = phi i64 [ %175, %._crit_edge217.us.us ], [ 1, %.lr.ph216.us.us.preheader ]
  %169 = add nsw i64 %.1146221.us.us, -1
  %170 = mul nsw i64 %154, %169
  %invariant.gep218.us.us = getelementptr float, ptr %7, i64 %170
  br i1 %min.iters.check323, label %scalar.ph322.preheader, label %vector.ph324

vector.ph324:                                     ; preds = %.lr.ph216.us.us
  %171 = getelementptr float, ptr %invariant.gep218.us.us, i64 %153
  br label %vector.body329

vector.body329:                                   ; preds = %vector.body329, %vector.ph324
  %index330 = phi i64 [ 0, %vector.ph324 ], [ %index.next332, %vector.body329 ]
  %172 = getelementptr float, ptr %171, i64 %index330
  %173 = getelementptr i8, ptr %172, i64 16
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %172, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %173, align 4, !tbaa !10
  %index.next332 = add nuw i64 %index330, 8
  %174 = icmp eq i64 %index.next332, %n.vec326
  br i1 %174, label %middle.block321, label %vector.body329, !llvm.loop !21

middle.block321:                                  ; preds = %vector.body329
  br i1 %cmp.n333, label %._crit_edge217.us.us, label %scalar.ph322.preheader

scalar.ph322.preheader:                           ; preds = %middle.block321, %.lr.ph216.us.us
  %.2.in214.us.us.ph = phi i64 [ %153, %.lr.ph216.us.us ], [ %ind.end327, %middle.block321 ]
  br label %scalar.ph322

scalar.ph322:                                     ; preds = %scalar.ph322.preheader, %scalar.ph322
  %.2.in214.us.us = phi i64 [ %.2.us.us, %scalar.ph322 ], [ %.2.in214.us.us.ph, %scalar.ph322.preheader ]
  %.2.us.us = add nsw i64 %.2.in214.us.us, 1
  %gep219.us.us = getelementptr float, ptr %invariant.gep218.us.us, i64 %.2.in214.us.us
  store float -1.000000e+10, ptr %gep219.us.us, align 4, !tbaa !10
  %exitcond249.not = icmp eq i64 %.2.us.us, %154
  br i1 %exitcond249.not, label %._crit_edge217.us.us, label %scalar.ph322, !llvm.loop !24

._crit_edge217.us.us:                             ; preds = %scalar.ph322, %middle.block321
  %175 = add nuw i64 %.1146221.us.us, 1
  %exitcond250.not = icmp eq i64 %.1146221.us.us, %152
  br i1 %exitcond250.not, label %.loopexit, label %.lr.ph216.us.us, !llvm.loop !25

.lr.ph207:                                        ; preds = %.lr.ph207.preheader, %._crit_edge217
  %.1146221 = phi i64 [ %201, %._crit_edge217 ], [ 1, %.lr.ph207.preheader ]
  %176 = mul nsw i64 %.1146221, %17
  %invariant.gep209 = getelementptr float, ptr %19, i64 %176
  %177 = add nsw i64 %.1146221, -1
  %178 = mul nsw i64 %154, %177
  %invariant.gep211 = getelementptr float, ptr %20, i64 %178
  %brmerge = select i1 %min.iters.check308, i1 true, i1 %167
  br i1 %brmerge, label %scalar.ph307.preheader, label %vector.body314

vector.body314:                                   ; preds = %.lr.ph207, %vector.body314
  %index315 = phi i64 [ %index.next319, %vector.body314 ], [ 0, %.lr.ph207 ]
  %offset.idx316 = or disjoint i64 %index315, 1
  %179 = getelementptr float, ptr %invariant.gep209, i64 %offset.idx316
  %180 = getelementptr i8, ptr %179, i64 16
  %wide.load317 = load <4 x float>, ptr %179, align 4, !tbaa !10, !alias.scope !26
  %wide.load318 = load <4 x float>, ptr %180, align 4, !tbaa !10, !alias.scope !26
  %181 = getelementptr float, ptr %invariant.gep211, i64 %offset.idx316
  %182 = getelementptr i8, ptr %181, i64 16
  store <4 x float> %wide.load317, ptr %181, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  store <4 x float> %wide.load318, ptr %182, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  %index.next319 = add nuw i64 %index315, 8
  %183 = icmp eq i64 %index.next319, %n.vec311
  br i1 %183, label %middle.block306, label %vector.body314, !llvm.loop !31

middle.block306:                                  ; preds = %vector.body314
  br i1 %cmp.n320, label %._crit_edge208, label %scalar.ph307.preheader

scalar.ph307.preheader:                           ; preds = %.lr.ph207, %middle.block306
  %.1144205.ph = phi i64 [ 1, %.lr.ph207 ], [ %ind.end312, %middle.block306 ]
  %184 = sub i64 %163, %.1144205.ph
  %185 = sub i64 %153, %.1144205.ph
  %xtraiter354 = and i64 %184, 3
  %lcmp.mod355.not = icmp eq i64 %xtraiter354, 0
  br i1 %lcmp.mod355.not, label %scalar.ph307.prol.loopexit, label %scalar.ph307.prol

scalar.ph307.prol:                                ; preds = %scalar.ph307.preheader, %scalar.ph307.prol
  %.1144205.prol = phi i64 [ %187, %scalar.ph307.prol ], [ %.1144205.ph, %scalar.ph307.preheader ]
  %prol.iter356 = phi i64 [ %prol.iter356.next, %scalar.ph307.prol ], [ 0, %scalar.ph307.preheader ]
  %gep210.prol = getelementptr float, ptr %invariant.gep209, i64 %.1144205.prol
  %186 = load float, ptr %gep210.prol, align 4, !tbaa !10
  %gep212.prol = getelementptr float, ptr %invariant.gep211, i64 %.1144205.prol
  store float %186, ptr %gep212.prol, align 4, !tbaa !10
  %187 = add nuw i64 %.1144205.prol, 1
  %prol.iter356.next = add i64 %prol.iter356, 1
  %prol.iter356.cmp.not = icmp eq i64 %prol.iter356.next, %xtraiter354
  br i1 %prol.iter356.cmp.not, label %scalar.ph307.prol.loopexit, label %scalar.ph307.prol, !llvm.loop !32

scalar.ph307.prol.loopexit:                       ; preds = %scalar.ph307.prol, %scalar.ph307.preheader
  %.1144205.unr = phi i64 [ %.1144205.ph, %scalar.ph307.preheader ], [ %187, %scalar.ph307.prol ]
  %188 = icmp ult i64 %185, 3
  br i1 %188, label %._crit_edge208, label %scalar.ph307

scalar.ph307:                                     ; preds = %scalar.ph307.prol.loopexit, %scalar.ph307
  %.1144205 = phi i64 [ %196, %scalar.ph307 ], [ %.1144205.unr, %scalar.ph307.prol.loopexit ]
  %gep210 = getelementptr float, ptr %invariant.gep209, i64 %.1144205
  %189 = load float, ptr %gep210, align 4, !tbaa !10
  %gep212 = getelementptr float, ptr %invariant.gep211, i64 %.1144205
  store float %189, ptr %gep212, align 4, !tbaa !10
  %190 = add nuw i64 %.1144205, 1
  %gep210.1 = getelementptr float, ptr %invariant.gep209, i64 %190
  %191 = load float, ptr %gep210.1, align 4, !tbaa !10
  %gep212.1 = getelementptr float, ptr %invariant.gep211, i64 %190
  store float %191, ptr %gep212.1, align 4, !tbaa !10
  %192 = add nuw i64 %.1144205, 2
  %gep210.2 = getelementptr float, ptr %invariant.gep209, i64 %192
  %193 = load float, ptr %gep210.2, align 4, !tbaa !10
  %gep212.2 = getelementptr float, ptr %invariant.gep211, i64 %192
  store float %193, ptr %gep212.2, align 4, !tbaa !10
  %194 = add nuw i64 %.1144205, 3
  %gep210.3 = getelementptr float, ptr %invariant.gep209, i64 %194
  %195 = load float, ptr %gep210.3, align 4, !tbaa !10
  %gep212.3 = getelementptr float, ptr %invariant.gep211, i64 %194
  store float %195, ptr %gep212.3, align 4, !tbaa !10
  %196 = add nuw i64 %.1144205, 4
  %exitcond246.not.3 = icmp eq i64 %194, %153
  br i1 %exitcond246.not.3, label %._crit_edge208, label %scalar.ph307, !llvm.loop !33

._crit_edge208:                                   ; preds = %scalar.ph307.prol.loopexit, %scalar.ph307, %middle.block306
  br i1 %.not155.not213, label %.lr.ph216, label %._crit_edge217

.lr.ph216:                                        ; preds = %._crit_edge208
  %invariant.gep218 = getelementptr float, ptr %7, i64 %178
  br i1 %min.iters.check292, label %scalar.ph291.preheader, label %vector.ph293

vector.ph293:                                     ; preds = %.lr.ph216
  %197 = getelementptr float, ptr %invariant.gep218, i64 %153
  br label %vector.body298

vector.body298:                                   ; preds = %vector.body298, %vector.ph293
  %index299 = phi i64 [ 0, %vector.ph293 ], [ %index.next301, %vector.body298 ]
  %198 = getelementptr float, ptr %197, i64 %index299
  %199 = getelementptr i8, ptr %198, i64 16
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %198, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %199, align 4, !tbaa !10
  %index.next301 = add nuw i64 %index299, 8
  %200 = icmp eq i64 %index.next301, %n.vec295
  br i1 %200, label %middle.block290, label %vector.body298, !llvm.loop !34

middle.block290:                                  ; preds = %vector.body298
  br i1 %cmp.n302, label %._crit_edge217, label %scalar.ph291.preheader

scalar.ph291.preheader:                           ; preds = %middle.block290, %.lr.ph216
  %.2.in214.ph = phi i64 [ %153, %.lr.ph216 ], [ %ind.end296, %middle.block290 ]
  br label %scalar.ph291

scalar.ph291:                                     ; preds = %scalar.ph291.preheader, %scalar.ph291
  %.2.in214 = phi i64 [ %.2, %scalar.ph291 ], [ %.2.in214.ph, %scalar.ph291.preheader ]
  %.2 = add nuw nsw i64 %.2.in214, 1
  %gep219 = getelementptr float, ptr %invariant.gep218, i64 %.2.in214
  store float -1.000000e+10, ptr %gep219, align 4, !tbaa !10
  %exitcond247.not = icmp eq i64 %.2, %154
  br i1 %exitcond247.not, label %._crit_edge217, label %scalar.ph291, !llvm.loop !35

._crit_edge217:                                   ; preds = %scalar.ph291, %middle.block290, %._crit_edge208
  %201 = add nuw i64 %.1146221, 1
  %exitcond248.not = icmp eq i64 %.1146221, %152
  br i1 %exitcond248.not, label %.loopexit, label %.lr.ph207, !llvm.loop !25

202:                                              ; preds = %._crit_edge176
  %203 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.6, i64 noundef 2, i64 noundef 2) #2
  %204 = icmp eq i64 %203, 0
  br i1 %204, label %208, label %205

205:                                              ; preds = %202
  %206 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.7, i64 noundef 2, i64 noundef 2) #2
  %207 = icmp eq i64 %206, 0
  br i1 %207, label %208, label %.loopexit

208:                                              ; preds = %205, %202
  %209 = load i64, ptr %4, align 8, !tbaa !5
  %.not149200 = icmp slt i64 %209, 1
  br i1 %.not149200, label %.loopexit, label %.lr.ph203

.lr.ph203:                                        ; preds = %208
  %210 = zext i1 %36 to i64
  %211 = sext i1 %36 to i64
  %212 = load i64, ptr %8, align 8, !tbaa !5
  %213 = sub i64 %16, %15
  %214 = sub i64 %212, %17
  %215 = shl i64 %214, 2
  br label %216

216:                                              ; preds = %.lr.ph203, %._crit_edge197
  %indvar = phi i64 [ 0, %.lr.ph203 ], [ %indvar.next, %._crit_edge197 ]
  %.2147201 = phi i64 [ 1, %.lr.ph203 ], [ %257, %._crit_edge197 ]
  %217 = mul i64 %215, %indvar
  %218 = add i64 %213, %217
  %.0142 = add nuw nsw i64 %.2147201, %210
  %spec.select = add nsw i64 %.2147201, %211
  %.1 = select i1 %35, i64 1, i64 %.0142
  %.0 = select i1 %35, i64 %spec.select, i64 %209
  %.not150.not179 = icmp ugt i64 %.1, 1
  br i1 %.not150.not179, label %.lr.ph182, label %.preheader

.lr.ph182:                                        ; preds = %216
  %219 = add nsw i64 %.2147201, -1
  %220 = mul nsw i64 %212, %219
  %invariant.gep183 = getelementptr float, ptr %20, i64 %220
  %221 = add i64 %.1, -1
  %min.iters.check279 = icmp ult i64 %.1, 9
  br i1 %min.iters.check279, label %scalar.ph278.preheader, label %vector.ph280

scalar.ph278.preheader:                           ; preds = %middle.block277, %.lr.ph182
  %.3180.ph = phi i64 [ 1, %.lr.ph182 ], [ %ind.end283, %middle.block277 ]
  br label %scalar.ph278

vector.ph280:                                     ; preds = %.lr.ph182
  %n.vec282 = and i64 %221, -8
  %ind.end283 = or disjoint i64 %n.vec282, 1
  br label %vector.body285

vector.body285:                                   ; preds = %vector.body285, %vector.ph280
  %index286 = phi i64 [ 0, %vector.ph280 ], [ %index.next288, %vector.body285 ]
  %offset.idx287 = or disjoint i64 %index286, 1
  %222 = getelementptr float, ptr %invariant.gep183, i64 %offset.idx287
  %223 = getelementptr i8, ptr %222, i64 16
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %222, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %223, align 4, !tbaa !10
  %index.next288 = add nuw i64 %index286, 8
  %224 = icmp eq i64 %index.next288, %n.vec282
  br i1 %224, label %middle.block277, label %vector.body285, !llvm.loop !36

middle.block277:                                  ; preds = %vector.body285
  %cmp.n289 = icmp eq i64 %221, %n.vec282
  br i1 %cmp.n289, label %.preheader, label %scalar.ph278.preheader

.preheader:                                       ; preds = %scalar.ph278, %middle.block277, %216
  %.not151185 = icmp sgt i64 %.1, %.0
  br i1 %.not151185, label %._crit_edge188, label %.lr.ph187

.lr.ph187:                                        ; preds = %.preheader
  %225 = mul nsw i64 %.2147201, %17
  %invariant.gep189 = getelementptr float, ptr %19, i64 %225
  %226 = add nsw i64 %.2147201, -1
  %227 = mul nsw i64 %212, %226
  %invariant.gep191 = getelementptr float, ptr %20, i64 %227
  %228 = add i64 %.0, 1
  %229 = sub i64 %228, %.1
  %min.iters.check265 = icmp ult i64 %229, 8
  %diff.check = icmp ult i64 %218, 32
  %or.cond335 = select i1 %min.iters.check265, i1 true, i1 %diff.check
  br i1 %or.cond335, label %scalar.ph264.preheader, label %vector.ph266

scalar.ph264.preheader:                           ; preds = %middle.block263, %.lr.ph187
  %.4186.ph = phi i64 [ %.1, %.lr.ph187 ], [ %ind.end269, %middle.block263 ]
  %230 = add i64 %.0, 1
  %231 = sub i64 %230, %.4186.ph
  %232 = sub i64 %.0, %.4186.ph
  %xtraiter352 = and i64 %231, 3
  %lcmp.mod353.not = icmp eq i64 %xtraiter352, 0
  br i1 %lcmp.mod353.not, label %scalar.ph264.prol.loopexit, label %scalar.ph264.prol

scalar.ph264.prol:                                ; preds = %scalar.ph264.preheader, %scalar.ph264.prol
  %.4186.prol = phi i64 [ %234, %scalar.ph264.prol ], [ %.4186.ph, %scalar.ph264.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph264.prol ], [ 0, %scalar.ph264.preheader ]
  %gep190.prol = getelementptr float, ptr %invariant.gep189, i64 %.4186.prol
  %233 = load float, ptr %gep190.prol, align 4, !tbaa !10
  %gep192.prol = getelementptr float, ptr %invariant.gep191, i64 %.4186.prol
  store float %233, ptr %gep192.prol, align 4, !tbaa !10
  %234 = add nuw i64 %.4186.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter352
  br i1 %prol.iter.cmp.not, label %scalar.ph264.prol.loopexit, label %scalar.ph264.prol, !llvm.loop !37

scalar.ph264.prol.loopexit:                       ; preds = %scalar.ph264.prol, %scalar.ph264.preheader
  %.4186.unr = phi i64 [ %.4186.ph, %scalar.ph264.preheader ], [ %234, %scalar.ph264.prol ]
  %235 = icmp ult i64 %232, 3
  br i1 %235, label %._crit_edge188, label %scalar.ph264

vector.ph266:                                     ; preds = %.lr.ph187
  %n.vec268 = and i64 %229, -8
  %ind.end269 = add i64 %.1, %n.vec268
  br label %vector.body271

vector.body271:                                   ; preds = %vector.body271, %vector.ph266
  %index272 = phi i64 [ 0, %vector.ph266 ], [ %index.next275, %vector.body271 ]
  %offset.idx273 = add i64 %.1, %index272
  %236 = getelementptr float, ptr %invariant.gep189, i64 %offset.idx273
  %237 = getelementptr i8, ptr %236, i64 16
  %wide.load = load <4 x float>, ptr %236, align 4, !tbaa !10
  %wide.load274 = load <4 x float>, ptr %237, align 4, !tbaa !10
  %238 = getelementptr float, ptr %invariant.gep191, i64 %offset.idx273
  %239 = getelementptr i8, ptr %238, i64 16
  store <4 x float> %wide.load, ptr %238, align 4, !tbaa !10
  store <4 x float> %wide.load274, ptr %239, align 4, !tbaa !10
  %index.next275 = add nuw i64 %index272, 8
  %240 = icmp eq i64 %index.next275, %n.vec268
  br i1 %240, label %middle.block263, label %vector.body271, !llvm.loop !38

middle.block263:                                  ; preds = %vector.body271
  %cmp.n276 = icmp eq i64 %229, %n.vec268
  br i1 %cmp.n276, label %._crit_edge188, label %scalar.ph264.preheader

scalar.ph278:                                     ; preds = %scalar.ph278.preheader, %scalar.ph278
  %.3180 = phi i64 [ %241, %scalar.ph278 ], [ %.3180.ph, %scalar.ph278.preheader ]
  %gep184 = getelementptr float, ptr %invariant.gep183, i64 %.3180
  store float -1.000000e+10, ptr %gep184, align 4, !tbaa !10
  %241 = add nuw nsw i64 %.3180, 1
  %exitcond238.not = icmp eq i64 %241, %.1
  br i1 %exitcond238.not, label %.preheader, label %scalar.ph278, !llvm.loop !39

scalar.ph264:                                     ; preds = %scalar.ph264.prol.loopexit, %scalar.ph264
  %.4186 = phi i64 [ %249, %scalar.ph264 ], [ %.4186.unr, %scalar.ph264.prol.loopexit ]
  %gep190 = getelementptr float, ptr %invariant.gep189, i64 %.4186
  %242 = load float, ptr %gep190, align 4, !tbaa !10
  %gep192 = getelementptr float, ptr %invariant.gep191, i64 %.4186
  store float %242, ptr %gep192, align 4, !tbaa !10
  %243 = add nuw i64 %.4186, 1
  %gep190.1 = getelementptr float, ptr %invariant.gep189, i64 %243
  %244 = load float, ptr %gep190.1, align 4, !tbaa !10
  %gep192.1 = getelementptr float, ptr %invariant.gep191, i64 %243
  store float %244, ptr %gep192.1, align 4, !tbaa !10
  %245 = add nuw i64 %.4186, 2
  %gep190.2 = getelementptr float, ptr %invariant.gep189, i64 %245
  %246 = load float, ptr %gep190.2, align 4, !tbaa !10
  %gep192.2 = getelementptr float, ptr %invariant.gep191, i64 %245
  store float %246, ptr %gep192.2, align 4, !tbaa !10
  %247 = add nuw i64 %.4186, 3
  %gep190.3 = getelementptr float, ptr %invariant.gep189, i64 %247
  %248 = load float, ptr %gep190.3, align 4, !tbaa !10
  %gep192.3 = getelementptr float, ptr %invariant.gep191, i64 %247
  store float %248, ptr %gep192.3, align 4, !tbaa !10
  %249 = add nuw i64 %.4186, 4
  %exitcond242.not.3 = icmp eq i64 %247, %.0
  br i1 %exitcond242.not.3, label %._crit_edge188, label %scalar.ph264, !llvm.loop !40

._crit_edge188:                                   ; preds = %scalar.ph264.prol.loopexit, %scalar.ph264, %middle.block263, %.preheader
  %.not152.not193 = icmp slt i64 %.0, %212
  br i1 %.not152.not193, label %.lr.ph196, label %._crit_edge197

.lr.ph196:                                        ; preds = %._crit_edge188
  %250 = add nsw i64 %.2147201, -1
  %251 = mul nsw i64 %212, %250
  %invariant.gep198 = getelementptr float, ptr %7, i64 %251
  %252 = sub i64 %212, %.0
  %min.iters.check = icmp ult i64 %252, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph196
  %n.vec = and i64 %252, -8
  %ind.end = add i64 %.0, %n.vec
  %253 = getelementptr float, ptr %invariant.gep198, i64 %.0
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %254 = getelementptr float, ptr %253, i64 %index
  %255 = getelementptr i8, ptr %254, i64 16
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %254, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float -1.000000e+10, float -1.000000e+10, float -1.000000e+10>, ptr %255, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 8
  %256 = icmp eq i64 %index.next, %n.vec
  br i1 %256, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %252, %n.vec
  br i1 %cmp.n, label %._crit_edge197, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph196
  %.5.in194.ph = phi i64 [ %.0, %.lr.ph196 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5.in194 = phi i64 [ %.5, %scalar.ph ], [ %.5.in194.ph, %scalar.ph.preheader ]
  %.5 = add nsw i64 %.5.in194, 1
  %gep199 = getelementptr float, ptr %invariant.gep198, i64 %.5.in194
  store float -1.000000e+10, ptr %gep199, align 4, !tbaa !10
  %exitcond243.not = icmp eq i64 %.5, %212
  br i1 %exitcond243.not, label %._crit_edge197, label %scalar.ph, !llvm.loop !42

._crit_edge197:                                   ; preds = %scalar.ph, %middle.block, %._crit_edge188
  %257 = add nuw i64 %.2147201, 1
  %exitcond244.not = icmp eq i64 %.2147201, %209
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond244.not, label %.loopexit, label %216, !llvm.loop !43

.loopexit:                                        ; preds = %._crit_edge197, %._crit_edge217, %._crit_edge217.us.us, %.lr.ph223.split.us, %208, %151, %205
  ret i32 0
}

; Function Attrs: nounwind uwtable
declare dso_local double @sbeg_(ptr noundef) local_unnamed_addr #1

attributes #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 = { 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 #2 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16}
!16 = !{!"llvm.loop.unswitch.partial.disable"}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !13, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !13, !23, !22}
!25 = distinct !{!25, !13}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !13, !22, !23}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !13, !22}
!34 = distinct !{!34, !13, !22, !23}
!35 = distinct !{!35, !13, !23, !22}
!36 = distinct !{!36, !13, !22, !23}
!37 = distinct !{!37, !18}
!38 = distinct !{!38, !13, !22, !23}
!39 = distinct !{!39, !13, !23, !22}
!40 = distinct !{!40, !13, !22}
!41 = distinct !{!41, !13, !22, !23}
!42 = distinct !{!42, !13, !23, !22}
!43 = distinct !{!43, !13}


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