; LLVM IR from stan-dev/math :: lib/sundials_6.1.1/src/kinsol (kinsol_bbdpre)

; 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.KINMemRec = type { ptr, double, ptr, ptr, double, double, i32, i32, i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, i32, double, i64, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, double, ptr, ptr, ptr, ptr, ptr, double, ptr, ptr, ptr, ptr, i64, i64, i32, ptr, ptr, i32, ptr, ptr, i64, i64, i64, i64, ptr, ptr, ptr, ptr, i32, ptr, double, double, double, double, double, i32, double, double, double, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._generic_N_Vector = type { ptr, ptr, ptr }
%struct._generic_N_Vector_Ops = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.KBBDPrecDataRec = type { i64, i64, i64, i64, double, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, ptr }
%struct._generic_SUNMatrix = type { ptr, ptr, ptr }
%struct._generic_SUNMatrix_Ops = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._generic_SUNLinearSolver = type { ptr, ptr, ptr }
%struct._generic_SUNLinearSolver_Ops = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.KINLsMemRec = type { i32, i32, i32, ptr, ptr, ptr, ptr, double, i64, i64, i64, i64, i64, i64, i64, i32, i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [51 x i8], align 1

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

34:                                               ; preds = %9
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef null, i32 noundef -1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.2)
  store i32 -1, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

35:                                               ; preds = %9
  %36 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %36, ptr %20, align 8, !tbaa !5
  %37 = load ptr, ptr %20, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.KINMemRec, ptr %37, i32 0, i32 79
  %39 = load ptr, ptr %38, align 8, !tbaa !13
  %40 = icmp eq ptr %39, null
  br i1 %40, label %41, label %43

41:                                               ; preds = %35
  %42 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %42, i32 noundef -2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.3)
  store i32 -2, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

43:                                               ; preds = %35
  %44 = load ptr, ptr %20, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.KINMemRec, ptr %44, i32 0, i32 79
  %46 = load ptr, ptr %45, align 8, !tbaa !13
  store ptr %46, ptr %21, align 8, !tbaa !5
  %47 = load ptr, ptr %20, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.KINMemRec, ptr %47, i32 0, i32 46
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  %50 = getelementptr inbounds %struct._generic_N_Vector, ptr %49, i32 0, i32 1
  %51 = load ptr, ptr %50, align 8, !tbaa !17
  %52 = getelementptr inbounds %struct._generic_N_Vector_Ops, ptr %51, i32 0, i32 5
  %53 = load ptr, ptr %52, align 8, !tbaa !19
  %54 = icmp eq ptr %53, null
  br i1 %54, label %55, label %57

55:                                               ; preds = %43
  %56 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %56, i32 noundef -3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.4)
  store i32 -3, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

57:                                               ; preds = %43
  store ptr null, ptr %22, align 8, !tbaa !5
  %58 = call noalias ptr @malloc(i64 noundef 152) #6
  store ptr %58, ptr %22, align 8, !tbaa !5
  %59 = load ptr, ptr %22, align 8, !tbaa !5
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %63

61:                                               ; preds = %57
  %62 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %62, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

63:                                               ; preds = %57
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = load ptr, ptr %22, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %65, i32 0, i32 18
  store ptr %64, ptr %66, align 8, !tbaa !21
  %67 = load ptr, ptr %18, align 8, !tbaa !5
  %68 = load ptr, ptr %22, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %68, i32 0, i32 5
  store ptr %67, ptr %69, align 8, !tbaa !23
  %70 = load ptr, ptr %19, align 8, !tbaa !5
  %71 = load ptr, ptr %22, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %71, i32 0, i32 6
  store ptr %70, ptr %72, align 8, !tbaa !24
  %73 = load i64, ptr %12, align 8, !tbaa !9
  %74 = sub nsw i64 %73, 1
  %75 = load i64, ptr %13, align 8, !tbaa !9
  %76 = icmp sgt i64 0, %75
  br i1 %76, label %77, label %78

77:                                               ; preds = %63
  br label %80

78:                                               ; preds = %63
  %79 = load i64, ptr %13, align 8, !tbaa !9
  br label %80

80:                                               ; preds = %78, %77
  %81 = phi i64 [ 0, %77 ], [ %79, %78 ]
  %82 = icmp slt i64 %74, %81
  br i1 %82, label %83, label %86

83:                                               ; preds = %80
  %84 = load i64, ptr %12, align 8, !tbaa !9
  %85 = sub nsw i64 %84, 1
  br label %94

86:                                               ; preds = %80
  %87 = load i64, ptr %13, align 8, !tbaa !9
  %88 = icmp sgt i64 0, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %86
  br label %92

90:                                               ; preds = %86
  %91 = load i64, ptr %13, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %90, %89
  %93 = phi i64 [ 0, %89 ], [ %91, %90 ]
  br label %94

94:                                               ; preds = %92, %83
  %95 = phi i64 [ %85, %83 ], [ %93, %92 ]
  %96 = load ptr, ptr %22, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %96, i32 0, i32 0
  store i64 %95, ptr %97, align 8, !tbaa !25
  %98 = load i64, ptr %12, align 8, !tbaa !9
  %99 = sub nsw i64 %98, 1
  %100 = load i64, ptr %14, align 8, !tbaa !9
  %101 = icmp sgt i64 0, %100
  br i1 %101, label %102, label %103

102:                                              ; preds = %94
  br label %105

103:                                              ; preds = %94
  %104 = load i64, ptr %14, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %103, %102
  %106 = phi i64 [ 0, %102 ], [ %104, %103 ]
  %107 = icmp slt i64 %99, %106
  br i1 %107, label %108, label %111

108:                                              ; preds = %105
  %109 = load i64, ptr %12, align 8, !tbaa !9
  %110 = sub nsw i64 %109, 1
  br label %119

111:                                              ; preds = %105
  %112 = load i64, ptr %14, align 8, !tbaa !9
  %113 = icmp sgt i64 0, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %111
  br label %117

115:                                              ; preds = %111
  %116 = load i64, ptr %14, align 8, !tbaa !9
  br label %117

117:                                              ; preds = %115, %114
  %118 = phi i64 [ 0, %114 ], [ %116, %115 ]
  br label %119

119:                                              ; preds = %117, %108
  %120 = phi i64 [ %110, %108 ], [ %118, %117 ]
  %121 = load ptr, ptr %22, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %121, i32 0, i32 1
  store i64 %120, ptr %122, align 8, !tbaa !26
  %123 = load i64, ptr %12, align 8, !tbaa !9
  %124 = sub nsw i64 %123, 1
  %125 = load i64, ptr %15, align 8, !tbaa !9
  %126 = icmp sgt i64 0, %125
  br i1 %126, label %127, label %128

127:                                              ; preds = %119
  br label %130

128:                                              ; preds = %119
  %129 = load i64, ptr %15, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %128, %127
  %131 = phi i64 [ 0, %127 ], [ %129, %128 ]
  %132 = icmp slt i64 %124, %131
  br i1 %132, label %133, label %136

133:                                              ; preds = %130
  %134 = load i64, ptr %12, align 8, !tbaa !9
  %135 = sub nsw i64 %134, 1
  br label %144

136:                                              ; preds = %130
  %137 = load i64, ptr %15, align 8, !tbaa !9
  %138 = icmp sgt i64 0, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %136
  br label %142

140:                                              ; preds = %136
  %141 = load i64, ptr %15, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %140, %139
  %143 = phi i64 [ 0, %139 ], [ %141, %140 ]
  br label %144

144:                                              ; preds = %142, %133
  %145 = phi i64 [ %135, %133 ], [ %143, %142 ]
  store i64 %145, ptr %23, align 8, !tbaa !9
  %146 = load i64, ptr %12, align 8, !tbaa !9
  %147 = sub nsw i64 %146, 1
  %148 = load i64, ptr %16, align 8, !tbaa !9
  %149 = icmp sgt i64 0, %148
  br i1 %149, label %150, label %151

150:                                              ; preds = %144
  br label %153

151:                                              ; preds = %144
  %152 = load i64, ptr %16, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %151, %150
  %154 = phi i64 [ 0, %150 ], [ %152, %151 ]
  %155 = icmp slt i64 %147, %154
  br i1 %155, label %156, label %159

156:                                              ; preds = %153
  %157 = load i64, ptr %12, align 8, !tbaa !9
  %158 = sub nsw i64 %157, 1
  br label %167

159:                                              ; preds = %153
  %160 = load i64, ptr %16, align 8, !tbaa !9
  %161 = icmp sgt i64 0, %160
  br i1 %161, label %162, label %163

162:                                              ; preds = %159
  br label %165

163:                                              ; preds = %159
  %164 = load i64, ptr %16, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %163, %162
  %166 = phi i64 [ 0, %162 ], [ %164, %163 ]
  br label %167

167:                                              ; preds = %165, %156
  %168 = phi i64 [ %158, %156 ], [ %166, %165 ]
  store i64 %168, ptr %24, align 8, !tbaa !9
  %169 = load i64, ptr %23, align 8, !tbaa !9
  %170 = load ptr, ptr %22, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %170, i32 0, i32 2
  store i64 %169, ptr %171, align 8, !tbaa !27
  %172 = load i64, ptr %24, align 8, !tbaa !9
  %173 = load ptr, ptr %22, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %173, i32 0, i32 3
  store i64 %172, ptr %174, align 8, !tbaa !28
  %175 = load i64, ptr %12, align 8, !tbaa !9
  %176 = sub nsw i64 %175, 1
  %177 = load i64, ptr %23, align 8, !tbaa !9
  %178 = load i64, ptr %24, align 8, !tbaa !9
  %179 = add nsw i64 %177, %178
  %180 = icmp slt i64 %176, %179
  br i1 %180, label %181, label %184

181:                                              ; preds = %167
  %182 = load i64, ptr %12, align 8, !tbaa !9
  %183 = sub nsw i64 %182, 1
  br label %188

184:                                              ; preds = %167
  %185 = load i64, ptr %23, align 8, !tbaa !9
  %186 = load i64, ptr %24, align 8, !tbaa !9
  %187 = add nsw i64 %185, %186
  br label %188

188:                                              ; preds = %184, %181
  %189 = phi i64 [ %183, %181 ], [ %187, %184 ]
  store i64 %189, ptr %25, align 8, !tbaa !9
  %190 = load ptr, ptr %22, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %190, i32 0, i32 8
  store ptr null, ptr %191, align 8, !tbaa !29
  %192 = load i64, ptr %12, align 8, !tbaa !9
  %193 = load i64, ptr %23, align 8, !tbaa !9
  %194 = load i64, ptr %24, align 8, !tbaa !9
  %195 = load i64, ptr %25, align 8, !tbaa !9
  %196 = load ptr, ptr %20, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.KINMemRec, ptr %196, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8, !tbaa !30
  %199 = call ptr @SUNBandMatrixStorage(i64 noundef %192, i64 noundef %193, i64 noundef %194, i64 noundef %195, ptr noundef %198)
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %200, i32 0, i32 8
  store ptr %199, ptr %201, align 8, !tbaa !29
  %202 = load ptr, ptr %22, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %202, i32 0, i32 8
  %204 = load ptr, ptr %203, align 8, !tbaa !29
  %205 = icmp eq ptr %204, null
  br i1 %205, label %206, label %209

206:                                              ; preds = %188
  %207 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %207) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %208 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %208, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

209:                                              ; preds = %188
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %210, i32 0, i32 11
  store ptr null, ptr %211, align 8, !tbaa !31
  %212 = load i64, ptr %12, align 8, !tbaa !9
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.KINMemRec, ptr %213, i32 0, i32 0
  %215 = load ptr, ptr %214, align 8, !tbaa !30
  %216 = call ptr @N_VNew_Serial(i64 noundef %212, ptr noundef %215)
  %217 = load ptr, ptr %22, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %217, i32 0, i32 11
  store ptr %216, ptr %218, align 8, !tbaa !31
  %219 = load ptr, ptr %22, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %219, i32 0, i32 11
  %221 = load ptr, ptr %220, align 8, !tbaa !31
  %222 = icmp eq ptr %221, null
  br i1 %222, label %223, label %229

223:                                              ; preds = %209
  %224 = load ptr, ptr %22, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %224, i32 0, i32 8
  %226 = load ptr, ptr %225, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %226)
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %227) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %228 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %228, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

229:                                              ; preds = %209
  %230 = load ptr, ptr %22, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %230, i32 0, i32 10
  store ptr null, ptr %231, align 8, !tbaa !32
  %232 = load i64, ptr %12, align 8, !tbaa !9
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.KINMemRec, ptr %233, i32 0, i32 0
  %235 = load ptr, ptr %234, align 8, !tbaa !30
  %236 = call ptr @N_VNewEmpty_Serial(i64 noundef %232, ptr noundef %235)
  %237 = load ptr, ptr %22, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %237, i32 0, i32 10
  store ptr %236, ptr %238, align 8, !tbaa !32
  %239 = load ptr, ptr %22, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %239, i32 0, i32 10
  %241 = load ptr, ptr %240, align 8, !tbaa !32
  %242 = icmp eq ptr %241, null
  br i1 %242, label %243, label %252

243:                                              ; preds = %229
  %244 = load ptr, ptr %22, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %244, i32 0, i32 11
  %246 = load ptr, ptr %245, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %246)
  %247 = load ptr, ptr %22, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %247, i32 0, i32 8
  %249 = load ptr, ptr %248, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %249)
  %250 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %250) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %251, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

252:                                              ; preds = %229
  %253 = load ptr, ptr %22, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %253, i32 0, i32 12
  store ptr null, ptr %254, align 8, !tbaa !33
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.KINMemRec, ptr %255, i32 0, i32 46
  %257 = load ptr, ptr %256, align 8, !tbaa !16
  %258 = call ptr @N_VClone(ptr noundef %257)
  %259 = load ptr, ptr %22, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %259, i32 0, i32 12
  store ptr %258, ptr %260, align 8, !tbaa !33
  %261 = load ptr, ptr %22, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %261, i32 0, i32 12
  %263 = load ptr, ptr %262, align 8, !tbaa !33
  %264 = icmp eq ptr %263, null
  br i1 %264, label %265, label %277

265:                                              ; preds = %252
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %266, i32 0, i32 11
  %268 = load ptr, ptr %267, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %268)
  %269 = load ptr, ptr %22, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %269, i32 0, i32 10
  %271 = load ptr, ptr %270, align 8, !tbaa !32
  call void @N_VDestroy(ptr noundef %271)
  %272 = load ptr, ptr %22, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %272, i32 0, i32 8
  %274 = load ptr, ptr %273, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %274)
  %275 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %275) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %276 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %276, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

