; LLVM IR from OpenMathLib/OpenBLAS :: relapack/src (ztrsyl_rec2)

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

@RELAPACK_ztrsyl_rec2.j = external hidden global i32, align 4
@RELAPACK_ztrsyl_rec2.k = external hidden global i32, align 4
@RELAPACK_ztrsyl_rec2.l = external hidden global i32, align 4
@RELAPACK_ztrsyl_rec2.a11 = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.db = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.x11 = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.da11 = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.vec = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.dum = external hidden global [1 x double], align 8
@RELAPACK_ztrsyl_rec2.eps = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.sgn = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.smin = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.suml = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.sumr = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.scaloc = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.bignum = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.notrna = external hidden global i32, align 4
@RELAPACK_ztrsyl_rec2.notrnb = external hidden global i32, align 4
@RELAPACK_ztrsyl_rec2.smlnum = external hidden global double, align 8
@.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 [7 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 i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @RELAPACK_ztrsyl_rec2(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, i64 noundef %13, i64 noundef %14) #0 {
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca %struct.doublecomplex, align 8
  %44 = alloca %struct.doublecomplex, align 8
  %45 = alloca %struct.doublecomplex, align 8
  %46 = alloca %struct.doublecomplex, align 8
  %47 = alloca i32, align 4
  %48 = alloca %struct.doublecomplex, align 8
  %49 = alloca %struct.doublecomplex, align 8
  %50 = alloca %struct.doublecomplex, align 8
  %51 = alloca %struct.doublecomplex, align 8
  %52 = alloca %struct.doublecomplex, align 8
  %53 = alloca %struct.doublecomplex, align 8
  %54 = alloca %struct.doublecomplex, align 8
  %55 = alloca %struct.doublecomplex, align 8
  %56 = alloca %struct.doublecomplex, align 8
  %57 = alloca %struct.doublecomplex, align 8
  %58 = alloca %struct.doublecomplex, align 8
  %59 = alloca %struct.doublecomplex, align 8
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store i64 %13, ptr %29, align 8, !tbaa !9
  store i64 %14, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #5
  %60 = load ptr, ptr %22, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !11
  store i32 %61, ptr %31, align 4, !tbaa !11
  %62 = load i32, ptr %31, align 4, !tbaa !11
  %63 = add nsw i32 1, %62
  store i32 %63, ptr %32, align 4, !tbaa !11
  %64 = load i32, ptr %32, align 4, !tbaa !11
  %65 = load ptr, ptr %21, align 8, !tbaa !5
  %66 = sext i32 %64 to i64
  %67 = sub i64 0, %66
  %68 = getelementptr inbounds %struct.doublecomplex, ptr %65, i64 %67
  store ptr %68, ptr %21, align 8, !tbaa !5
  %69 = load ptr, ptr %24, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !11
  store i32 %70, ptr %33, align 4, !tbaa !11
  %71 = load i32, ptr %33, align 4, !tbaa !11
  %72 = add nsw i32 1, %71
  store i32 %72, ptr %34, align 4, !tbaa !11
  %73 = load i32, ptr %34, align 4, !tbaa !11
  %74 = load ptr, ptr %23, align 8, !tbaa !5
  %75 = sext i32 %73 to i64
  %76 = sub i64 0, %75
  %77 = getelementptr inbounds %struct.doublecomplex, ptr %74, i64 %76
  store ptr %77, ptr %23, align 8, !tbaa !5
  %78 = load ptr, ptr %26, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !11
  store i32 %79, ptr %35, align 4, !tbaa !11
  %80 = load i32, ptr %35, align 4, !tbaa !11
  %81 = add nsw i32 1, %80
  store i32 %81, ptr %36, align 4, !tbaa !11
  %82 = load i32, ptr %36, align 4, !tbaa !11
  %83 = load ptr, ptr %25, align 8, !tbaa !5
  %84 = sext i32 %82 to i64
  %85 = sub i64 0, %84
  %86 = getelementptr inbounds %struct.doublecomplex, ptr %83, i64 %85
  store ptr %86, ptr %25, align 8, !tbaa !5
  %87 = load ptr, ptr %16, align 8, !tbaa !5
  %88 = call i32 @lsame_(ptr noundef %87, ptr noundef @.str, i64 noundef 1, i64 noundef 1)
  store i32 %88, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %89 = load ptr, ptr %17, align 8, !tbaa !5
  %90 = call i32 @lsame_(ptr noundef %89, ptr noundef @.str, i64 noundef 1, i64 noundef 1)
  store i32 %90, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %91 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %91, align 4, !tbaa !11
  %92 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %100, label %94

94:                                               ; preds = %15
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = call i32 @lsame_(ptr noundef %95, ptr noundef @.str.1, i64 noundef 1, i64 noundef 1)
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %100, label %98

98:                                               ; preds = %94
  %99 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %99, align 4, !tbaa !11
  br label %183

100:                                              ; preds = %94, %15
  %101 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %109, label %103

103:                                              ; preds = %100
  %104 = load ptr, ptr %17, align 8, !tbaa !5
  %105 = call i32 @lsame_(ptr noundef %104, ptr noundef @.str.1, i64 noundef 1, i64 noundef 1)
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %109, label %107

107:                                              ; preds = %103
  %108 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %108, align 4, !tbaa !11
  br label %182

109:                                              ; preds = %103, %100
  %110 = load ptr, ptr %18, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !11
  %112 = icmp ne i32 %111, 1
  br i1 %112, label %113, label %119

113:                                              ; preds = %109
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !11
  %116 = icmp ne i32 %115, -1
  br i1 %116, label %117, label %119

117:                                              ; preds = %113
  %118 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %118, align 4, !tbaa !11
  br label %181

119:                                              ; preds = %113, %109
  %120 = load ptr, ptr %19, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !11
  %122 = icmp slt i32 %121, 0
  br i1 %122, label %123, label %125

123:                                              ; preds = %119
  %124 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %124, align 4, !tbaa !11
  br label %180

125:                                              ; preds = %119
  %126 = load ptr, ptr %20, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !11
  %128 = icmp slt i32 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %125
  %130 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %130, align 4, !tbaa !11
  br label %179

131:                                              ; preds = %125
  %132 = load ptr, ptr %22, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !11
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !11
  %136 = icmp sge i32 1, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %131
  br label %141

138:                                              ; preds = %131
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !11
  br label %141

141:                                              ; preds = %138, %137
  %142 = phi i32 [ 1, %137 ], [ %140, %138 ]
  %143 = icmp slt i32 %133, %142
  br i1 %143, label %144, label %146

144:                                              ; preds = %141
  %145 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %145, align 4, !tbaa !11
  br label %178

146:                                              ; preds = %141
  %147 = load ptr, ptr %24, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !11
  %149 = load ptr, ptr %20, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !11
  %151 = icmp sge i32 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %156

153:                                              ; preds = %146
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !11
  br label %156

156:                                              ; preds = %153, %152
  %157 = phi i32 [ 1, %152 ], [ %155, %153 ]
  %158 = icmp slt i32 %148, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %160, align 4, !tbaa !11
  br label %177

161:                                              ; preds = %156
  %162 = load ptr, ptr %26, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !11
  %164 = load ptr, ptr %19, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !11
  %166 = icmp sge i32 1, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load ptr, ptr %19, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !11
  br label %171

171:                                              ; preds = %168, %167
  %172 = phi i32 [ 1, %167 ], [ %170, %168 ]
  %173 = icmp slt i32 %163, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %175, align 4, !tbaa !11
  br label %176

176:                                              ; preds = %174, %171
  br label %177

177:                                              ; preds = %176, %159
  br label %178

178:                                              ; preds = %177, %144
  br label %179

179:                                              ; preds = %178, %129
  br label %180

180:                                              ; preds = %179, %123
  br label %181

181:                                              ; preds = %180, %117
  br label %182

182:                                              ; preds = %181, %107
  br label %183

183:                                              ; preds = %182, %98
  %184 = load ptr, ptr %28, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !11
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %192

187:                                              ; preds = %183
  %188 = load ptr, ptr %28, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !11
  %190 = sub nsw i32 0, %189
  store i32 %190, ptr %37, align 4, !tbaa !11
  %191 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %37, i64 noundef 6)
  store i32 1, ptr %47, align 4
  br label %1653

192:                                              ; preds = %183
  %193 = load ptr, ptr %27, align 8, !tbaa !5
  store double 1.000000e+00, ptr %193, align 8, !tbaa !13
  %194 = load ptr, ptr %19, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !11
  %196 = icmp eq i32 %195, 0
  br i1 %196, label %201, label %197

197:                                              ; preds = %192
  %198 = load ptr, ptr %20, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !11
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %202

201:                                              ; preds = %197, %192
  store i32 1, ptr %47, align 4
  br label %1653

202:                                              ; preds = %197
  %203 = call double @dlamch_(ptr noundef @.str.3, i64 noundef 1)
  store double %203, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !13
  %204 = call double @dlamch_(ptr noundef @.str.4, i64 noundef 1)
  store double %204, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  %205 = load double, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  %206 = fdiv double 1.000000e+00, %205
  store double %206, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %207 = call i32 @dlabad_(ptr noundef @RELAPACK_ztrsyl_rec2.smlnum, ptr noundef @RELAPACK_ztrsyl_rec2.bignum)
  %208 = load double, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  %209 = load ptr, ptr %19, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !11
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !11
  %213 = mul nsw i32 %210, %212
  %214 = sitofp i32 %213 to double
  %215 = fmul double %208, %214
  %216 = load double, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !13
  %217 = fdiv double %215, %216
  store double %217, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  %218 = load double, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  %219 = fdiv double 1.000000e+00, %218
  store double %219, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %220 = load double, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !13
  store double %220, ptr %41, align 8, !tbaa !13
  %221 = load double, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !13
  %222 = load ptr, ptr %19, align 8, !tbaa !5
  %223 = load ptr, ptr %19, align 8, !tbaa !5
  %224 = load ptr, ptr %21, align 8, !tbaa !5
  %225 = load i32, ptr %32, align 4, !tbaa !11
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds %struct.doublecomplex, ptr %224, i64 %226
  %228 = load ptr, ptr %22, align 8, !tbaa !5
  %229 = call double @zlange_(ptr noundef @.str.5, ptr noundef %222, ptr noundef %223, ptr noundef %227, ptr noundef %228, ptr noundef @RELAPACK_ztrsyl_rec2.dum, i64 noundef 1)
  %230 = fmul double %221, %229
  store double %230, ptr %42, align 8, !tbaa !13
  %231 = load double, ptr %41, align 8, !tbaa !13
  %232 = load double, ptr %42, align 8, !tbaa !13
  %233 = fcmp oge double %231, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %202
  %235 = load double, ptr %41, align 8, !tbaa !13
  br label %238

236:                                              ; preds = %202
  %237 = load double, ptr %42, align 8, !tbaa !13
  br label %238

238:                                              ; preds = %236, %234
  %239 = phi double [ %235, %234 ], [ %237, %236 ]
  store double %239, ptr %41, align 8, !tbaa !13
  %240 = load double, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !13
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load ptr, ptr %23, align 8, !tbaa !5
  %244 = load i32, ptr %34, align 4, !tbaa !11
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds %struct.doublecomplex, ptr %243, i64 %245
  %247 = load ptr, ptr %24, align 8, !tbaa !5
  %248 = call double @zlange_(ptr noundef @.str.5, ptr noundef %241, ptr noundef %242, ptr noundef %246, ptr noundef %247, ptr noundef @RELAPACK_ztrsyl_rec2.dum, i64 noundef 1)
  %249 = fmul double %240, %248
  store double %249, ptr %42, align 8, !tbaa !13
  %250 = load double, ptr %41, align 8, !tbaa !13
  %251 = load double, ptr %42, align 8, !tbaa !13
  %252 = fcmp oge double %250, %251
  br i1 %252, label %253, label %255

253:                                              ; preds = %238
  %254 = load double, ptr %41, align 8, !tbaa !13
  br label %257

255:                                              ; preds = %238
  %256 = load double, ptr %42, align 8, !tbaa !13
  br label %257

257:                                              ; preds = %255, %253
  %258 = phi double [ %254, %253 ], [ %256, %255 ]
  store double %258, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  %259 = load ptr, ptr %18, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !11
  %261 = sitofp i32 %260 to double
  store double %261, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %262 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %609

264:                                              ; preds = %257
  %265 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %609

267:                                              ; preds = %264
  %268 = load ptr, ptr %20, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !11
  store i32 %269, ptr %37, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %270

270:                                              ; preds = %605, %267
  %271 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %272 = load i32, ptr %37, align 4, !tbaa !11
  %273 = icmp sle i32 %271, %272
  br i1 %273, label %274, label %608

274:                                              ; preds = %270
  %275 = load ptr, ptr %19, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !11
  store i32 %276, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %277

277:                                              ; preds = %601, %274
  %278 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %279 = icmp sge i32 %278, 1
  br i1 %279, label %280, label %604

280:                                              ; preds = %277
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !11
  %283 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %284 = sub nsw i32 %282, %283
  store i32 %284, ptr %38, align 4, !tbaa !11
  %285 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %39, align 4, !tbaa !11
  %287 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %40, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #5
  %289 = load ptr, ptr %21, align 8, !tbaa !5
  %290 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %291 = load i32, ptr %39, align 4, !tbaa !11
  %292 = load ptr, ptr %19, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !11
  %294 = icmp sle i32 %291, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %280
  %296 = load i32, ptr %39, align 4, !tbaa !11
  br label %300

297:                                              ; preds = %280
  %298 = load ptr, ptr %19, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !11
  br label %300

300:                                              ; preds = %297, %295
  %301 = phi i32 [ %296, %295 ], [ %299, %297 ]
  %302 = load i32, ptr %31, align 4, !tbaa !11
  %303 = mul nsw i32 %301, %302
  %304 = add nsw i32 %290, %303
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %289, i64 %305
  %307 = load ptr, ptr %22, align 8, !tbaa !5
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = load i32, ptr %40, align 4, !tbaa !11
  %310 = load ptr, ptr %19, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !11
  %312 = icmp sle i32 %309, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %300
  %314 = load i32, ptr %40, align 4, !tbaa !11
  br label %318

315:                                              ; preds = %300
  %316 = load ptr, ptr %19, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !11
  br label %318

318:                                              ; preds = %315, %313
  %319 = phi i32 [ %314, %313 ], [ %317, %315 ]
  %320 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %321 = load i32, ptr %35, align 4, !tbaa !11
  %322 = mul nsw i32 %320, %321
  %323 = add nsw i32 %319, %322
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds %struct.doublecomplex, ptr %308, i64 %324
  %326 = call { double, double } @zdotu_(ptr noundef %38, ptr noundef %306, ptr noundef %307, ptr noundef %325, ptr noundef @c__1)
  %327 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %328 = extractvalue { double, double } %326, 0
  store double %328, ptr %327, align 8
  %329 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %330 = extractvalue { double, double } %326, 1
  store double %330, ptr %329, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %332 = load double, ptr %331, align 8, !tbaa !16
  store double %332, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %334 = load double, ptr %333, align 8, !tbaa !18
  store double %334, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %335 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %336 = sub nsw i32 %335, 1
  store i32 %336, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #5
  %337 = load ptr, ptr %25, align 8, !tbaa !5
  %338 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %339 = load i32, ptr %35, align 4, !tbaa !11
  %340 = add nsw i32 %338, %339
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds %struct.doublecomplex, ptr %337, i64 %341
  %343 = load ptr, ptr %26, align 8, !tbaa !5
  %344 = load ptr, ptr %23, align 8, !tbaa !5
  %345 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %346 = load i32, ptr %33, align 4, !tbaa !11
  %347 = mul nsw i32 %345, %346
  %348 = add nsw i32 %347, 1
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %344, i64 %349
  %351 = call { double, double } @zdotu_(ptr noundef %38, ptr noundef %342, ptr noundef %343, ptr noundef %350, ptr noundef @c__1)
  %352 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %353 = extractvalue { double, double } %351, 0
  store double %353, ptr %352, align 8
  %354 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %355 = extractvalue { double, double } %351, 1
  store double %355, ptr %354, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %49, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  %356 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %357 = load double, ptr %356, align 8, !tbaa !16
  store double %357, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %358 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %359 = load double, ptr %358, align 8, !tbaa !18
  store double %359, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %360 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %361 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %362 = load i32, ptr %35, align 4, !tbaa !11
  %363 = mul nsw i32 %361, %362
  %364 = add nsw i32 %360, %363
  store i32 %364, ptr %38, align 4, !tbaa !11
  %365 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %366 = load double, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %367 = fmul double %365, %366
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %367, ptr %368, align 8, !tbaa !16
  %369 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %370 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %371 = fmul double %369, %370
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %371, ptr %372, align 8, !tbaa !18
  %373 = load double, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %375 = load double, ptr %374, align 8, !tbaa !16
  %376 = fadd double %373, %375
  %377 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %376, ptr %377, align 8, !tbaa !16
  %378 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %379 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %380 = load double, ptr %379, align 8, !tbaa !18
  %381 = fadd double %378, %380
  %382 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %381, ptr %382, align 8, !tbaa !18
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load i32, ptr %38, align 4, !tbaa !11
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %383, i64 %385
  %387 = getelementptr inbounds %struct.doublecomplex, ptr %386, i32 0, i32 0
  %388 = load double, ptr %387, align 8, !tbaa !16
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %390 = load double, ptr %389, align 8, !tbaa !16
  %391 = fsub double %388, %390
  %392 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %391, ptr %392, align 8, !tbaa !16
  %393 = load ptr, ptr %25, align 8, !tbaa !5
  %394 = load i32, ptr %38, align 4, !tbaa !11
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.doublecomplex, ptr %393, i64 %395
  %397 = getelementptr inbounds %struct.doublecomplex, ptr %396, i32 0, i32 1
  %398 = load double, ptr %397, align 8, !tbaa !18
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %400 = load double, ptr %399, align 8, !tbaa !18
  %401 = fsub double %398, %400
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %401, ptr %402, align 8, !tbaa !18
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %404 = load double, ptr %403, align 8, !tbaa !16
  store double %404, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %406 = load double, ptr %405, align 8, !tbaa !18
  store double %406, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %407 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %408 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %409 = load i32, ptr %31, align 4, !tbaa !11
  %410 = mul nsw i32 %408, %409
  %411 = add nsw i32 %407, %410
  store i32 %411, ptr %38, align 4, !tbaa !11
  %412 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %413 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %414 = load i32, ptr %33, align 4, !tbaa !11
  %415 = mul nsw i32 %413, %414
  %416 = add nsw i32 %412, %415
  store i32 %416, ptr %39, align 4, !tbaa !11
  %417 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %418 = load ptr, ptr %23, align 8, !tbaa !5
  %419 = load i32, ptr %39, align 4, !tbaa !11
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %418, i64 %420
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %421, i32 0, i32 0
  %423 = load double, ptr %422, align 8, !tbaa !16
  %424 = fmul double %417, %423
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %424, ptr %425, align 8, !tbaa !16
  %426 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %427 = load ptr, ptr %23, align 8, !tbaa !5
  %428 = load i32, ptr %39, align 4, !tbaa !11
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.doublecomplex, ptr %427, i64 %429
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %430, i32 0, i32 1
  %432 = load double, ptr %431, align 8, !tbaa !18
  %433 = fmul double %426, %432
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %433, ptr %434, align 8, !tbaa !18
  %435 = load ptr, ptr %21, align 8, !tbaa !5
  %436 = load i32, ptr %38, align 4, !tbaa !11
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds %struct.doublecomplex, ptr %435, i64 %437
  %439 = getelementptr inbounds %struct.doublecomplex, ptr %438, i32 0, i32 0
  %440 = load double, ptr %439, align 8, !tbaa !16
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %442 = load double, ptr %441, align 8, !tbaa !16
  %443 = fadd double %440, %442
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %443, ptr %444, align 8, !tbaa !16
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load i32, ptr %38, align 4, !tbaa !11
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %445, i64 %447
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %448, i32 0, i32 1
  %450 = load double, ptr %449, align 8, !tbaa !18
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %452 = load double, ptr %451, align 8, !tbaa !18
  %453 = fadd double %450, %452
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %453, ptr %454, align 8, !tbaa !18
  %455 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %456 = load double, ptr %455, align 8, !tbaa !16
  store double %456, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %458 = load double, ptr %457, align 8, !tbaa !18
  store double %458, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %459 = load double, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double %459, ptr %41, align 8, !tbaa !13
  %460 = load double, ptr %41, align 8, !tbaa !13
  %461 = fcmp oge double %460, 0.000000e+00
  br i1 %461, label %462, label %464

462:                                              ; preds = %318
  %463 = load double, ptr %41, align 8, !tbaa !13
  br label %467

464:                                              ; preds = %318
  %465 = load double, ptr %41, align 8, !tbaa !13
  %466 = fneg double %465
  br label %467

467:                                              ; preds = %464, %462
  %468 = phi double [ %463, %462 ], [ %466, %464 ]
  %469 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  store double %469, ptr %42, align 8, !tbaa !13
  %470 = load double, ptr %42, align 8, !tbaa !13
  %471 = fcmp oge double %470, 0.000000e+00
  br i1 %471, label %472, label %474

472:                                              ; preds = %467
  %473 = load double, ptr %42, align 8, !tbaa !13
  br label %477

474:                                              ; preds = %467
  %475 = load double, ptr %42, align 8, !tbaa !13
  %476 = fneg double %475
  br label %477

477:                                              ; preds = %474, %472
  %478 = phi double [ %473, %472 ], [ %476, %474 ]
  %479 = fadd double %468, %478
  store double %479, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %480 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %481 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  %482 = fcmp ole double %480, %481
  br i1 %482, label %483, label %487

483:                                              ; preds = %477
  %484 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %484, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double 0.000000e+00, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %485 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %485, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %486 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %486, align 4, !tbaa !11
  br label %487

487:                                              ; preds = %483, %477
  %488 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  store double %488, ptr %41, align 8, !tbaa !13
  %489 = load double, ptr %41, align 8, !tbaa !13
  %490 = fcmp oge double %489, 0.000000e+00
  br i1 %490, label %491, label %493

491:                                              ; preds = %487
  %492 = load double, ptr %41, align 8, !tbaa !13
  br label %496

493:                                              ; preds = %487
  %494 = load double, ptr %41, align 8, !tbaa !13
  %495 = fneg double %494
  br label %496

496:                                              ; preds = %493, %491
  %497 = phi double [ %492, %491 ], [ %495, %493 ]
  %498 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.vec)
  store double %498, ptr %42, align 8, !tbaa !13
  %499 = load double, ptr %42, align 8, !tbaa !13
  %500 = fcmp oge double %499, 0.000000e+00
  br i1 %500, label %501, label %503

501:                                              ; preds = %496
  %502 = load double, ptr %42, align 8, !tbaa !13
  br label %506

503:                                              ; preds = %496
  %504 = load double, ptr %42, align 8, !tbaa !13
  %505 = fneg double %504
  br label %506

506:                                              ; preds = %503, %501
  %507 = phi double [ %502, %501 ], [ %505, %503 ]
  %508 = fadd double %497, %507
  store double %508, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %509 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %510 = fcmp olt double %509, 1.000000e+00
  br i1 %510, label %511, label %524

511:                                              ; preds = %506
  %512 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %513 = fcmp ogt double %512, 1.000000e+00
  br i1 %513, label %514, label %524

514:                                              ; preds = %511
  %515 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %516 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %517 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %518 = fmul double %516, %517
  %519 = fcmp ogt double %515, %518
  br i1 %519, label %520, label %523

520:                                              ; preds = %514
  %521 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %522 = fdiv double 1.000000e+00, %521
  store double %522, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  br label %523

523:                                              ; preds = %520, %514
  br label %524

524:                                              ; preds = %523, %511, %506
  %525 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %525, ptr %526, align 8, !tbaa !16
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %527, align 8, !tbaa !18
  %528 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %530 = load double, ptr %529, align 8, !tbaa !16
  %531 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %533 = load double, ptr %532, align 8, !tbaa !18
  %534 = fmul double %531, %533
  %535 = fneg double %534
  %536 = call double @llvm.fmuladd.f64(double %528, double %530, double %535)
  %537 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %536, ptr %537, align 8, !tbaa !16
  %538 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %540 = load double, ptr %539, align 8, !tbaa !18
  %541 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %542 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %543 = load double, ptr %542, align 8, !tbaa !16
  %544 = fmul double %541, %543
  %545 = call double @llvm.fmuladd.f64(double %538, double %540, double %544)
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %545, ptr %546, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #5
  %547 = call { double, double } @zladiv_(ptr noundef %44, ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  %548 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %549 = extractvalue { double, double } %547, 0
  store double %549, ptr %548, align 8
  %550 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %551 = extractvalue { double, double } %547, 1
  store double %551, ptr %550, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %50, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #5
  %552 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %553 = load double, ptr %552, align 8, !tbaa !16
  store double %553, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %555 = load double, ptr %554, align 8, !tbaa !18
  store double %555, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %556 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %557 = fcmp une double %556, 1.000000e+00
  br i1 %557, label %558, label %583

558:                                              ; preds = %524
  %559 = load ptr, ptr %20, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !11
  store i32 %560, ptr %38, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %561

561:                                              ; preds = %575, %558
  %562 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %563 = load i32, ptr %38, align 4, !tbaa !11
  %564 = icmp sle i32 %562, %563
  br i1 %564, label %565, label %578

565:                                              ; preds = %561
  %566 = load ptr, ptr %19, align 8, !tbaa !5
  %567 = load ptr, ptr %25, align 8, !tbaa !5
  %568 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %569 = load i32, ptr %35, align 4, !tbaa !11
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %570, 1
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %567, i64 %572
  %574 = call i32 @zdscal_(ptr noundef %566, ptr noundef @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %573, ptr noundef @c__1)
  br label %575

575:                                              ; preds = %565
  %576 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %561, !llvm.loop !19

578:                                              ; preds = %561
  %579 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %580 = load ptr, ptr %27, align 8, !tbaa !5
  %581 = load double, ptr %580, align 8, !tbaa !13
  %582 = fmul double %581, %579
  store double %582, ptr %580, align 8, !tbaa !13
  br label %583

583:                                              ; preds = %578, %524
  %584 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %585 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %586 = load i32, ptr %35, align 4, !tbaa !11
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  store i32 %588, ptr %38, align 4, !tbaa !11
  %589 = load double, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %590 = load ptr, ptr %25, align 8, !tbaa !5
  %591 = load i32, ptr %38, align 4, !tbaa !11
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %590, i64 %592
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %593, i32 0, i32 0
  store double %589, ptr %594, align 8, !tbaa !16
  %595 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %596 = load ptr, ptr %25, align 8, !tbaa !5
  %597 = load i32, ptr %38, align 4, !tbaa !11
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %599, i32 0, i32 1
  store double %595, ptr %600, align 8, !tbaa !18
  br label %601

601:                                              ; preds = %583
  %602 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %603 = add nsw i32 %602, -1
  store i32 %603, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %277, !llvm.loop !21

604:                                              ; preds = %277
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %270, !llvm.loop !22

608:                                              ; preds = %270
  br label %1652

609:                                              ; preds = %264, %257
  %610 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %924, label %612

612:                                              ; preds = %609
  %613 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %924

615:                                              ; preds = %612
  %616 = load ptr, ptr %20, align 8, !tbaa !5
  %617 = load i32, ptr %616, align 4, !tbaa !11
  store i32 %617, ptr %37, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %618

618:                                              ; preds = %920, %615
  %619 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %620 = load i32, ptr %37, align 4, !tbaa !11
  %621 = icmp sle i32 %619, %620
  br i1 %621, label %622, label %923

622:                                              ; preds = %618
  %623 = load ptr, ptr %19, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !11
  store i32 %624, ptr %38, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %625

625:                                              ; preds = %916, %622
  %626 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %627 = load i32, ptr %38, align 4, !tbaa !11
  %628 = icmp sle i32 %626, %627
  br i1 %628, label %629, label %919

629:                                              ; preds = %625
  %630 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %631 = sub nsw i32 %630, 1
  store i32 %631, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #5
  %632 = load ptr, ptr %21, align 8, !tbaa !5
  %633 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %634 = load i32, ptr %31, align 4, !tbaa !11
  %635 = mul nsw i32 %633, %634
  %636 = add nsw i32 %635, 1
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %632, i64 %637
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %641 = load i32, ptr %35, align 4, !tbaa !11
  %642 = mul nsw i32 %640, %641
  %643 = add nsw i32 %642, 1
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.doublecomplex, ptr %639, i64 %644
  %646 = call { double, double } @zdotc_(ptr noundef %39, ptr noundef %638, ptr noundef @c__1, ptr noundef %645, ptr noundef @c__1)
  %647 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %648 = extractvalue { double, double } %646, 0
  store double %648, ptr %647, align 8
  %649 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %650 = extractvalue { double, double } %646, 1
  store double %650, ptr %649, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %51, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #5
  %651 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %652 = load double, ptr %651, align 8, !tbaa !16
  store double %652, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %653 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %654 = load double, ptr %653, align 8, !tbaa !18
  store double %654, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %655 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %656 = sub nsw i32 %655, 1
  store i32 %656, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #5
  %657 = load ptr, ptr %25, align 8, !tbaa !5
  %658 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %659 = load i32, ptr %35, align 4, !tbaa !11
  %660 = add nsw i32 %658, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds %struct.doublecomplex, ptr %657, i64 %661
  %663 = load ptr, ptr %26, align 8, !tbaa !5
  %664 = load ptr, ptr %23, align 8, !tbaa !5
  %665 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %666 = load i32, ptr %33, align 4, !tbaa !11
  %667 = mul nsw i32 %665, %666
  %668 = add nsw i32 %667, 1
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds %struct.doublecomplex, ptr %664, i64 %669
  %671 = call { double, double } @zdotu_(ptr noundef %39, ptr noundef %662, ptr noundef %663, ptr noundef %670, ptr noundef @c__1)
  %672 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %673 = extractvalue { double, double } %671, 0
  store double %673, ptr %672, align 8
  %674 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %675 = extractvalue { double, double } %671, 1
  store double %675, ptr %674, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %52, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #5
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %677 = load double, ptr %676, align 8, !tbaa !16
  store double %677, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %679 = load double, ptr %678, align 8, !tbaa !18
  store double %679, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %680 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %681 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %682 = load i32, ptr %35, align 4, !tbaa !11
  %683 = mul nsw i32 %681, %682
  %684 = add nsw i32 %680, %683
  store i32 %684, ptr %39, align 4, !tbaa !11
  %685 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %686 = load double, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %687 = fmul double %685, %686
  %688 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %687, ptr %688, align 8, !tbaa !16
  %689 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %690 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %691 = fmul double %689, %690
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %691, ptr %692, align 8, !tbaa !18
  %693 = load double, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %695 = load double, ptr %694, align 8, !tbaa !16
  %696 = fadd double %693, %695
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %696, ptr %697, align 8, !tbaa !16
  %698 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %700 = load double, ptr %699, align 8, !tbaa !18
  %701 = fadd double %698, %700
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %701, ptr %702, align 8, !tbaa !18
  %703 = load ptr, ptr %25, align 8, !tbaa !5
  %704 = load i32, ptr %39, align 4, !tbaa !11
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 %705
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %706, i32 0, i32 0
  %708 = load double, ptr %707, align 8, !tbaa !16
  %709 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %710 = load double, ptr %709, align 8, !tbaa !16
  %711 = fsub double %708, %710
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %711, ptr %712, align 8, !tbaa !16
  %713 = load ptr, ptr %25, align 8, !tbaa !5
  %714 = load i32, ptr %39, align 4, !tbaa !11
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %715
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %716, i32 0, i32 1
  %718 = load double, ptr %717, align 8, !tbaa !18
  %719 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %720 = load double, ptr %719, align 8, !tbaa !18
  %721 = fsub double %718, %720
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %721, ptr %722, align 8, !tbaa !18
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %724 = load double, ptr %723, align 8, !tbaa !16
  store double %724, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %726 = load double, ptr %725, align 8, !tbaa !18
  store double %726, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %727 = load ptr, ptr %21, align 8, !tbaa !5
  %728 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %729 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %730 = load i32, ptr %31, align 4, !tbaa !11
  %731 = mul nsw i32 %729, %730
  %732 = add nsw i32 %728, %731
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds %struct.doublecomplex, ptr %727, i64 %733
  call void @d_cnjg(ptr noundef %44, ptr noundef %734)
  %735 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %736 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %737 = load i32, ptr %33, align 4, !tbaa !11
  %738 = mul nsw i32 %736, %737
  %739 = add nsw i32 %735, %738
  store i32 %739, ptr %39, align 4, !tbaa !11
  %740 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %741 = load ptr, ptr %23, align 8, !tbaa !5
  %742 = load i32, ptr %39, align 4, !tbaa !11
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds %struct.doublecomplex, ptr %741, i64 %743
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %744, i32 0, i32 0
  %746 = load double, ptr %745, align 8, !tbaa !16
  %747 = fmul double %740, %746
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %747, ptr %748, align 8, !tbaa !16
  %749 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %750 = load ptr, ptr %23, align 8, !tbaa !5
  %751 = load i32, ptr %39, align 4, !tbaa !11
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.doublecomplex, ptr %750, i64 %752
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %753, i32 0, i32 1
  %755 = load double, ptr %754, align 8, !tbaa !18
  %756 = fmul double %749, %755
  %757 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %756, ptr %757, align 8, !tbaa !18
  %758 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %759 = load double, ptr %758, align 8, !tbaa !16
  %760 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %761 = load double, ptr %760, align 8, !tbaa !16
  %762 = fadd double %759, %761
  %763 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %762, ptr %763, align 8, !tbaa !16
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %765 = load double, ptr %764, align 8, !tbaa !18
  %766 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %767 = load double, ptr %766, align 8, !tbaa !18
  %768 = fadd double %765, %767
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %768, ptr %769, align 8, !tbaa !18
  %770 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %771 = load double, ptr %770, align 8, !tbaa !16
  store double %771, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %773 = load double, ptr %772, align 8, !tbaa !18
  store double %773, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %774 = load double, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double %774, ptr %41, align 8, !tbaa !13
  %775 = load double, ptr %41, align 8, !tbaa !13
  %776 = fcmp oge double %775, 0.000000e+00
  br i1 %776, label %777, label %779

777:                                              ; preds = %629
  %778 = load double, ptr %41, align 8, !tbaa !13
  br label %782

779:                                              ; preds = %629
  %780 = load double, ptr %41, align 8, !tbaa !13
  %781 = fneg double %780
  br label %782

782:                                              ; preds = %779, %777
  %783 = phi double [ %778, %777 ], [ %781, %779 ]
  %784 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  store double %784, ptr %42, align 8, !tbaa !13
  %785 = load double, ptr %42, align 8, !tbaa !13
  %786 = fcmp oge double %785, 0.000000e+00
  br i1 %786, label %787, label %789

787:                                              ; preds = %782
  %788 = load double, ptr %42, align 8, !tbaa !13
  br label %792

789:                                              ; preds = %782
  %790 = load double, ptr %42, align 8, !tbaa !13
  %791 = fneg double %790
  br label %792

792:                                              ; preds = %789, %787
  %793 = phi double [ %788, %787 ], [ %791, %789 ]
  %794 = fadd double %783, %793
  store double %794, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %795 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %796 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  %797 = fcmp ole double %795, %796
  br i1 %797, label %798, label %802

798:                                              ; preds = %792
  %799 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %799, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double 0.000000e+00, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %800 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %800, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %801 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %801, align 4, !tbaa !11
  br label %802

802:                                              ; preds = %798, %792
  %803 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  store double %803, ptr %41, align 8, !tbaa !13
  %804 = load double, ptr %41, align 8, !tbaa !13
  %805 = fcmp oge double %804, 0.000000e+00
  br i1 %805, label %806, label %808

806:                                              ; preds = %802
  %807 = load double, ptr %41, align 8, !tbaa !13
  br label %811

808:                                              ; preds = %802
  %809 = load double, ptr %41, align 8, !tbaa !13
  %810 = fneg double %809
  br label %811

811:                                              ; preds = %808, %806
  %812 = phi double [ %807, %806 ], [ %810, %808 ]
  %813 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.vec)
  store double %813, ptr %42, align 8, !tbaa !13
  %814 = load double, ptr %42, align 8, !tbaa !13
  %815 = fcmp oge double %814, 0.000000e+00
  br i1 %815, label %816, label %818

816:                                              ; preds = %811
  %817 = load double, ptr %42, align 8, !tbaa !13
  br label %821

818:                                              ; preds = %811
  %819 = load double, ptr %42, align 8, !tbaa !13
  %820 = fneg double %819
  br label %821

821:                                              ; preds = %818, %816
  %822 = phi double [ %817, %816 ], [ %820, %818 ]
  %823 = fadd double %812, %822
  store double %823, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %824 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %825 = fcmp olt double %824, 1.000000e+00
  br i1 %825, label %826, label %839

826:                                              ; preds = %821
  %827 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %828 = fcmp ogt double %827, 1.000000e+00
  br i1 %828, label %829, label %839

829:                                              ; preds = %826
  %830 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %831 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %832 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %833 = fmul double %831, %832
  %834 = fcmp ogt double %830, %833
  br i1 %834, label %835, label %838

835:                                              ; preds = %829
  %836 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %837 = fdiv double 1.000000e+00, %836
  store double %837, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  br label %838

838:                                              ; preds = %835, %829
  br label %839

839:                                              ; preds = %838, %826, %821
  %840 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %841 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %840, ptr %841, align 8, !tbaa !16
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %842, align 8, !tbaa !18
  %843 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %844 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %845 = load double, ptr %844, align 8, !tbaa !16
  %846 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %848 = load double, ptr %847, align 8, !tbaa !18
  %849 = fmul double %846, %848
  %850 = fneg double %849
  %851 = call double @llvm.fmuladd.f64(double %843, double %845, double %850)
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %851, ptr %852, align 8, !tbaa !16
  %853 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %855 = load double, ptr %854, align 8, !tbaa !18
  %856 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %858 = load double, ptr %857, align 8, !tbaa !16
  %859 = fmul double %856, %858
  %860 = call double @llvm.fmuladd.f64(double %853, double %855, double %859)
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %860, ptr %861, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #5
  %862 = call { double, double } @zladiv_(ptr noundef %44, ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  %863 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %864 = extractvalue { double, double } %862, 0
  store double %864, ptr %863, align 8
  %865 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %866 = extractvalue { double, double } %862, 1
  store double %866, ptr %865, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %53, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #5
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %868 = load double, ptr %867, align 8, !tbaa !16
  store double %868, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %870 = load double, ptr %869, align 8, !tbaa !18
  store double %870, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %871 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %872 = fcmp une double %871, 1.000000e+00
  br i1 %872, label %873, label %898

873:                                              ; preds = %839
  %874 = load ptr, ptr %20, align 8, !tbaa !5
  %875 = load i32, ptr %874, align 4, !tbaa !11
  store i32 %875, ptr %39, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %876

876:                                              ; preds = %890, %873
  %877 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %878 = load i32, ptr %39, align 4, !tbaa !11
  %879 = icmp sle i32 %877, %878
  br i1 %879, label %880, label %893

880:                                              ; preds = %876
  %881 = load ptr, ptr %19, align 8, !tbaa !5
  %882 = load ptr, ptr %25, align 8, !tbaa !5
  %883 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %884 = load i32, ptr %35, align 4, !tbaa !11
  %885 = mul nsw i32 %883, %884
  %886 = add nsw i32 %885, 1
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %882, i64 %887
  %889 = call i32 @zdscal_(ptr noundef %881, ptr noundef @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %888, ptr noundef @c__1)
  br label %890

890:                                              ; preds = %880
  %891 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %876, !llvm.loop !23

893:                                              ; preds = %876
  %894 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %895 = load ptr, ptr %27, align 8, !tbaa !5
  %896 = load double, ptr %895, align 8, !tbaa !13
  %897 = fmul double %896, %894
  store double %897, ptr %895, align 8, !tbaa !13
  br label %898

898:                                              ; preds = %893, %839
  %899 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %900 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %901 = load i32, ptr %35, align 4, !tbaa !11
  %902 = mul nsw i32 %900, %901
  %903 = add nsw i32 %899, %902
  store i32 %903, ptr %39, align 4, !tbaa !11
  %904 = load double, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %905 = load ptr, ptr %25, align 8, !tbaa !5
  %906 = load i32, ptr %39, align 4, !tbaa !11
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %905, i64 %907
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %908, i32 0, i32 0
  store double %904, ptr %909, align 8, !tbaa !16
  %910 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %911 = load ptr, ptr %25, align 8, !tbaa !5
  %912 = load i32, ptr %39, align 4, !tbaa !11
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %911, i64 %913
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %914, i32 0, i32 1
  store double %910, ptr %915, align 8, !tbaa !18
  br label %916

916:                                              ; preds = %898
  %917 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %625, !llvm.loop !24

919:                                              ; preds = %625
  br label %920

920:                                              ; preds = %919
  %921 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %618, !llvm.loop !25

923:                                              ; preds = %618
  br label %1651

924:                                              ; preds = %612, %609
  %925 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %926 = icmp ne i32 %925, 0
  br i1 %926, label %1275, label %927

927:                                              ; preds = %924
  %928 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %929 = icmp ne i32 %928, 0
  br i1 %929, label %1275, label %930

930:                                              ; preds = %927
  %931 = load ptr, ptr %20, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !11
  store i32 %932, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %933

933:                                              ; preds = %1271, %930
  %934 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %935 = icmp sge i32 %934, 1
  br i1 %935, label %936, label %1274

936:                                              ; preds = %933
  %937 = load ptr, ptr %19, align 8, !tbaa !5
  %938 = load i32, ptr %937, align 4, !tbaa !11
  store i32 %938, ptr %37, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %939

939:                                              ; preds = %1267, %936
  %940 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %941 = load i32, ptr %37, align 4, !tbaa !11
  %942 = icmp sle i32 %940, %941
  br i1 %942, label %943, label %1270

943:                                              ; preds = %939
  %944 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %945 = sub nsw i32 %944, 1
  store i32 %945, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #5
  %946 = load ptr, ptr %21, align 8, !tbaa !5
  %947 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %948 = load i32, ptr %31, align 4, !tbaa !11
  %949 = mul nsw i32 %947, %948
  %950 = add nsw i32 %949, 1
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %946, i64 %951
  %953 = load ptr, ptr %25, align 8, !tbaa !5
  %954 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %955 = load i32, ptr %35, align 4, !tbaa !11
  %956 = mul nsw i32 %954, %955
  %957 = add nsw i32 %956, 1
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds %struct.doublecomplex, ptr %953, i64 %958
  %960 = call { double, double } @zdotc_(ptr noundef %38, ptr noundef %952, ptr noundef @c__1, ptr noundef %959, ptr noundef @c__1)
  %961 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %962 = extractvalue { double, double } %960, 0
  store double %962, ptr %961, align 8
  %963 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %964 = extractvalue { double, double } %960, 1
  store double %964, ptr %963, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %54, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %966 = load double, ptr %965, align 8, !tbaa !16
  store double %966, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %968 = load double, ptr %967, align 8, !tbaa !18
  store double %968, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %969 = load ptr, ptr %20, align 8, !tbaa !5
  %970 = load i32, ptr %969, align 4, !tbaa !11
  %971 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %972 = sub nsw i32 %970, %971
  store i32 %972, ptr %38, align 4, !tbaa !11
  %973 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %974 = add nsw i32 %973, 1
  store i32 %974, ptr %39, align 4, !tbaa !11
  %975 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %976 = add nsw i32 %975, 1
  store i32 %976, ptr %40, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #5
  %977 = load ptr, ptr %25, align 8, !tbaa !5
  %978 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %979 = load i32, ptr %39, align 4, !tbaa !11
  %980 = load ptr, ptr %20, align 8, !tbaa !5
  %981 = load i32, ptr %980, align 4, !tbaa !11
  %982 = icmp sle i32 %979, %981
  br i1 %982, label %983, label %985

983:                                              ; preds = %943
  %984 = load i32, ptr %39, align 4, !tbaa !11
  br label %988

985:                                              ; preds = %943
  %986 = load ptr, ptr %20, align 8, !tbaa !5
  %987 = load i32, ptr %986, align 4, !tbaa !11
  br label %988

988:                                              ; preds = %985, %983
  %989 = phi i32 [ %984, %983 ], [ %987, %985 ]
  %990 = load i32, ptr %35, align 4, !tbaa !11
  %991 = mul nsw i32 %989, %990
  %992 = add nsw i32 %978, %991
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %977, i64 %993
  %995 = load ptr, ptr %26, align 8, !tbaa !5
  %996 = load ptr, ptr %23, align 8, !tbaa !5
  %997 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %998 = load i32, ptr %40, align 4, !tbaa !11
  %999 = load ptr, ptr %20, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !11
  %1001 = icmp sle i32 %998, %1000
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %988
  %1003 = load i32, ptr %40, align 4, !tbaa !11
  br label %1007

1004:                                             ; preds = %988
  %1005 = load ptr, ptr %20, align 8, !tbaa !5
  %1006 = load i32, ptr %1005, align 4, !tbaa !11
  br label %1007

1007:                                             ; preds = %1004, %1002
  %1008 = phi i32 [ %1003, %1002 ], [ %1006, %1004 ]
  %1009 = load i32, ptr %33, align 4, !tbaa !11
  %1010 = mul nsw i32 %1008, %1009
  %1011 = add nsw i32 %997, %1010
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %996, i64 %1012
  %1014 = load ptr, ptr %24, align 8, !tbaa !5
  %1015 = call { double, double } @zdotc_(ptr noundef %38, ptr noundef %994, ptr noundef %995, ptr noundef %1013, ptr noundef %1014)
  %1016 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1017 = extractvalue { double, double } %1015, 0
  store double %1017, ptr %1016, align 8
  %1018 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %1019 = extractvalue { double, double } %1015, 1
  store double %1019, ptr %1018, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %55, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #5
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1021 = load double, ptr %1020, align 8, !tbaa !16
  store double %1021, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %1022 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1023 = load double, ptr %1022, align 8, !tbaa !18
  store double %1023, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %1024 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1025 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1026 = load i32, ptr %35, align 4, !tbaa !11
  %1027 = mul nsw i32 %1025, %1026
  %1028 = add nsw i32 %1024, %1027
  store i32 %1028, ptr %38, align 4, !tbaa !11
  call void @d_cnjg(ptr noundef %46, ptr noundef @RELAPACK_ztrsyl_rec2.sumr)
  %1029 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1031 = load double, ptr %1030, align 8, !tbaa !16
  %1032 = fmul double %1029, %1031
  %1033 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1032, ptr %1033, align 8, !tbaa !16
  %1034 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1036 = load double, ptr %1035, align 8, !tbaa !18
  %1037 = fmul double %1034, %1036
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1037, ptr %1038, align 8, !tbaa !18
  %1039 = load double, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %1040 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1041 = load double, ptr %1040, align 8, !tbaa !16
  %1042 = fadd double %1039, %1041
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1042, ptr %1043, align 8, !tbaa !16
  %1044 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1046 = load double, ptr %1045, align 8, !tbaa !18
  %1047 = fadd double %1044, %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1047, ptr %1048, align 8, !tbaa !18
  %1049 = load ptr, ptr %25, align 8, !tbaa !5
  %1050 = load i32, ptr %38, align 4, !tbaa !11
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds %struct.doublecomplex, ptr %1049, i64 %1051
  %1053 = getelementptr inbounds %struct.doublecomplex, ptr %1052, i32 0, i32 0
  %1054 = load double, ptr %1053, align 8, !tbaa !16
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1056 = load double, ptr %1055, align 8, !tbaa !16
  %1057 = fsub double %1054, %1056
  %1058 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %1057, ptr %1058, align 8, !tbaa !16
  %1059 = load ptr, ptr %25, align 8, !tbaa !5
  %1060 = load i32, ptr %38, align 4, !tbaa !11
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1059, i64 %1061
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %1062, i32 0, i32 1
  %1064 = load double, ptr %1063, align 8, !tbaa !18
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1066 = load double, ptr %1065, align 8, !tbaa !18
  %1067 = fsub double %1064, %1066
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %1067, ptr %1068, align 8, !tbaa !18
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1070 = load double, ptr %1069, align 8, !tbaa !16
  store double %1070, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1072 = load double, ptr %1071, align 8, !tbaa !18
  store double %1072, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1073 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1074 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1075 = load i32, ptr %31, align 4, !tbaa !11
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1073, %1076
  store i32 %1077, ptr %38, align 4, !tbaa !11
  %1078 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1079 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1080 = load i32, ptr %33, align 4, !tbaa !11
  %1081 = mul nsw i32 %1079, %1080
  %1082 = add nsw i32 %1078, %1081
  store i32 %1082, ptr %39, align 4, !tbaa !11
  %1083 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1084 = load ptr, ptr %23, align 8, !tbaa !5
  %1085 = load i32, ptr %39, align 4, !tbaa !11
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds %struct.doublecomplex, ptr %1084, i64 %1086
  %1088 = getelementptr inbounds %struct.doublecomplex, ptr %1087, i32 0, i32 0
  %1089 = load double, ptr %1088, align 8, !tbaa !16
  %1090 = fmul double %1083, %1089
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1090, ptr %1091, align 8, !tbaa !16
  %1092 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1093 = load ptr, ptr %23, align 8, !tbaa !5
  %1094 = load i32, ptr %39, align 4, !tbaa !11
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds %struct.doublecomplex, ptr %1093, i64 %1095
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1096, i32 0, i32 1
  %1098 = load double, ptr %1097, align 8, !tbaa !18
  %1099 = fmul double %1092, %1098
  %1100 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1099, ptr %1100, align 8, !tbaa !18
  %1101 = load ptr, ptr %21, align 8, !tbaa !5
  %1102 = load i32, ptr %38, align 4, !tbaa !11
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %1101, i64 %1103
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1104, i32 0, i32 0
  %1106 = load double, ptr %1105, align 8, !tbaa !16
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1108 = load double, ptr %1107, align 8, !tbaa !16
  %1109 = fadd double %1106, %1108
  %1110 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1109, ptr %1110, align 8, !tbaa !16
  %1111 = load ptr, ptr %21, align 8, !tbaa !5
  %1112 = load i32, ptr %38, align 4, !tbaa !11
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %1111, i64 %1113
  %1115 = getelementptr inbounds %struct.doublecomplex, ptr %1114, i32 0, i32 1
  %1116 = load double, ptr %1115, align 8, !tbaa !18
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1118 = load double, ptr %1117, align 8, !tbaa !18
  %1119 = fadd double %1116, %1118
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1119, ptr %1120, align 8, !tbaa !18
  call void @d_cnjg(ptr noundef %43, ptr noundef %44)
  %1121 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1122 = load double, ptr %1121, align 8, !tbaa !16
  store double %1122, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1124 = load double, ptr %1123, align 8, !tbaa !18
  store double %1124, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %1125 = load double, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double %1125, ptr %41, align 8, !tbaa !13
  %1126 = load double, ptr %41, align 8, !tbaa !13
  %1127 = fcmp oge double %1126, 0.000000e+00
  br i1 %1127, label %1128, label %1130

1128:                                             ; preds = %1007
  %1129 = load double, ptr %41, align 8, !tbaa !13
  br label %1133

1130:                                             ; preds = %1007
  %1131 = load double, ptr %41, align 8, !tbaa !13
  %1132 = fneg double %1131
  br label %1133

1133:                                             ; preds = %1130, %1128
  %1134 = phi double [ %1129, %1128 ], [ %1132, %1130 ]
  %1135 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  store double %1135, ptr %42, align 8, !tbaa !13
  %1136 = load double, ptr %42, align 8, !tbaa !13
  %1137 = fcmp oge double %1136, 0.000000e+00
  br i1 %1137, label %1138, label %1140

1138:                                             ; preds = %1133
  %1139 = load double, ptr %42, align 8, !tbaa !13
  br label %1143

1140:                                             ; preds = %1133
  %1141 = load double, ptr %42, align 8, !tbaa !13
  %1142 = fneg double %1141
  br label %1143

1143:                                             ; preds = %1140, %1138
  %1144 = phi double [ %1139, %1138 ], [ %1142, %1140 ]
  %1145 = fadd double %1134, %1144
  store double %1145, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1146 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1147 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  %1148 = fcmp ole double %1146, %1147
  br i1 %1148, label %1149, label %1153

1149:                                             ; preds = %1143
  %1150 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %1150, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double 0.000000e+00, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %1151 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %1151, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1152 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %1152, align 4, !tbaa !11
  br label %1153

1153:                                             ; preds = %1149, %1143
  %1154 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  store double %1154, ptr %41, align 8, !tbaa !13
  %1155 = load double, ptr %41, align 8, !tbaa !13
  %1156 = fcmp oge double %1155, 0.000000e+00
  br i1 %1156, label %1157, label %1159

1157:                                             ; preds = %1153
  %1158 = load double, ptr %41, align 8, !tbaa !13
  br label %1162

1159:                                             ; preds = %1153
  %1160 = load double, ptr %41, align 8, !tbaa !13
  %1161 = fneg double %1160
  br label %1162

1162:                                             ; preds = %1159, %1157
  %1163 = phi double [ %1158, %1157 ], [ %1161, %1159 ]
  %1164 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.vec)
  store double %1164, ptr %42, align 8, !tbaa !13
  %1165 = load double, ptr %42, align 8, !tbaa !13
  %1166 = fcmp oge double %1165, 0.000000e+00
  br i1 %1166, label %1167, label %1169

1167:                                             ; preds = %1162
  %1168 = load double, ptr %42, align 8, !tbaa !13
  br label %1172

1169:                                             ; preds = %1162
  %1170 = load double, ptr %42, align 8, !tbaa !13
  %1171 = fneg double %1170
  br label %1172

1172:                                             ; preds = %1169, %1167
  %1173 = phi double [ %1168, %1167 ], [ %1171, %1169 ]
  %1174 = fadd double %1163, %1173
  store double %1174, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1175 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1176 = fcmp olt double %1175, 1.000000e+00
  br i1 %1176, label %1177, label %1190

1177:                                             ; preds = %1172
  %1178 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1179 = fcmp ogt double %1178, 1.000000e+00
  br i1 %1179, label %1180, label %1190

1180:                                             ; preds = %1177
  %1181 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1182 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %1183 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1184 = fmul double %1182, %1183
  %1185 = fcmp ogt double %1181, %1184
  br i1 %1185, label %1186, label %1189

1186:                                             ; preds = %1180
  %1187 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1188 = fdiv double 1.000000e+00, %1187
  store double %1188, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  br label %1189

1189:                                             ; preds = %1186, %1180
  br label %1190

1190:                                             ; preds = %1189, %1177, %1172
  %1191 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1191, ptr %1192, align 8, !tbaa !16
  %1193 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %1193, align 8, !tbaa !18
  %1194 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1195 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1196 = load double, ptr %1195, align 8, !tbaa !16
  %1197 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1199 = load double, ptr %1198, align 8, !tbaa !18
  %1200 = fmul double %1197, %1199
  %1201 = fneg double %1200
  %1202 = call double @llvm.fmuladd.f64(double %1194, double %1196, double %1201)
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1202, ptr %1203, align 8, !tbaa !16
  %1204 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1206 = load double, ptr %1205, align 8, !tbaa !18
  %1207 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1209 = load double, ptr %1208, align 8, !tbaa !16
  %1210 = fmul double %1207, %1209
  %1211 = call double @llvm.fmuladd.f64(double %1204, double %1206, double %1210)
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1211, ptr %1212, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #5
  %1213 = call { double, double } @zladiv_(ptr noundef %44, ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  %1214 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1215 = extractvalue { double, double } %1213, 0
  store double %1215, ptr %1214, align 8
  %1216 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %1217 = extractvalue { double, double } %1213, 1
  store double %1217, ptr %1216, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %56, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1219 = load double, ptr %1218, align 8, !tbaa !16
  store double %1219, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1221 = load double, ptr %1220, align 8, !tbaa !18
  store double %1221, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %1222 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1223 = fcmp une double %1222, 1.000000e+00
  br i1 %1223, label %1224, label %1249

1224:                                             ; preds = %1190
  %1225 = load ptr, ptr %20, align 8, !tbaa !5
  %1226 = load i32, ptr %1225, align 4, !tbaa !11
  store i32 %1226, ptr %38, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %1227

1227:                                             ; preds = %1241, %1224
  %1228 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1229 = load i32, ptr %38, align 4, !tbaa !11
  %1230 = icmp sle i32 %1228, %1229
  br i1 %1230, label %1231, label %1244

1231:                                             ; preds = %1227
  %1232 = load ptr, ptr %19, align 8, !tbaa !5
  %1233 = load ptr, ptr %25, align 8, !tbaa !5
  %1234 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1235 = load i32, ptr %35, align 4, !tbaa !11
  %1236 = mul nsw i32 %1234, %1235
  %1237 = add nsw i32 %1236, 1
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds %struct.doublecomplex, ptr %1233, i64 %1238
  %1240 = call i32 @zdscal_(ptr noundef %1232, ptr noundef @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %1239, ptr noundef @c__1)
  br label %1241

1241:                                             ; preds = %1231
  %1242 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1243 = add nsw i32 %1242, 1
  store i32 %1243, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %1227, !llvm.loop !26

1244:                                             ; preds = %1227
  %1245 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1246 = load ptr, ptr %27, align 8, !tbaa !5
  %1247 = load double, ptr %1246, align 8, !tbaa !13
  %1248 = fmul double %1247, %1245
  store double %1248, ptr %1246, align 8, !tbaa !13
  br label %1249

1249:                                             ; preds = %1244, %1190
  %1250 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1251 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1252 = load i32, ptr %35, align 4, !tbaa !11
  %1253 = mul nsw i32 %1251, %1252
  %1254 = add nsw i32 %1250, %1253
  store i32 %1254, ptr %38, align 4, !tbaa !11
  %1255 = load double, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %1256 = load ptr, ptr %25, align 8, !tbaa !5
  %1257 = load i32, ptr %38, align 4, !tbaa !11
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %1256, i64 %1258
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1259, i32 0, i32 0
  store double %1255, ptr %1260, align 8, !tbaa !16
  %1261 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %1262 = load ptr, ptr %25, align 8, !tbaa !5
  %1263 = load i32, ptr %38, align 4, !tbaa !11
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %1262, i64 %1264
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %1265, i32 0, i32 1
  store double %1261, ptr %1266, align 8, !tbaa !18
  br label %1267

1267:                                             ; preds = %1249
  %1268 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %939, !llvm.loop !27

1270:                                             ; preds = %939
  br label %1271

1271:                                             ; preds = %1270
  %1272 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1273 = add nsw i32 %1272, -1
  store i32 %1273, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %933, !llvm.loop !28

1274:                                             ; preds = %933
  br label %1650

1275:                                             ; preds = %927, %924
  %1276 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !11
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1649

1278:                                             ; preds = %1275
  %1279 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !11
  %1280 = icmp ne i32 %1279, 0
  br i1 %1280, label %1649, label %1281

1281:                                             ; preds = %1278
  %1282 = load ptr, ptr %20, align 8, !tbaa !5
  %1283 = load i32, ptr %1282, align 4, !tbaa !11
  store i32 %1283, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %1284

1284:                                             ; preds = %1645, %1281
  %1285 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1286 = icmp sge i32 %1285, 1
  br i1 %1286, label %1287, label %1648

1287:                                             ; preds = %1284
  %1288 = load ptr, ptr %19, align 8, !tbaa !5
  %1289 = load i32, ptr %1288, align 4, !tbaa !11
  store i32 %1289, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %1290

1290:                                             ; preds = %1641, %1287
  %1291 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1292 = icmp sge i32 %1291, 1
  br i1 %1292, label %1293, label %1644

1293:                                             ; preds = %1290
  %1294 = load ptr, ptr %19, align 8, !tbaa !5
  %1295 = load i32, ptr %1294, align 4, !tbaa !11
  %1296 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1297 = sub nsw i32 %1295, %1296
  store i32 %1297, ptr %37, align 4, !tbaa !11
  %1298 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1299 = add nsw i32 %1298, 1
  store i32 %1299, ptr %38, align 4, !tbaa !11
  %1300 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1301 = add nsw i32 %1300, 1
  store i32 %1301, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #5
  %1302 = load ptr, ptr %21, align 8, !tbaa !5
  %1303 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1304 = load i32, ptr %38, align 4, !tbaa !11
  %1305 = load ptr, ptr %19, align 8, !tbaa !5
  %1306 = load i32, ptr %1305, align 4, !tbaa !11
  %1307 = icmp sle i32 %1304, %1306
  br i1 %1307, label %1308, label %1310

1308:                                             ; preds = %1293
  %1309 = load i32, ptr %38, align 4, !tbaa !11
  br label %1313

1310:                                             ; preds = %1293
  %1311 = load ptr, ptr %19, align 8, !tbaa !5
  %1312 = load i32, ptr %1311, align 4, !tbaa !11
  br label %1313

1313:                                             ; preds = %1310, %1308
  %1314 = phi i32 [ %1309, %1308 ], [ %1312, %1310 ]
  %1315 = load i32, ptr %31, align 4, !tbaa !11
  %1316 = mul nsw i32 %1314, %1315
  %1317 = add nsw i32 %1303, %1316
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds %struct.doublecomplex, ptr %1302, i64 %1318
  %1320 = load ptr, ptr %22, align 8, !tbaa !5
  %1321 = load ptr, ptr %25, align 8, !tbaa !5
  %1322 = load i32, ptr %39, align 4, !tbaa !11
  %1323 = load ptr, ptr %19, align 8, !tbaa !5
  %1324 = load i32, ptr %1323, align 4, !tbaa !11
  %1325 = icmp sle i32 %1322, %1324
  br i1 %1325, label %1326, label %1328

1326:                                             ; preds = %1313
  %1327 = load i32, ptr %39, align 4, !tbaa !11
  br label %1331

1328:                                             ; preds = %1313
  %1329 = load ptr, ptr %19, align 8, !tbaa !5
  %1330 = load i32, ptr %1329, align 4, !tbaa !11
  br label %1331

1331:                                             ; preds = %1328, %1326
  %1332 = phi i32 [ %1327, %1326 ], [ %1330, %1328 ]
  %1333 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1334 = load i32, ptr %35, align 4, !tbaa !11
  %1335 = mul nsw i32 %1333, %1334
  %1336 = add nsw i32 %1332, %1335
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds %struct.doublecomplex, ptr %1321, i64 %1337
  %1339 = call { double, double } @zdotu_(ptr noundef %37, ptr noundef %1319, ptr noundef %1320, ptr noundef %1338, ptr noundef @c__1)
  %1340 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1341 = extractvalue { double, double } %1339, 0
  store double %1341, ptr %1340, align 8
  %1342 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %1343 = extractvalue { double, double } %1339, 1
  store double %1343, ptr %1342, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %57, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #5
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1345 = load double, ptr %1344, align 8, !tbaa !16
  store double %1345, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1347 = load double, ptr %1346, align 8, !tbaa !18
  store double %1347, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %1348 = load ptr, ptr %20, align 8, !tbaa !5
  %1349 = load i32, ptr %1348, align 4, !tbaa !11
  %1350 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1351 = sub nsw i32 %1349, %1350
  store i32 %1351, ptr %37, align 4, !tbaa !11
  %1352 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1353 = add nsw i32 %1352, 1
  store i32 %1353, ptr %38, align 4, !tbaa !11
  %1354 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1355 = add nsw i32 %1354, 1
  store i32 %1355, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #5
  %1356 = load ptr, ptr %25, align 8, !tbaa !5
  %1357 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1358 = load i32, ptr %38, align 4, !tbaa !11
  %1359 = load ptr, ptr %20, align 8, !tbaa !5
  %1360 = load i32, ptr %1359, align 4, !tbaa !11
  %1361 = icmp sle i32 %1358, %1360
  br i1 %1361, label %1362, label %1364

1362:                                             ; preds = %1331
  %1363 = load i32, ptr %38, align 4, !tbaa !11
  br label %1367

1364:                                             ; preds = %1331
  %1365 = load ptr, ptr %20, align 8, !tbaa !5
  %1366 = load i32, ptr %1365, align 4, !tbaa !11
  br label %1367

1367:                                             ; preds = %1364, %1362
  %1368 = phi i32 [ %1363, %1362 ], [ %1366, %1364 ]
  %1369 = load i32, ptr %35, align 4, !tbaa !11
  %1370 = mul nsw i32 %1368, %1369
  %1371 = add nsw i32 %1357, %1370
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %1356, i64 %1372
  %1374 = load ptr, ptr %26, align 8, !tbaa !5
  %1375 = load ptr, ptr %23, align 8, !tbaa !5
  %1376 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1377 = load i32, ptr %39, align 4, !tbaa !11
  %1378 = load ptr, ptr %20, align 8, !tbaa !5
  %1379 = load i32, ptr %1378, align 4, !tbaa !11
  %1380 = icmp sle i32 %1377, %1379
  br i1 %1380, label %1381, label %1383

1381:                                             ; preds = %1367
  %1382 = load i32, ptr %39, align 4, !tbaa !11
  br label %1386

1383:                                             ; preds = %1367
  %1384 = load ptr, ptr %20, align 8, !tbaa !5
  %1385 = load i32, ptr %1384, align 4, !tbaa !11
  br label %1386

1386:                                             ; preds = %1383, %1381
  %1387 = phi i32 [ %1382, %1381 ], [ %1385, %1383 ]
  %1388 = load i32, ptr %33, align 4, !tbaa !11
  %1389 = mul nsw i32 %1387, %1388
  %1390 = add nsw i32 %1376, %1389
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %1375, i64 %1391
  %1393 = load ptr, ptr %24, align 8, !tbaa !5
  %1394 = call { double, double } @zdotc_(ptr noundef %37, ptr noundef %1373, ptr noundef %1374, ptr noundef %1392, ptr noundef %1393)
  %1395 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %1396 = extractvalue { double, double } %1394, 0
  store double %1396, ptr %1395, align 8
  %1397 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %1398 = extractvalue { double, double } %1394, 1
  store double %1398, ptr %1397, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %58, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #5
  %1399 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1400 = load double, ptr %1399, align 8, !tbaa !16
  store double %1400, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !16
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1402 = load double, ptr %1401, align 8, !tbaa !18
  store double %1402, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.sumr, i32 0, i32 1), align 8, !tbaa !18
  %1403 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1404 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1405 = load i32, ptr %35, align 4, !tbaa !11
  %1406 = mul nsw i32 %1404, %1405
  %1407 = add nsw i32 %1403, %1406
  store i32 %1407, ptr %37, align 4, !tbaa !11
  call void @d_cnjg(ptr noundef %46, ptr noundef @RELAPACK_ztrsyl_rec2.sumr)
  %1408 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1409 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1410 = load double, ptr %1409, align 8, !tbaa !16
  %1411 = fmul double %1408, %1410
  %1412 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1411, ptr %1412, align 8, !tbaa !16
  %1413 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1414 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1415 = load double, ptr %1414, align 8, !tbaa !18
  %1416 = fmul double %1413, %1415
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1416, ptr %1417, align 8, !tbaa !18
  %1418 = load double, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !16
  %1419 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1420 = load double, ptr %1419, align 8, !tbaa !16
  %1421 = fadd double %1418, %1420
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1421, ptr %1422, align 8, !tbaa !16
  %1423 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.suml, i32 0, i32 1), align 8, !tbaa !18
  %1424 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1425 = load double, ptr %1424, align 8, !tbaa !18
  %1426 = fadd double %1423, %1425
  %1427 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1426, ptr %1427, align 8, !tbaa !18
  %1428 = load ptr, ptr %25, align 8, !tbaa !5
  %1429 = load i32, ptr %37, align 4, !tbaa !11
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %1428, i64 %1430
  %1432 = getelementptr inbounds %struct.doublecomplex, ptr %1431, i32 0, i32 0
  %1433 = load double, ptr %1432, align 8, !tbaa !16
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1435 = load double, ptr %1434, align 8, !tbaa !16
  %1436 = fsub double %1433, %1435
  %1437 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %1436, ptr %1437, align 8, !tbaa !16
  %1438 = load ptr, ptr %25, align 8, !tbaa !5
  %1439 = load i32, ptr %37, align 4, !tbaa !11
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds %struct.doublecomplex, ptr %1438, i64 %1440
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %1441, i32 0, i32 1
  %1443 = load double, ptr %1442, align 8, !tbaa !18
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1445 = load double, ptr %1444, align 8, !tbaa !18
  %1446 = fsub double %1443, %1445
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %1446, ptr %1447, align 8, !tbaa !18
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1449 = load double, ptr %1448, align 8, !tbaa !16
  store double %1449, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1450 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1451 = load double, ptr %1450, align 8, !tbaa !18
  store double %1451, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1452 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1453 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1454 = load i32, ptr %31, align 4, !tbaa !11
  %1455 = mul nsw i32 %1453, %1454
  %1456 = add nsw i32 %1452, %1455
  store i32 %1456, ptr %37, align 4, !tbaa !11
  %1457 = load ptr, ptr %23, align 8, !tbaa !5
  %1458 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1459 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1460 = load i32, ptr %33, align 4, !tbaa !11
  %1461 = mul nsw i32 %1459, %1460
  %1462 = add nsw i32 %1458, %1461
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %1457, i64 %1463
  call void @d_cnjg(ptr noundef %45, ptr noundef %1464)
  %1465 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1467 = load double, ptr %1466, align 8, !tbaa !16
  %1468 = fmul double %1465, %1467
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1468, ptr %1469, align 8, !tbaa !16
  %1470 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !13
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1472 = load double, ptr %1471, align 8, !tbaa !18
  %1473 = fmul double %1470, %1472
  %1474 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1473, ptr %1474, align 8, !tbaa !18
  %1475 = load ptr, ptr %21, align 8, !tbaa !5
  %1476 = load i32, ptr %37, align 4, !tbaa !11
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %1475, i64 %1477
  %1479 = getelementptr inbounds %struct.doublecomplex, ptr %1478, i32 0, i32 0
  %1480 = load double, ptr %1479, align 8, !tbaa !16
  %1481 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1482 = load double, ptr %1481, align 8, !tbaa !16
  %1483 = fadd double %1480, %1482
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %1483, ptr %1484, align 8, !tbaa !16
  %1485 = load ptr, ptr %21, align 8, !tbaa !5
  %1486 = load i32, ptr %37, align 4, !tbaa !11
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds %struct.doublecomplex, ptr %1485, i64 %1487
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %1488, i32 0, i32 1
  %1490 = load double, ptr %1489, align 8, !tbaa !18
  %1491 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1492 = load double, ptr %1491, align 8, !tbaa !18
  %1493 = fadd double %1490, %1492
  %1494 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %1493, ptr %1494, align 8, !tbaa !18
  %1495 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1496 = load double, ptr %1495, align 8, !tbaa !16
  store double %1496, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  %1497 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1498 = load double, ptr %1497, align 8, !tbaa !18
  store double %1498, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %1499 = load double, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double %1499, ptr %41, align 8, !tbaa !13
  %1500 = load double, ptr %41, align 8, !tbaa !13
  %1501 = fcmp oge double %1500, 0.000000e+00
  br i1 %1501, label %1502, label %1504

1502:                                             ; preds = %1386
  %1503 = load double, ptr %41, align 8, !tbaa !13
  br label %1507

1504:                                             ; preds = %1386
  %1505 = load double, ptr %41, align 8, !tbaa !13
  %1506 = fneg double %1505
  br label %1507

1507:                                             ; preds = %1504, %1502
  %1508 = phi double [ %1503, %1502 ], [ %1506, %1504 ]
  %1509 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  store double %1509, ptr %42, align 8, !tbaa !13
  %1510 = load double, ptr %42, align 8, !tbaa !13
  %1511 = fcmp oge double %1510, 0.000000e+00
  br i1 %1511, label %1512, label %1514

1512:                                             ; preds = %1507
  %1513 = load double, ptr %42, align 8, !tbaa !13
  br label %1517

1514:                                             ; preds = %1507
  %1515 = load double, ptr %42, align 8, !tbaa !13
  %1516 = fneg double %1515
  br label %1517

1517:                                             ; preds = %1514, %1512
  %1518 = phi double [ %1513, %1512 ], [ %1516, %1514 ]
  %1519 = fadd double %1508, %1518
  store double %1519, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1520 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1521 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  %1522 = fcmp ole double %1520, %1521
  br i1 %1522, label %1523, label %1527

1523:                                             ; preds = %1517
  %1524 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %1524, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !16
  store double 0.000000e+00, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.a11, i32 0, i32 1), align 8, !tbaa !18
  %1525 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !13
  store double %1525, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1526 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %1526, align 4, !tbaa !11
  br label %1527

1527:                                             ; preds = %1523, %1517
  %1528 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  store double %1528, ptr %41, align 8, !tbaa !13
  %1529 = load double, ptr %41, align 8, !tbaa !13
  %1530 = fcmp oge double %1529, 0.000000e+00
  br i1 %1530, label %1531, label %1533

1531:                                             ; preds = %1527
  %1532 = load double, ptr %41, align 8, !tbaa !13
  br label %1536

1533:                                             ; preds = %1527
  %1534 = load double, ptr %41, align 8, !tbaa !13
  %1535 = fneg double %1534
  br label %1536

1536:                                             ; preds = %1533, %1531
  %1537 = phi double [ %1532, %1531 ], [ %1535, %1533 ]
  %1538 = call double @d_imag(ptr noundef @RELAPACK_ztrsyl_rec2.vec)
  store double %1538, ptr %42, align 8, !tbaa !13
  %1539 = load double, ptr %42, align 8, !tbaa !13
  %1540 = fcmp oge double %1539, 0.000000e+00
  br i1 %1540, label %1541, label %1543

1541:                                             ; preds = %1536
  %1542 = load double, ptr %42, align 8, !tbaa !13
  br label %1546

1543:                                             ; preds = %1536
  %1544 = load double, ptr %42, align 8, !tbaa !13
  %1545 = fneg double %1544
  br label %1546

1546:                                             ; preds = %1543, %1541
  %1547 = phi double [ %1542, %1541 ], [ %1545, %1543 ]
  %1548 = fadd double %1537, %1547
  store double %1548, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1549 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1550 = fcmp olt double %1549, 1.000000e+00
  br i1 %1550, label %1551, label %1564

1551:                                             ; preds = %1546
  %1552 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1553 = fcmp ogt double %1552, 1.000000e+00
  br i1 %1553, label %1554, label %1564

1554:                                             ; preds = %1551
  %1555 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1556 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !13
  %1557 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !13
  %1558 = fmul double %1556, %1557
  %1559 = fcmp ogt double %1555, %1558
  br i1 %1559, label %1560, label %1563

1560:                                             ; preds = %1554
  %1561 = load double, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !13
  %1562 = fdiv double 1.000000e+00, %1561
  store double %1562, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  br label %1563

1563:                                             ; preds = %1560, %1554
  br label %1564

1564:                                             ; preds = %1563, %1551, %1546
  %1565 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1565, ptr %1566, align 8, !tbaa !16
  %1567 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %1567, align 8, !tbaa !18
  %1568 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1569 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1570 = load double, ptr %1569, align 8, !tbaa !16
  %1571 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1573 = load double, ptr %1572, align 8, !tbaa !18
  %1574 = fmul double %1571, %1573
  %1575 = fneg double %1574
  %1576 = call double @llvm.fmuladd.f64(double %1568, double %1570, double %1575)
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1576, ptr %1577, align 8, !tbaa !16
  %1578 = load double, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !16
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1580 = load double, ptr %1579, align 8, !tbaa !18
  %1581 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.vec, i32 0, i32 1), align 8, !tbaa !18
  %1582 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1583 = load double, ptr %1582, align 8, !tbaa !16
  %1584 = fmul double %1581, %1583
  %1585 = call double @llvm.fmuladd.f64(double %1578, double %1580, double %1584)
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1585, ptr %1586, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #5
  %1587 = call { double, double } @zladiv_(ptr noundef %44, ptr noundef @RELAPACK_ztrsyl_rec2.a11)
  %1588 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %1589 = extractvalue { double, double } %1587, 0
  store double %1589, ptr %1588, align 8
  %1590 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %1591 = extractvalue { double, double } %1587, 1
  store double %1591, ptr %1590, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %59, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #5
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1593 = load double, ptr %1592, align 8, !tbaa !16
  store double %1593, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %1594 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1595 = load double, ptr %1594, align 8, !tbaa !18
  store double %1595, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %1596 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1597 = fcmp une double %1596, 1.000000e+00
  br i1 %1597, label %1598, label %1623

1598:                                             ; preds = %1564
  %1599 = load ptr, ptr %20, align 8, !tbaa !5
  %1600 = load i32, ptr %1599, align 4, !tbaa !11
  store i32 %1600, ptr %37, align 4, !tbaa !11
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %1601

1601:                                             ; preds = %1615, %1598
  %1602 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1603 = load i32, ptr %37, align 4, !tbaa !11
  %1604 = icmp sle i32 %1602, %1603
  br i1 %1604, label %1605, label %1618

1605:                                             ; preds = %1601
  %1606 = load ptr, ptr %19, align 8, !tbaa !5
  %1607 = load ptr, ptr %25, align 8, !tbaa !5
  %1608 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1609 = load i32, ptr %35, align 4, !tbaa !11
  %1610 = mul nsw i32 %1608, %1609
  %1611 = add nsw i32 %1610, 1
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %1607, i64 %1612
  %1614 = call i32 @zdscal_(ptr noundef %1606, ptr noundef @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %1613, ptr noundef @c__1)
  br label %1615

1615:                                             ; preds = %1605
  %1616 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !11
  br label %1601, !llvm.loop !29

1618:                                             ; preds = %1601
  %1619 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !13
  %1620 = load ptr, ptr %27, align 8, !tbaa !5
  %1621 = load double, ptr %1620, align 8, !tbaa !13
  %1622 = fmul double %1621, %1619
  store double %1622, ptr %1620, align 8, !tbaa !13
  br label %1623

1623:                                             ; preds = %1618, %1564
  %1624 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1625 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1626 = load i32, ptr %35, align 4, !tbaa !11
  %1627 = mul nsw i32 %1625, %1626
  %1628 = add nsw i32 %1624, %1627
  store i32 %1628, ptr %37, align 4, !tbaa !11
  %1629 = load double, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !16
  %1630 = load ptr, ptr %25, align 8, !tbaa !5
  %1631 = load i32, ptr %37, align 4, !tbaa !11
  %1632 = sext i32 %1631 to i64
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %1630, i64 %1632
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %1633, i32 0, i32 0
  store double %1629, ptr %1634, align 8, !tbaa !16
  %1635 = load double, ptr getelementptr inbounds (%struct.doublecomplex, ptr @RELAPACK_ztrsyl_rec2.x11, i32 0, i32 1), align 8, !tbaa !18
  %1636 = load ptr, ptr %25, align 8, !tbaa !5
  %1637 = load i32, ptr %37, align 4, !tbaa !11
  %1638 = sext i32 %1637 to i64
  %1639 = getelementptr inbounds %struct.doublecomplex, ptr %1636, i64 %1638
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %1639, i32 0, i32 1
  store double %1635, ptr %1640, align 8, !tbaa !18
  br label %1641

1641:                                             ; preds = %1623
  %1642 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  %1643 = add nsw i32 %1642, -1
  store i32 %1643, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !11
  br label %1290, !llvm.loop !30

1644:                                             ; preds = %1290
  br label %1645

1645:                                             ; preds = %1644
  %1646 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  %1647 = add nsw i32 %1646, -1
  store i32 %1647, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !11
  br label %1284, !llvm.loop !31

1648:                                             ; preds = %1284
  br label %1649

1649:                                             ; preds = %1648, %1278, %1275
  br label %1650

1650:                                             ; preds = %1649, %1274
  br label %1651

1651:                                             ; preds = %1650, %923
  br label %1652

1652:                                             ; preds = %1651, %608
  store i32 1, ptr %47, align 4
  br label %1653

1653:                                             ; preds = %1652, %201, %187
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i64 noundef) #2

declare double @dlamch_(ptr noundef, i64 noundef) #2

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

declare double @zlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare { double, double } @zdotu_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare double @d_imag(ptr noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

declare { double, double } @zladiv_(ptr noundef, ptr noundef) #2

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

declare { double, double } @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @d_cnjg(ptr noundef, ptr noundef) #2

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{i64 0, i64 8, !13, i64 8, i64 8, !13}
!16 = !{!17, !14, i64 0}
!17 = !{!"", !14, i64 0, !14, i64 8}
!18 = !{!17, !14, i64 8}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}


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

@RELAPACK_ztrsyl_rec2.j = external hidden local_unnamed_addr global i32, align 4
@RELAPACK_ztrsyl_rec2.k = external hidden local_unnamed_addr global i32, align 4
@RELAPACK_ztrsyl_rec2.l = external hidden local_unnamed_addr global i32, align 4
@RELAPACK_ztrsyl_rec2.a11 = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.db = external hidden local_unnamed_addr global double, align 8
@RELAPACK_ztrsyl_rec2.x11 = external hidden local_unnamed_addr global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.da11 = external hidden local_unnamed_addr global double, align 8
@RELAPACK_ztrsyl_rec2.vec = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.dum = external hidden global [1 x double], align 8
@RELAPACK_ztrsyl_rec2.eps = external hidden local_unnamed_addr global double, align 8
@RELAPACK_ztrsyl_rec2.sgn = external hidden local_unnamed_addr global double, align 8
@RELAPACK_ztrsyl_rec2.smin = external hidden local_unnamed_addr global double, align 8
@RELAPACK_ztrsyl_rec2.suml = external hidden local_unnamed_addr global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.sumr = external hidden global %struct.doublecomplex, align 8
@RELAPACK_ztrsyl_rec2.scaloc = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.bignum = external hidden global double, align 8
@RELAPACK_ztrsyl_rec2.notrna = external hidden local_unnamed_addr global i32, align 4
@RELAPACK_ztrsyl_rec2.notrnb = external hidden local_unnamed_addr global i32, align 4
@RELAPACK_ztrsyl_rec2.smlnum = external hidden global double, align 8
@.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 [7 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 i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @RELAPACK_ztrsyl_rec2(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef %11, ptr nocapture noundef %12, i64 noundef %13, i64 noundef %14) local_unnamed_addr #0 {
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.doublecomplex, align 16
  %20 = alloca %struct.doublecomplex, align 16
  %21 = alloca %struct.doublecomplex, align 16
  %22 = alloca %struct.doublecomplex, align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #4
  %23 = load i32, ptr %6, align 4, !tbaa !5
  %narrow336 = xor i32 %23, -1
  %24 = sext i32 %narrow336 to i64
  %25 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %24
  %26 = load i32, ptr %8, align 4, !tbaa !5
  %narrow337 = xor i32 %26, -1
  %27 = sext i32 %narrow337 to i64
  %28 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %27
  %29 = load i32, ptr %10, align 4, !tbaa !5
  %narrow = xor i32 %29, -1
  %30 = sext i32 %narrow to i64
  %31 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %30
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str, i64 noundef 1, i64 noundef 1) #4
  store i32 %32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !5
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str, i64 noundef 1, i64 noundef 1) #4
  store i32 %33, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !5
  %34 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !5
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %35, label %37

35:                                               ; preds = %15
  %36 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1, i64 noundef 1, i64 noundef 1) #4
  %.not330 = icmp eq i32 %36, 0
  br i1 %.not330, label %.thread.sink.split, label %37

37:                                               ; preds = %35, %15
  %38 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4, !tbaa !5
  %.not331 = icmp eq i32 %38, 0
  br i1 %.not331, label %39, label %41

39:                                               ; preds = %37
  %40 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1, i64 noundef 1, i64 noundef 1) #4
  %.not332 = icmp eq i32 %40, 0
  br i1 %.not332, label %.thread.sink.split, label %41

41:                                               ; preds = %39, %37
  %42 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %42, label %.thread.sink.split [
    i32 1, label %43
    i32 -1, label %43
  ]

43:                                               ; preds = %41, %41
  %44 = load i32, ptr %3, align 4, !tbaa !5
  %45 = icmp slt i32 %44, 0
  br i1 %45, label %.thread.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i32, ptr %4, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %.thread.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %44, i32 1)
  %51 = icmp slt i32 %50, %spec.select
  br i1 %51, label %.thread.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select365 = tail call i32 @llvm.umax.i32(i32 %47, i32 1)
  %54 = icmp slt i32 %53, %spec.select365
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %10, align 4, !tbaa !5
  %57 = icmp slt i32 %56, %spec.select
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  %.not335 = icmp eq i32 %.pr, 0
  br i1 %.not335, label %62, label %.thread

.thread.sink.split:                               ; preds = %55, %52, %49, %46, %43, %41, %39, %35
  %.sink = phi i32 [ -1, %35 ], [ -2, %39 ], [ -3, %41 ], [ -4, %43 ], [ -5, %46 ], [ -7, %49 ], [ -9, %52 ], [ -11, %55 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %58
  %59 = phi i32 [ %.pr, %58 ], [ %.sink, %.thread.sink.split ]
  %60 = sub nsw i32 0, %59
  store i32 %60, ptr %16, align 4, !tbaa !5
  %61 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %16, i64 noundef 6) #4
  br label %.loopexit

62:                                               ; preds = %58
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %63 = icmp eq i32 %44, 0
  %64 = icmp eq i32 %47, 0
  %or.cond458 = or i1 %63, %64
  br i1 %or.cond458, label %.loopexit, label %65

65:                                               ; preds = %62
  %66 = tail call double @dlamch_(ptr noundef nonnull @.str.3, i64 noundef 1) #4
  store double %66, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !9
  %67 = tail call double @dlamch_(ptr noundef nonnull @.str.4, i64 noundef 1) #4
  store double %67, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !9
  %68 = fdiv double 1.000000e+00, %67
  store double %68, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %69 = tail call i32 @dlabad_(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.smlnum, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.bignum) #4
  %70 = load double, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !9
  %71 = load i32, ptr %3, align 4, !tbaa !5
  %72 = load i32, ptr %4, align 4, !tbaa !5
  %73 = mul nsw i32 %72, %71
  %74 = sitofp i32 %73 to double
  %75 = fmul double %70, %74
  %76 = load double, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !9
  %77 = fdiv double %75, %76
  store double %77, ptr @RELAPACK_ztrsyl_rec2.smlnum, align 8, !tbaa !9
  %78 = fdiv double 1.000000e+00, %77
  store double %78, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %79 = tail call double @zlange_(ptr noundef nonnull @.str.5, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.dum, i64 noundef 1) #4
  %80 = fmul double %76, %79
  %81 = fcmp oge double %77, %80
  %82 = select i1 %81, double %77, double %80
  %83 = load double, ptr @RELAPACK_ztrsyl_rec2.eps, align 8, !tbaa !9
  %84 = tail call double @zlange_(ptr noundef nonnull @.str.5, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.dum, i64 noundef 1) #4
  %85 = fmul double %83, %84
  %86 = fcmp oge double %82, %85
  %87 = select i1 %86, double %82, double %85
  store double %87, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !9
  %88 = load i32, ptr %2, align 4, !tbaa !5
  %89 = sitofp i32 %88 to double
  store double %89, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %90 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrna, align 4, !tbaa !5
  %91 = icmp ne i32 %90, 0
  %92 = load i32, ptr @RELAPACK_ztrsyl_rec2.notrnb, align 4
  %93 = icmp ne i32 %92, 0
  %or.cond = select i1 %91, i1 %93, i1 false
  br i1 %or.cond, label %94, label %226

94:                                               ; preds = %65
  %95 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %95, ptr %16, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %.not359433 = icmp slt i32 %95, 1
  br i1 %.not359433, label %.loopexit, label %.lr.ph435

.lr.ph435:                                        ; preds = %94
  %invariant.gep427 = getelementptr i8, ptr %28, i64 16
  %96 = add i32 %23, 1
  %97 = add i32 %26, 1
  %invariant.gep420 = getelementptr i8, ptr %31, i64 16
  br label %98

98:                                               ; preds = %.lr.ph435, %._crit_edge432
  %99 = phi i32 [ %95, %.lr.ph435 ], [ %223, %._crit_edge432 ]
  %100 = phi i32 [ 1, %.lr.ph435 ], [ %225, %._crit_edge432 ]
  %101 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %101, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %102 = icmp sgt i32 %101, 0
  br i1 %102, label %.lr.ph431, label %._crit_edge432

.lr.ph431:                                        ; preds = %98, %213
  %103 = phi i32 [ %216, %213 ], [ %100, %98 ]
  %storemerge360429 = phi i32 [ %221, %213 ], [ %101, %98 ]
  %104 = load i32, ptr %3, align 4, !tbaa !5
  %105 = sub nsw i32 %104, %storemerge360429
  store i32 %105, ptr %17, align 4, !tbaa !5
  %106 = add nuw nsw i32 %storemerge360429, 1
  %.not361.not = icmp slt i32 %storemerge360429, %104
  %. = select i1 %.not361.not, i32 %106, i32 %104
  %107 = mul nsw i32 %., %23
  %108 = add nsw i32 %107, %storemerge360429
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %109
  %111 = mul nsw i32 %103, %29
  %112 = add nsw i32 %111, %.
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %113
  %115 = call { double, double } @zdotu_(ptr noundef nonnull %17, ptr noundef %110, ptr noundef nonnull %6, ptr noundef %114, ptr noundef nonnull @c__1) #4
  %116 = extractvalue { double, double } %115, 0
  %117 = extractvalue { double, double } %115, 1
  store double %116, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !11
  store double %117, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.suml, i64 8), align 8, !tbaa !13
  %118 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %119 = add nsw i32 %118, -1
  store i32 %119, ptr %17, align 4, !tbaa !5
  %120 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %121 = add nsw i32 %120, %29
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %122
  %124 = mul nsw i32 %118, %26
  %125 = sext i32 %124 to i64
  %gep428 = getelementptr %struct.doublecomplex, ptr %invariant.gep427, i64 %125
  %126 = call { double, double } @zdotu_(ptr noundef nonnull %17, ptr noundef %123, ptr noundef nonnull %10, ptr noundef %gep428, ptr noundef nonnull @c__1) #4
  %127 = extractvalue { double, double } %126, 0
  %128 = extractvalue { double, double } %126, 1
  store double %127, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !11
  store double %128, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.sumr, i64 8), align 8, !tbaa !13
  %129 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %130 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %131 = mul nsw i32 %130, %29
  %132 = add nsw i32 %131, %129
  %133 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %134 = sext i32 %132 to i64
  %135 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %134
  %136 = insertelement <2 x double> poison, double %127, i64 0
  %137 = insertelement <2 x double> %136, double %128, i64 1
  %138 = insertelement <2 x double> poison, double %133, i64 0
  %139 = shufflevector <2 x double> %138, <2 x double> poison, <2 x i32> zeroinitializer
  %140 = fmul <2 x double> %137, %139
  %141 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !9
  %142 = fadd <2 x double> %140, %141
  %143 = load <2 x double>, ptr %135, align 8, !tbaa !9
  %144 = fsub <2 x double> %143, %142
  store <2 x double> %144, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !9
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %145 = mul i32 %129, %96
  store i32 %145, ptr %17, align 4, !tbaa !5
  %146 = mul i32 %130, %97
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %147
  %149 = load <2 x double>, ptr %148, align 8, !tbaa !9
  %150 = fmul <2 x double> %139, %149
  store <2 x double> %150, ptr %20, align 16, !tbaa !9
  %151 = sext i32 %145 to i64
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %151
  %153 = load <2 x double>, ptr %152, align 8, !tbaa !9
  %154 = fadd <2 x double> %150, %153
  store <2 x double> %154, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !9
  %155 = extractelement <2 x double> %154, i64 0
  %156 = fcmp oge double %155, 0.000000e+00
  %157 = fneg double %155
  %158 = select i1 %156, double %155, double %157
  %159 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %160 = fcmp oge double %159, 0.000000e+00
  %161 = fneg double %159
  %162 = select i1 %160, double %159, double %161
  %163 = fadd double %158, %162
  store double %163, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %164 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !9
  %165 = fcmp ugt double %163, %164
  br i1 %165, label %167, label %166

166:                                              ; preds = %.lr.ph431
  store double %164, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !11
  store double 0.000000e+00, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.a11, i64 8), align 8, !tbaa !13
  store double %164, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %167

167:                                              ; preds = %166, %.lr.ph431
  %168 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %169 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.vec) #4
  %170 = insertelement <2 x double> %168, double %169, i64 1
  %171 = fcmp oge <2 x double> %170, zeroinitializer
  %172 = fneg <2 x double> %170
  %173 = select <2 x i1> %171, <2 x double> %170, <2 x double> %172
  %shift = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %174 = fadd <2 x double> %173, %shift
  %175 = extractelement <2 x double> %174, i64 0
  store double %175, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !9
  %176 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %177 = fcmp olt double %176, 1.000000e+00
  %178 = fcmp ogt double %175, 1.000000e+00
  %or.cond3 = select i1 %177, i1 %178, i1 false
  br i1 %or.cond3, label %179, label %185

179:                                              ; preds = %167
  %180 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %181 = fmul double %176, %180
  %182 = fcmp ogt double %175, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = fdiv double 1.000000e+00, %175
  store double %184, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %179, %183, %167
  %186 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %187 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %188 = shufflevector <2 x double> %187, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %189 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %186, i64 1
  %190 = fmul <2 x double> %188, %189
  %191 = shufflevector <2 x double> %187, <2 x double> poison, <2 x i32> zeroinitializer
  %192 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %186, i64 0
  %193 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %191, <2 x double> %192, <2 x double> %190)
  store <2 x double> %193, ptr %20, align 16, !tbaa !9
  %194 = call { double, double } @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %195 = extractvalue { double, double } %194, 0
  %196 = extractvalue { double, double } %194, 1
  store double %195, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !11
  store double %196, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.x11, i64 8), align 8, !tbaa !13
  %197 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %198 = fcmp une double %197, 1.000000e+00
  %199 = insertelement <2 x double> poison, double %195, i64 0
  %200 = insertelement <2 x double> %199, double %196, i64 1
  br i1 %198, label %201, label %213

201:                                              ; preds = %185
  %202 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %202, ptr %17, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %.not364422 = icmp slt i32 %202, 1
  br i1 %.not364422, label %._crit_edge426, label %.lr.ph425

.lr.ph425:                                        ; preds = %201, %.lr.ph425
  %storemerge363423 = phi i32 [ %207, %.lr.ph425 ], [ 1, %201 ]
  %203 = mul nsw i32 %storemerge363423, %29
  %204 = sext i32 %203 to i64
  %gep421 = getelementptr %struct.doublecomplex, ptr %invariant.gep420, i64 %204
  %205 = call i32 @zdscal_(ptr noundef nonnull %3, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %gep421, ptr noundef nonnull @c__1) #4
  %206 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %208 = load i32, ptr %17, align 4, !tbaa !5
  %.not364.not = icmp slt i32 %206, %208
  br i1 %.not364.not, label %.lr.ph425, label %._crit_edge426.loopexit, !llvm.loop !14

._crit_edge426.loopexit:                          ; preds = %.lr.ph425
  %.pre448 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %._crit_edge426

._crit_edge426:                                   ; preds = %._crit_edge426.loopexit, %201
  %209 = phi double [ %.pre448, %._crit_edge426.loopexit ], [ %197, %201 ]
  %210 = load double, ptr %11, align 8, !tbaa !9
  %211 = fmul double %209, %210
  store double %211, ptr %11, align 8, !tbaa !9
  %212 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %._crit_edge426, %185
  %214 = phi <2 x double> [ %212, %._crit_edge426 ], [ %200, %185 ]
  %215 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %216 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %217 = mul nsw i32 %216, %29
  %218 = add nsw i32 %217, %215
  store i32 %218, ptr %17, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %219
  store <2 x double> %214, ptr %220, align 8, !tbaa !9
  %221 = add nsw i32 %215, -1
  store i32 %221, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %222 = icmp sgt i32 %215, 1
  br i1 %222, label %.lr.ph431, label %._crit_edge432.loopexit, !llvm.loop !16

._crit_edge432.loopexit:                          ; preds = %213
  %.pre451 = load i32, ptr %16, align 4, !tbaa !5
  br label %._crit_edge432

._crit_edge432:                                   ; preds = %._crit_edge432.loopexit, %98
  %223 = phi i32 [ %.pre451, %._crit_edge432.loopexit ], [ %99, %98 ]
  %224 = phi i32 [ %216, %._crit_edge432.loopexit ], [ %100, %98 ]
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %.not359.not = icmp slt i32 %224, %223
  br i1 %.not359.not, label %98, label %.loopexit, !llvm.loop !17

226:                                              ; preds = %65
  %227 = icmp eq i32 %90, 0
  %or.cond5 = select i1 %227, i1 %93, i1 false
  br i1 %or.cond5, label %228, label %357

228:                                              ; preds = %226
  %229 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %229, ptr %16, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %.not353417 = icmp slt i32 %229, 1
  br i1 %.not353417, label %.loopexit, label %.lr.ph419

.lr.ph419:                                        ; preds = %228
  %invariant.gep406 = getelementptr i8, ptr %25, i64 16
  %invariant.gep408 = getelementptr i8, ptr %31, i64 16
  %invariant.gep410 = getelementptr i8, ptr %28, i64 16
  %230 = add i32 %23, 1
  %231 = add i32 %26, 1
  br label %232

232:                                              ; preds = %.lr.ph419, %._crit_edge416
  %233 = phi i32 [ %229, %.lr.ph419 ], [ %354, %._crit_edge416 ]
  %234 = phi i32 [ 1, %.lr.ph419 ], [ %356, %._crit_edge416 ]
  %235 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %235, ptr %17, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %.not355412 = icmp slt i32 %235, 1
  br i1 %.not355412, label %._crit_edge416, label %.lr.ph415

.lr.ph415:                                        ; preds = %232, %344
  %236 = phi i32 [ %347, %344 ], [ %234, %232 ]
  %storemerge354413 = phi i32 [ %352, %344 ], [ 1, %232 ]
  %237 = add nsw i32 %storemerge354413, -1
  store i32 %237, ptr %18, align 4, !tbaa !5
  %238 = mul nsw i32 %storemerge354413, %23
  %239 = sext i32 %238 to i64
  %gep407 = getelementptr %struct.doublecomplex, ptr %invariant.gep406, i64 %239
  %240 = mul nsw i32 %236, %29
  %241 = sext i32 %240 to i64
  %gep409 = getelementptr %struct.doublecomplex, ptr %invariant.gep408, i64 %241
  %242 = call { double, double } @zdotc_(ptr noundef nonnull %18, ptr noundef %gep407, ptr noundef nonnull @c__1, ptr noundef %gep409, ptr noundef nonnull @c__1) #4
  %243 = extractvalue { double, double } %242, 0
  %244 = extractvalue { double, double } %242, 1
  store double %243, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !11
  store double %244, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.suml, i64 8), align 8, !tbaa !13
  %245 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %246 = add nsw i32 %245, -1
  store i32 %246, ptr %18, align 4, !tbaa !5
  %247 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %248 = add nsw i32 %247, %29
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %249
  %251 = mul nsw i32 %245, %26
  %252 = sext i32 %251 to i64
  %gep411 = getelementptr %struct.doublecomplex, ptr %invariant.gep410, i64 %252
  %253 = call { double, double } @zdotu_(ptr noundef nonnull %18, ptr noundef %250, ptr noundef nonnull %10, ptr noundef %gep411, ptr noundef nonnull @c__1) #4
  %254 = extractvalue { double, double } %253, 0
  %255 = extractvalue { double, double } %253, 1
  store double %254, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !11
  store double %255, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.sumr, i64 8), align 8, !tbaa !13
  %256 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %257 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %258 = mul nsw i32 %257, %29
  %259 = add nsw i32 %258, %256
  store i32 %259, ptr %18, align 4, !tbaa !5
  %260 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %261 = insertelement <2 x double> poison, double %254, i64 0
  %262 = insertelement <2 x double> %261, double %255, i64 1
  %263 = insertelement <2 x double> poison, double %260, i64 0
  %264 = shufflevector <2 x double> %263, <2 x double> poison, <2 x i32> zeroinitializer
  %265 = fmul <2 x double> %262, %264
  %266 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !9
  %267 = fadd <2 x double> %265, %266
  store <2 x double> %267, ptr %20, align 16, !tbaa !9
  %268 = sext i32 %259 to i64
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %268
  %270 = load <2 x double>, ptr %269, align 8, !tbaa !9
  %271 = fsub <2 x double> %270, %267
  store <2 x double> %271, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !9
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %272 = mul i32 %256, %230
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %273
  call void @d_cnjg(ptr noundef nonnull %20, ptr noundef %274) #4
  %275 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %276 = mul i32 %275, %231
  store i32 %276, ptr %18, align 4, !tbaa !5
  %277 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %278 = sext i32 %276 to i64
  %279 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %278
  %280 = load <2 x double>, ptr %279, align 8, !tbaa !9
  %281 = insertelement <2 x double> poison, double %277, i64 0
  %282 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> zeroinitializer
  %283 = fmul <2 x double> %282, %280
  %284 = load <2 x double>, ptr %20, align 16, !tbaa !9
  %285 = fadd <2 x double> %283, %284
  store <2 x double> %285, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !9
  %286 = extractelement <2 x double> %285, i64 0
  %287 = fcmp oge double %286, 0.000000e+00
  %288 = fneg double %286
  %289 = select i1 %287, double %286, double %288
  %290 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %291 = fcmp oge double %290, 0.000000e+00
  %292 = fneg double %290
  %293 = select i1 %291, double %290, double %292
  %294 = fadd double %289, %293
  store double %294, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %295 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !9
  %296 = fcmp ugt double %294, %295
  br i1 %296, label %298, label %297

297:                                              ; preds = %.lr.ph415
  store double %295, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !11
  store double 0.000000e+00, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.a11, i64 8), align 8, !tbaa !13
  store double %295, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %298

298:                                              ; preds = %297, %.lr.ph415
  %299 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %300 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.vec) #4
  %301 = insertelement <2 x double> %299, double %300, i64 1
  %302 = fcmp oge <2 x double> %301, zeroinitializer
  %303 = fneg <2 x double> %301
  %304 = select <2 x i1> %302, <2 x double> %301, <2 x double> %303
  %shift465 = shufflevector <2 x double> %304, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %305 = fadd <2 x double> %304, %shift465
  %306 = extractelement <2 x double> %305, i64 0
  store double %306, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !9
  %307 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %308 = fcmp olt double %307, 1.000000e+00
  %309 = fcmp ogt double %306, 1.000000e+00
  %or.cond7 = select i1 %308, i1 %309, i1 false
  br i1 %or.cond7, label %310, label %316

310:                                              ; preds = %298
  %311 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %312 = fmul double %307, %311
  %313 = fcmp ogt double %306, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %310
  %315 = fdiv double 1.000000e+00, %306
  store double %315, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %316

316:                                              ; preds = %310, %314, %298
  %317 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %318 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %319 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %320 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %317, i64 1
  %321 = fmul <2 x double> %319, %320
  %322 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> zeroinitializer
  %323 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %317, i64 0
  %324 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %322, <2 x double> %323, <2 x double> %321)
  store <2 x double> %324, ptr %20, align 16, !tbaa !9
  %325 = call { double, double } @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %326 = extractvalue { double, double } %325, 0
  %327 = extractvalue { double, double } %325, 1
  store double %326, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !11
  store double %327, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.x11, i64 8), align 8, !tbaa !13
  %328 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %329 = fcmp une double %328, 1.000000e+00
  %330 = insertelement <2 x double> poison, double %326, i64 0
  %331 = insertelement <2 x double> %330, double %327, i64 1
  br i1 %329, label %332, label %344

332:                                              ; preds = %316
  %333 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %333, ptr %18, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %.not357401 = icmp slt i32 %333, 1
  br i1 %.not357401, label %._crit_edge405, label %.lr.ph404

.lr.ph404:                                        ; preds = %332, %.lr.ph404
  %storemerge356402 = phi i32 [ %338, %.lr.ph404 ], [ 1, %332 ]
  %334 = mul nsw i32 %storemerge356402, %29
  %335 = sext i32 %334 to i64
  %gep400 = getelementptr %struct.doublecomplex, ptr %invariant.gep408, i64 %335
  %336 = call i32 @zdscal_(ptr noundef nonnull %3, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %gep400, ptr noundef nonnull @c__1) #4
  %337 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %339 = load i32, ptr %18, align 4, !tbaa !5
  %.not357.not = icmp slt i32 %337, %339
  br i1 %.not357.not, label %.lr.ph404, label %._crit_edge405.loopexit, !llvm.loop !18

._crit_edge405.loopexit:                          ; preds = %.lr.ph404
  %.pre444 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %._crit_edge405

._crit_edge405:                                   ; preds = %._crit_edge405.loopexit, %332
  %340 = phi double [ %.pre444, %._crit_edge405.loopexit ], [ %328, %332 ]
  %341 = load double, ptr %11, align 8, !tbaa !9
  %342 = fmul double %340, %341
  store double %342, ptr %11, align 8, !tbaa !9
  %343 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %._crit_edge405, %316
  %345 = phi <2 x double> [ %343, %._crit_edge405 ], [ %331, %316 ]
  %346 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %347 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %348 = mul nsw i32 %347, %29
  %349 = add nsw i32 %348, %346
  store i32 %349, ptr %18, align 4, !tbaa !5
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %350
  store <2 x double> %345, ptr %351, align 8, !tbaa !9
  %352 = add nsw i32 %346, 1
  store i32 %352, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %353 = load i32, ptr %17, align 4, !tbaa !5
  %.not355.not = icmp slt i32 %346, %353
  br i1 %.not355.not, label %.lr.ph415, label %._crit_edge416.loopexit, !llvm.loop !19

._crit_edge416.loopexit:                          ; preds = %344
  %.pre447 = load i32, ptr %16, align 4, !tbaa !5
  br label %._crit_edge416

._crit_edge416:                                   ; preds = %._crit_edge416.loopexit, %232
  %354 = phi i32 [ %.pre447, %._crit_edge416.loopexit ], [ %233, %232 ]
  %355 = phi i32 [ %347, %._crit_edge416.loopexit ], [ %234, %232 ]
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %.not353.not = icmp slt i32 %355, %354
  br i1 %.not353.not, label %232, label %.loopexit, !llvm.loop !20

357:                                              ; preds = %226
  %or.cond9 = select i1 %91, i1 true, i1 %93
  br i1 %or.cond9, label %491, label %358

358:                                              ; preds = %357
  %359 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %359, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %360 = icmp sgt i32 %359, 0
  br i1 %360, label %.lr.ph385, label %.loopexit

.lr.ph385:                                        ; preds = %358
  %invariant.gep375 = getelementptr i8, ptr %25, i64 16
  %invariant.gep377 = getelementptr i8, ptr %31, i64 16
  %.sroa.425.0..sroa_idx = getelementptr inbounds i8, ptr %19, i64 8
  %361 = add i32 %23, 1
  %362 = add i32 %26, 1
  br label %363

363:                                              ; preds = %.lr.ph385, %._crit_edge383
  %364 = phi i32 [ %359, %.lr.ph385 ], [ %489, %._crit_edge383 ]
  %365 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %365, ptr %16, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %.not339379 = icmp slt i32 %365, 1
  br i1 %.not339379, label %._crit_edge383, label %.lr.ph382

.lr.ph382:                                        ; preds = %363, %478
  %366 = phi i32 [ %481, %478 ], [ %364, %363 ]
  %storemerge338380 = phi i32 [ %486, %478 ], [ 1, %363 ]
  %367 = add nsw i32 %storemerge338380, -1
  store i32 %367, ptr %17, align 4, !tbaa !5
  %368 = mul nsw i32 %storemerge338380, %23
  %369 = sext i32 %368 to i64
  %gep376 = getelementptr %struct.doublecomplex, ptr %invariant.gep375, i64 %369
  %370 = mul nsw i32 %366, %29
  %371 = sext i32 %370 to i64
  %gep378 = getelementptr %struct.doublecomplex, ptr %invariant.gep377, i64 %371
  %372 = call { double, double } @zdotc_(ptr noundef nonnull %17, ptr noundef %gep376, ptr noundef nonnull @c__1, ptr noundef %gep378, ptr noundef nonnull @c__1) #4
  %373 = extractvalue { double, double } %372, 0
  %374 = extractvalue { double, double } %372, 1
  store double %373, ptr %19, align 16, !tbaa !9
  store double %374, ptr %.sroa.425.0..sroa_idx, align 8, !tbaa !9
  store double %373, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !11
  store double %374, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.suml, i64 8), align 8, !tbaa !13
  %375 = load i32, ptr %4, align 4, !tbaa !5
  %376 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %377 = sub nsw i32 %375, %376
  store i32 %377, ptr %17, align 4, !tbaa !5
  %378 = add nsw i32 %376, 1
  %379 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %.not340.not = icmp slt i32 %376, %375
  %.367 = select i1 %.not340.not, i32 %378, i32 %375
  %380 = mul nsw i32 %.367, %29
  %381 = add nsw i32 %379, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %382
  %384 = mul nsw i32 %.367, %26
  %385 = add nsw i32 %384, %376
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %386
  %388 = call { double, double } @zdotc_(ptr noundef nonnull %17, ptr noundef %383, ptr noundef nonnull %10, ptr noundef %387, ptr noundef nonnull %8) #4
  %389 = extractvalue { double, double } %388, 0
  %390 = extractvalue { double, double } %388, 1
  store double %389, ptr %19, align 16, !tbaa !9
  store double %390, ptr %.sroa.425.0..sroa_idx, align 8, !tbaa !9
  store double %389, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !11
  store double %390, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.sumr, i64 8), align 8, !tbaa !13
  %391 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %392 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %393 = mul nsw i32 %392, %29
  %394 = add nsw i32 %393, %391
  store i32 %394, ptr %17, align 4, !tbaa !5
  call void @d_cnjg(ptr noundef nonnull %22, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.sumr) #4
  %395 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %396 = load i32, ptr %17, align 4, !tbaa !5
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %397
  %399 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %400 = insertelement <2 x double> poison, double %395, i64 0
  %401 = shufflevector <2 x double> %400, <2 x double> poison, <2 x i32> zeroinitializer
  %402 = fmul <2 x double> %401, %399
  %403 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !9
  %404 = fadd <2 x double> %402, %403
  %405 = load <2 x double>, ptr %398, align 8, !tbaa !9
  %406 = fsub <2 x double> %405, %404
  store <2 x double> %406, ptr %19, align 16, !tbaa !9
  store <2 x double> %406, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !9
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %407 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %408 = mul i32 %407, %361
  store i32 %408, ptr %17, align 4, !tbaa !5
  %409 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %410 = mul i32 %409, %362
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %411
  %413 = sext i32 %408 to i64
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %413
  %415 = load <2 x double>, ptr %412, align 8, !tbaa !9
  %416 = fmul <2 x double> %401, %415
  %417 = load <2 x double>, ptr %414, align 8, !tbaa !9
  %418 = fadd <2 x double> %416, %417
  store <2 x double> %418, ptr %20, align 16, !tbaa !9
  call void @d_cnjg(ptr noundef nonnull %19, ptr noundef nonnull %20) #4
  %419 = load <2 x double>, ptr %19, align 16, !tbaa !9
  store <2 x double> %419, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !9
  %420 = extractelement <2 x double> %419, i64 0
  %421 = fcmp oge double %420, 0.000000e+00
  %422 = fneg double %420
  %423 = select i1 %421, double %420, double %422
  %424 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %425 = fcmp oge double %424, 0.000000e+00
  %426 = fneg double %424
  %427 = select i1 %425, double %424, double %426
  %428 = fadd double %423, %427
  store double %428, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %429 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !9
  %430 = fcmp ugt double %428, %429
  br i1 %430, label %432, label %431

431:                                              ; preds = %.lr.ph382
  store double %429, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !11
  store double 0.000000e+00, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.a11, i64 8), align 8, !tbaa !13
  store double %429, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %432

432:                                              ; preds = %431, %.lr.ph382
  %433 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %434 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.vec) #4
  %435 = insertelement <2 x double> %433, double %434, i64 1
  %436 = fcmp oge <2 x double> %435, zeroinitializer
  %437 = fneg <2 x double> %435
  %438 = select <2 x i1> %436, <2 x double> %435, <2 x double> %437
  %shift466 = shufflevector <2 x double> %438, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %439 = fadd <2 x double> %438, %shift466
  %440 = extractelement <2 x double> %439, i64 0
  store double %440, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !9
  %441 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %442 = fcmp olt double %441, 1.000000e+00
  %443 = fcmp ogt double %440, 1.000000e+00
  %or.cond11 = select i1 %442, i1 %443, i1 false
  br i1 %or.cond11, label %444, label %450

444:                                              ; preds = %432
  %445 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %446 = fmul double %441, %445
  %447 = fcmp ogt double %440, %446
  br i1 %447, label %448, label %450

448:                                              ; preds = %444
  %449 = fdiv double 1.000000e+00, %440
  store double %449, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %450

450:                                              ; preds = %444, %448, %432
  %451 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %452 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %453 = shufflevector <2 x double> %452, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %454 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %451, i64 1
  %455 = fmul <2 x double> %453, %454
  %456 = shufflevector <2 x double> %452, <2 x double> poison, <2 x i32> zeroinitializer
  %457 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %451, i64 0
  %458 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %456, <2 x double> %457, <2 x double> %455)
  store <2 x double> %458, ptr %20, align 16, !tbaa !9
  %459 = call { double, double } @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %460 = extractvalue { double, double } %459, 0
  %461 = extractvalue { double, double } %459, 1
  store double %460, ptr %19, align 16, !tbaa !9
  store double %461, ptr %.sroa.425.0..sroa_idx, align 8, !tbaa !9
  store double %460, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !11
  store double %461, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.x11, i64 8), align 8, !tbaa !13
  %462 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %463 = fcmp une double %462, 1.000000e+00
  %464 = insertelement <2 x double> poison, double %460, i64 0
  %465 = insertelement <2 x double> %464, double %461, i64 1
  br i1 %463, label %466, label %478

466:                                              ; preds = %450
  %467 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %467, ptr %17, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %.not343373 = icmp slt i32 %467, 1
  br i1 %.not343373, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %466, %.lr.ph
  %storemerge342374 = phi i32 [ %472, %.lr.ph ], [ 1, %466 ]
  %468 = mul nsw i32 %storemerge342374, %29
  %469 = sext i32 %468 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep377, i64 %469
  %470 = call i32 @zdscal_(ptr noundef nonnull %3, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %gep, ptr noundef nonnull @c__1) #4
  %471 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %473 = load i32, ptr %17, align 4, !tbaa !5
  %.not343.not = icmp slt i32 %471, %473
  br i1 %.not343.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !21

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %466
  %474 = phi double [ %.pre, %._crit_edge.loopexit ], [ %462, %466 ]
  %475 = load double, ptr %11, align 8, !tbaa !9
  %476 = fmul double %474, %475
  store double %476, ptr %11, align 8, !tbaa !9
  %477 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %._crit_edge, %450
  %479 = phi <2 x double> [ %477, %._crit_edge ], [ %465, %450 ]
  %480 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %481 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %482 = mul nsw i32 %481, %29
  %483 = add nsw i32 %482, %480
  store i32 %483, ptr %17, align 4, !tbaa !5
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %484
  store <2 x double> %479, ptr %485, align 8, !tbaa !9
  %486 = add nsw i32 %480, 1
  store i32 %486, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %487 = load i32, ptr %16, align 4, !tbaa !5
  %.not339.not = icmp slt i32 %480, %487
  br i1 %.not339.not, label %.lr.ph382, label %._crit_edge383, !llvm.loop !22

._crit_edge383:                                   ; preds = %478, %363
  %488 = phi i32 [ %364, %363 ], [ %481, %478 ]
  %489 = add nsw i32 %488, -1
  store i32 %489, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %490 = icmp sgt i32 %488, 1
  br i1 %490, label %363, label %.loopexit, !llvm.loop !23

491:                                              ; preds = %357
  %or.cond13 = select i1 %227, i1 true, i1 %93
  br i1 %or.cond13, label %.loopexit, label %492

492:                                              ; preds = %491
  %493 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %493, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %494 = icmp sgt i32 %493, 0
  br i1 %494, label %.lr.ph398, label %.loopexit

.lr.ph398:                                        ; preds = %492
  %495 = getelementptr inbounds i8, ptr %21, i64 8
  %496 = add i32 %23, 1
  %497 = add i32 %26, 1
  %invariant.gep386 = getelementptr i8, ptr %31, i64 16
  br label %498

498:                                              ; preds = %.lr.ph398, %._crit_edge396
  %499 = phi i32 [ %493, %.lr.ph398 ], [ %637, %._crit_edge396 ]
  %500 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %500, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %501 = icmp sgt i32 %500, 0
  br i1 %501, label %.lr.ph395, label %._crit_edge396

.lr.ph395:                                        ; preds = %498, %626
  %502 = phi i32 [ %629, %626 ], [ %499, %498 ]
  %storemerge345393 = phi i32 [ %634, %626 ], [ %500, %498 ]
  %503 = load i32, ptr %3, align 4, !tbaa !5
  %504 = sub nsw i32 %503, %storemerge345393
  store i32 %504, ptr %16, align 4, !tbaa !5
  %505 = add nuw nsw i32 %storemerge345393, 1
  store i32 %505, ptr %17, align 4, !tbaa !5
  %.not346.not = icmp slt i32 %storemerge345393, %503
  %.368 = select i1 %.not346.not, i32 %505, i32 %503
  %506 = mul nsw i32 %.368, %23
  %507 = add nsw i32 %506, %storemerge345393
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %508
  %510 = call i32 @llvm.smin.i32(i32 %505, i32 %503)
  %511 = mul nsw i32 %502, %29
  %512 = add nsw i32 %511, %510
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %513
  %515 = call { double, double } @zdotu_(ptr noundef nonnull %16, ptr noundef %509, ptr noundef nonnull %6, ptr noundef %514, ptr noundef nonnull @c__1) #4
  %516 = extractvalue { double, double } %515, 0
  %517 = extractvalue { double, double } %515, 1
  store double %516, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !11
  store double %517, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.suml, i64 8), align 8, !tbaa !13
  %518 = load i32, ptr %4, align 4, !tbaa !5
  %519 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %520 = sub nsw i32 %518, %519
  store i32 %520, ptr %16, align 4, !tbaa !5
  %521 = add nsw i32 %519, 1
  store i32 %521, ptr %17, align 4, !tbaa !5
  %522 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %.not348.not = icmp slt i32 %519, %518
  %523 = select i1 %.not348.not, i32 %521, i32 %518
  %524 = mul nsw i32 %523, %29
  %525 = add nsw i32 %522, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %526
  %528 = call i32 @llvm.smin.i32(i32 %521, i32 %518)
  %529 = mul nsw i32 %528, %26
  %530 = add nsw i32 %529, %519
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %531
  %533 = call { double, double } @zdotc_(ptr noundef nonnull %16, ptr noundef %527, ptr noundef nonnull %10, ptr noundef %532, ptr noundef nonnull %8) #4
  %534 = extractvalue { double, double } %533, 0
  %535 = extractvalue { double, double } %533, 1
  store double %534, ptr @RELAPACK_ztrsyl_rec2.sumr, align 8, !tbaa !11
  store double %535, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.sumr, i64 8), align 8, !tbaa !13
  %536 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %537 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %538 = mul nsw i32 %537, %29
  %539 = add nsw i32 %538, %536
  store i32 %539, ptr %16, align 4, !tbaa !5
  call void @d_cnjg(ptr noundef nonnull %22, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.sumr) #4
  %540 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %541 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %542 = insertelement <2 x double> poison, double %540, i64 0
  %543 = shufflevector <2 x double> %542, <2 x double> poison, <2 x i32> zeroinitializer
  %544 = fmul <2 x double> %543, %541
  store <2 x double> %544, ptr %21, align 16, !tbaa !9
  %545 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.suml, align 8, !tbaa !9
  %546 = fadd <2 x double> %544, %545
  store <2 x double> %546, ptr %20, align 16, !tbaa !9
  %547 = load i32, ptr %16, align 4, !tbaa !5
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %548
  %550 = load <2 x double>, ptr %549, align 8, !tbaa !9
  %551 = fsub <2 x double> %550, %546
  store <2 x double> %551, ptr @RELAPACK_ztrsyl_rec2.vec, align 8, !tbaa !9
  store double 1.000000e+00, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %552 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %553 = mul i32 %552, %496
  store i32 %553, ptr %16, align 4, !tbaa !5
  %554 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %555 = mul i32 %554, %497
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %556
  call void @d_cnjg(ptr noundef nonnull %21, ptr noundef %557) #4
  %558 = load double, ptr @RELAPACK_ztrsyl_rec2.sgn, align 8, !tbaa !9
  %559 = load <2 x double>, ptr %21, align 16, !tbaa !9
  %560 = insertelement <2 x double> poison, double %558, i64 0
  %561 = shufflevector <2 x double> %560, <2 x double> poison, <2 x i32> zeroinitializer
  %562 = fmul <2 x double> %561, %559
  store <2 x double> %562, ptr %20, align 16, !tbaa !9
  %563 = load i32, ptr %16, align 4, !tbaa !5
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %564
  %566 = load <2 x double>, ptr %565, align 8, !tbaa !9
  %567 = fadd <2 x double> %562, %566
  store <2 x double> %567, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !9
  %568 = extractelement <2 x double> %567, i64 0
  %569 = fcmp oge double %568, 0.000000e+00
  %570 = fneg double %568
  %571 = select i1 %569, double %568, double %570
  %572 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %573 = fcmp oge double %572, 0.000000e+00
  %574 = fneg double %572
  %575 = select i1 %573, double %572, double %574
  %576 = fadd double %571, %575
  store double %576, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %577 = load double, ptr @RELAPACK_ztrsyl_rec2.smin, align 8, !tbaa !9
  %578 = fcmp ugt double %576, %577
  br i1 %578, label %580, label %579

579:                                              ; preds = %.lr.ph395
  store double %577, ptr @RELAPACK_ztrsyl_rec2.a11, align 8, !tbaa !11
  store double 0.000000e+00, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.a11, i64 8), align 8, !tbaa !13
  store double %577, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %580

580:                                              ; preds = %579, %.lr.ph395
  %581 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %582 = call double @d_imag(ptr noundef nonnull @RELAPACK_ztrsyl_rec2.vec) #4
  %583 = insertelement <2 x double> %581, double %582, i64 1
  %584 = fcmp oge <2 x double> %583, zeroinitializer
  %585 = fneg <2 x double> %583
  %586 = select <2 x i1> %584, <2 x double> %583, <2 x double> %585
  %shift467 = shufflevector <2 x double> %586, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %587 = fadd <2 x double> %586, %shift467
  %588 = extractelement <2 x double> %587, i64 0
  store double %588, ptr @RELAPACK_ztrsyl_rec2.db, align 8, !tbaa !9
  %589 = load double, ptr @RELAPACK_ztrsyl_rec2.da11, align 8, !tbaa !9
  %590 = fcmp olt double %589, 1.000000e+00
  %591 = fcmp ogt double %588, 1.000000e+00
  %or.cond15 = select i1 %590, i1 %591, i1 false
  br i1 %or.cond15, label %592, label %598

592:                                              ; preds = %580
  %593 = load double, ptr @RELAPACK_ztrsyl_rec2.bignum, align 8, !tbaa !9
  %594 = fmul double %589, %593
  %595 = fcmp ogt double %588, %594
  br i1 %595, label %596, label %598

596:                                              ; preds = %592
  %597 = fdiv double 1.000000e+00, %588
  store double %597, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %598

598:                                              ; preds = %592, %596, %580
  %599 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  store double %599, ptr %21, align 16, !tbaa !11
  store double 0.000000e+00, ptr %495, align 8, !tbaa !13
  %600 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.vec, align 8
  %601 = shufflevector <2 x double> %600, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %602 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %599, i64 1
  %603 = fmul <2 x double> %601, %602
  %604 = shufflevector <2 x double> %600, <2 x double> poison, <2 x i32> zeroinitializer
  %605 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %599, i64 0
  %606 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %604, <2 x double> %605, <2 x double> %603)
  store <2 x double> %606, ptr %20, align 16, !tbaa !9
  %607 = call { double, double } @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.a11) #4
  %608 = extractvalue { double, double } %607, 0
  %609 = extractvalue { double, double } %607, 1
  store double %608, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !11
  store double %609, ptr getelementptr inbounds (i8, ptr @RELAPACK_ztrsyl_rec2.x11, i64 8), align 8, !tbaa !13
  %610 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  %611 = fcmp une double %610, 1.000000e+00
  %612 = insertelement <2 x double> poison, double %608, i64 0
  %613 = insertelement <2 x double> %612, double %609, i64 1
  br i1 %611, label %614, label %626

614:                                              ; preds = %598
  %615 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %615, ptr %16, align 4, !tbaa !5
  store i32 1, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %.not351388 = icmp slt i32 %615, 1
  br i1 %.not351388, label %._crit_edge392, label %.lr.ph391

.lr.ph391:                                        ; preds = %614, %.lr.ph391
  %storemerge350389 = phi i32 [ %620, %.lr.ph391 ], [ 1, %614 ]
  %616 = mul nsw i32 %storemerge350389, %29
  %617 = sext i32 %616 to i64
  %gep387 = getelementptr %struct.doublecomplex, ptr %invariant.gep386, i64 %617
  %618 = call i32 @zdscal_(ptr noundef nonnull %3, ptr noundef nonnull @RELAPACK_ztrsyl_rec2.scaloc, ptr noundef %gep387, ptr noundef nonnull @c__1) #4
  %619 = load i32, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr @RELAPACK_ztrsyl_rec2.j, align 4, !tbaa !5
  %621 = load i32, ptr %16, align 4, !tbaa !5
  %.not351.not = icmp slt i32 %619, %621
  br i1 %.not351.not, label %.lr.ph391, label %._crit_edge392.loopexit, !llvm.loop !24

._crit_edge392.loopexit:                          ; preds = %.lr.ph391
  %.pre441 = load double, ptr @RELAPACK_ztrsyl_rec2.scaloc, align 8, !tbaa !9
  br label %._crit_edge392

._crit_edge392:                                   ; preds = %._crit_edge392.loopexit, %614
  %622 = phi double [ %.pre441, %._crit_edge392.loopexit ], [ %610, %614 ]
  %623 = load double, ptr %11, align 8, !tbaa !9
  %624 = fmul double %622, %623
  store double %624, ptr %11, align 8, !tbaa !9
  %625 = load <2 x double>, ptr @RELAPACK_ztrsyl_rec2.x11, align 8, !tbaa !9
  br label %626

626:                                              ; preds = %._crit_edge392, %598
  %627 = phi <2 x double> [ %625, %._crit_edge392 ], [ %613, %598 ]
  %628 = load i32, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %629 = load i32, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %630 = mul nsw i32 %629, %29
  %631 = add nsw i32 %630, %628
  store i32 %631, ptr %16, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %632
  store <2 x double> %627, ptr %633, align 8, !tbaa !9
  %634 = add nsw i32 %628, -1
  store i32 %634, ptr @RELAPACK_ztrsyl_rec2.k, align 4, !tbaa !5
  %635 = icmp sgt i32 %628, 1
  br i1 %635, label %.lr.ph395, label %._crit_edge396, !llvm.loop !25

._crit_edge396:                                   ; preds = %626, %498
  %636 = phi i32 [ %499, %498 ], [ %629, %626 ]
  %637 = add nsw i32 %636, -1
  store i32 %637, ptr @RELAPACK_ztrsyl_rec2.l, align 4, !tbaa !5
  %638 = icmp sgt i32 %636, 1
  br i1 %638, label %498, label %.loopexit, !llvm.loop !26

.loopexit:                                        ; preds = %._crit_edge383, %._crit_edge396, %._crit_edge416, %._crit_edge432, %358, %492, %228, %94, %491, %62, %.thread
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare double @zlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare { double, double } @zdotu_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @d_imag(ptr noundef) local_unnamed_addr #2

declare { double, double } @zladiv_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare { double, double } @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @d_cnjg(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass