; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/LAPACKE/src (lapacke_clarfb)

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

@.str = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_clarfb(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i8 noundef signext %3, i8 noundef signext %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13) #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %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 i8, align 1
  %39 = alloca i32, align 4
  store i32 %0, ptr %16, align 4, !tbaa !5
  store i8 %1, ptr %17, align 1, !tbaa !9
  store i8 %2, ptr %18, align 1, !tbaa !9
  store i8 %3, ptr %19, align 1, !tbaa !9
  store i8 %4, ptr %20, align 1, !tbaa !9
  store i32 %5, ptr %21, align 4, !tbaa !5
  store i32 %6, ptr %22, align 4, !tbaa !5
  store i32 %7, ptr %23, align 4, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !10
  store i32 %9, ptr %25, align 4, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !10
  store i32 %11, ptr %27, align 4, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !10
  store i32 %13, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  store ptr null, ptr %32, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  %40 = load i32, ptr %16, align 4, !tbaa !5
  %41 = icmp ne i32 %40, 102
  br i1 %41, label %42, label %46

42:                                               ; preds = %14
  %43 = load i32, ptr %16, align 4, !tbaa !5
  %44 = icmp ne i32 %43, 101
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef -1)
  store i32 -1, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

46:                                               ; preds = %42, %14
  %47 = call i32 @LAPACKE_get_nancheck()
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %49, label %173

49:                                               ; preds = %46
  %50 = load i8, ptr %17, align 1, !tbaa !9
  %51 = call i32 @LAPACKE_lsame(i8 noundef signext %50, i8 noundef signext 108) #7
  store i32 %51, ptr %35, align 4, !tbaa !5
  %52 = load i8, ptr %20, align 1, !tbaa !9
  %53 = call i32 @LAPACKE_lsame(i8 noundef signext %52, i8 noundef signext 99) #7
  store i32 %53, ptr %36, align 4, !tbaa !5
  %54 = load i8, ptr %19, align 1, !tbaa !9
  %55 = call i32 @LAPACKE_lsame(i8 noundef signext %54, i8 noundef signext 102) #7
  store i32 %55, ptr %37, align 4, !tbaa !5
  %56 = load i32, ptr %36, align 4, !tbaa !5
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %58, label %63

58:                                               ; preds = %49
  %59 = load i32, ptr %35, align 4, !tbaa !5
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %63

61:                                               ; preds = %58
  %62 = load i32, ptr %21, align 4, !tbaa !5
  br label %81

63:                                               ; preds = %58, %49
  %64 = load i32, ptr %36, align 4, !tbaa !5
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %71

66:                                               ; preds = %63
  %67 = load i32, ptr %35, align 4, !tbaa !5
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %71, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %22, align 4, !tbaa !5
  br label %79

71:                                               ; preds = %66, %63
  %72 = load i32, ptr %36, align 4, !tbaa !5
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %76, label %74

74:                                               ; preds = %71
  %75 = load i32, ptr %23, align 4, !tbaa !5
  br label %77

76:                                               ; preds = %71
  br label %77

77:                                               ; preds = %76, %74
  %78 = phi i32 [ %75, %74 ], [ 1, %76 ]
  br label %79

79:                                               ; preds = %77, %69
  %80 = phi i32 [ %70, %69 ], [ %78, %77 ]
  br label %81

81:                                               ; preds = %79, %61
  %82 = phi i32 [ %62, %61 ], [ %80, %79 ]
  store i32 %82, ptr %33, align 4, !tbaa !5
  %83 = load i32, ptr %36, align 4, !tbaa !5
  %84 = icmp ne i32 %83, 0
  br i1 %84, label %90, label %85

85:                                               ; preds = %81
  %86 = load i32, ptr %35, align 4, !tbaa !5
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %90

88:                                               ; preds = %85
  %89 = load i32, ptr %21, align 4, !tbaa !5
  br label %108

90:                                               ; preds = %85, %81
  %91 = load i32, ptr %36, align 4, !tbaa !5
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %98, label %93

93:                                               ; preds = %90
  %94 = load i32, ptr %35, align 4, !tbaa !5
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %98, label %96

96:                                               ; preds = %93
  %97 = load i32, ptr %22, align 4, !tbaa !5
  br label %106

98:                                               ; preds = %93, %90
  %99 = load i32, ptr %36, align 4, !tbaa !5
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %103

101:                                              ; preds = %98
  %102 = load i32, ptr %23, align 4, !tbaa !5
  br label %104

103:                                              ; preds = %98
  br label %104

104:                                              ; preds = %103, %101
  %105 = phi i32 [ %102, %101 ], [ 1, %103 ]
  br label %106

106:                                              ; preds = %104, %96
  %107 = phi i32 [ %97, %96 ], [ %105, %104 ]
  br label %108