277:                                              ; preds = %252
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %278, i32 0, i32 13
  store ptr null, ptr %279, align 8, !tbaa !34
  %280 = load ptr, ptr %20, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.KINMemRec, ptr %280, i32 0, i32 46
  %282 = load ptr, ptr %281, align 8, !tbaa !16
  %283 = call ptr @N_VClone(ptr noundef %282)
  %284 = load ptr, ptr %22, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %284, i32 0, i32 13
  store ptr %283, ptr %285, align 8, !tbaa !34
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %286, i32 0, i32 13
  %288 = load ptr, ptr %287, align 8, !tbaa !34
  %289 = icmp eq ptr %288, null
  br i1 %289, label %290, label %305

290:                                              ; preds = %277
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %291, i32 0, i32 11
  %293 = load ptr, ptr %292, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %293)
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %294, i32 0, i32 10
  %296 = load ptr, ptr %295, align 8, !tbaa !32
  call void @N_VDestroy(ptr noundef %296)
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %297, i32 0, i32 12
  %299 = load ptr, ptr %298, align 8, !tbaa !33
  call void @N_VDestroy(ptr noundef %299)
  %300 = load ptr, ptr %22, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %300, i32 0, i32 8
  %302 = load ptr, ptr %301, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %302)
  %303 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %303) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %304, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

305:                                              ; preds = %277
  %306 = load ptr, ptr %22, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %306, i32 0, i32 14
  store ptr null, ptr %307, align 8, !tbaa !35
  %308 = load ptr, ptr %20, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.KINMemRec, ptr %308, i32 0, i32 46
  %310 = load ptr, ptr %309, align 8, !tbaa !16
  %311 = call ptr @N_VClone(ptr noundef %310)
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %312, i32 0, i32 14
  store ptr %311, ptr %313, align 8, !tbaa !35
  %314 = load ptr, ptr %22, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %314, i32 0, i32 14
  %316 = load ptr, ptr %315, align 8, !tbaa !35
  %317 = icmp eq ptr %316, null
  br i1 %317, label %318, label %336

318:                                              ; preds = %305
  %319 = load ptr, ptr %22, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %319, i32 0, i32 11
  %321 = load ptr, ptr %320, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %321)
  %322 = load ptr, ptr %22, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %322, i32 0, i32 10
  %324 = load ptr, ptr %323, align 8, !tbaa !32
  call void @N_VDestroy(ptr noundef %324)
  %325 = load ptr, ptr %22, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %325, i32 0, i32 12
  %327 = load ptr, ptr %326, align 8, !tbaa !33
  call void @N_VDestroy(ptr noundef %327)
  %328 = load ptr, ptr %22, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %328, i32 0, i32 13
  %330 = load ptr, ptr %329, align 8, !tbaa !34
  call void @N_VDestroy(ptr noundef %330)
  %331 = load ptr, ptr %22, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %331, i32 0, i32 8
  %333 = load ptr, ptr %332, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %333)
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %334) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %335, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

336:                                              ; preds = %305
  %337 = load ptr, ptr %22, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %337, i32 0, i32 9
  store ptr null, ptr %338, align 8, !tbaa !36
  %339 = load ptr, ptr %22, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %339, i32 0, i32 11
  %341 = load ptr, ptr %340, align 8, !tbaa !31
  %342 = load ptr, ptr %22, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %342, i32 0, i32 8
  %344 = load ptr, ptr %343, align 8, !tbaa !29
  %345 = load ptr, ptr %20, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.KINMemRec, ptr %345, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8, !tbaa !30
  %348 = call ptr @SUNLinSol_Band(ptr noundef %341, ptr noundef %344, ptr noundef %347)
  %349 = load ptr, ptr %22, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %349, i32 0, i32 9
  store ptr %348, ptr %350, align 8, !tbaa !36
  %351 = load ptr, ptr %22, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %351, i32 0, i32 9
  %353 = load ptr, ptr %352, align 8, !tbaa !36
  %354 = icmp eq ptr %353, null
  br i1 %354, label %355, label %376

355:                                              ; preds = %336
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %356, i32 0, i32 11
  %358 = load ptr, ptr %357, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %358)
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %359, i32 0, i32 10
  %361 = load ptr, ptr %360, align 8, !tbaa !32
  call void @N_VDestroy(ptr noundef %361)
  %362 = load ptr, ptr %22, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %362, i32 0, i32 12
  %364 = load ptr, ptr %363, align 8, !tbaa !33
  call void @N_VDestroy(ptr noundef %364)
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %365, i32 0, i32 13
  %367 = load ptr, ptr %366, align 8, !tbaa !34
  call void @N_VDestroy(ptr noundef %367)
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %368, i32 0, i32 14
  %370 = load ptr, ptr %369, align 8, !tbaa !35
  call void @N_VDestroy(ptr noundef %370)
  %371 = load ptr, ptr %22, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %371, i32 0, i32 8
  %373 = load ptr, ptr %372, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %373)
  %374 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %374) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %375 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %375, i32 noundef -4, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.5)
  store i32 -4, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

376:                                              ; preds = %336
  %377 = load ptr, ptr %22, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %377, i32 0, i32 9
  %379 = load ptr, ptr %378, align 8, !tbaa !36
  %380 = call i32 @SUNLinSolInitialize(ptr noundef %379)
  store i32 %380, ptr %30, align 4, !tbaa !37
  %381 = load i32, ptr %30, align 4, !tbaa !37
  %382 = icmp ne i32 %381, 0
  br i1 %382, label %383, label %408

383:                                              ; preds = %376
  %384 = load ptr, ptr %22, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %384, i32 0, i32 11
  %386 = load ptr, ptr %385, align 8, !tbaa !31
  call void @N_VDestroy(ptr noundef %386)
  %387 = load ptr, ptr %22, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %387, i32 0, i32 10
  %389 = load ptr, ptr %388, align 8, !tbaa !32
  call void @N_VDestroy(ptr noundef %389)
  %390 = load ptr, ptr %22, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %390, i32 0, i32 12
  %392 = load ptr, ptr %391, align 8, !tbaa !33
  call void @N_VDestroy(ptr noundef %392)
  %393 = load ptr, ptr %22, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %393, i32 0, i32 13
  %395 = load ptr, ptr %394, align 8, !tbaa !34
  call void @N_VDestroy(ptr noundef %395)
  %396 = load ptr, ptr %22, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %396, i32 0, i32 14
  %398 = load ptr, ptr %397, align 8, !tbaa !35
  call void @N_VDestroy(ptr noundef %398)
  %399 = load ptr, ptr %22, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %399, i32 0, i32 8
  %401 = load ptr, ptr %400, align 8, !tbaa !29
  call void @SUNMatDestroy(ptr noundef %401)
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %402, i32 0, i32 9
  %404 = load ptr, ptr %403, align 8, !tbaa !36
  %405 = call i32 @SUNLinSolFree(ptr noundef %404)
  %406 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %406) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  %407 = load ptr, ptr %20, align 8, !tbaa !5
  call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef %407, i32 noundef -8, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.6)
  store i32 -8, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

408:                                              ; preds = %376
  %409 = load double, ptr %17, align 8, !tbaa !11
  %410 = fcmp ogt double %409, 0.000000e+00
  br i1 %410, label %411, label %413

411:                                              ; preds = %408
  %412 = load double, ptr %17, align 8, !tbaa !11
  br label %426

413:                                              ; preds = %408
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.KINMemRec, ptr %414, i32 0, i32 1
  %416 = load double, ptr %415, align 8, !tbaa !38
  %417 = fcmp ole double %416, 0.000000e+00
  br i1 %417, label %418, label %419

418:                                              ; preds = %413
  br label %424

419:                                              ; preds = %413
  %420 = load ptr, ptr %20, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.KINMemRec, ptr %420, i32 0, i32 1
  %422 = load double, ptr %421, align 8, !tbaa !38
  %423 = call double @sqrt(double noundef %422) #5
  br label %424

424:                                              ; preds = %419, %418
  %425 = phi double [ 0.000000e+00, %418 ], [ %423, %419 ]
  br label %426

426:                                              ; preds = %424, %411
  %427 = phi double [ %412, %411 ], [ %425, %424 ]
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %428, i32 0, i32 4
  store double %427, ptr %429, align 8, !tbaa !39
  %430 = load i64, ptr %12, align 8, !tbaa !9
  %431 = load ptr, ptr %22, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %431, i32 0, i32 7
  store i64 %430, ptr %432, align 8, !tbaa !40
  %433 = load ptr, ptr %22, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %433, i32 0, i32 15
  store i64 0, ptr %434, align 8, !tbaa !41
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %435, i32 0, i32 16
  store i64 0, ptr %436, align 8, !tbaa !42
  %437 = load ptr, ptr %20, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.KINMemRec, ptr %437, i32 0, i32 46
  %439 = load ptr, ptr %438, align 8, !tbaa !16
  %440 = getelementptr inbounds %struct._generic_N_Vector, ptr %439, i32 0, i32 1
  %441 = load ptr, ptr %440, align 8, !tbaa !17
  %442 = getelementptr inbounds %struct._generic_N_Vector_Ops, ptr %441, i32 0, i32 4
  %443 = load ptr, ptr %442, align 8, !tbaa !43
  %444 = icmp ne ptr %443, null
  br i1 %444, label %445, label %461

445:                                              ; preds = %426
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.KINMemRec, ptr %446, i32 0, i32 46
  %448 = load ptr, ptr %447, align 8, !tbaa !16
  call void @N_VSpace(ptr noundef %448, ptr noundef %26, ptr noundef %27)
  %449 = load i64, ptr %26, align 8, !tbaa !9
  %450 = mul nsw i64 3, %449
  %451 = load ptr, ptr %22, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %451, i32 0, i32 15
  %453 = load i64, ptr %452, align 8, !tbaa !41
  %454 = add nsw i64 %453, %450
  store i64 %454, ptr %452, align 8, !tbaa !41
  %455 = load i64, ptr %27, align 8, !tbaa !9
  %456 = mul nsw i64 3, %455
  %457 = load ptr, ptr %22, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %457, i32 0, i32 16
  %459 = load i64, ptr %458, align 8, !tbaa !42
  %460 = add nsw i64 %459, %456
  store i64 %460, ptr %458, align 8, !tbaa !42
  br label %461

461:                                              ; preds = %445, %426
  %462 = load ptr, ptr %22, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %462, i32 0, i32 11
  %464 = load ptr, ptr %463, align 8, !tbaa !31
  %465 = getelementptr inbounds %struct._generic_N_Vector, ptr %464, i32 0, i32 1
  %466 = load ptr, ptr %465, align 8, !tbaa !17
  %467 = getelementptr inbounds %struct._generic_N_Vector_Ops, ptr %466, i32 0, i32 4
  %468 = load ptr, ptr %467, align 8, !tbaa !43
  %469 = icmp ne ptr %468, null
  br i1 %469, label %470, label %484

470:                                              ; preds = %461
  %471 = load ptr, ptr %22, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %471, i32 0, i32 11
  %473 = load ptr, ptr %472, align 8, !tbaa !31
  call void @N_VSpace(ptr noundef %473, ptr noundef %26, ptr noundef %27)
  %474 = load i64, ptr %26, align 8, !tbaa !9
  %475 = load ptr, ptr %22, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %475, i32 0, i32 15
  %477 = load i64, ptr %476, align 8, !tbaa !41
  %478 = add nsw i64 %477, %474
  store i64 %478, ptr %476, align 8, !tbaa !41
  %479 = load i64, ptr %27, align 8, !tbaa !9
  %480 = load ptr, ptr %22, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %480, i32 0, i32 16
  %482 = load i64, ptr %481, align 8, !tbaa !42
  %483 = add nsw i64 %482, %479
  store i64 %483, ptr %481, align 8, !tbaa !42
  br label %484

484:                                              ; preds = %470, %461
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %485, i32 0, i32 10
  %487 = load ptr, ptr %486, align 8, !tbaa !32
  %488 = getelementptr inbounds %struct._generic_N_Vector, ptr %487, i32 0, i32 1
  %489 = load ptr, ptr %488, align 8, !tbaa !17
  %490 = getelementptr inbounds %struct._generic_N_Vector_Ops, ptr %489, i32 0, i32 4
  %491 = load ptr, ptr %490, align 8, !tbaa !43
  %492 = icmp ne ptr %491, null
  br i1 %492, label %493, label %507

493:                                              ; preds = %484
  %494 = load ptr, ptr %22, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %494, i32 0, i32 10
  %496 = load ptr, ptr %495, align 8, !tbaa !32
  call void @N_VSpace(ptr noundef %496, ptr noundef %26, ptr noundef %27)
  %497 = load i64, ptr %26, align 8, !tbaa !9
  %498 = load ptr, ptr %22, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %498, i32 0, i32 15
  %500 = load i64, ptr %499, align 8, !tbaa !41
  %501 = add nsw i64 %500, %497
  store i64 %501, ptr %499, align 8, !tbaa !41
  %502 = load i64, ptr %27, align 8, !tbaa !9
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %503, i32 0, i32 16
  %505 = load i64, ptr %504, align 8, !tbaa !42
  %506 = add nsw i64 %505, %502
  store i64 %506, ptr %504, align 8, !tbaa !42
  br label %507

507:                                              ; preds = %493, %484
  %508 = load ptr, ptr %22, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %508, i32 0, i32 8
  %510 = load ptr, ptr %509, align 8, !tbaa !29
  %511 = getelementptr inbounds %struct._generic_SUNMatrix, ptr %510, i32 0, i32 1
  %512 = load ptr, ptr %511, align 8, !tbaa !44
  %513 = getelementptr inbounds %struct._generic_SUNMatrix_Ops, ptr %512, i32 0, i32 9
  %514 = load ptr, ptr %513, align 8, !tbaa !46
  %515 = icmp ne ptr %514, null
  br i1 %515, label %516, label %531

516:                                              ; preds = %507
  %517 = load ptr, ptr %22, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %517, i32 0, i32 8
  %519 = load ptr, ptr %518, align 8, !tbaa !29
  %520 = call i32 @SUNMatSpace(ptr noundef %519, ptr noundef %28, ptr noundef %29)
  store i32 %520, ptr %30, align 4, !tbaa !37
  %521 = load i64, ptr %28, align 8, !tbaa !9
  %522 = load ptr, ptr %22, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %522, i32 0, i32 15
  %524 = load i64, ptr %523, align 8, !tbaa !41
  %525 = add nsw i64 %524, %521
  store i64 %525, ptr %523, align 8, !tbaa !41
  %526 = load i64, ptr %29, align 8, !tbaa !9
  %527 = load ptr, ptr %22, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %527, i32 0, i32 16
  %529 = load i64, ptr %528, align 8, !tbaa !42
  %530 = add nsw i64 %529, %526
  store i64 %530, ptr %528, align 8, !tbaa !42
  br label %531

531:                                              ; preds = %516, %507
  %532 = load ptr, ptr %22, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %532, i32 0, i32 9
  %534 = load ptr, ptr %533, align 8, !tbaa !36
  %535 = getelementptr inbounds %struct._generic_SUNLinearSolver, ptr %534, i32 0, i32 1
  %536 = load ptr, ptr %535, align 8, !tbaa !48
  %537 = getelementptr inbounds %struct._generic_SUNLinearSolver_Ops, ptr %536, i32 0, i32 12
  %538 = load ptr, ptr %537, align 8, !tbaa !50
  %539 = icmp ne ptr %538, null
  br i1 %539, label %540, label %555

540:                                              ; preds = %531
  %541 = load ptr, ptr %22, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %541, i32 0, i32 9
  %543 = load ptr, ptr %542, align 8, !tbaa !36
  %544 = call i32 @SUNLinSolSpace(ptr noundef %543, ptr noundef %28, ptr noundef %29)
  store i32 %544, ptr %30, align 4, !tbaa !37
  %545 = load i64, ptr %28, align 8, !tbaa !9
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %546, i32 0, i32 15
  %548 = load i64, ptr %547, align 8, !tbaa !41
  %549 = add nsw i64 %548, %545
  store i64 %549, ptr %547, align 8, !tbaa !41
  %550 = load i64, ptr %29, align 8, !tbaa !9
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %551, i32 0, i32 16
  %553 = load i64, ptr %552, align 8, !tbaa !42
  %554 = add nsw i64 %553, %550
  store i64 %554, ptr %552, align 8, !tbaa !42
  br label %555

555:                                              ; preds = %540, %531
  %556 = load ptr, ptr %22, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.KBBDPrecDataRec, ptr %556, i32 0, i32 17
  store i64 0, ptr %557, align 8, !tbaa !52
  %558 = load ptr, ptr %21, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.KINLsMemRec, ptr %558, i32 0, i32 19
  %560 = load ptr, ptr %559, align 8, !tbaa !53
  %561 = icmp ne ptr %560, null
  br i1 %561, label %562, label %568

562:                                              ; preds = %555
  %563 = load ptr, ptr %21, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.KINLsMemRec, ptr %563, i32 0, i32 19
  %565 = load ptr, ptr %564, align 8, !tbaa !53
  %566 = load ptr, ptr %20, align 8, !tbaa !5
  %567 = call i32 %565(ptr noundef %566)
  br label %568

568:                                              ; preds = %562, %555
  %569 = load ptr, ptr %22, align 8, !tbaa !5
  %570 = load ptr, ptr %21, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.KINLsMemRec, ptr %570, i32 0, i32 20
  store ptr %569, ptr %571, align 8, !tbaa !55
  %572 = load ptr, ptr %21, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.KINLsMemRec, ptr %572, i32 0, i32 19
  store ptr @KINBBDPrecFree, ptr %573, align 8, !tbaa !53
  %574 = load ptr, ptr %11, align 8, !tbaa !5
  %575 = call i32 @KINSetPreconditioner(ptr noundef %574, ptr noundef @KINBBDPrecSetup, ptr noundef @KINBBDPrecSolve)
  store i32 %575, ptr %30, align 4, !tbaa !37
  %576 = load i32, ptr %30, align 4, !tbaa !37
  store i32 %576, ptr %10, align 4
  store i32 1, ptr %31, align 4
  br label %577

577:                                              ; preds = %568, %383, %355, %318, %290, %265, %243, %223, %206, %61, %55, %41, %34
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %578 = load i32, ptr %10, align 4
  ret i32 %578
}

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

declare void @KINProcessError(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ...) #2

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

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

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

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

declare void @SUNMatDestroy(ptr noundef) #2

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

declare void @N_VDestroy(ptr noundef) #2

declare ptr @N_VClone(ptr noundef) #2

declare ptr @SUNLinSol_Band(ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @SUNLinSolInitialize(ptr noundef) #2

declare i32 @SUNLinSolFree(ptr noundef) #2

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecFree(ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecSetup(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecSolve(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; 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 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 #4 = { 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 #5 = { nounwind }
attributes #6 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 584}
!14 = !{!"KINMemRec", !6, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !12, i64 40, !15, i64 48, !15, i64 52, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !15, i64 88, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !15, i64 116, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !15, i64 192, !12, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !15, i64 352, !15, i64 356, !12, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !12, i64 408, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !10, i64 448, !10, i64 456, !15, i64 464, !6, i64 472, !6, i64 480, !15, i64 488, !6, i64 496, !6, i64 504, !10, i64 512, !10, i64 520, !10, i64 528, !10, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568, !15, i64 576, !6, i64 584, !12, i64 592, !12, i64 600, !12, i64 608, !12, i64 616, !12, i64 624, !15, i64 632, !12, i64 640, !12, i64 648, !12, i64 656, !15, i64 664, !6, i64 672, !6, i64 680, !6, i64 688, !6, i64 696, !6, i64 704, !6, i64 712, !6, i64 720}
!15 = !{!"int", !7, i64 0}
!16 = !{!14, !6, i64 328}
!17 = !{!18, !6, i64 8}
!18 = !{!"_generic_N_Vector", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!20, !6, i64 40}
!20 = !{!"_generic_N_Vector_Ops", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !6, i64 432}
!21 = !{!22, !6, i64 144}
!22 = !{!"KBBDPrecDataRec", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !6, i64 144}
!23 = !{!22, !6, i64 40}
!24 = !{!22, !6, i64 48}
!25 = !{!22, !10, i64 0}
!26 = !{!22, !10, i64 8}
!27 = !{!22, !10, i64 16}
!28 = !{!22, !10, i64 24}
!29 = !{!22, !6, i64 64}
!30 = !{!14, !6, i64 0}
!31 = !{!22, !6, i64 88}
!32 = !{!22, !6, i64 80}
!33 = !{!22, !6, i64 96}
!34 = !{!22, !6, i64 104}
!35 = !{!22, !6, i64 112}
!36 = !{!22, !6, i64 72}
!37 = !{!15, !15, i64 0}
!38 = !{!14, !12, i64 8}
!39 = !{!22, !12, i64 32}
!40 = !{!22, !10, i64 56}
!41 = !{!22, !10, i64 120}
!42 = !{!22, !10, i64 128}
!43 = !{!20, !6, i64 32}
!44 = !{!45, !6, i64 8}
!45 = !{!"_generic_SUNMatrix", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!47, !6, i64 72}
!47 = !{!"_generic_SUNMatrix_Ops", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!48 = !{!49, !6, i64 8}
!49 = !{!"_generic_SUNLinearSolver", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!51, !6, i64 96}
!51 = !{!"_generic_SUNLinearSolver_Ops", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112}
!52 = !{!22, !10, i64 136}
!53 = !{!54, !6, i64 136}
!54 = !{!"KINLsMemRec", !15, i64 0, !15, i64 4, !15, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !12, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !15, i64 112, !15, i64 116, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !15, i64 152, !6, i64 160, !6, i64 168, !6, i64 176}
!55 = !{!54, !6, i64 144}


; 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 [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [51 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @KINBBDPrecInit(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, double noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 {
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %14 = icmp eq ptr %0, null
  br i1 %14, label %15, label %16

15:                                               ; preds = %9
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef null, i32 noundef -1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2) #8
  br label %217

16:                                               ; preds = %9
  %17 = getelementptr inbounds i8, ptr %0, i64 584
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %19 = icmp eq ptr %18, null
  br i1 %19, label %20, label %21

20:                                               ; preds = %16
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3) #8
  br label %217

21:                                               ; preds = %16
  %22 = getelementptr inbounds i8, ptr %0, i64 328
  %23 = load ptr, ptr %22, align 8, !tbaa !13
  %24 = getelementptr inbounds i8, ptr %23, i64 8
  %25 = load ptr, ptr %24, align 8, !tbaa !14
  %26 = getelementptr inbounds i8, ptr %25, i64 40
  %27 = load ptr, ptr %26, align 8, !tbaa !16
  %28 = icmp eq ptr %27, null
  br i1 %28, label %29, label %30

29:                                               ; preds = %21
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #8
  br label %217

30:                                               ; preds = %21
  %31 = tail call noalias dereferenceable_or_null(152) ptr @malloc(i64 noundef 152) #9
  %32 = icmp eq ptr %31, null
  br i1 %32, label %33, label %34

33:                                               ; preds = %30
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

34:                                               ; preds = %30
  %35 = getelementptr inbounds i8, ptr %31, i64 144
  store ptr %0, ptr %35, align 8, !tbaa !18
  %36 = getelementptr inbounds i8, ptr %31, i64 40
  store ptr %7, ptr %36, align 8, !tbaa !20
  %37 = getelementptr inbounds i8, ptr %31, i64 48
  store ptr %8, ptr %37, align 8, !tbaa !21
  %38 = add nsw i64 %1, -1
  %39 = tail call i64 @llvm.smax.i64(i64 %2, i64 0)
  %.not = icmp slt i64 %39, %1
  %. = select i1 %.not, i64 %39, i64 %38
  store i64 %., ptr %31, align 8, !tbaa !22
  %40 = tail call i64 @llvm.smax.i64(i64 %3, i64 0)
  %.not184 = icmp slt i64 %40, %1
  %41 = select i1 %.not184, i64 %40, i64 %38
  %42 = getelementptr inbounds i8, ptr %31, i64 8
  store i64 %41, ptr %42, align 8, !tbaa !23
  %43 = tail call i64 @llvm.smax.i64(i64 %4, i64 0)
  %.not185 = icmp slt i64 %43, %1
  %44 = select i1 %.not185, i64 %43, i64 %38
  %45 = tail call i64 @llvm.smax.i64(i64 %5, i64 0)
  %.not186 = icmp slt i64 %45, %1
  %46 = select i1 %.not186, i64 %45, i64 %38
  %47 = getelementptr inbounds i8, ptr %31, i64 16
  store i64 %44, ptr %47, align 8, !tbaa !24
  %48 = getelementptr inbounds i8, ptr %31, i64 24
  store i64 %46, ptr %48, align 8, !tbaa !25
  %49 = add nsw i64 %46, %44
  %.not187 = icmp slt i64 %49, %1
  %50 = select i1 %.not187, i64 %49, i64 %38
  %51 = getelementptr inbounds i8, ptr %31, i64 64
  store ptr null, ptr %51, align 8, !tbaa !26
  %52 = load ptr, ptr %0, align 8, !tbaa !27
  %53 = tail call ptr @SUNBandMatrixStorage(i64 noundef %1, i64 noundef %44, i64 noundef %46, i64 noundef %50, ptr noundef %52) #8
  store ptr %53, ptr %51, align 8, !tbaa !26
  %54 = icmp eq ptr %53, null
  br i1 %54, label %55, label %56

55:                                               ; preds = %34
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

56:                                               ; preds = %34
  %57 = getelementptr inbounds i8, ptr %31, i64 88
  store ptr null, ptr %57, align 8, !tbaa !28
  %58 = load ptr, ptr %0, align 8, !tbaa !27
  %59 = tail call ptr @N_VNew_Serial(i64 noundef %1, ptr noundef %58) #8
  store ptr %59, ptr %57, align 8, !tbaa !28
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %63

61:                                               ; preds = %56
  %62 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %62) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

63:                                               ; preds = %56
  %64 = getelementptr inbounds i8, ptr %31, i64 80
  store ptr null, ptr %64, align 8, !tbaa !29
  %65 = load ptr, ptr %0, align 8, !tbaa !27
  %66 = tail call ptr @N_VNewEmpty_Serial(i64 noundef %1, ptr noundef %65) #8
  store ptr %66, ptr %64, align 8, !tbaa !29
  %67 = icmp eq ptr %66, null
  br i1 %67, label %68, label %71

68:                                               ; preds = %63
  %69 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %69) #8
  %70 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %70) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

71:                                               ; preds = %63
  %72 = getelementptr inbounds i8, ptr %31, i64 96
  store ptr null, ptr %72, align 8, !tbaa !30
  %73 = load ptr, ptr %22, align 8, !tbaa !13
  %74 = tail call ptr @N_VClone(ptr noundef %73) #8
  store ptr %74, ptr %72, align 8, !tbaa !30
  %75 = icmp eq ptr %74, null
  br i1 %75, label %76, label %80

76:                                               ; preds = %71
  %77 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %77) #8
  %78 = load ptr, ptr %64, align 8, !tbaa !29
  tail call void @N_VDestroy(ptr noundef %78) #8
  %79 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %79) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

80:                                               ; preds = %71
  %81 = getelementptr inbounds i8, ptr %31, i64 104
  store ptr null, ptr %81, align 8, !tbaa !31
  %82 = load ptr, ptr %22, align 8, !tbaa !13
  %83 = tail call ptr @N_VClone(ptr noundef %82) #8
  store ptr %83, ptr %81, align 8, !tbaa !31
  %84 = icmp eq ptr %83, null
  br i1 %84, label %85, label %90

85:                                               ; preds = %80
  %86 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %86) #8
  %87 = load ptr, ptr %64, align 8, !tbaa !29
  tail call void @N_VDestroy(ptr noundef %87) #8
  %88 = load ptr, ptr %72, align 8, !tbaa !30
  tail call void @N_VDestroy(ptr noundef %88) #8
  %89 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %89) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

90:                                               ; preds = %80
  %91 = getelementptr inbounds i8, ptr %31, i64 112
  store ptr null, ptr %91, align 8, !tbaa !32
  %92 = load ptr, ptr %22, align 8, !tbaa !13
  %93 = tail call ptr @N_VClone(ptr noundef %92) #8
  store ptr %93, ptr %91, align 8, !tbaa !32
  %94 = icmp eq ptr %93, null
  br i1 %94, label %95, label %101

95:                                               ; preds = %90
  %96 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %96) #8
  %97 = load ptr, ptr %64, align 8, !tbaa !29
  tail call void @N_VDestroy(ptr noundef %97) #8
  %98 = load ptr, ptr %72, align 8, !tbaa !30
  tail call void @N_VDestroy(ptr noundef %98) #8
  %99 = load ptr, ptr %81, align 8, !tbaa !31
  tail call void @N_VDestroy(ptr noundef %99) #8
  %100 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %100) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

101:                                              ; preds = %90
  %102 = getelementptr inbounds i8, ptr %31, i64 72
  store ptr null, ptr %102, align 8, !tbaa !33
  %103 = load ptr, ptr %57, align 8, !tbaa !28
  %104 = load ptr, ptr %51, align 8, !tbaa !26
  %105 = load ptr, ptr %0, align 8, !tbaa !27
  %106 = tail call ptr @SUNLinSol_Band(ptr noundef %103, ptr noundef %104, ptr noundef %105) #8
  store ptr %106, ptr %102, align 8, !tbaa !33
  %107 = icmp eq ptr %106, null
  br i1 %107, label %108, label %115

108:                                              ; preds = %101
  %109 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %109) #8
  %110 = load ptr, ptr %64, align 8, !tbaa !29
  tail call void @N_VDestroy(ptr noundef %110) #8
  %111 = load ptr, ptr %72, align 8, !tbaa !30
  tail call void @N_VDestroy(ptr noundef %111) #8
  %112 = load ptr, ptr %81, align 8, !tbaa !31
  tail call void @N_VDestroy(ptr noundef %112) #8
  %113 = load ptr, ptr %91, align 8, !tbaa !32
  tail call void @N_VDestroy(ptr noundef %113) #8
  %114 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %114) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #8
  br label %217

115:                                              ; preds = %101
  %116 = tail call i32 @SUNLinSolInitialize(ptr noundef nonnull %106) #8
  %.not188 = icmp eq i32 %116, 0
  br i1 %.not188, label %126, label %117

117:                                              ; preds = %115
  %118 = load ptr, ptr %57, align 8, !tbaa !28
  tail call void @N_VDestroy(ptr noundef %118) #8
  %119 = load ptr, ptr %64, align 8, !tbaa !29
  tail call void @N_VDestroy(ptr noundef %119) #8
  %120 = load ptr, ptr %72, align 8, !tbaa !30
  tail call void @N_VDestroy(ptr noundef %120) #8
  %121 = load ptr, ptr %81, align 8, !tbaa !31
  tail call void @N_VDestroy(ptr noundef %121) #8
  %122 = load ptr, ptr %91, align 8, !tbaa !32
  tail call void @N_VDestroy(ptr noundef %122) #8
  %123 = load ptr, ptr %51, align 8, !tbaa !26
  tail call void @SUNMatDestroy(ptr noundef %123) #8
  %124 = load ptr, ptr %102, align 8, !tbaa !33
  %125 = tail call i32 @SUNLinSolFree(ptr noundef %124) #8
  tail call void @free(ptr noundef nonnull %31) #8
  tail call void (ptr, i32, ptr, ptr, ptr, ...) @KINProcessError(ptr noundef nonnull %0, i32 noundef -8, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #8
  br label %217

126:                                              ; preds = %115
  %127 = fcmp ogt double %6, 0.000000e+00
  br i1 %127, label %134, label %128

128:                                              ; preds = %126
  %129 = getelementptr inbounds i8, ptr %0, i64 8
  %130 = load double, ptr %129, align 8, !tbaa !34
  %131 = fcmp ugt double %130, 0.000000e+00
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = tail call double @sqrt(double noundef %130) #8
  br label %134

134:                                              ; preds = %126, %132, %128
  %135 = phi double [ %133, %132 ], [ 0.000000e+00, %128 ], [ %6, %126 ]
  %136 = getelementptr inbounds i8, ptr %31, i64 32
  store double %135, ptr %136, align 8, !tbaa !35
  %137 = getelementptr inbounds i8, ptr %31, i64 56
  store i64 %1, ptr %137, align 8, !tbaa !36
  %138 = getelementptr inbounds i8, ptr %31, i64 120
  %139 = getelementptr inbounds i8, ptr %31, i64 128
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %138, i8 0, i64 16, i1 false)
  %140 = load ptr, ptr %22, align 8, !tbaa !13
  %141 = getelementptr inbounds i8, ptr %140, i64 8
  %142 = load ptr, ptr %141, align 8, !tbaa !14
  %143 = getelementptr inbounds i8, ptr %142, i64 32
  %144 = load ptr, ptr %143, align 8, !tbaa !37
  %.not189 = icmp eq ptr %144, null
  br i1 %.not189, label %154, label %145

145:                                              ; preds = %134
  call void @N_VSpace(ptr noundef nonnull %140, ptr noundef nonnull %10, ptr noundef nonnull %11) #8
  %146 = load i64, ptr %10, align 8, !tbaa !38
  %147 = mul nsw i64 %146, 3
  %148 = load i64, ptr %138, align 8, !tbaa !39
  %149 = add nsw i64 %148, %147
  store i64 %149, ptr %138, align 8, !tbaa !39
  %150 = load i64, ptr %11, align 8, !tbaa !38
  %151 = mul nsw i64 %150, 3
  %152 = load i64, ptr %139, align 8, !tbaa !40
  %153 = add nsw i64 %152, %151
  store i64 %153, ptr %139, align 8, !tbaa !40
  br label %154

154:                                              ; preds = %145, %134
  %155 = load ptr, ptr %57, align 8, !tbaa !28
  %156 = getelementptr inbounds i8, ptr %155, i64 8
  %157 = load ptr, ptr %156, align 8, !tbaa !14
  %158 = getelementptr inbounds i8, ptr %157, i64 32
  %159 = load ptr, ptr %158, align 8, !tbaa !37
  %.not190 = icmp eq ptr %159, null
  br i1 %.not190, label %167, label %160

160:                                              ; preds = %154
  call void @N_VSpace(ptr noundef nonnull %155, ptr noundef nonnull %10, ptr noundef nonnull %11) #8
  %161 = load i64, ptr %10, align 8, !tbaa !38
  %162 = load i64, ptr %138, align 8, !tbaa !39
  %163 = add nsw i64 %162, %161
  store i64 %163, ptr %138, align 8, !tbaa !39
  %164 = load i64, ptr %11, align 8, !tbaa !38
  %165 = load i64, ptr %139, align 8, !tbaa !40
  %166 = add nsw i64 %165, %164
  store i64 %166, ptr %139, align 8, !tbaa !40
  br label %167

167:                                              ; preds = %160, %154
  %168 = load ptr, ptr %64, align 8, !tbaa !29
  %169 = getelementptr inbounds i8, ptr %168, i64 8
  %170 = load ptr, ptr %169, align 8, !tbaa !14
  %171 = getelementptr inbounds i8, ptr %170, i64 32
  %172 = load ptr, ptr %171, align 8, !tbaa !37
  %.not191 = icmp eq ptr %172, null
  br i1 %.not191, label %180, label %173

173:                                              ; preds = %167
  call void @N_VSpace(ptr noundef nonnull %168, ptr noundef nonnull %10, ptr noundef nonnull %11) #8
  %174 = load i64, ptr %10, align 8, !tbaa !38
  %175 = load i64, ptr %138, align 8, !tbaa !39
  %176 = add nsw i64 %175, %174
  store i64 %176, ptr %138, align 8, !tbaa !39
  %177 = load i64, ptr %11, align 8, !tbaa !38
  %178 = load i64, ptr %139, align 8, !tbaa !40
  %179 = add nsw i64 %178, %177
  store i64 %179, ptr %139, align 8, !tbaa !40
  br label %180

180:                                              ; preds = %173, %167
  %181 = load ptr, ptr %51, align 8, !tbaa !26
  %182 = getelementptr inbounds i8, ptr %181, i64 8
  %183 = load ptr, ptr %182, align 8, !tbaa !41
  %184 = getelementptr inbounds i8, ptr %183, i64 72
  %185 = load ptr, ptr %184, align 8, !tbaa !43
  %.not192 = icmp eq ptr %185, null
  br i1 %.not192, label %194, label %186

186:                                              ; preds = %180
  %187 = call i32 @SUNMatSpace(ptr noundef nonnull %181, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %188 = load i64, ptr %12, align 8, !tbaa !38
  %189 = load i64, ptr %138, align 8, !tbaa !39
  %190 = add nsw i64 %189, %188
  store i64 %190, ptr %138, align 8, !tbaa !39
  %191 = load i64, ptr %13, align 8, !tbaa !38
  %192 = load i64, ptr %139, align 8, !tbaa !40
  %193 = add nsw i64 %192, %191
  store i64 %193, ptr %139, align 8, !tbaa !40
  br label %194

194:                                              ; preds = %186, %180
  %195 = load ptr, ptr %102, align 8, !tbaa !33
  %196 = getelementptr inbounds i8, ptr %195, i64 8
  %197 = load ptr, ptr %196, align 8, !tbaa !45
  %198 = getelementptr inbounds i8, ptr %197, i64 96
  %199 = load ptr, ptr %198, align 8, !tbaa !47
  %.not193 = icmp eq ptr %199, null
  br i1 %.not193, label %208, label %200

200:                                              ; preds = %194
  %201 = call i32 @SUNLinSolSpace(ptr noundef nonnull %195, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %202 = load i64, ptr %12, align 8, !tbaa !38
  %203 = load i64, ptr %138, align 8, !tbaa !39
  %204 = add nsw i64 %203, %202
  store i64 %204, ptr %138, align 8, !tbaa !39
  %205 = load i64, ptr %13, align 8, !tbaa !38
  %206 = load i64, ptr %139, align 8, !tbaa !40
  %207 = add nsw i64 %206, %205
  store i64 %207, ptr %139, align 8, !tbaa !40
  br label %208

208:                                              ; preds = %200, %194
  %209 = getelementptr inbounds i8, ptr %31, i64 136
  store i64 0, ptr %209, align 8, !tbaa !49
  %210 = getelementptr inbounds i8, ptr %18, i64 136
  %211 = load ptr, ptr %210, align 8, !tbaa !50
  %.not194 = icmp eq ptr %211, null
  br i1 %.not194, label %214, label %212

212:                                              ; preds = %208
  %213 = call i32 %211(ptr noundef nonnull %0) #8
  br label %214

214:                                              ; preds = %212, %208
  %215 = getelementptr inbounds i8, ptr %18, i64 144
  store ptr %31, ptr %215, align 8, !tbaa !52
  store ptr @KINBBDPrecFree, ptr %210, align 8, !tbaa !50
  %216 = call i32 @KINSetPreconditioner(ptr noundef nonnull %0, ptr noundef nonnull @KINBBDPrecSetup, ptr noundef nonnull @KINBBDPrecSolve) #8
  br label %217

217:                                              ; preds = %214, %117, %108, %95, %85, %76, %68, %61, %55, %33, %29, %20, %15
  %.0 = phi i32 [ -1, %15 ], [ -2, %20 ], [ -3, %29 ], [ -4, %33 ], [ -4, %55 ], [ -4, %61 ], [ -4, %68 ], [ -4, %76 ], [ -4, %85 ], [ -4, %95 ], [ -4, %108 ], [ -8, %117 ], [ %216, %214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  ret i32 %.0
}

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

declare void @KINProcessError(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

; 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 ptr @SUNBandMatrixStorage(i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @SUNMatDestroy(ptr noundef) local_unnamed_addr #2

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

declare void @N_VDestroy(ptr noundef) local_unnamed_addr #2

declare ptr @N_VClone(ptr noundef) local_unnamed_addr #2

declare ptr @SUNLinSol_Band(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @SUNLinSolInitialize(ptr noundef) local_unnamed_addr #2

declare i32 @SUNLinSolFree(ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecFree(ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecSetup(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @KINBBDPrecSolve(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn 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 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { 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, !7, i64 584}
!6 = !{!"KINMemRec", !7, i64 0, !10, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 40, !11, i64 48, !11, i64 52, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !11, i64 192, !10, i64 200, !12, i64 208, !12, i64 216, !12, i64 224, !12, i64 232, !12, i64 240, !12, i64 248, !12, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !11, i64 352, !11, i64 356, !10, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !10, i64 408, !7, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !12, i64 448, !12, i64 456, !11, i64 464, !7, i64 472, !7, i64 480, !11, i64 488, !7, i64 496, !7, i64 504, !12, i64 512, !12, i64 520, !12, i64 528, !12, i64 536, !7, i64 544, !7, i64 552, !7, i64 560, !7, i64 568, !11, i64 576, !7, i64 584, !10, i64 592, !10, i64 600, !10, i64 608, !10, i64 616, !10, i64 624, !11, i64 632, !10, i64 640, !10, i64 648, !10, i64 656, !11, i64 664, !7, i64 672, !7, i64 680, !7, i64 688, !7, i64 696, !7, i64 704, !7, i64 712, !7, i64 720}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!6, !7, i64 328}
!14 = !{!15, !7, i64 8}
!15 = !{!"_generic_N_Vector", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!17, !7, i64 40}
!17 = !{!"_generic_N_Vector_Ops", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !7, i64 432}
!18 = !{!19, !7, i64 144}
!19 = !{!"KBBDPrecDataRec", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !10, i64 32, !7, i64 40, !7, i64 48, !12, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !7, i64 144}
!20 = !{!19, !7, i64 40}
!21 = !{!19, !7, i64 48}
!22 = !{!19, !12, i64 0}
!23 = !{!19, !12, i64 8}
!24 = !{!19, !12, i64 16}
!25 = !{!19, !12, i64 24}
!26 = !{!19, !7, i64 64}
!27 = !{!6, !7, i64 0}
!28 = !{!19, !7, i64 88}
!29 = !{!19, !7, i64 80}
!30 = !{!19, !7, i64 96}
!31 = !{!19, !7, i64 104}
!32 = !{!19, !7, i64 112}
!33 = !{!19, !7, i64 72}
!34 = !{!6, !10, i64 8}
!35 = !{!19, !10, i64 32}
!36 = !{!19, !12, i64 56}
!37 = !{!17, !7, i64 32}
!38 = !{!12, !12, i64 0}
!39 = !{!19, !12, i64 120}
!40 = !{!19, !12, i64 128}
!41 = !{!42, !7, i64 8}
!42 = !{!"_generic_SUNMatrix", !7, i64 0, !7, i64 8, !7, i64 16}
!43 = !{!44, !7, i64 72}
!44 = !{!"_generic_SUNMatrix_Ops", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72}
!45 = !{!46, !7, i64 8}
!46 = !{!"_generic_SUNLinearSolver", !7, i64 0, !7, i64 8, !7, i64 16}
!47 = !{!48, !7, i64 96}
!48 = !{!"_generic_SUNLinearSolver_Ops", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112}
!49 = !{!19, !12, i64 136}
!50 = !{!51, !7, i64 136}
!51 = !{!"KINLsMemRec", !11, i64 0, !11, i64 4, !11, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !11, i64 112, !11, i64 116, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !11, i64 152, !7, i64 160, !7, i64 168, !7, i64 176}
!52 = !{!51, !7, i64 144}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass