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

; 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"

%struct.doublecomplex = type { double, double }

@.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 @zlantr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  %32 = load ptr, ptr %15, align 8, !tbaa !5
  %33 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %33, ptr %17, align 8, !tbaa !9
  %34 = load i64, ptr %17, align 8, !tbaa !9
  %35 = add nsw i64 1, %34
  store i64 %35, ptr %18, align 8, !tbaa !9
  %36 = load i64, ptr %18, align 8, !tbaa !9
  %37 = load ptr, ptr %14, align 8, !tbaa !5
  %38 = sub i64 0, %36
  %39 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %38
  store ptr %39, ptr %14, align 8, !tbaa !5
  %40 = load ptr, ptr %16, align 8, !tbaa !5
  %41 = getelementptr inbounds double, ptr %40, i32 -1
  store ptr %41, ptr %16, align 8, !tbaa !5
  %42 = load ptr, ptr %12, align 8, !tbaa !5
  %43 = load i64, ptr %42, align 8, !tbaa !9
  %44 = load ptr, ptr %13, align 8, !tbaa !5
  %45 = load i64, ptr %44, align 8, !tbaa !9
  %46 = icmp sle i64 %43, %45
  br i1 %46, label %47, label %50

47:                                               ; preds = %8
  %48 = load ptr, ptr %12, align 8, !tbaa !5
  %49 = load i64, ptr %48, align 8, !tbaa !9
  br label %53

50:                                               ; preds = %8
  %51 = load ptr, ptr %13, align 8, !tbaa !5
  %52 = load i64, ptr %51, align 8, !tbaa !9
  br label %53

53:                                               ; preds = %50, %47
  %54 = phi i64 [ %49, %47 ], [ %52, %50 ]
  %55 = icmp eq i64 %54, 0
  br i1 %55, label %56, label %57

56:                                               ; preds = %53
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  br label %898

57:                                               ; preds = %53
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = call i64 @lsame_(ptr noundef %58, ptr noundef @.str)
  %60 = icmp ne i64 %59, 0
  br i1 %60, label %61, label %263

61:                                               ; preds = %57
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = call i64 @lsame_(ptr noundef %62, ptr noundef @.str.1)
  %64 = icmp ne i64 %63, 0
  br i1 %64, label %65, label %165

65:                                               ; preds = %61
  store double 1.000000e+00, ptr %31, align 8, !tbaa !11
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = call i64 @lsame_(ptr noundef %66, ptr noundef @.str.1)
  %68 = icmp ne i64 %67, 0
  br i1 %68, label %69, label %121

69:                                               ; preds = %65
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %71, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %72

72:                                               ; preds = %117, %69
  %73 = load i64, ptr %27, align 8, !tbaa !9
  %74 = load i64, ptr %19, align 8, !tbaa !9
  %75 = icmp sle i64 %73, %74
  br i1 %75, label %76, label %120

76:                                               ; preds = %72
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %78, ptr %21, align 8, !tbaa !9
  %79 = load i64, ptr %27, align 8, !tbaa !9
  %80 = sub nsw i64 %79, 1
  store i64 %80, ptr %22, align 8, !tbaa !9
  %81 = load i64, ptr %21, align 8, !tbaa !9
  %82 = load i64, ptr %22, align 8, !tbaa !9
  %83 = icmp sle i64 %81, %82
  br i1 %83, label %84, label %86

84:                                               ; preds = %76
  %85 = load i64, ptr %21, align 8, !tbaa !9
  br label %88

86:                                               ; preds = %76
  %87 = load i64, ptr %22, align 8, !tbaa !9
  br label %88

88:                                               ; preds = %86, %84
  %89 = phi i64 [ %85, %84 ], [ %87, %86 ]
  store i64 %89, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %113, %88
  %91 = load i64, ptr %26, align 8, !tbaa !9
  %92 = load i64, ptr %20, align 8, !tbaa !9
  %93 = icmp sle i64 %91, %92
  br i1 %93, label %94, label %116

94:                                               ; preds = %90
  %95 = load double, ptr %31, align 8, !tbaa !11
  store double %95, ptr %24, align 8, !tbaa !11
  %96 = load ptr, ptr %14, align 8, !tbaa !5
  %97 = load i64, ptr %26, align 8, !tbaa !9
  %98 = load i64, ptr %27, align 8, !tbaa !9
  %99 = load i64, ptr %17, align 8, !tbaa !9
  %100 = mul nsw i64 %98, %99
  %101 = add nsw i64 %97, %100
  %102 = getelementptr inbounds %struct.doublecomplex, ptr %96, i64 %101
  %103 = call double @z_abs(ptr noundef %102)
  store double %103, ptr %25, align 8, !tbaa !11
  %104 = load double, ptr %24, align 8, !tbaa !11
  %105 = load double, ptr %25, align 8, !tbaa !11
  %106 = fcmp oge double %104, %105
  br i1 %106, label %107, label %109

107:                                              ; preds = %94
  %108 = load double, ptr %24, align 8, !tbaa !11
  br label %111

109:                                              ; preds = %94
  %110 = load double, ptr %25, align 8, !tbaa !11
  br label %111

111:                                              ; preds = %109, %107
  %112 = phi double [ %108, %107 ], [ %110, %109 ]
  store double %112, ptr %31, align 8, !tbaa !11
  br label %113

113:                                              ; preds = %111
  %114 = load i64, ptr %26, align 8, !tbaa !9
  %115 = add nsw i64 %114, 1
  store i64 %115, ptr %26, align 8, !tbaa !9
  br label %90, !llvm.loop !13

116:                                              ; preds = %90
  br label %117

117:                                              ; preds = %116
  %118 = load i64, ptr %27, align 8, !tbaa !9
  %119 = add nsw i64 %118, 1
  store i64 %119, ptr %27, align 8, !tbaa !9
  br label %72, !llvm.loop !15

120:                                              ; preds = %72
  br label %164

121:                                              ; preds = %65
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  store i64 %123, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %160, %121
  %125 = load i64, ptr %27, align 8, !tbaa !9
  %126 = load i64, ptr %19, align 8, !tbaa !9
  %127 = icmp sle i64 %125, %126
  br i1 %127, label %128, label %163

128:                                              ; preds = %124
  %129 = load ptr, ptr %12, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  store i64 %130, ptr %20, align 8, !tbaa !9
  %131 = load i64, ptr %27, align 8, !tbaa !9
  %132 = add nsw i64 %131, 1
  store i64 %132, ptr %26, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %156, %128
  %134 = load i64, ptr %26, align 8, !tbaa !9
  %135 = load i64, ptr %20, align 8, !tbaa !9
  %136 = icmp sle i64 %134, %135
  br i1 %136, label %137, label %159

137:                                              ; preds = %133
  %138 = load double, ptr %31, align 8, !tbaa !11
  store double %138, ptr %24, align 8, !tbaa !11
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = load i64, ptr %26, align 8, !tbaa !9
  %141 = load i64, ptr %27, align 8, !tbaa !9
  %142 = load i64, ptr %17, align 8, !tbaa !9
  %143 = mul nsw i64 %141, %142
  %144 = add nsw i64 %140, %143
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %139, i64 %144
  %146 = call double @z_abs(ptr noundef %145)
  store double %146, ptr %25, align 8, !tbaa !11
  %147 = load double, ptr %24, align 8, !tbaa !11
  %148 = load double, ptr %25, align 8, !tbaa !11
  %149 = fcmp oge double %147, %148
  br i1 %149, label %150, label %152

150:                                              ; preds = %137
  %151 = load double, ptr %24, align 8, !tbaa !11
  br label %154

152:                                              ; preds = %137
  %153 = load double, ptr %25, align 8, !tbaa !11
  br label %154

154:                                              ; preds = %152, %150
  %155 = phi double [ %151, %150 ], [ %153, %152 ]
  store double %155, ptr %31, align 8, !tbaa !11
  br label %156

156:                                              ; preds = %154
  %157 = load i64, ptr %26, align 8, !tbaa !9
  %158 = add nsw i64 %157, 1
  store i64 %158, ptr %26, align 8, !tbaa !9
  br label %133, !llvm.loop !16

159:                                              ; preds = %133
  br label %160

160:                                              ; preds = %159
  %161 = load i64, ptr %27, align 8, !tbaa !9
  %162 = add nsw i64 %161, 1
  store i64 %162, ptr %27, align 8, !tbaa !9
  br label %124, !llvm.loop !17

163:                                              ; preds = %124
  br label %164

164:                                              ; preds = %163, %120
  br label %262

165:                                              ; preds = %61
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = call i64 @lsame_(ptr noundef %166, ptr noundef @.str.1)
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %219

169:                                              ; preds = %165
  %170 = load ptr, ptr %13, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  store i64 %171, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %215, %169
  %173 = load i64, ptr %27, align 8, !tbaa !9
  %174 = load i64, ptr %19, align 8, !tbaa !9
  %175 = icmp sle i64 %173, %174
  br i1 %175, label %176, label %218

176:                                              ; preds = %172
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = load i64, ptr %27, align 8, !tbaa !9
  %180 = icmp sle i64 %178, %179
  br i1 %180, label %181, label %184

181:                                              ; preds = %176
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  br label %186

184:                                              ; preds = %176
  %185 = load i64, ptr %27, align 8, !tbaa !9
  br label %186

186:                                              ; preds = %184, %181
  %187 = phi i64 [ %183, %181 ], [ %185, %184 ]
  store i64 %187, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %211, %186
  %189 = load i64, ptr %26, align 8, !tbaa !9
  %190 = load i64, ptr %20, align 8, !tbaa !9
  %191 = icmp sle i64 %189, %190
  br i1 %191, label %192, label %214

192:                                              ; preds = %188
  %193 = load double, ptr %31, align 8, !tbaa !11
  store double %193, ptr %24, align 8, !tbaa !11
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  %195 = load i64, ptr %26, align 8, !tbaa !9
  %196 = load i64, ptr %27, align 8, !tbaa !9
  %197 = load i64, ptr %17, align 8, !tbaa !9
  %198 = mul nsw i64 %196, %197
  %199 = add nsw i64 %195, %198
  %200 = getelementptr inbounds %struct.doublecomplex, ptr %194, i64 %199
  %201 = call double @z_abs(ptr noundef %200)
  store double %201, ptr %25, align 8, !tbaa !11
  %202 = load double, ptr %24, align 8, !tbaa !11
  %203 = load double, ptr %25, align 8, !tbaa !11
  %204 = fcmp oge double %202, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %192
  %206 = load double, ptr %24, align 8, !tbaa !11
  br label %209

207:                                              ; preds = %192
  %208 = load double, ptr %25, align 8, !tbaa !11
  br label %209

209:                                              ; preds = %207, %205
  %210 = phi double [ %206, %205 ], [ %208, %207 ]
  store double %210, ptr %31, align 8, !tbaa !11
  br label %211

211:                                              ; preds = %209
  %212 = load i64, ptr %26, align 8, !tbaa !9
  %213 = add nsw i64 %212, 1
  store i64 %213, ptr %26, align 8, !tbaa !9
  br label %188, !llvm.loop !18

214:                                              ; preds = %188
  br label %215

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

218:                                              ; preds = %172
  br label %261

219:                                              ; preds = %165
  %220 = load ptr, ptr %13, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  store i64 %221, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %257, %219
  %223 = load i64, ptr %27, align 8, !tbaa !9
  %224 = load i64, ptr %19, align 8, !tbaa !9
  %225 = icmp sle i64 %223, %224
  br i1 %225, label %226, label %260

226:                                              ; preds = %222
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  store i64 %228, ptr %20, align 8, !tbaa !9
  %229 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %229, ptr %26, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %253, %226
  %231 = load i64, ptr %26, align 8, !tbaa !9
  %232 = load i64, ptr %20, align 8, !tbaa !9
  %233 = icmp sle i64 %231, %232
  br i1 %233, label %234, label %256

234:                                              ; preds = %230
  %235 = load double, ptr %31, align 8, !tbaa !11
  store double %235, ptr %24, align 8, !tbaa !11
  %236 = load ptr, ptr %14, align 8, !tbaa !5
  %237 = load i64, ptr %26, align 8, !tbaa !9
  %238 = load i64, ptr %27, align 8, !tbaa !9
  %239 = load i64, ptr %17, align 8, !tbaa !9
  %240 = mul nsw i64 %238, %239
  %241 = add nsw i64 %237, %240
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %236, i64 %241
  %243 = call double @z_abs(ptr noundef %242)
  store double %243, ptr %25, align 8, !tbaa !11
  %244 = load double, ptr %24, align 8, !tbaa !11
  %245 = load double, ptr %25, align 8, !tbaa !11
  %246 = fcmp oge double %244, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %234
  %248 = load double, ptr %24, align 8, !tbaa !11
  br label %251

249:                                              ; preds = %234
  %250 = load double, ptr %25, align 8, !tbaa !11
  br label %251

251:                                              ; preds = %249, %247
  %252 = phi double [ %248, %247 ], [ %250, %249 ]
  store double %252, ptr %31, align 8, !tbaa !11
  br label %253

253:                                              ; preds = %251
  %254 = load i64, ptr %26, align 8, !tbaa !9
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %26, align 8, !tbaa !9
  br label %230, !llvm.loop !20

256:                                              ; preds = %230
  br label %257

257:                                              ; preds = %256
  %258 = load i64, ptr %27, align 8, !tbaa !9
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %27, align 8, !tbaa !9
  br label %222, !llvm.loop !21

260:                                              ; preds = %222
  br label %261

261:                                              ; preds = %260, %218
  br label %262

262:                                              ; preds = %261, %164
  br label %897

263:                                              ; preds = %57
  %264 = load ptr, ptr %9, align 8, !tbaa !5
  %265 = call i64 @lsame_(ptr noundef %264, ptr noundef @.str.2)
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %272, label %267

267:                                              ; preds = %263
  %268 = load ptr, ptr %9, align 8, !tbaa !5
  %269 = load i8, ptr %268, align 1, !tbaa !22
  %270 = zext i8 %269 to i32
  %271 = icmp eq i32 %270, 49
  br i1 %271, label %272, label %432

272:                                              ; preds = %267, %263
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %273 = load ptr, ptr %11, align 8, !tbaa !5
  %274 = call i64 @lsame_(ptr noundef %273, ptr noundef @.str.1)
  store i64 %274, ptr %30, align 8, !tbaa !9
  %275 = load ptr, ptr %10, align 8, !tbaa !5
  %276 = call i64 @lsame_(ptr noundef %275, ptr noundef @.str.1)
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %360

278:                                              ; preds = %272
  %279 = load ptr, ptr %13, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  store i64 %280, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %356, %278
  %282 = load i64, ptr %27, align 8, !tbaa !9
  %283 = load i64, ptr %19, align 8, !tbaa !9
  %284 = icmp sle i64 %282, %283
  br i1 %284, label %285, label %359

285:                                              ; preds = %281
  %286 = load i64, ptr %30, align 8, !tbaa !9
  %287 = icmp ne i64 %286, 0
  br i1 %287, label %288, label %315

288:                                              ; preds = %285
  %289 = load i64, ptr %27, align 8, !tbaa !9
  %290 = load ptr, ptr %12, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = icmp sle i64 %289, %291
  br i1 %292, label %293, label %315

293:                                              ; preds = %288
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %294 = load i64, ptr %27, align 8, !tbaa !9
  %295 = sub nsw i64 %294, 1
  store i64 %295, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %311, %293
  %297 = load i64, ptr %26, align 8, !tbaa !9
  %298 = load i64, ptr %20, align 8, !tbaa !9
  %299 = icmp sle i64 %297, %298
  br i1 %299, label %300, label %314

300:                                              ; preds = %296
  %301 = load ptr, ptr %14, align 8, !tbaa !5
  %302 = load i64, ptr %26, align 8, !tbaa !9
  %303 = load i64, ptr %27, align 8, !tbaa !9
  %304 = load i64, ptr %17, align 8, !tbaa !9
  %305 = mul nsw i64 %303, %304
  %306 = add nsw i64 %302, %305
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %306
  %308 = call double @z_abs(ptr noundef %307)
  %309 = load double, ptr %28, align 8, !tbaa !11
  %310 = fadd double %309, %308
  store double %310, ptr %28, align 8, !tbaa !11
  br label %311

311:                                              ; preds = %300
  %312 = load i64, ptr %26, align 8, !tbaa !9
  %313 = add nsw i64 %312, 1
  store i64 %313, ptr %26, align 8, !tbaa !9
  br label %296, !llvm.loop !23

314:                                              ; preds = %296
  br label %346

315:                                              ; preds = %288, %285
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load i64, ptr %27, align 8, !tbaa !9
  %319 = icmp sle i64 %317, %318
  br i1 %319, label %320, label %323

320:                                              ; preds = %315
  %321 = load ptr, ptr %12, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  br label %325

323:                                              ; preds = %315
  %324 = load i64, ptr %27, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %323, %320
  %326 = phi i64 [ %322, %320 ], [ %324, %323 ]
  store i64 %326, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %342, %325
  %328 = load i64, ptr %26, align 8, !tbaa !9
  %329 = load i64, ptr %20, align 8, !tbaa !9
  %330 = icmp sle i64 %328, %329
  br i1 %330, label %331, label %345

331:                                              ; preds = %327
  %332 = load ptr, ptr %14, align 8, !tbaa !5
  %333 = load i64, ptr %26, align 8, !tbaa !9
  %334 = load i64, ptr %27, align 8, !tbaa !9
  %335 = load i64, ptr %17, align 8, !tbaa !9
  %336 = mul nsw i64 %334, %335
  %337 = add nsw i64 %333, %336
  %338 = getelementptr inbounds %struct.doublecomplex, ptr %332, i64 %337
  %339 = call double @z_abs(ptr noundef %338)
  %340 = load double, ptr %28, align 8, !tbaa !11
  %341 = fadd double %340, %339
  store double %341, ptr %28, align 8, !tbaa !11
  br label %342

342:                                              ; preds = %331
  %343 = load i64, ptr %26, align 8, !tbaa !9
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %26, align 8, !tbaa !9
  br label %327, !llvm.loop !24

345:                                              ; preds = %327
  br label %346

346:                                              ; preds = %345, %314
  %347 = load double, ptr %31, align 8, !tbaa !11
  %348 = load double, ptr %28, align 8, !tbaa !11
  %349 = fcmp oge double %347, %348
  br i1 %349, label %350, label %352

350:                                              ; preds = %346
  %351 = load double, ptr %31, align 8, !tbaa !11
  br label %354

352:                                              ; preds = %346
  %353 = load double, ptr %28, align 8, !tbaa !11
  br label %354

354:                                              ; preds = %352, %350
  %355 = phi double [ %351, %350 ], [ %353, %352 ]
  store double %355, ptr %31, align 8, !tbaa !11
  br label %356

356:                                              ; preds = %354
  %357 = load i64, ptr %27, align 8, !tbaa !9
  %358 = add nsw i64 %357, 1
  store i64 %358, ptr %27, align 8, !tbaa !9
  br label %281, !llvm.loop !25

359:                                              ; preds = %281
  br label %431

360:                                              ; preds = %272
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  store i64 %362, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %427, %360
  %364 = load i64, ptr %27, align 8, !tbaa !9
  %365 = load i64, ptr %19, align 8, !tbaa !9
  %366 = icmp sle i64 %364, %365
  br i1 %366, label %367, label %430

367:                                              ; preds = %363
  %368 = load i64, ptr %30, align 8, !tbaa !9
  %369 = icmp ne i64 %368, 0
  br i1 %369, label %370, label %394

370:                                              ; preds = %367
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %371 = load ptr, ptr %12, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  store i64 %372, ptr %20, align 8, !tbaa !9
  %373 = load i64, ptr %27, align 8, !tbaa !9
  %374 = add nsw i64 %373, 1
  store i64 %374, ptr %26, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %390, %370
  %376 = load i64, ptr %26, align 8, !tbaa !9
  %377 = load i64, ptr %20, align 8, !tbaa !9
  %378 = icmp sle i64 %376, %377
  br i1 %378, label %379, label %393

379:                                              ; preds = %375
  %380 = load ptr, ptr %14, align 8, !tbaa !5
  %381 = load i64, ptr %26, align 8, !tbaa !9
  %382 = load i64, ptr %27, align 8, !tbaa !9
  %383 = load i64, ptr %17, align 8, !tbaa !9
  %384 = mul nsw i64 %382, %383
  %385 = add nsw i64 %381, %384
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %380, i64 %385
  %387 = call double @z_abs(ptr noundef %386)
  %388 = load double, ptr %28, align 8, !tbaa !11
  %389 = fadd double %388, %387
  store double %389, ptr %28, align 8, !tbaa !11
  br label %390

390:                                              ; preds = %379
  %391 = load i64, ptr %26, align 8, !tbaa !9
  %392 = add nsw i64 %391, 1
  store i64 %392, ptr %26, align 8, !tbaa !9
  br label %375, !llvm.loop !26

393:                                              ; preds = %375
  br label %417

394:                                              ; preds = %367
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %395 = load ptr, ptr %12, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  store i64 %396, ptr %20, align 8, !tbaa !9
  %397 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %397, ptr %26, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %413, %394
  %399 = load i64, ptr %26, align 8, !tbaa !9
  %400 = load i64, ptr %20, align 8, !tbaa !9
  %401 = icmp sle i64 %399, %400
  br i1 %401, label %402, label %416

402:                                              ; preds = %398
  %403 = load ptr, ptr %14, align 8, !tbaa !5
  %404 = load i64, ptr %26, align 8, !tbaa !9
  %405 = load i64, ptr %27, align 8, !tbaa !9
  %406 = load i64, ptr %17, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 %408
  %410 = call double @z_abs(ptr noundef %409)
  %411 = load double, ptr %28, align 8, !tbaa !11
  %412 = fadd double %411, %410
  store double %412, ptr %28, align 8, !tbaa !11
  br label %413

413:                                              ; preds = %402
  %414 = load i64, ptr %26, align 8, !tbaa !9
  %415 = add nsw i64 %414, 1
  store i64 %415, ptr %26, align 8, !tbaa !9
  br label %398, !llvm.loop !27

416:                                              ; preds = %398
  br label %417

417:                                              ; preds = %416, %393
  %418 = load double, ptr %31, align 8, !tbaa !11
  %419 = load double, ptr %28, align 8, !tbaa !11
  %420 = fcmp oge double %418, %419
  br i1 %420, label %421, label %423

421:                                              ; preds = %417
  %422 = load double, ptr %31, align 8, !tbaa !11
  br label %425

423:                                              ; preds = %417
  %424 = load double, ptr %28, align 8, !tbaa !11
  br label %425

425:                                              ; preds = %423, %421
  %426 = phi double [ %422, %421 ], [ %424, %423 ]
  store double %426, ptr %31, align 8, !tbaa !11
  br label %427

427:                                              ; preds = %425
  %428 = load i64, ptr %27, align 8, !tbaa !9
  %429 = add nsw i64 %428, 1
  store i64 %429, ptr %27, align 8, !tbaa !9
  br label %363, !llvm.loop !28

430:                                              ; preds = %363
  br label %431

431:                                              ; preds = %430, %359
  br label %896

432:                                              ; preds = %267
  %433 = load ptr, ptr %9, align 8, !tbaa !5
  %434 = call i64 @lsame_(ptr noundef %433, ptr noundef @.str.3)
  %435 = icmp ne i64 %434, 0
  br i1 %435, label %436, label %716

436:                                              ; preds = %432
  %437 = load ptr, ptr %10, align 8, !tbaa !5
  %438 = call i64 @lsame_(ptr noundef %437, ptr noundef @.str.1)
  %439 = icmp ne i64 %438, 0
  br i1 %439, label %440, label %565

440:                                              ; preds = %436
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = call i64 @lsame_(ptr noundef %441, ptr noundef @.str.1)
  %443 = icmp ne i64 %442, 0
  br i1 %443, label %444, label %505

444:                                              ; preds = %440
  %445 = load ptr, ptr %12, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  store i64 %446, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %447

447:                                              ; preds = %455, %444
  %448 = load i64, ptr %26, align 8, !tbaa !9
  %449 = load i64, ptr %19, align 8, !tbaa !9
  %450 = icmp sle i64 %448, %449
  br i1 %450, label %451, label %458

451:                                              ; preds = %447
  %452 = load ptr, ptr %16, align 8, !tbaa !5
  %453 = load i64, ptr %26, align 8, !tbaa !9
  %454 = getelementptr inbounds double, ptr %452, i64 %453
  store double 1.000000e+00, ptr %454, align 8, !tbaa !11
  br label %455

455:                                              ; preds = %451
  %456 = load i64, ptr %26, align 8, !tbaa !9
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %26, align 8, !tbaa !9
  br label %447, !llvm.loop !29

458:                                              ; preds = %447
  %459 = load ptr, ptr %13, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  store i64 %460, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %501, %458
  %462 = load i64, ptr %27, align 8, !tbaa !9
  %463 = load i64, ptr %19, align 8, !tbaa !9
  %464 = icmp sle i64 %462, %463
  br i1 %464, label %465, label %504

465:                                              ; preds = %461
  %466 = load ptr, ptr %12, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  store i64 %467, ptr %21, align 8, !tbaa !9
  %468 = load i64, ptr %27, align 8, !tbaa !9
  %469 = sub nsw i64 %468, 1
  store i64 %469, ptr %22, align 8, !tbaa !9
  %470 = load i64, ptr %21, align 8, !tbaa !9
  %471 = load i64, ptr %22, align 8, !tbaa !9
  %472 = icmp sle i64 %470, %471
  br i1 %472, label %473, label %475

473:                                              ; preds = %465
  %474 = load i64, ptr %21, align 8, !tbaa !9
  br label %477

475:                                              ; preds = %465
  %476 = load i64, ptr %22, align 8, !tbaa !9
  br label %477

477:                                              ; preds = %475, %473
  %478 = phi i64 [ %474, %473 ], [ %476, %475 ]
  store i64 %478, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %497, %477
  %480 = load i64, ptr %26, align 8, !tbaa !9
  %481 = load i64, ptr %20, align 8, !tbaa !9
  %482 = icmp sle i64 %480, %481
  br i1 %482, label %483, label %500

483:                                              ; preds = %479
  %484 = load ptr, ptr %14, align 8, !tbaa !5
  %485 = load i64, ptr %26, align 8, !tbaa !9
  %486 = load i64, ptr %27, align 8, !tbaa !9
  %487 = load i64, ptr %17, align 8, !tbaa !9
  %488 = mul nsw i64 %486, %487
  %489 = add nsw i64 %485, %488
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %484, i64 %489
  %491 = call double @z_abs(ptr noundef %490)
  %492 = load ptr, ptr %16, align 8, !tbaa !5
  %493 = load i64, ptr %26, align 8, !tbaa !9
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !11
  %496 = fadd double %495, %491
  store double %496, ptr %494, align 8, !tbaa !11
  br label %497

497:                                              ; preds = %483
  %498 = load i64, ptr %26, align 8, !tbaa !9
  %499 = add nsw i64 %498, 1
  store i64 %499, ptr %26, align 8, !tbaa !9
  br label %479, !llvm.loop !30

500:                                              ; preds = %479
  br label %501

501:                                              ; preds = %500
  %502 = load i64, ptr %27, align 8, !tbaa !9
  %503 = add nsw i64 %502, 1
  store i64 %503, ptr %27, align 8, !tbaa !9
  br label %461, !llvm.loop !31

504:                                              ; preds = %461
  br label %564

505:                                              ; preds = %440
  %506 = load ptr, ptr %12, align 8, !tbaa !5
  %507 = load i64, ptr %506, align 8, !tbaa !9
  store i64 %507, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %508

508:                                              ; preds = %516, %505
  %509 = load i64, ptr %26, align 8, !tbaa !9
  %510 = load i64, ptr %19, align 8, !tbaa !9
  %511 = icmp sle i64 %509, %510
  br i1 %511, label %512, label %519

512:                                              ; preds = %508
  %513 = load ptr, ptr %16, align 8, !tbaa !5
  %514 = load i64, ptr %26, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  store double 0.000000e+00, ptr %515, align 8, !tbaa !11
  br label %516

516:                                              ; preds = %512
  %517 = load i64, ptr %26, align 8, !tbaa !9
  %518 = add nsw i64 %517, 1
  store i64 %518, ptr %26, align 8, !tbaa !9
  br label %508, !llvm.loop !32

519:                                              ; preds = %508
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  store i64 %521, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %560, %519
  %523 = load i64, ptr %27, align 8, !tbaa !9
  %524 = load i64, ptr %19, align 8, !tbaa !9
  %525 = icmp sle i64 %523, %524
  br i1 %525, label %526, label %563

526:                                              ; preds = %522
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = load i64, ptr %27, align 8, !tbaa !9
  %530 = icmp sle i64 %528, %529
  br i1 %530, label %531, label %534

531:                                              ; preds = %526
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  br label %536

534:                                              ; preds = %526
  %535 = load i64, ptr %27, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %534, %531
  %537 = phi i64 [ %533, %531 ], [ %535, %534 ]
  store i64 %537, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %556, %536
  %539 = load i64, ptr %26, align 8, !tbaa !9
  %540 = load i64, ptr %20, align 8, !tbaa !9
  %541 = icmp sle i64 %539, %540
  br i1 %541, label %542, label %559

542:                                              ; preds = %538
  %543 = load ptr, ptr %14, align 8, !tbaa !5
  %544 = load i64, ptr %26, align 8, !tbaa !9
  %545 = load i64, ptr %27, align 8, !tbaa !9
  %546 = load i64, ptr %17, align 8, !tbaa !9
  %547 = mul nsw i64 %545, %546
  %548 = add nsw i64 %544, %547
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %543, i64 %548
  %550 = call double @z_abs(ptr noundef %549)
  %551 = load ptr, ptr %16, align 8, !tbaa !5
  %552 = load i64, ptr %26, align 8, !tbaa !9
  %553 = getelementptr inbounds double, ptr %551, i64 %552
  %554 = load double, ptr %553, align 8, !tbaa !11
  %555 = fadd double %554, %550
  store double %555, ptr %553, align 8, !tbaa !11
  br label %556

556:                                              ; preds = %542
  %557 = load i64, ptr %26, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  store i64 %558, ptr %26, align 8, !tbaa !9
  br label %538, !llvm.loop !33

559:                                              ; preds = %538
  br label %560

560:                                              ; preds = %559
  %561 = load i64, ptr %27, align 8, !tbaa !9
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %27, align 8, !tbaa !9
  br label %522, !llvm.loop !34

563:                                              ; preds = %522
  br label %564

564:                                              ; preds = %563, %504
  br label %690

565:                                              ; preds = %436
  %566 = load ptr, ptr %11, align 8, !tbaa !5
  %567 = call i64 @lsame_(ptr noundef %566, ptr noundef @.str.1)
  %568 = icmp ne i64 %567, 0
  br i1 %568, label %569, label %638

569:                                              ; preds = %565
  %570 = load ptr, ptr %13, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  store i64 %571, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %572

572:                                              ; preds = %580, %569
  %573 = load i64, ptr %26, align 8, !tbaa !9
  %574 = load i64, ptr %19, align 8, !tbaa !9
  %575 = icmp sle i64 %573, %574
  br i1 %575, label %576, label %583

576:                                              ; preds = %572
  %577 = load ptr, ptr %16, align 8, !tbaa !5
  %578 = load i64, ptr %26, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  store double 1.000000e+00, ptr %579, align 8, !tbaa !11
  br label %580

580:                                              ; preds = %576
  %581 = load i64, ptr %26, align 8, !tbaa !9
  %582 = add nsw i64 %581, 1
  store i64 %582, ptr %26, align 8, !tbaa !9
  br label %572, !llvm.loop !35

583:                                              ; preds = %572
  %584 = load ptr, ptr %12, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  store i64 %585, ptr %19, align 8, !tbaa !9
  %586 = load ptr, ptr %13, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = add nsw i64 %587, 1
  store i64 %588, ptr %26, align 8, !tbaa !9
  br label %589

589:                                              ; preds = %597, %583
  %590 = load i64, ptr %26, align 8, !tbaa !9
  %591 = load i64, ptr %19, align 8, !tbaa !9
  %592 = icmp sle i64 %590, %591
  br i1 %592, label %593, label %600

593:                                              ; preds = %589
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = load i64, ptr %26, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  store double 0.000000e+00, ptr %596, align 8, !tbaa !11
  br label %597

597:                                              ; preds = %593
  %598 = load i64, ptr %26, align 8, !tbaa !9
  %599 = add nsw i64 %598, 1
  store i64 %599, ptr %26, align 8, !tbaa !9
  br label %589, !llvm.loop !36

600:                                              ; preds = %589
  %601 = load ptr, ptr %13, align 8, !tbaa !5
  %602 = load i64, ptr %601, align 8, !tbaa !9
  store i64 %602, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %634, %600
  %604 = load i64, ptr %27, align 8, !tbaa !9
  %605 = load i64, ptr %19, align 8, !tbaa !9
  %606 = icmp sle i64 %604, %605
  br i1 %606, label %607, label %637

607:                                              ; preds = %603
  %608 = load ptr, ptr %12, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  store i64 %609, ptr %20, align 8, !tbaa !9
  %610 = load i64, ptr %27, align 8, !tbaa !9
  %611 = add nsw i64 %610, 1
  store i64 %611, ptr %26, align 8, !tbaa !9
  br label %612

612:                                              ; preds = %630, %607
  %613 = load i64, ptr %26, align 8, !tbaa !9
  %614 = load i64, ptr %20, align 8, !tbaa !9
  %615 = icmp sle i64 %613, %614
  br i1 %615, label %616, label %633

616:                                              ; preds = %612
  %617 = load ptr, ptr %14, align 8, !tbaa !5
  %618 = load i64, ptr %26, align 8, !tbaa !9
  %619 = load i64, ptr %27, align 8, !tbaa !9
  %620 = load i64, ptr %17, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %618, %621
  %623 = getelementptr inbounds %struct.doublecomplex, ptr %617, i64 %622
  %624 = call double @z_abs(ptr noundef %623)
  %625 = load ptr, ptr %16, align 8, !tbaa !5
  %626 = load i64, ptr %26, align 8, !tbaa !9
  %627 = getelementptr inbounds double, ptr %625, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = fadd double %628, %624
  store double %629, ptr %627, align 8, !tbaa !11
  br label %630

630:                                              ; preds = %616
  %631 = load i64, ptr %26, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %26, align 8, !tbaa !9
  br label %612, !llvm.loop !37

633:                                              ; preds = %612
  br label %634

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

637:                                              ; preds = %603
  br label %689

638:                                              ; preds = %565
  %639 = load ptr, ptr %12, align 8, !tbaa !5
  %640 = load i64, ptr %639, align 8, !tbaa !9
  store i64 %640, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %641

641:                                              ; preds = %649, %638
  %642 = load i64, ptr %26, align 8, !tbaa !9
  %643 = load i64, ptr %19, align 8, !tbaa !9
  %644 = icmp sle i64 %642, %643
  br i1 %644, label %645, label %652

645:                                              ; preds = %641
  %646 = load ptr, ptr %16, align 8, !tbaa !5
  %647 = load i64, ptr %26, align 8, !tbaa !9
  %648 = getelementptr inbounds double, ptr %646, i64 %647
  store double 0.000000e+00, ptr %648, align 8, !tbaa !11
  br label %649

649:                                              ; preds = %645
  %650 = load i64, ptr %26, align 8, !tbaa !9
  %651 = add nsw i64 %650, 1
  store i64 %651, ptr %26, align 8, !tbaa !9
  br label %641, !llvm.loop !39

652:                                              ; preds = %641
  %653 = load ptr, ptr %13, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  store i64 %654, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %655

655:                                              ; preds = %685, %652
  %656 = load i64, ptr %27, align 8, !tbaa !9
  %657 = load i64, ptr %19, align 8, !tbaa !9
  %658 = icmp sle i64 %656, %657
  br i1 %658, label %659, label %688

659:                                              ; preds = %655
  %660 = load ptr, ptr %12, align 8, !tbaa !5
  %661 = load i64, ptr %660, align 8, !tbaa !9
  store i64 %661, ptr %20, align 8, !tbaa !9
  %662 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %662, ptr %26, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %681, %659
  %664 = load i64, ptr %26, align 8, !tbaa !9
  %665 = load i64, ptr %20, align 8, !tbaa !9
  %666 = icmp sle i64 %664, %665
  br i1 %666, label %667, label %684

667:                                              ; preds = %663
  %668 = load ptr, ptr %14, align 8, !tbaa !5
  %669 = load i64, ptr %26, align 8, !tbaa !9
  %670 = load i64, ptr %27, align 8, !tbaa !9
  %671 = load i64, ptr %17, align 8, !tbaa !9
  %672 = mul nsw i64 %670, %671
  %673 = add nsw i64 %669, %672
  %674 = getelementptr inbounds %struct.doublecomplex, ptr %668, i64 %673
  %675 = call double @z_abs(ptr noundef %674)
  %676 = load ptr, ptr %16, align 8, !tbaa !5
  %677 = load i64, ptr %26, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %676, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  %680 = fadd double %679, %675
  store double %680, ptr %678, align 8, !tbaa !11
  br label %681

681:                                              ; preds = %667
  %682 = load i64, ptr %26, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %26, align 8, !tbaa !9
  br label %663, !llvm.loop !40

684:                                              ; preds = %663
  br label %685

685:                                              ; preds = %684
  %686 = load i64, ptr %27, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %27, align 8, !tbaa !9
  br label %655, !llvm.loop !41

688:                                              ; preds = %655
  br label %689

689:                                              ; preds = %688, %637
  br label %690

690:                                              ; preds = %689, %564
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = load i64, ptr %691, align 8, !tbaa !9
  store i64 %692, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %712, %690
  %694 = load i64, ptr %26, align 8, !tbaa !9
  %695 = load i64, ptr %19, align 8, !tbaa !9
  %696 = icmp sle i64 %694, %695
  br i1 %696, label %697, label %715

697:                                              ; preds = %693
  %698 = load double, ptr %31, align 8, !tbaa !11
  store double %698, ptr %24, align 8, !tbaa !11
  %699 = load ptr, ptr %16, align 8, !tbaa !5
  %700 = load i64, ptr %26, align 8, !tbaa !9
  %701 = getelementptr inbounds double, ptr %699, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !11
  store double %702, ptr %25, align 8, !tbaa !11
  %703 = load double, ptr %24, align 8, !tbaa !11
  %704 = load double, ptr %25, align 8, !tbaa !11
  %705 = fcmp oge double %703, %704
  br i1 %705, label %706, label %708

706:                                              ; preds = %697
  %707 = load double, ptr %24, align 8, !tbaa !11
  br label %710

708:                                              ; preds = %697
  %709 = load double, ptr %25, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %708, %706
  %711 = phi double [ %707, %706 ], [ %709, %708 ]
  store double %711, ptr %31, align 8, !tbaa !11
  br label %712

712:                                              ; preds = %710
  %713 = load i64, ptr %26, align 8, !tbaa !9
  %714 = add nsw i64 %713, 1
  store i64 %714, ptr %26, align 8, !tbaa !9
  br label %693, !llvm.loop !42

715:                                              ; preds = %693
  br label %895

716:                                              ; preds = %432
  %717 = load ptr, ptr %9, align 8, !tbaa !5
  %718 = call i64 @lsame_(ptr noundef %717, ptr noundef @.str.4)
  %719 = icmp ne i64 %718, 0
  br i1 %719, label %724, label %720

720:                                              ; preds = %716
  %721 = load ptr, ptr %9, align 8, !tbaa !5
  %722 = call i64 @lsame_(ptr noundef %721, ptr noundef @.str.5)
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %724, label %894

724:                                              ; preds = %720, %716
  %725 = load ptr, ptr %10, align 8, !tbaa !5
  %726 = call i64 @lsame_(ptr noundef %725, ptr noundef @.str.1)
  %727 = icmp ne i64 %726, 0
  br i1 %727, label %728, label %809

728:                                              ; preds = %724
  %729 = load ptr, ptr %11, align 8, !tbaa !5
  %730 = call i64 @lsame_(ptr noundef %729, ptr noundef @.str.1)
  %731 = icmp ne i64 %730, 0
  br i1 %731, label %732, label %778

732:                                              ; preds = %728
  store double 1.000000e+00, ptr %29, align 8, !tbaa !11
  %733 = load ptr, ptr %12, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  %735 = load ptr, ptr %13, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = icmp sle i64 %734, %736
  br i1 %737, label %738, label %741

738:                                              ; preds = %732
  %739 = load ptr, ptr %12, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  br label %744

741:                                              ; preds = %732
  %742 = load ptr, ptr %13, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  br label %744

744:                                              ; preds = %741, %738
  %745 = phi i64 [ %740, %738 ], [ %743, %741 ]
  %746 = sitofp i64 %745 to double
  store double %746, ptr %28, align 8, !tbaa !11
  %747 = load ptr, ptr %13, align 8, !tbaa !5
  %748 = load i64, ptr %747, align 8, !tbaa !9
  store i64 %748, ptr %19, align 8, !tbaa !9
  store i64 2, ptr %27, align 8, !tbaa !9
  br label %749

749:                                              ; preds = %774, %744
  %750 = load i64, ptr %27, align 8, !tbaa !9
  %751 = load i64, ptr %19, align 8, !tbaa !9
  %752 = icmp sle i64 %750, %751
  br i1 %752, label %753, label %777

753:                                              ; preds = %749
  %754 = load ptr, ptr %12, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  store i64 %755, ptr %21, align 8, !tbaa !9
  %756 = load i64, ptr %27, align 8, !tbaa !9
  %757 = sub nsw i64 %756, 1
  store i64 %757, ptr %22, align 8, !tbaa !9
  %758 = load i64, ptr %21, align 8, !tbaa !9
  %759 = load i64, ptr %22, align 8, !tbaa !9
  %760 = icmp sle i64 %758, %759
  br i1 %760, label %761, label %763

761:                                              ; preds = %753
  %762 = load i64, ptr %21, align 8, !tbaa !9
  br label %765

763:                                              ; preds = %753
  %764 = load i64, ptr %22, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %763, %761
  %766 = phi i64 [ %762, %761 ], [ %764, %763 ]
  store i64 %766, ptr %20, align 8, !tbaa !9
  %767 = load ptr, ptr %14, align 8, !tbaa !5
  %768 = load i64, ptr %27, align 8, !tbaa !9
  %769 = load i64, ptr %17, align 8, !tbaa !9
  %770 = mul nsw i64 %768, %769
  %771 = add nsw i64 %770, 1
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %767, i64 %771
  %773 = call i32 @zlassq_(ptr noundef %20, ptr noundef %772, ptr noundef @c__1, ptr noundef %29, ptr noundef %28)
  br label %774

774:                                              ; preds = %765
  %775 = load i64, ptr %27, align 8, !tbaa !9
  %776 = add nsw i64 %775, 1
  store i64 %776, ptr %27, align 8, !tbaa !9
  br label %749, !llvm.loop !43

777:                                              ; preds = %749
  br label %808

778:                                              ; preds = %728
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %779 = load ptr, ptr %13, align 8, !tbaa !5
  %780 = load i64, ptr %779, align 8, !tbaa !9
  store i64 %780, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %781

781:                                              ; preds = %804, %778
  %782 = load i64, ptr %27, align 8, !tbaa !9
  %783 = load i64, ptr %19, align 8, !tbaa !9
  %784 = icmp sle i64 %782, %783
  br i1 %784, label %785, label %807

785:                                              ; preds = %781
  %786 = load ptr, ptr %12, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  %788 = load i64, ptr %27, align 8, !tbaa !9
  %789 = icmp sle i64 %787, %788
  br i1 %789, label %790, label %793

790:                                              ; preds = %785
  %791 = load ptr, ptr %12, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  br label %795

793:                                              ; preds = %785
  %794 = load i64, ptr %27, align 8, !tbaa !9
  br label %795

795:                                              ; preds = %793, %790
  %796 = phi i64 [ %792, %790 ], [ %794, %793 ]
  store i64 %796, ptr %20, align 8, !tbaa !9
  %797 = load ptr, ptr %14, align 8, !tbaa !5
  %798 = load i64, ptr %27, align 8, !tbaa !9
  %799 = load i64, ptr %17, align 8, !tbaa !9
  %800 = mul nsw i64 %798, %799
  %801 = add nsw i64 %800, 1
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %797, i64 %801
  %803 = call i32 @zlassq_(ptr noundef %20, ptr noundef %802, ptr noundef @c__1, ptr noundef %29, ptr noundef %28)
  br label %804

804:                                              ; preds = %795
  %805 = load i64, ptr %27, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  store i64 %806, ptr %27, align 8, !tbaa !9
  br label %781, !llvm.loop !44

807:                                              ; preds = %781
  br label %808

808:                                              ; preds = %807, %777
  br label %889

809:                                              ; preds = %724
  %810 = load ptr, ptr %11, 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 %863

813:                                              ; preds = %809
  store double 1.000000e+00, ptr %29, align 8, !tbaa !11
  %814 = load ptr, ptr %12, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  %816 = load ptr, ptr %13, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = icmp sle i64 %815, %817
  br i1 %818, label %819, label %822

819:                                              ; preds = %813
  %820 = load ptr, ptr %12, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  br label %825

822:                                              ; preds = %813
  %823 = load ptr, ptr %13, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !9
  br label %825

825:                                              ; preds = %822, %819
  %826 = phi i64 [ %821, %819 ], [ %824, %822 ]
  %827 = sitofp i64 %826 to double
  store double %827, ptr %28, align 8, !tbaa !11
  %828 = load ptr, ptr %13, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  store i64 %829, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %830

830:                                              ; preds = %859, %825
  %831 = load i64, ptr %27, align 8, !tbaa !9
  %832 = load i64, ptr %19, align 8, !tbaa !9
  %833 = icmp sle i64 %831, %832
  br i1 %833, label %834, label %862

834:                                              ; preds = %830
  %835 = load ptr, ptr %12, align 8, !tbaa !5
  %836 = load i64, ptr %835, align 8, !tbaa !9
  %837 = load i64, ptr %27, align 8, !tbaa !9
  %838 = sub nsw i64 %836, %837
  store i64 %838, ptr %20, align 8, !tbaa !9
  %839 = load ptr, ptr %12, align 8, !tbaa !5
  %840 = load i64, ptr %839, align 8, !tbaa !9
  store i64 %840, ptr %21, align 8, !tbaa !9
  %841 = load i64, ptr %27, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %22, align 8, !tbaa !9
  %843 = load ptr, ptr %14, align 8, !tbaa !5
  %844 = load i64, ptr %21, align 8, !tbaa !9
  %845 = load i64, ptr %22, align 8, !tbaa !9
  %846 = icmp sle i64 %844, %845
  br i1 %846, label %847, label %849

847:                                              ; preds = %834
  %848 = load i64, ptr %21, align 8, !tbaa !9
  br label %851

849:                                              ; preds = %834
  %850 = load i64, ptr %22, align 8, !tbaa !9
  br label %851

851:                                              ; preds = %849, %847
  %852 = phi i64 [ %848, %847 ], [ %850, %849 ]
  %853 = load i64, ptr %27, align 8, !tbaa !9
  %854 = load i64, ptr %17, align 8, !tbaa !9
  %855 = mul nsw i64 %853, %854
  %856 = add nsw i64 %852, %855
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %843, i64 %856
  %858 = call i32 @zlassq_(ptr noundef %20, ptr noundef %857, ptr noundef @c__1, ptr noundef %29, ptr noundef %28)
  br label %859

859:                                              ; preds = %851
  %860 = load i64, ptr %27, align 8, !tbaa !9
  %861 = add nsw i64 %860, 1
  store i64 %861, ptr %27, align 8, !tbaa !9
  br label %830, !llvm.loop !45

862:                                              ; preds = %830
  br label %888

863:                                              ; preds = %809
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %864 = load ptr, ptr %13, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  store i64 %865, ptr %19, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %866

866:                                              ; preds = %884, %863
  %867 = load i64, ptr %27, align 8, !tbaa !9
  %868 = load i64, ptr %19, align 8, !tbaa !9
  %869 = icmp sle i64 %867, %868
  br i1 %869, label %870, label %887

870:                                              ; preds = %866
  %871 = load ptr, ptr %12, align 8, !tbaa !5
  %872 = load i64, ptr %871, align 8, !tbaa !9
  %873 = load i64, ptr %27, align 8, !tbaa !9
  %874 = sub nsw i64 %872, %873
  %875 = add nsw i64 %874, 1
  store i64 %875, ptr %20, align 8, !tbaa !9
  %876 = load ptr, ptr %14, align 8, !tbaa !5
  %877 = load i64, ptr %27, align 8, !tbaa !9
  %878 = load i64, ptr %27, align 8, !tbaa !9
  %879 = load i64, ptr %17, align 8, !tbaa !9
  %880 = mul nsw i64 %878, %879
  %881 = add nsw i64 %877, %880
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %881
  %883 = call i32 @zlassq_(ptr noundef %20, ptr noundef %882, ptr noundef @c__1, ptr noundef %29, ptr noundef %28)
  br label %884

884:                                              ; preds = %870
  %885 = load i64, ptr %27, align 8, !tbaa !9
  %886 = add nsw i64 %885, 1
  store i64 %886, ptr %27, align 8, !tbaa !9
  br label %866, !llvm.loop !46

887:                                              ; preds = %866
  br label %888

888:                                              ; preds = %887, %862
  br label %889

889:                                              ; preds = %888, %808
  %890 = load double, ptr %29, align 8, !tbaa !11
  %891 = load double, ptr %28, align 8, !tbaa !11
  %892 = call double @sqrt(double noundef %891) #4
  %893 = fmul double %890, %892
  store double %893, ptr %31, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %889, %720
  br label %895

895:                                              ; preds = %894, %715
  br label %896

896:                                              ; preds = %895, %431
  br label %897

897:                                              ; preds = %896, %262
  br label %898

898:                                              ; preds = %897, %56
  %899 = load double, ptr %31, align 8, !tbaa !11
  store double %899, ptr %23, align 8, !tbaa !11
  %900 = load double, ptr %23, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  ret double %900
}

; 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 double @z_abs(ptr noundef) #2

declare i32 @zlassq_(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 = !{!"double", !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}
!46 = distinct !{!46, !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"

%struct.doublecomplex = type { double, double }

@.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 @zlantr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %12 = load i64, ptr %6, align 8, !tbaa !5
  %13 = xor i64 %12, -1
  %14 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %13
  %15 = getelementptr inbounds i8, ptr %7, i64 -8
  %16 = load i64, ptr %3, align 8, !tbaa !5
  %17 = load i64, ptr %4, align 8, !tbaa !5
  %. = tail call i64 @llvm.smin.i64(i64 %16, i64 %17)
  %18 = icmp eq i64 %., 0
  br i1 %18, label %.loopexit418, label %19

19:                                               ; preds = %8
  %20 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not347 = icmp eq i64 %20, 0
  br i1 %.not347, label %65, label %21

21:                                               ; preds = %19
  %22 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not394 = icmp eq i64 %22, 0
  %23 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not395 = icmp eq i64 %23, 0
  %24 = load i64, ptr %4, align 8, !tbaa !5
  %.not396485 = icmp slt i64 %24, 1
  br i1 %.not394, label %46, label %25

25:                                               ; preds = %21
  br i1 %.not395, label %37, label %26

26:                                               ; preds = %25
  br i1 %.not396485, label %.loopexit418, label %.lr.ph436

.lr.ph436:                                        ; preds = %26, %._crit_edge
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %26 ]
  %.0434 = phi double [ %.1.lcssa, %._crit_edge ], [ 1.000000e+00, %26 ]
  %.0311433 = phi i64 [ %36, %._crit_edge ], [ 1, %26 ]
  %27 = load i64, ptr %3, align 8, !tbaa !5
  %28 = add nsw i64 %.0311433, -1
  %29 = tail call i64 @llvm.smin.i64(i64 %27, i64 %28)
  %.not406429 = icmp slt i64 %29, 1
  br i1 %.not406429, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph436
  %30 = mul nsw i64 %.0311433, %12
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %14, i64 %30
  %smin = tail call i64 @llvm.smin.i64(i64 %27, i64 %indvars.iv)
  br label %31

31:                                               ; preds = %.lr.ph, %31
  %.1431 = phi double [ %.0434, %.lr.ph ], [ %34, %31 ]
  %.0323430 = phi i64 [ 1, %.lr.ph ], [ %35, %31 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.0323430
  %32 = tail call double @z_abs(ptr noundef %gep) #6
  %33 = fcmp oge double %.1431, %32
  %34 = select i1 %33, double %.1431, double %32
  %35 = add nuw nsw i64 %.0323430, 1
  %exitcond.not = icmp eq i64 %.0323430, %smin
  br i1 %exitcond.not, label %._crit_edge, label %31, !llvm.loop !9

._crit_edge:                                      ; preds = %31, %.lr.ph436
  %.1.lcssa = phi double [ %.0434, %.lr.ph436 ], [ %34, %31 ]
  %36 = add nuw nsw i64 %.0311433, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond684.not = icmp eq i64 %indvars.iv.next, %24
  br i1 %exitcond684.not, label %.loopexit418, label %.lr.ph436, !llvm.loop !11

37:                                               ; preds = %25
  br i1 %.not396485, label %.loopexit418, label %.lr.ph453

.loopexit426:                                     ; preds = %41, %.lr.ph453
  %.3.lcssa = phi double [ %.2451, %.lr.ph453 ], [ %44, %41 ]
  %exitcond685.not = icmp eq i64 %.1312450, %24
  br i1 %exitcond685.not, label %.loopexit418, label %.lr.ph453, !llvm.loop !12

.lr.ph453:                                        ; preds = %37, %.loopexit426
  %.2451 = phi double [ %.3.lcssa, %.loopexit426 ], [ 1.000000e+00, %37 ]
  %.1312450 = phi i64 [ %39, %.loopexit426 ], [ 1, %37 ]
  %38 = load i64, ptr %3, align 8, !tbaa !5
  %39 = add nuw i64 %.1312450, 1
  %.not403439.not = icmp slt i64 %.1312450, %38
  br i1 %.not403439.not, label %.lr.ph443, label %.loopexit426

.lr.ph443:                                        ; preds = %.lr.ph453
  %40 = mul nsw i64 %.1312450, %12
  %invariant.gep445 = getelementptr %struct.doublecomplex, ptr %14, i64 %40
  br label %41

41:                                               ; preds = %.lr.ph443, %41
  %.3441 = phi double [ %.2451, %.lr.ph443 ], [ %44, %41 ]
  %.1324440 = phi i64 [ %39, %.lr.ph443 ], [ %45, %41 ]
  %gep446 = getelementptr %struct.doublecomplex, ptr %invariant.gep445, i64 %.1324440
  %42 = tail call double @z_abs(ptr noundef %gep446) #6
  %43 = fcmp oge double %.3441, %42
  %44 = select i1 %43, double %.3441, double %42
  %45 = add nuw nsw i64 %.1324440, 1
  %.not403.not = icmp slt i64 %.1324440, %38
  br i1 %.not403.not, label %41, label %.loopexit426, !llvm.loop !13

46:                                               ; preds = %21
  br i1 %.not395, label %56, label %47

47:                                               ; preds = %46
  br i1 %.not396485, label %.loopexit418, label %.lr.ph471

.lr.ph471:                                        ; preds = %47, %._crit_edge461
  %.4469 = phi double [ %.5.lcssa, %._crit_edge461 ], [ 0.000000e+00, %47 ]
  %.2313468 = phi i64 [ %55, %._crit_edge461 ], [ 1, %47 ]
  %48 = load i64, ptr %3, align 8, !tbaa !5
  %.2313. = tail call i64 @llvm.smin.i64(i64 %48, i64 %.2313468)
  %.not400456 = icmp slt i64 %48, 1
  br i1 %.not400456, label %._crit_edge461, label %.lr.ph460

.lr.ph460:                                        ; preds = %.lr.ph471
  %49 = mul nsw i64 %.2313468, %12
  %invariant.gep463 = getelementptr %struct.doublecomplex, ptr %14, i64 %49
  br label %50

50:                                               ; preds = %.lr.ph460, %50
  %.5458 = phi double [ %.4469, %.lr.ph460 ], [ %53, %50 ]
  %.2325457 = phi i64 [ 1, %.lr.ph460 ], [ %54, %50 ]
  %gep464 = getelementptr %struct.doublecomplex, ptr %invariant.gep463, i64 %.2325457
  %51 = tail call double @z_abs(ptr noundef %gep464) #6
  %52 = fcmp oge double %.5458, %51
  %53 = select i1 %52, double %.5458, double %51
  %54 = add nuw i64 %.2325457, 1
  %exitcond687.not = icmp eq i64 %.2325457, %.2313.
  br i1 %exitcond687.not, label %._crit_edge461, label %50, !llvm.loop !14

._crit_edge461:                                   ; preds = %50, %.lr.ph471
  %.5.lcssa = phi double [ %.4469, %.lr.ph471 ], [ %53, %50 ]
  %55 = add nuw i64 %.2313468, 1
  %exitcond688.not = icmp eq i64 %.2313468, %24
  br i1 %exitcond688.not, label %.loopexit418, label %.lr.ph471, !llvm.loop !15

56:                                               ; preds = %46
  br i1 %.not396485, label %.loopexit418, label %.lr.ph489

.lr.ph489:                                        ; preds = %56, %._crit_edge479
  %.6487 = phi double [ %.7.lcssa, %._crit_edge479 ], [ 0.000000e+00, %56 ]
  %.3314486 = phi i64 [ %64, %._crit_edge479 ], [ 1, %56 ]
  %57 = load i64, ptr %3, align 8, !tbaa !5
  %.not397474 = icmp sgt i64 %.3314486, %57
  br i1 %.not397474, label %._crit_edge479, label %.lr.ph478

.lr.ph478:                                        ; preds = %.lr.ph489
  %58 = mul nsw i64 %.3314486, %12
  %invariant.gep481 = getelementptr %struct.doublecomplex, ptr %14, i64 %58
  br label %59

59:                                               ; preds = %.lr.ph478, %59
  %.7476 = phi double [ %.6487, %.lr.ph478 ], [ %62, %59 ]
  %.3326475 = phi i64 [ %.3314486, %.lr.ph478 ], [ %63, %59 ]
  %gep482 = getelementptr %struct.doublecomplex, ptr %invariant.gep481, i64 %.3326475
  %60 = tail call double @z_abs(ptr noundef %gep482) #6
  %61 = fcmp oge double %.7476, %60
  %62 = select i1 %61, double %.7476, double %60
  %63 = add nuw nsw i64 %.3326475, 1
  %.not397.not = icmp slt i64 %.3326475, %57
  br i1 %.not397.not, label %59, label %._crit_edge479, !llvm.loop !16

._crit_edge479:                                   ; preds = %59, %.lr.ph489
  %.7.lcssa = phi double [ %.6487, %.lr.ph489 ], [ %62, %59 ]
  %64 = add nuw i64 %.3314486, 1
  %exitcond689.not = icmp eq i64 %.3314486, %24
  br i1 %exitcond689.not, label %.loopexit418, label %.lr.ph489, !llvm.loop !17

65:                                               ; preds = %19
  %66 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not348 = icmp eq i64 %66, 0
  br i1 %.not348, label %67, label %70

67:                                               ; preds = %65
  %68 = load i8, ptr %0, align 1, !tbaa !18
  %69 = icmp eq i8 %68, 49
  br i1 %69, label %70, label %112

70:                                               ; preds = %67, %65
  %71 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %72 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not383 = icmp eq i64 %72, 0
  %73 = load i64, ptr %4, align 8, !tbaa !5
  %.not384651 = icmp slt i64 %73, 1
  br i1 %.not383, label %93, label %74

74:                                               ; preds = %70
  br i1 %.not384651, label %.loopexit418, label %.lr.ph624

.lr.ph624:                                        ; preds = %74
  %.not389 = icmp eq i64 %71, 0
  br label %75

75:                                               ; preds = %.lr.ph624, %.loopexit411
  %.8622 = phi double [ 0.000000e+00, %.lr.ph624 ], [ %91, %.loopexit411 ]
  %.4315620 = phi i64 [ 1, %.lr.ph624 ], [ %92, %.loopexit411 ]
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  %.not390 = icmp sgt i64 %.4315620, %.pre
  %or.cond = select i1 %.not389, i1 true, i1 %.not390
  br i1 %or.cond, label %83, label %76

76:                                               ; preds = %75
  %.not393598 = icmp ult i64 %.4315620, 2
  br i1 %.not393598, label %.loopexit411, label %.lr.ph601

.lr.ph601:                                        ; preds = %76
  %77 = mul nsw i64 %.4315620, %12
  %invariant.gep603 = getelementptr %struct.doublecomplex, ptr %14, i64 %77
  br label %78

78:                                               ; preds = %.lr.ph601, %78
  %.4327599 = phi i64 [ 1, %.lr.ph601 ], [ %82, %78 ]
  %79 = phi double [ 1.000000e+00, %.lr.ph601 ], [ %81, %78 ]
  %gep604 = getelementptr %struct.doublecomplex, ptr %invariant.gep603, i64 %.4327599
  %80 = tail call double @z_abs(ptr noundef %gep604) #6
  %81 = fadd double %80, %79
  %82 = add nuw nsw i64 %.4327599, 1
  %exitcond707.not = icmp eq i64 %82, %.4315620
  br i1 %exitcond707.not, label %.loopexit411, label %78, !llvm.loop !19

83:                                               ; preds = %75
  %.4315. = tail call i64 @llvm.smin.i64(i64 %.pre, i64 %.4315620)
  %.not392607 = icmp slt i64 %.4315., 1
  br i1 %.not392607, label %.loopexit411, label %.lr.ph610

.lr.ph610:                                        ; preds = %83
  %84 = mul nsw i64 %.4315620, %12
  %invariant.gep612 = getelementptr %struct.doublecomplex, ptr %14, i64 %84
  br label %85

85:                                               ; preds = %.lr.ph610, %85
  %.5328608 = phi i64 [ 1, %.lr.ph610 ], [ %89, %85 ]
  %86 = phi double [ 0.000000e+00, %.lr.ph610 ], [ %88, %85 ]
  %gep613 = getelementptr %struct.doublecomplex, ptr %invariant.gep612, i64 %.5328608
  %87 = tail call double @z_abs(ptr noundef %gep613) #6
  %88 = fadd double %87, %86
  %89 = add nuw i64 %.5328608, 1
  %exitcond709.not = icmp eq i64 %.5328608, %.4315.
  br i1 %exitcond709.not, label %.loopexit411, label %85, !llvm.loop !20

.loopexit411:                                     ; preds = %78, %85, %76, %83
  %.lcssa606615 = phi double [ 0.000000e+00, %83 ], [ 1.000000e+00, %76 ], [ %88, %85 ], [ %81, %78 ]
  %90 = fcmp oge double %.8622, %.lcssa606615
  %91 = select i1 %90, double %.8622, double %.lcssa606615
  %92 = add nuw i64 %.4315620, 1
  %exitcond710.not = icmp eq i64 %.4315620, %73
  br i1 %exitcond710.not, label %.loopexit418, label %75, !llvm.loop !21

93:                                               ; preds = %70
  br i1 %.not384651, label %.loopexit418, label %.lr.ph656

.lr.ph656:                                        ; preds = %93
  %.not385 = icmp eq i64 %71, 0
  br label %94

94:                                               ; preds = %.lr.ph656, %.loopexit
  %.9654 = phi double [ 0.000000e+00, %.lr.ph656 ], [ %110, %.loopexit ]
  %.5316652 = phi i64 [ 1, %.lr.ph656 ], [ %111, %.loopexit ]
  %95 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not385, label %102, label %96

96:                                               ; preds = %94
  %.not387.not630 = icmp slt i64 %.5316652, %95
  br i1 %.not387.not630, label %.lr.ph633, label %.loopexit

.lr.ph633:                                        ; preds = %96
  %97 = mul nsw i64 %.5316652, %12
  %invariant.gep635 = getelementptr %struct.doublecomplex, ptr %14, i64 %97
  br label %98

98:                                               ; preds = %.lr.ph633, %98
  %.6329.in631 = phi i64 [ %.5316652, %.lr.ph633 ], [ %.6329, %98 ]
  %99 = phi double [ 1.000000e+00, %.lr.ph633 ], [ %101, %98 ]
  %.6329 = add nuw nsw i64 %.6329.in631, 1
  %gep636 = getelementptr %struct.doublecomplex, ptr %invariant.gep635, i64 %.6329
  %100 = tail call double @z_abs(ptr noundef %gep636) #6
  %101 = fadd double %100, %99
  %.not387.not = icmp slt i64 %.6329, %95
  br i1 %.not387.not, label %98, label %.loopexit, !llvm.loop !22

102:                                              ; preds = %94
  %.not386639 = icmp sgt i64 %.5316652, %95
  br i1 %.not386639, label %.loopexit, label %.lr.ph642

.lr.ph642:                                        ; preds = %102
  %103 = mul nsw i64 %.5316652, %12
  %invariant.gep644 = getelementptr %struct.doublecomplex, ptr %14, i64 %103
  br label %104

104:                                              ; preds = %.lr.ph642, %104
  %.7330640 = phi i64 [ %.5316652, %.lr.ph642 ], [ %108, %104 ]
  %105 = phi double [ 0.000000e+00, %.lr.ph642 ], [ %107, %104 ]
  %gep645 = getelementptr %struct.doublecomplex, ptr %invariant.gep644, i64 %.7330640
  %106 = tail call double @z_abs(ptr noundef %gep645) #6
  %107 = fadd double %106, %105
  %108 = add nuw nsw i64 %.7330640, 1
  %.not386.not = icmp slt i64 %.7330640, %95
  br i1 %.not386.not, label %104, label %.loopexit, !llvm.loop !23

.loopexit:                                        ; preds = %98, %104, %96, %102
  %.lcssa638647 = phi double [ 0.000000e+00, %102 ], [ 1.000000e+00, %96 ], [ %107, %104 ], [ %101, %98 ]
  %109 = fcmp oge double %.9654, %.lcssa638647
  %110 = select i1 %109, double %.9654, double %.lcssa638647
  %111 = add nuw i64 %.5316652, 1
  %exitcond711.not = icmp eq i64 %.5316652, %73
  br i1 %exitcond711.not, label %.loopexit418, label %94, !llvm.loop !24

112:                                              ; preds = %67
  %113 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #6
  %.not349 = icmp eq i64 %113, 0
  br i1 %.not349, label %200, label %114

114:                                              ; preds = %112
  %115 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not364 = icmp eq i64 %115, 0
  %116 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not365 = icmp eq i64 %116, 0
  br i1 %.not364, label %149, label %117

117:                                              ; preds = %114
  %118 = load i64, ptr %3, align 8, !tbaa !5
  %.not374511 = icmp slt i64 %118, 1
  br i1 %.not365, label %137, label %119

119:                                              ; preds = %117
  br i1 %.not374511, label %._crit_edge496, label %.lr.ph495.preheader

.lr.ph495.preheader:                              ; preds = %119
  %min.iters.check = icmp ult i64 %118, 4
  br i1 %min.iters.check, label %.lr.ph495.preheader781, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph495.preheader
  %n.vec = and i64 %118, 9223372036854775804
  %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 ]
  %120 = getelementptr double, ptr %7, i64 %index
  %121 = getelementptr inbounds i8, ptr %120, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %120, align 8, !tbaa !25
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %121, align 8, !tbaa !25
  %index.next = add nuw i64 %index, 4
  %122 = icmp eq i64 %index.next, %n.vec
  br i1 %122, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %118, %n.vec
  br i1 %cmp.n, label %._crit_edge496, label %.lr.ph495.preheader781

.lr.ph495.preheader781:                           ; preds = %middle.block, %.lr.ph495.preheader
  %.8331493.ph = phi i64 [ 1, %.lr.ph495.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph495

.lr.ph495:                                        ; preds = %.lr.ph495.preheader781, %.lr.ph495
  %.8331493 = phi i64 [ %124, %.lr.ph495 ], [ %.8331493.ph, %.lr.ph495.preheader781 ]
  %123 = getelementptr inbounds double, ptr %15, i64 %.8331493
  store double 1.000000e+00, ptr %123, align 8, !tbaa !25
  %124 = add nuw i64 %.8331493, 1
  %exitcond690.not = icmp eq i64 %.8331493, %118
  br i1 %exitcond690.not, label %._crit_edge496, label %.lr.ph495, !llvm.loop !30

._crit_edge496:                                   ; preds = %.lr.ph495, %middle.block, %119
  %125 = load i64, ptr %4, align 8, !tbaa !5
  %.not379506 = icmp slt i64 %125, 1
  br i1 %.not379506, label %.loopexit419, label %.lr.ph509

.lr.ph509:                                        ; preds = %._crit_edge496, %._crit_edge501
  %indvars.iv691 = phi i64 [ %indvars.iv.next692, %._crit_edge501 ], [ 0, %._crit_edge496 ]
  %.6317507 = phi i64 [ %136, %._crit_edge501 ], [ 1, %._crit_edge496 ]
  %126 = load i64, ptr %3, align 8, !tbaa !5
  %127 = add nsw i64 %.6317507, -1
  %128 = tail call i64 @llvm.smin.i64(i64 %126, i64 %127)
  %.not382497 = icmp slt i64 %128, 1
  br i1 %.not382497, label %._crit_edge501, label %.lr.ph500

.lr.ph500:                                        ; preds = %.lr.ph509
  %129 = mul nsw i64 %.6317507, %12
  %invariant.gep502 = getelementptr %struct.doublecomplex, ptr %14, i64 %129
  %smin693 = tail call i64 @llvm.smin.i64(i64 %126, i64 %indvars.iv691)
  br label %130

130:                                              ; preds = %.lr.ph500, %130
  %.9332498 = phi i64 [ 1, %.lr.ph500 ], [ %135, %130 ]
  %gep503 = getelementptr %struct.doublecomplex, ptr %invariant.gep502, i64 %.9332498
  %131 = tail call double @z_abs(ptr noundef %gep503) #6
  %132 = getelementptr inbounds double, ptr %15, i64 %.9332498
  %133 = load double, ptr %132, align 8, !tbaa !25
  %134 = fadd double %131, %133
  store double %134, ptr %132, align 8, !tbaa !25
  %135 = add nuw nsw i64 %.9332498, 1
  %exitcond694.not = icmp eq i64 %.9332498, %smin693
  br i1 %exitcond694.not, label %._crit_edge501, label %130, !llvm.loop !31

._crit_edge501:                                   ; preds = %130, %.lr.ph509
  %136 = add nuw nsw i64 %.6317507, 1
  %indvars.iv.next692 = add nuw nsw i64 %indvars.iv691, 1
  %exitcond695.not = icmp eq i64 %indvars.iv.next692, %125
  br i1 %exitcond695.not, label %.loopexit419, label %.lr.ph509, !llvm.loop !32

137:                                              ; preds = %117
  br i1 %.not374511, label %._crit_edge515, label %.lr.ph514.preheader

.lr.ph514.preheader:                              ; preds = %137
  %138 = shl nuw i64 %118, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %138, i1 false), !tbaa !25
  br label %._crit_edge515

._crit_edge515:                                   ; preds = %.lr.ph514.preheader, %137
  %139 = load i64, ptr %4, align 8, !tbaa !5
  %.not375525 = icmp slt i64 %139, 1
  br i1 %.not375525, label %.loopexit419, label %.lr.ph528

.lr.ph528:                                        ; preds = %._crit_edge515, %._crit_edge520
  %.7318526 = phi i64 [ %148, %._crit_edge520 ], [ 1, %._crit_edge515 ]
  %140 = load i64, ptr %3, align 8, !tbaa !5
  %.7318. = tail call i64 @llvm.smin.i64(i64 %140, i64 %.7318526)
  %.not377516 = icmp slt i64 %140, 1
  br i1 %.not377516, label %._crit_edge520, label %.lr.ph519

.lr.ph519:                                        ; preds = %.lr.ph528
  %141 = mul nsw i64 %.7318526, %12
  %invariant.gep521 = getelementptr %struct.doublecomplex, ptr %14, i64 %141
  br label %142

142:                                              ; preds = %.lr.ph519, %142
  %.11334517 = phi i64 [ 1, %.lr.ph519 ], [ %147, %142 ]
  %gep522 = getelementptr %struct.doublecomplex, ptr %invariant.gep521, i64 %.11334517
  %143 = tail call double @z_abs(ptr noundef %gep522) #6
  %144 = getelementptr inbounds double, ptr %15, i64 %.11334517
  %145 = load double, ptr %144, align 8, !tbaa !25
  %146 = fadd double %143, %145
  store double %146, ptr %144, align 8, !tbaa !25
  %147 = add nuw i64 %.11334517, 1
  %exitcond697.not = icmp eq i64 %.11334517, %.7318.
  br i1 %exitcond697.not, label %._crit_edge520, label %142, !llvm.loop !33

._crit_edge520:                                   ; preds = %142, %.lr.ph528
  %148 = add nuw i64 %.7318526, 1
  %exitcond698.not = icmp eq i64 %.7318526, %139
  br i1 %exitcond698.not, label %.loopexit419, label %.lr.ph528, !llvm.loop !34

149:                                              ; preds = %114
  br i1 %.not365, label %170, label %150

150:                                              ; preds = %149
  %151 = load i64, ptr %4, align 8, !tbaa !5
  %.not369530 = icmp slt i64 %151, 1
  br i1 %.not369530, label %._crit_edge534, label %.lr.ph533.preheader

.lr.ph533.preheader:                              ; preds = %150
  %min.iters.check753 = icmp ult i64 %151, 4
  br i1 %min.iters.check753, label %.lr.ph533.preheader778, label %vector.ph754

vector.ph754:                                     ; preds = %.lr.ph533.preheader
  %n.vec756 = and i64 %151, 9223372036854775804
  %ind.end757 = or disjoint i64 %n.vec756, 1
  br label %vector.body759

vector.body759:                                   ; preds = %vector.body759, %vector.ph754
  %index760 = phi i64 [ 0, %vector.ph754 ], [ %index.next762, %vector.body759 ]
  %152 = getelementptr double, ptr %7, i64 %index760
  %153 = getelementptr inbounds i8, ptr %152, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %152, align 8, !tbaa !25
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %153, align 8, !tbaa !25
  %index.next762 = add nuw i64 %index760, 4
  %154 = icmp eq i64 %index.next762, %n.vec756
  br i1 %154, label %middle.block751, label %vector.body759, !llvm.loop !35

middle.block751:                                  ; preds = %vector.body759
  %cmp.n763 = icmp eq i64 %151, %n.vec756
  br i1 %cmp.n763, label %._crit_edge534, label %.lr.ph533.preheader778

.lr.ph533.preheader778:                           ; preds = %middle.block751, %.lr.ph533.preheader
  %.12335531.ph = phi i64 [ 1, %.lr.ph533.preheader ], [ %ind.end757, %middle.block751 ]
  br label %.lr.ph533

.lr.ph533:                                        ; preds = %.lr.ph533.preheader778, %.lr.ph533
  %.12335531 = phi i64 [ %156, %.lr.ph533 ], [ %.12335531.ph, %.lr.ph533.preheader778 ]
  %155 = getelementptr inbounds double, ptr %15, i64 %.12335531
  store double 1.000000e+00, ptr %155, align 8, !tbaa !25
  %156 = add nuw i64 %.12335531, 1
  %exitcond699.not = icmp eq i64 %.12335531, %151
  br i1 %exitcond699.not, label %._crit_edge534, label %.lr.ph533, !llvm.loop !36

._crit_edge534:                                   ; preds = %.lr.ph533, %middle.block751, %150
  %157 = load i64, ptr %3, align 8, !tbaa !5
  %.not370.not535 = icmp slt i64 %151, %157
  br i1 %.not370.not535, label %.lr.ph538.preheader, label %.preheader

.lr.ph538.preheader:                              ; preds = %._crit_edge534
  %158 = shl i64 %151, 3
  %scevgep = getelementptr i8, ptr %7, i64 %158
  %159 = sub i64 %157, %151
  %160 = shl i64 %159, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %160, i1 false), !tbaa !25
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph538.preheader, %._crit_edge534
  br i1 %.not369530, label %.loopexit419, label %.lr.ph549

.loopexit420:                                     ; preds = %164, %.lr.ph549
  %exitcond700.not = icmp eq i64 %.8319548, %151
  br i1 %exitcond700.not, label %.loopexit419, label %.lr.ph549, !llvm.loop !37

.lr.ph549:                                        ; preds = %.preheader, %.loopexit420
  %.8319548 = phi i64 [ %162, %.loopexit420 ], [ 1, %.preheader ]
  %161 = load i64, ptr %3, align 8, !tbaa !5
  %162 = add nuw i64 %.8319548, 1
  %.not372539.not = icmp slt i64 %.8319548, %161
  br i1 %.not372539.not, label %.lr.ph542, label %.loopexit420

.lr.ph542:                                        ; preds = %.lr.ph549
  %163 = mul nsw i64 %.8319548, %12
  %invariant.gep543 = getelementptr %struct.doublecomplex, ptr %14, i64 %163
  br label %164

164:                                              ; preds = %.lr.ph542, %164
  %.14540 = phi i64 [ %162, %.lr.ph542 ], [ %169, %164 ]
  %gep544 = getelementptr %struct.doublecomplex, ptr %invariant.gep543, i64 %.14540
  %165 = tail call double @z_abs(ptr noundef %gep544) #6
  %166 = getelementptr inbounds double, ptr %15, i64 %.14540
  %167 = load double, ptr %166, align 8, !tbaa !25
  %168 = fadd double %165, %167
  store double %168, ptr %166, align 8, !tbaa !25
  %169 = add nuw nsw i64 %.14540, 1
  %.not372.not = icmp slt i64 %.14540, %161
  br i1 %.not372.not, label %164, label %.loopexit420, !llvm.loop !38

170:                                              ; preds = %149
  %171 = load i64, ptr %3, align 8, !tbaa !5
  %.not366551 = icmp slt i64 %171, 1
  br i1 %.not366551, label %._crit_edge555, label %.lr.ph554.preheader

.lr.ph554.preheader:                              ; preds = %170
  %172 = shl nuw i64 %171, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %172, i1 false), !tbaa !25
  br label %._crit_edge555

._crit_edge555:                                   ; preds = %.lr.ph554.preheader, %170
  %173 = load i64, ptr %4, align 8, !tbaa !5
  %.not367565 = icmp slt i64 %173, 1
  br i1 %.not367565, label %.loopexit419, label %.lr.ph568

.lr.ph568:                                        ; preds = %._crit_edge555, %._crit_edge560
  %.9320566 = phi i64 [ %182, %._crit_edge560 ], [ 1, %._crit_edge555 ]
  %174 = load i64, ptr %3, align 8, !tbaa !5
  %.not368556 = icmp sgt i64 %.9320566, %174
  br i1 %.not368556, label %._crit_edge560, label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph568
  %175 = mul nsw i64 %.9320566, %12
  %invariant.gep561 = getelementptr %struct.doublecomplex, ptr %14, i64 %175
  br label %176

176:                                              ; preds = %.lr.ph559, %176
  %.16557 = phi i64 [ %.9320566, %.lr.ph559 ], [ %181, %176 ]
  %gep562 = getelementptr %struct.doublecomplex, ptr %invariant.gep561, i64 %.16557
  %177 = tail call double @z_abs(ptr noundef %gep562) #6
  %178 = getelementptr inbounds double, ptr %15, i64 %.16557
  %179 = load double, ptr %178, align 8, !tbaa !25
  %180 = fadd double %177, %179
  store double %180, ptr %178, align 8, !tbaa !25
  %181 = add nuw nsw i64 %.16557, 1
  %.not368.not = icmp slt i64 %.16557, %174
  br i1 %.not368.not, label %176, label %._crit_edge560, !llvm.loop !39

._crit_edge560:                                   ; preds = %176, %.lr.ph568
  %182 = add nuw i64 %.9320566, 1
  %exitcond701.not = icmp eq i64 %.9320566, %173
  br i1 %exitcond701.not, label %.loopexit419, label %.lr.ph568, !llvm.loop !40

.loopexit419:                                     ; preds = %._crit_edge501, %._crit_edge520, %.loopexit420, %._crit_edge560, %._crit_edge496, %._crit_edge515, %.preheader, %._crit_edge555
  %183 = load i64, ptr %3, align 8, !tbaa !5
  %.not380570 = icmp slt i64 %183, 1
  br i1 %.not380570, label %.loopexit418, label %.lr.ph574.preheader

.lr.ph574.preheader:                              ; preds = %.loopexit419
  %xtraiter = and i64 %183, 3
  %184 = icmp ult i64 %183, 4
  br i1 %184, label %.loopexit418.loopexit775.unr-lcssa, label %.lr.ph574.preheader.new

.lr.ph574.preheader.new:                          ; preds = %.lr.ph574.preheader
  %unroll_iter = and i64 %183, 9223372036854775804
  %invariant.gep803 = getelementptr i8, ptr %15, i64 16
  %invariant.gep805 = getelementptr i8, ptr %15, i64 24
  br label %.lr.ph574

.lr.ph574:                                        ; preds = %.lr.ph574, %.lr.ph574.preheader.new
  %.10572 = phi double [ 0.000000e+00, %.lr.ph574.preheader.new ], [ %198, %.lr.ph574 ]
  %.17571 = phi i64 [ 1, %.lr.ph574.preheader.new ], [ %199, %.lr.ph574 ]
  %niter = phi i64 [ 0, %.lr.ph574.preheader.new ], [ %niter.next.3, %.lr.ph574 ]
  %185 = getelementptr inbounds double, ptr %15, i64 %.17571
  %186 = load double, ptr %185, align 8, !tbaa !25
  %187 = fcmp oge double %.10572, %186
  %188 = select i1 %187, double %.10572, double %186
  %189 = getelementptr double, ptr %7, i64 %.17571
  %190 = load double, ptr %189, align 8, !tbaa !25
  %191 = fcmp oge double %188, %190
  %192 = select i1 %191, double %188, double %190
  %gep804 = getelementptr double, ptr %invariant.gep803, i64 %.17571
  %193 = load double, ptr %gep804, align 8, !tbaa !25
  %194 = fcmp oge double %192, %193
  %195 = select i1 %194, double %192, double %193
  %gep806 = getelementptr double, ptr %invariant.gep805, i64 %.17571
  %196 = load double, ptr %gep806, align 8, !tbaa !25
  %197 = fcmp oge double %195, %196
  %198 = select i1 %197, double %195, double %196
  %199 = add nuw i64 %.17571, 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 %.loopexit418.loopexit775.unr-lcssa, label %.lr.ph574, !llvm.loop !41

200:                                              ; preds = %112
  %201 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #6
  %.not350 = icmp eq i64 %201, 0
  br i1 %.not350, label %202, label %204

202:                                              ; preds = %200
  %203 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not351 = icmp eq i64 %203, 0
  br i1 %.not351, label %.loopexit418, label %204

204:                                              ; preds = %202, %200
  %205 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not352 = icmp eq i64 %205, 0
  %206 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not353 = icmp eq i64 %206, 0
  br i1 %.not352, label %224, label %207

207:                                              ; preds = %204
  br i1 %.not353, label %218, label %208

208:                                              ; preds = %207
  store double 1.000000e+00, ptr %11, align 8, !tbaa !25
  %209 = load i64, ptr %3, align 8, !tbaa !5
  %210 = load i64, ptr %4, align 8, !tbaa !5
  %.407 = tail call i64 @llvm.smin.i64(i64 %209, i64 %210)
  %211 = sitofp i64 %.407 to double
  store double %211, ptr %10, align 8, !tbaa !25
  %invariant.gep576 = getelementptr i8, ptr %14, i64 16
  %.not362578 = icmp slt i64 %210, 2
  br i1 %.not362578, label %.loopexit414, label %.lr.ph581

.lr.ph581:                                        ; preds = %208, %.lr.ph581
  %.10321579 = phi i64 [ %217, %.lr.ph581 ], [ 2, %208 ]
  %212 = load i64, ptr %3, align 8, !tbaa !5
  %213 = add nsw i64 %.10321579, -1
  %214 = call i64 @llvm.smin.i64(i64 %212, i64 %213)
  store i64 %214, ptr %9, align 8, !tbaa !5
  %215 = mul nsw i64 %.10321579, %12
  %gep577 = getelementptr %struct.doublecomplex, ptr %invariant.gep576, i64 %215
  %216 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %gep577, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #6
  %217 = add nuw i64 %.10321579, 1
  %exitcond703.not = icmp eq i64 %.10321579, %210
  br i1 %exitcond703.not, label %.loopexit414, label %.lr.ph581, !llvm.loop !42

218:                                              ; preds = %207
  store double 0.000000e+00, ptr %11, align 8, !tbaa !25
  store double 1.000000e+00, ptr %10, align 8, !tbaa !25
  %219 = load i64, ptr %4, align 8, !tbaa !5
  %invariant.gep582 = getelementptr i8, ptr %14, i64 16
  %.not359584 = icmp slt i64 %219, 1
  br i1 %.not359584, label %.loopexit414, label %.lr.ph587

.lr.ph587:                                        ; preds = %218, %.lr.ph587
  %.11322585 = phi i64 [ %223, %.lr.ph587 ], [ 1, %218 ]
  %220 = load i64, ptr %3, align 8, !tbaa !5
  %.11322. = call i64 @llvm.smin.i64(i64 %220, i64 %.11322585)
  store i64 %.11322., ptr %9, align 8, !tbaa !5
  %221 = mul nsw i64 %.11322585, %12
  %gep583 = getelementptr %struct.doublecomplex, ptr %invariant.gep582, i64 %221
  %222 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %gep583, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #6
  %223 = add nuw i64 %.11322585, 1
  %exitcond704.not = icmp eq i64 %.11322585, %219
  br i1 %exitcond704.not, label %.loopexit414, label %.lr.ph587, !llvm.loop !43

224:                                              ; preds = %204
  br i1 %.not353, label %237, label %225

225:                                              ; preds = %224
  store double 1.000000e+00, ptr %11, align 8, !tbaa !25
  %226 = load i64, ptr %3, align 8, !tbaa !5
  %227 = load i64, ptr %4, align 8, !tbaa !5
  %.408 = tail call i64 @llvm.smin.i64(i64 %226, i64 %227)
  %228 = sitofp i64 %.408 to double
  store double %228, ptr %10, align 8, !tbaa !25
  %.not356588 = icmp slt i64 %227, 1
  br i1 %.not356588, label %.loopexit414, label %.lr.ph591

.lr.ph591:                                        ; preds = %225, %.lr.ph591
  %.12589 = phi i64 [ %231, %.lr.ph591 ], [ 1, %225 ]
  %229 = load i64, ptr %3, align 8, !tbaa !5
  %230 = sub nsw i64 %229, %.12589
  store i64 %230, ptr %9, align 8, !tbaa !5
  %231 = add nuw nsw i64 %.12589, 1
  %232 = call i64 @llvm.smin.i64(i64 %229, i64 %231)
  %233 = mul nsw i64 %.12589, %12
  %234 = getelementptr %struct.doublecomplex, ptr %14, i64 %232
  %235 = getelementptr %struct.doublecomplex, ptr %234, i64 %233
  %236 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %235, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #6
  %exitcond705.not = icmp eq i64 %.12589, %227
  br i1 %exitcond705.not, label %.loopexit414, label %.lr.ph591, !llvm.loop !44

237:                                              ; preds = %224
  store double 0.000000e+00, ptr %11, align 8, !tbaa !25
  store double 1.000000e+00, ptr %10, align 8, !tbaa !25
  %238 = load i64, ptr %4, align 8, !tbaa !5
  %.not354592 = icmp slt i64 %238, 1
  br i1 %.not354592, label %.loopexit414, label %.lr.ph595

.lr.ph595:                                        ; preds = %237
  %239 = add i64 %12, 1
  br label %240

240:                                              ; preds = %.lr.ph595, %240
  %.13593 = phi i64 [ 1, %.lr.ph595 ], [ %246, %240 ]
  %241 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %241, %.13593
  %242 = add i64 %reass.sub, 1
  store i64 %242, ptr %9, align 8, !tbaa !5
  %243 = mul i64 %.13593, %239
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %14, i64 %243
  %245 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %244, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #6
  %246 = add nuw i64 %.13593, 1
  %exitcond706.not = icmp eq i64 %.13593, %238
  br i1 %exitcond706.not, label %.loopexit414, label %240, !llvm.loop !45

.loopexit414:                                     ; preds = %.lr.ph581, %.lr.ph587, %.lr.ph591, %240, %208, %218, %225, %237
  %247 = load double, ptr %11, align 8, !tbaa !25
  %248 = load double, ptr %10, align 8, !tbaa !25
  %249 = call double @sqrt(double noundef %248) #6
  %250 = fmul double %247, %249
  br label %.loopexit418

.loopexit418.loopexit775.unr-lcssa:               ; preds = %.lr.ph574, %.lr.ph574.preheader
  %.lcssa776.ph = phi double [ poison, %.lr.ph574.preheader ], [ %198, %.lr.ph574 ]
  %.10572.unr = phi double [ 0.000000e+00, %.lr.ph574.preheader ], [ %198, %.lr.ph574 ]
  %.17571.unr = phi i64 [ 1, %.lr.ph574.preheader ], [ %199, %.lr.ph574 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit418, label %.lr.ph574.epil

.lr.ph574.epil:                                   ; preds = %.loopexit418.loopexit775.unr-lcssa, %.lr.ph574.epil
  %.10572.epil = phi double [ %254, %.lr.ph574.epil ], [ %.10572.unr, %.loopexit418.loopexit775.unr-lcssa ]
  %.17571.epil = phi i64 [ %255, %.lr.ph574.epil ], [ %.17571.unr, %.loopexit418.loopexit775.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph574.epil ], [ 0, %.loopexit418.loopexit775.unr-lcssa ]
  %251 = getelementptr inbounds double, ptr %15, i64 %.17571.epil
  %252 = load double, ptr %251, align 8, !tbaa !25
  %253 = fcmp oge double %.10572.epil, %252
  %254 = select i1 %253, double %.10572.epil, double %252
  %255 = add nuw i64 %.17571.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 %.loopexit418, label %.lr.ph574.epil, !llvm.loop !46

.loopexit418:                                     ; preds = %._crit_edge, %.loopexit426, %._crit_edge461, %._crit_edge479, %.loopexit418.loopexit775.unr-lcssa, %.lr.ph574.epil, %.loopexit411, %.loopexit, %26, %37, %47, %56, %74, %93, %.loopexit419, %8, %.loopexit414, %202
  %.11 = phi double [ %250, %.loopexit414 ], [ undef, %202 ], [ 0.000000e+00, %8 ], [ 0.000000e+00, %.loopexit419 ], [ 0.000000e+00, %93 ], [ 0.000000e+00, %74 ], [ 0.000000e+00, %56 ], [ 0.000000e+00, %47 ], [ 1.000000e+00, %37 ], [ 1.000000e+00, %26 ], [ %110, %.loopexit ], [ %91, %.loopexit411 ], [ %.lcssa776.ph, %.loopexit418.loopexit775.unr-lcssa ], [ %254, %.lr.ph574.epil ], [ %.7.lcssa, %._crit_edge479 ], [ %.5.lcssa, %._crit_edge461 ], [ %.3.lcssa, %.loopexit426 ], [ %.1.lcssa, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  ret double %.11
}

; 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 double @z_abs(ptr noundef) local_unnamed_addr #2

declare i32 @zlassq_(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 nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = !{!26, !26, i64 0}
!26 = !{!"double", !7, i64 0}
!27 = distinct !{!27, !10, !28, !29}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = distinct !{!30, !10, !29, !28}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10, !28, !29}
!36 = distinct !{!36, !10, !29, !28}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10}
!43 = distinct !{!43, !10}
!44 = distinct !{!44, !10}
!45 = distinct !{!45, !10}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.unroll.disable"}


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