108:                                              ; preds = %106, %88
  %109 = phi i32 [ %89, %88 ], [ %107, %106 ]
  store i32 %109, ptr %34, align 4, !tbaa !5
  %110 = load i32, ptr %37, align 4, !tbaa !5
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %115

112:                                              ; preds = %108
  %113 = load i32, ptr %36, align 4, !tbaa !5
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %124, label %115

115:                                              ; preds = %112, %108
  %116 = load i32, ptr %37, align 4, !tbaa !5
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %121, label %118

118:                                              ; preds = %115
  %119 = load i32, ptr %36, align 4, !tbaa !5
  %120 = icmp ne i32 %119, 0
  br label %121

121:                                              ; preds = %118, %115
  %122 = phi i1 [ true, %115 ], [ %120, %118 ]
  %123 = xor i1 %122, true
  br label %124

124:                                              ; preds = %121, %112
  %125 = phi i1 [ true, %112 ], [ %123, %121 ]
  %126 = zext i1 %125 to i64
  %127 = select i1 %125, i32 108, i32 117
  %128 = trunc i32 %127 to i8
  store i8 %128, ptr %38, align 1, !tbaa !9
  %129 = load i32, ptr %36, align 4, !tbaa !5
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %135

131:                                              ; preds = %124
  %132 = load i32, ptr %23, align 4, !tbaa !5
  %133 = load i32, ptr %33, align 4, !tbaa !5
  %134 = icmp sgt i32 %132, %133
  br i1 %134, label %142, label %135

135:                                              ; preds = %131, %124
  %136 = load i32, ptr %36, align 4, !tbaa !5
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %143, label %138

138:                                              ; preds = %135
  %139 = load i32, ptr %23, align 4, !tbaa !5
  %140 = load i32, ptr %34, align 4, !tbaa !5
  %141 = icmp sgt i32 %139, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %138, %131
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef -8)
  store i32 -8, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

143:                                              ; preds = %138, %135
  %144 = load i32, ptr %16, align 4, !tbaa !5
  %145 = load i8, ptr %19, align 1, !tbaa !9
  %146 = load i8, ptr %38, align 1, !tbaa !9
  %147 = load i32, ptr %33, align 4, !tbaa !5
  %148 = load i32, ptr %34, align 4, !tbaa !5
  %149 = load ptr, ptr %24, align 8, !tbaa !10
  %150 = load i32, ptr %25, align 4, !tbaa !5
  %151 = call i32 @LAPACKE_ctz_nancheck(i32 noundef %144, i8 noundef signext %145, i8 noundef signext %146, i8 noundef signext 117, i32 noundef %147, i32 noundef %148, ptr noundef %149, i32 noundef %150)
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %143
  store i32 -9, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

154:                                              ; preds = %143
  %155 = load i32, ptr %16, align 4, !tbaa !5
  %156 = load i32, ptr %23, align 4, !tbaa !5
  %157 = load i32, ptr %23, align 4, !tbaa !5
  %158 = load ptr, ptr %26, align 8, !tbaa !10
  %159 = load i32, ptr %27, align 4, !tbaa !5
  %160 = call i32 @LAPACKE_cge_nancheck(i32 noundef %155, i32 noundef %156, i32 noundef %157, ptr noundef %158, i32 noundef %159)
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %154
  store i32 -11, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

163:                                              ; preds = %154
  %164 = load i32, ptr %16, align 4, !tbaa !5
  %165 = load i32, ptr %21, align 4, !tbaa !5
  %166 = load i32, ptr %22, align 4, !tbaa !5
  %167 = load ptr, ptr %28, align 8, !tbaa !10
  %168 = load i32, ptr %29, align 4, !tbaa !5
  %169 = call i32 @LAPACKE_cge_nancheck(i32 noundef %164, i32 noundef %165, i32 noundef %166, ptr noundef %167, i32 noundef %168)
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %163
  store i32 -13, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

172:                                              ; preds = %163
  br label %173

173:                                              ; preds = %172, %46
  %174 = load i8, ptr %17, align 1, !tbaa !9
  %175 = call i32 @LAPACKE_lsame(i8 noundef signext %174, i8 noundef signext 108) #7
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %173
  %178 = load i32, ptr %22, align 4, !tbaa !5
  store i32 %178, ptr %31, align 4, !tbaa !5
  br label %187

179:                                              ; preds = %173
  %180 = load i8, ptr %17, align 1, !tbaa !9
  %181 = call i32 @LAPACKE_lsame(i8 noundef signext %180, i8 noundef signext 114) #7
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %184, ptr %31, align 4, !tbaa !5
  br label %186

185:                                              ; preds = %179
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %186

186:                                              ; preds = %185, %183
  br label %187

187:                                              ; preds = %186, %177
  %188 = load i32, ptr %31, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = mul i64 8, %189
  %191 = load i32, ptr %23, align 4, !tbaa !5
  %192 = icmp sgt i32 1, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  br label %196

194:                                              ; preds = %187
  %195 = load i32, ptr %23, align 4, !tbaa !5
  br label %196

196:                                              ; preds = %194, %193
  %197 = phi i32 [ 1, %193 ], [ %195, %194 ]
  %198 = sext i32 %197 to i64
  %199 = mul i64 %190, %198
  %200 = call noalias ptr @malloc(i64 noundef %199) #8
  store ptr %200, ptr %32, align 8, !tbaa !10
  %201 = load ptr, ptr %32, align 8, !tbaa !10
  %202 = icmp eq ptr %201, null
  br i1 %202, label %203, label %204

203:                                              ; preds = %196
  store i32 -1010, ptr %30, align 4, !tbaa !5
  br label %223

204:                                              ; preds = %196
  %205 = load i32, ptr %16, align 4, !tbaa !5
  %206 = load i8, ptr %17, align 1, !tbaa !9
  %207 = load i8, ptr %18, align 1, !tbaa !9
  %208 = load i8, ptr %19, align 1, !tbaa !9
  %209 = load i8, ptr %20, align 1, !tbaa !9
  %210 = load i32, ptr %21, align 4, !tbaa !5
  %211 = load i32, ptr %22, align 4, !tbaa !5
  %212 = load i32, ptr %23, align 4, !tbaa !5
  %213 = load ptr, ptr %24, align 8, !tbaa !10
  %214 = load i32, ptr %25, align 4, !tbaa !5
  %215 = load ptr, ptr %26, align 8, !tbaa !10
  %216 = load i32, ptr %27, align 4, !tbaa !5
  %217 = load ptr, ptr %28, align 8, !tbaa !10
  %218 = load i32, ptr %29, align 4, !tbaa !5
  %219 = load ptr, ptr %32, align 8, !tbaa !10
  %220 = load i32, ptr %31, align 4, !tbaa !5
  %221 = call i32 @LAPACKE_clarfb_work(i32 noundef %205, i8 noundef signext %206, i8 noundef signext %207, i8 noundef signext %208, i8 noundef signext %209, i32 noundef %210, i32 noundef %211, i32 noundef %212, ptr noundef %213, i32 noundef %214, ptr noundef %215, i32 noundef %216, ptr noundef %217, i32 noundef %218, ptr noundef %219, i32 noundef %220)
  store i32 %221, ptr %30, align 4, !tbaa !5
  %222 = load ptr, ptr %32, align 8, !tbaa !10
  call void @free(ptr noundef %222) #6
  br label %223

223:                                              ; preds = %204, %203
  %224 = load i32, ptr %30, align 4, !tbaa !5
  %225 = icmp eq i32 %224, -1010
  br i1 %225, label %226, label %228

226:                                              ; preds = %223
  %227 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %227)
  br label %228

228:                                              ; preds = %226, %223
  %229 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %229, ptr %15, align 4
  store i32 1, ptr %39, align 4
  br label %230

230:                                              ; preds = %228, %171, %162, %153, %142, %45
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  %231 = load i32, ptr %15, align 4
  ret i32 %231
}

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

declare void @LAPACKE_xerbla(ptr noundef, i32 noundef) #2

declare i32 @LAPACKE_get_nancheck() #2

; Function Attrs: nounwind willreturn memory(none)
declare i32 @LAPACKE_lsame(i8 noundef signext, i8 noundef signext) #3

declare i32 @LAPACKE_ctz_nancheck(i32 noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #2

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #4

declare i32 @LAPACKE_clarfb_work(i32 noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

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

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

!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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !7, i64 0}


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

@.str = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_clarfb(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i8 noundef signext %3, i8 noundef signext %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13) local_unnamed_addr #0 {
  %15 = add i32 %0, -103
  %or.cond = icmp ult i32 %15, -2
  br i1 %or.cond, label %.sink.split, label %16

16:                                               ; preds = %14
  %17 = tail call i32 @LAPACKE_get_nancheck() #6
  %.not = icmp eq i32 %17, 0
  %.pre = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 108) #7
  br i1 %.not, label %._crit_edge, label %18

18:                                               ; preds = %16
  %19 = tail call i32 @LAPACKE_lsame(i8 noundef signext %4, i8 noundef signext 99) #7
  %20 = icmp ne i32 %19, 0
  %21 = icmp ne i32 %.pre, 0
  %or.cond3 = select i1 %20, i1 %21, i1 false
  %22 = icmp eq i32 %19, 0
  %or.cond5 = select i1 %22, i1 true, i1 %21
  %23 = select i1 %20, i32 1, i32 %7
  %spec.select = select i1 %or.cond5, i32 %23, i32 %6
  %24 = select i1 %or.cond3, i32 %5, i32 %spec.select
  %or.cond7 = select i1 %22, i1 %21, i1 false
  %25 = select i1 %21, i32 1, i32 %6
  %spec.select99 = select i1 %20, i32 %7, i32 %25
  %26 = select i1 %or.cond7, i32 %5, i32 %spec.select99
  %27 = icmp slt i32 %24, %7
  %or.cond96 = and i1 %20, %27
  %or.cond96.not = xor i1 %or.cond96, true
  %28 = icmp sge i32 %26, %7
  %or.cond98.not = or i1 %20, %28
  %or.cond103 = select i1 %or.cond96.not, i1 %or.cond98.not, i1 false
  br i1 %or.cond103, label %29, label %.sink.split

29:                                               ; preds = %18
  %30 = tail call i32 @LAPACKE_lsame(i8 noundef signext %3, i8 noundef signext 102) #7
  %31 = icmp ne i32 %30, 0
  %or.cond11 = and i1 %20, %31
  %32 = or i32 %30, %19
  %.not90 = icmp eq i32 %32, 0
  %33 = or i1 %or.cond11, %.not90
  %34 = select i1 %33, i8 108, i8 117
  %35 = tail call i32 @LAPACKE_ctz_nancheck(i32 noundef %0, i8 noundef signext %3, i8 noundef signext %34, i8 noundef signext 117, i32 noundef %24, i32 noundef %26, ptr noundef %8, i32 noundef %9) #6
  %.not91 = icmp eq i32 %35, 0
  br i1 %.not91, label %36, label %53

36:                                               ; preds = %29
  %37 = tail call i32 @LAPACKE_cge_nancheck(i32 noundef %0, i32 noundef %7, i32 noundef %7, ptr noundef %10, i32 noundef %11) #6
  %.not92 = icmp eq i32 %37, 0
  br i1 %.not92, label %38, label %53

38:                                               ; preds = %36
  %39 = tail call i32 @LAPACKE_cge_nancheck(i32 noundef %0, i32 noundef %5, i32 noundef %6, ptr noundef %12, i32 noundef %13) #6
  %.not93 = icmp eq i32 %39, 0
  br i1 %.not93, label %._crit_edge, label %53

._crit_edge:                                      ; preds = %16, %38
  %.not94 = icmp eq i32 %.pre, 0
  br i1 %.not94, label %40, label %42

40:                                               ; preds = %._crit_edge
  %41 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 114) #7
  %.not95 = icmp eq i32 %41, 0
  %. = select i1 %.not95, i32 1, i32 %5
  br label %42

42:                                               ; preds = %40, %._crit_edge
  %.088 = phi i32 [ %6, %._crit_edge ], [ %., %40 ]
  %43 = sext i32 %.088 to i64
  %44 = tail call i32 @llvm.smax.i32(i32 %7, i32 1)
  %45 = zext nneg i32 %44 to i64
  %46 = shl nuw nsw i64 %45, 3
  %47 = mul i64 %46, %43
  %48 = tail call noalias ptr @malloc(i64 noundef %47) #8
  %49 = icmp eq ptr %48, null
  br i1 %49, label %.sink.split, label %50

50:                                               ; preds = %42
  %51 = tail call i32 @LAPACKE_clarfb_work(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i8 noundef signext %3, i8 noundef signext %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13, ptr noundef nonnull %48, i32 noundef %.088) #6
  tail call void @free(ptr noundef nonnull %48) #6
  %52 = icmp eq i32 %51, -1010
  br i1 %52, label %.sink.split, label %53

.sink.split:                                      ; preds = %50, %42, %18, %14
  %.sink = phi i32 [ -1, %14 ], [ -8, %18 ], [ -1010, %42 ], [ -1010, %50 ]
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef %.sink) #6
  br label %53

53:                                               ; preds = %.sink.split, %50, %38, %36, %29
  %.0 = phi i32 [ -9, %29 ], [ -11, %36 ], [ -13, %38 ], [ %51, %50 ], [ %.sink, %.sink.split ]
  ret i32 %.0
}

declare void @LAPACKE_xerbla(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @LAPACKE_get_nancheck() local_unnamed_addr #1

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare i32 @LAPACKE_lsame(i8 noundef signext, i8 noundef signext) local_unnamed_addr #2

declare i32 @LAPACKE_ctz_nancheck(i32 noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @LAPACKE_cge_nancheck(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #3

declare i32 @LAPACKE_clarfb_work(i32 noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(none) }
attributes #8 = { nounwind allocsize(0) }

!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)"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass