; LLVM IR from robotic-vision-lab/Cloud-Object-Recognition-Engine :: 3rdparty/libsvm/svm.ll (Z17read_model_headerP8_IO_FILEP9svm_model)

; 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.svm_model = type { %struct.svm_parameter, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32 }
%struct.svm_parameter = type { i32, i32, i32, double, double, double, double, double, i32, ptr, ptr, double, double, i32, i32 }

@stderr = external global ptr, align 8
@_ZL14svm_type_table = external hidden global [6 x ptr], align 16
@_ZL17kernel_type_table = external hidden global [6 x ptr], align 16
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z17read_model_headerP8_IO_FILEP9svm_model(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca [81 x i8], align 16
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  %22 = load ptr, ptr %5, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.svm_model, ptr %22, i32 0, i32 0
  store ptr %23, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 81, ptr %7) #6
  br label %24

24:                                               ; preds = %475, %2
  br label %25

25:                                               ; preds = %24
  br label %26

26:                                               ; preds = %25
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %29 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %27, ptr noundef @.str.31, ptr noundef %28)
  %30 = icmp ne i32 %29, 1
  br i1 %30, label %31, label %32

31:                                               ; preds = %26
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

32:                                               ; preds = %26
  br label %33

33:                                               ; preds = %32
  br label %34

34:                                               ; preds = %33
  %35 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %36 = call i32 @strcmp(ptr noundef %35, ptr noundef @.str.32) #7
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %38, label %83

38:                                               ; preds = %34
  br label %39

39:                                               ; preds = %38
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %42 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %40, ptr noundef @.str.31, ptr noundef %41)
  %43 = icmp ne i32 %42, 1
  br i1 %43, label %44, label %45

44:                                               ; preds = %39
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

45:                                               ; preds = %39
  br label %46

46:                                               ; preds = %45
  br label %47

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %48

48:                                               ; preds = %67, %47
  %49 = load i32, ptr %9, align 4, !tbaa !9
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds [6 x ptr], ptr @_ZL14svm_type_table, i64 0, i64 %50
  %52 = load ptr, ptr %51, align 8, !tbaa !5
  %53 = icmp ne ptr %52, null
  br i1 %53, label %54, label %70

54:                                               ; preds = %48
  %55 = load i32, ptr %9, align 4, !tbaa !9
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds [6 x ptr], ptr @_ZL14svm_type_table, i64 0, i64 %56
  %58 = load ptr, ptr %57, align 8, !tbaa !5
  %59 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %60 = call i32 @strcmp(ptr noundef %58, ptr noundef %59) #7
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %62, label %66

62:                                               ; preds = %54
  %63 = load i32, ptr %9, align 4, !tbaa !9
  %64 = load ptr, ptr %6, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.svm_parameter, ptr %64, i32 0, i32 0
  store i32 %63, ptr %65, align 8, !tbaa !11
  br label %70

66:                                               ; preds = %54
  br label %67

67:                                               ; preds = %66
  %68 = load i32, ptr %9, align 4, !tbaa !9
  %69 = add nsw i32 %68, 1
  store i32 %69, ptr %9, align 4, !tbaa !9
  br label %48, !llvm.loop !14

70:                                               ; preds = %62, %48
  %71 = load i32, ptr %9, align 4, !tbaa !9
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds [6 x ptr], ptr @_ZL14svm_type_table, i64 0, i64 %72
  %74 = load ptr, ptr %73, align 8, !tbaa !5
  %75 = icmp eq ptr %74, null
  br i1 %75, label %76, label %79

76:                                               ; preds = %70
  %77 = load ptr, ptr @stderr, align 8, !tbaa !5
  %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str.33) #6
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %80

79:                                               ; preds = %70
  store i32 0, ptr %8, align 4
  br label %80

80:                                               ; preds = %79, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  %81 = load i32, ptr %8, align 4
  switch i32 %81, label %477 [
    i32 0, label %82
  ]

82:                                               ; preds = %80
  br label %475

83:                                               ; preds = %34
  %84 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %85 = call i32 @strcmp(ptr noundef %84, ptr noundef @.str.34) #7
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %132

87:                                               ; preds = %83
  br label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %91 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %89, ptr noundef @.str.31, ptr noundef %90)
  %92 = icmp ne i32 %91, 1
  br i1 %92, label %93, label %94

93:                                               ; preds = %88
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

94:                                               ; preds = %88
  br label %95

95:                                               ; preds = %94
  br label %96

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %116, %96
  %98 = load i32, ptr %10, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds [6 x ptr], ptr @_ZL17kernel_type_table, i64 0, i64 %99
  %101 = load ptr, ptr %100, align 8, !tbaa !5
  %102 = icmp ne ptr %101, null
  br i1 %102, label %103, label %119

103:                                              ; preds = %97
  %104 = load i32, ptr %10, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds [6 x ptr], ptr @_ZL17kernel_type_table, i64 0, i64 %105
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  %108 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %109 = call i32 @strcmp(ptr noundef %107, ptr noundef %108) #7
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %115

111:                                              ; preds = %103
  %112 = load i32, ptr %10, align 4, !tbaa !9
  %113 = load ptr, ptr %6, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.svm_parameter, ptr %113, i32 0, i32 1
  store i32 %112, ptr %114, align 4, !tbaa !16
  br label %119

115:                                              ; preds = %103
  br label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %10, align 4, !tbaa !9
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %10, align 4, !tbaa !9
  br label %97, !llvm.loop !17

119:                                              ; preds = %111, %97
  %120 = load i32, ptr %10, align 4, !tbaa !9
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds [6 x ptr], ptr @_ZL17kernel_type_table, i64 0, i64 %121
  %123 = load ptr, ptr %122, align 8, !tbaa !5
  %124 = icmp eq ptr %123, null
  br i1 %124, label %125, label %128

125:                                              ; preds = %119
  %126 = load ptr, ptr @stderr, align 8, !tbaa !5
  %127 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %126, ptr noundef @.str.35) #6
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %129

128:                                              ; preds = %119
  store i32 0, ptr %8, align 4
  br label %129

129:                                              ; preds = %128, %125
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  %130 = load i32, ptr %8, align 4
  switch i32 %130, label %477 [
    i32 0, label %131
  ]

131:                                              ; preds = %129
  br label %474

132:                                              ; preds = %83
  %133 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %134 = call i32 @strcmp(ptr noundef %133, ptr noundef @.str.36) #7
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %147

136:                                              ; preds = %132
  br label %137

137:                                              ; preds = %136
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.svm_parameter, ptr %139, i32 0, i32 2
  %141 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %138, ptr noundef @.str.37, ptr noundef %140)
  %142 = icmp ne i32 %141, 1
  br i1 %142, label %143, label %144

143:                                              ; preds = %137
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

144:                                              ; preds = %137
  br label %145

145:                                              ; preds = %144
  br label %146

146:                                              ; preds = %145
  br label %473

147:                                              ; preds = %132
  %148 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %149 = call i32 @strcmp(ptr noundef %148, ptr noundef @.str.38) #7
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %162

151:                                              ; preds = %147
  br label %152

152:                                              ; preds = %151
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.svm_parameter, ptr %154, i32 0, i32 3
  %156 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %153, ptr noundef @.str.39, ptr noundef %155)
  %157 = icmp ne i32 %156, 1
  br i1 %157, label %158, label %159

158:                                              ; preds = %152
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

159:                                              ; preds = %152
  br label %160

160:                                              ; preds = %159
  br label %161

161:                                              ; preds = %160
  br label %472

162:                                              ; preds = %147
  %163 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %164 = call i32 @strcmp(ptr noundef %163, ptr noundef @.str.40) #7
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %177

166:                                              ; preds = %162
  br label %167

167:                                              ; preds = %166
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.svm_parameter, ptr %169, i32 0, i32 4
  %171 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %168, ptr noundef @.str.39, ptr noundef %170)
  %172 = icmp ne i32 %171, 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

174:                                              ; preds = %167
  br label %175

175:                                              ; preds = %174
  br label %176

176:                                              ; preds = %175
  br label %471

177:                                              ; preds = %162
  %178 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %179 = call i32 @strcmp(ptr noundef %178, ptr noundef @.str.41) #7
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %192

181:                                              ; preds = %177
  br label %182

182:                                              ; preds = %181
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.svm_model, ptr %184, i32 0, i32 1
  %186 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %183, ptr noundef @.str.37, ptr noundef %185)
  %187 = icmp ne i32 %186, 1
  br i1 %187, label %188, label %189

188:                                              ; preds = %182
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

189:                                              ; preds = %182
  br label %190

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %190
  br label %470

192:                                              ; preds = %177
  %193 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %194 = call i32 @strcmp(ptr noundef %193, ptr noundef @.str.42) #7
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %196, label %207

196:                                              ; preds = %192
  br label %197

197:                                              ; preds = %196
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.svm_model, ptr %199, i32 0, i32 2
  %201 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %198, ptr noundef @.str.37, ptr noundef %200)
  %202 = icmp ne i32 %201, 1
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

204:                                              ; preds = %197
  br label %205

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205
  br label %469

207:                                              ; preds = %192
  %208 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %209 = call i32 @strcmp(ptr noundef %208, ptr noundef @.str.19) #7
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %256

211:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.svm_model, ptr %212, i32 0, i32 1
  %214 = load i32, ptr %213, align 8, !tbaa !18
  %215 = load ptr, ptr %5, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.svm_model, ptr %215, i32 0, i32 1
  %217 = load i32, ptr %216, align 8, !tbaa !18
  %218 = sub nsw i32 %217, 1
  %219 = mul nsw i32 %214, %218
  %220 = sdiv i32 %219, 2
  store i32 %220, ptr %11, align 4, !tbaa !9
  %221 = load i32, ptr %11, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = mul i64 %222, 8
  %224 = call noalias ptr @malloc(i64 noundef %223) #8
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.svm_model, ptr %225, i32 0, i32 5
  store ptr %224, ptr %226, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %247, %211
  %228 = load i32, ptr %12, align 4, !tbaa !9
  %229 = load i32, ptr %11, align 4, !tbaa !9
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %232, label %231

231:                                              ; preds = %227
  store i32 26, ptr %8, align 4
  br label %250

232:                                              ; preds = %227
  br label %233

233:                                              ; preds = %232
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.svm_model, ptr %235, i32 0, i32 5
  %237 = load ptr, ptr %236, align 8, !tbaa !20
  %238 = load i32, ptr %12, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %237, i64 %239
  %241 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %234, ptr noundef @.str.39, ptr noundef %240)
  %242 = icmp ne i32 %241, 1
  br i1 %242, label %243, label %244

243:                                              ; preds = %233
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %250

244:                                              ; preds = %233
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245
  br label %247

247:                                              ; preds = %246
  %248 = load i32, ptr %12, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %12, align 4, !tbaa !9
  br label %227, !llvm.loop !21

250:                                              ; preds = %243, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  %251 = load i32, ptr %8, align 4
  switch i32 %251, label %253 [
    i32 26, label %252
  ]

252:                                              ; preds = %250
  store i32 0, ptr %8, align 4
  br label %253

253:                                              ; preds = %252, %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  %254 = load i32, ptr %8, align 4
  switch i32 %254, label %477 [
    i32 0, label %255
  ]

255:                                              ; preds = %253
  br label %468

256:                                              ; preds = %207
  %257 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %258 = call i32 @strcmp(ptr noundef %257, ptr noundef @.str.22) #7
  %259 = icmp eq i32 %258, 0
  br i1 %259, label %260, label %299

260:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.svm_model, ptr %261, i32 0, i32 1
  %263 = load i32, ptr %262, align 8, !tbaa !18
  store i32 %263, ptr %13, align 4, !tbaa !9
  %264 = load i32, ptr %13, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = mul i64 %265, 4
  %267 = call noalias ptr @malloc(i64 noundef %266) #8
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.svm_model, ptr %268, i32 0, i32 9
  store ptr %267, ptr %269, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %290, %260
  %271 = load i32, ptr %14, align 4, !tbaa !9
  %272 = load i32, ptr %13, align 4, !tbaa !9
  %273 = icmp slt i32 %271, %272
  br i1 %273, label %275, label %274

274:                                              ; preds = %270
  store i32 31, ptr %8, align 4
  br label %293

275:                                              ; preds = %270
  br label %276

276:                                              ; preds = %275
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.svm_model, ptr %278, i32 0, i32 9
  %280 = load ptr, ptr %279, align 8, !tbaa !22
  %281 = load i32, ptr %14, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %280, i64 %282
  %284 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %277, ptr noundef @.str.37, ptr noundef %283)
  %285 = icmp ne i32 %284, 1
  br i1 %285, label %286, label %287

286:                                              ; preds = %276
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %293

287:                                              ; preds = %276
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  %291 = load i32, ptr %14, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %14, align 4, !tbaa !9
  br label %270, !llvm.loop !23

293:                                              ; preds = %286, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  %294 = load i32, ptr %8, align 4
  switch i32 %294, label %296 [
    i32 31, label %295
  ]

295:                                              ; preds = %293
  store i32 0, ptr %8, align 4
  br label %296

296:                                              ; preds = %295, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  %297 = load i32, ptr %8, align 4
  switch i32 %297, label %477 [
    i32 0, label %298
  ]

298:                                              ; preds = %296
  br label %467

299:                                              ; preds = %256
  %300 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %301 = call i32 @strcmp(ptr noundef %300, ptr noundef @.str.24) #7
  %302 = icmp eq i32 %301, 0
  br i1 %302, label %303, label %348

303:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.svm_model, ptr %304, i32 0, i32 1
  %306 = load i32, ptr %305, align 8, !tbaa !18
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.svm_model, ptr %307, i32 0, i32 1
  %309 = load i32, ptr %308, align 8, !tbaa !18
  %310 = sub nsw i32 %309, 1
  %311 = mul nsw i32 %306, %310
  %312 = sdiv i32 %311, 2
  store i32 %312, ptr %15, align 4, !tbaa !9
  %313 = load i32, ptr %15, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = mul i64 %314, 8
  %316 = call noalias ptr @malloc(i64 noundef %315) #8
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.svm_model, ptr %317, i32 0, i32 6
  store ptr %316, ptr %318, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %339, %303
  %320 = load i32, ptr %16, align 4, !tbaa !9
  %321 = load i32, ptr %15, align 4, !tbaa !9
  %322 = icmp slt i32 %320, %321
  br i1 %322, label %324, label %323

323:                                              ; preds = %319
  store i32 36, ptr %8, align 4
  br label %342

324:                                              ; preds = %319
  br label %325

325:                                              ; preds = %324
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.svm_model, ptr %327, i32 0, i32 6
  %329 = load ptr, ptr %328, align 8, !tbaa !24
  %330 = load i32, ptr %16, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds double, ptr %329, i64 %331
  %333 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %326, ptr noundef @.str.39, ptr noundef %332)
  %334 = icmp ne i32 %333, 1
  br i1 %334, label %335, label %336

335:                                              ; preds = %325
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %342

336:                                              ; preds = %325
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337
  br label %339

339:                                              ; preds = %338
  %340 = load i32, ptr %16, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %16, align 4, !tbaa !9
  br label %319, !llvm.loop !25

342:                                              ; preds = %335, %323
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  %343 = load i32, ptr %8, align 4
  switch i32 %343, label %345 [
    i32 36, label %344
  ]

344:                                              ; preds = %342
  store i32 0, ptr %8, align 4
  br label %345

345:                                              ; preds = %344, %342
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  %346 = load i32, ptr %8, align 4
  switch i32 %346, label %477 [
    i32 0, label %347
  ]

347:                                              ; preds = %345
  br label %466

348:                                              ; preds = %299
  %349 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %350 = call i32 @strcmp(ptr noundef %349, ptr noundef @.str.25) #7
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %397

352:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.svm_model, ptr %353, i32 0, i32 1
  %355 = load i32, ptr %354, align 8, !tbaa !18
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.svm_model, ptr %356, i32 0, i32 1
  %358 = load i32, ptr %357, align 8, !tbaa !18
  %359 = sub nsw i32 %358, 1
  %360 = mul nsw i32 %355, %359
  %361 = sdiv i32 %360, 2
  store i32 %361, ptr %17, align 4, !tbaa !9
  %362 = load i32, ptr %17, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = mul i64 %363, 8
  %365 = call noalias ptr @malloc(i64 noundef %364) #8
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.svm_model, ptr %366, i32 0, i32 7
  store ptr %365, ptr %367, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %388, %352
  %369 = load i32, ptr %18, align 4, !tbaa !9
  %370 = load i32, ptr %17, align 4, !tbaa !9
  %371 = icmp slt i32 %369, %370
  br i1 %371, label %373, label %372

372:                                              ; preds = %368
  store i32 41, ptr %8, align 4
  br label %391

373:                                              ; preds = %368
  br label %374

374:                                              ; preds = %373
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.svm_model, ptr %376, i32 0, i32 7
  %378 = load ptr, ptr %377, align 8, !tbaa !26
  %379 = load i32, ptr %18, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  %382 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %375, ptr noundef @.str.39, ptr noundef %381)
  %383 = icmp ne i32 %382, 1
  br i1 %383, label %384, label %385

384:                                              ; preds = %374
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %391

385:                                              ; preds = %374
  br label %386

386:                                              ; preds = %385
  br label %387

387:                                              ; preds = %386
  br label %388

388:                                              ; preds = %387
  %389 = load i32, ptr %18, align 4, !tbaa !9
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr %18, align 4, !tbaa !9
  br label %368, !llvm.loop !27

391:                                              ; preds = %384, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  %392 = load i32, ptr %8, align 4
  switch i32 %392, label %394 [
    i32 41, label %393
  ]

393:                                              ; preds = %391
  store i32 0, ptr %8, align 4
  br label %394

394:                                              ; preds = %393, %391
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  %395 = load i32, ptr %8, align 4
  switch i32 %395, label %477 [
    i32 0, label %396
  ]

396:                                              ; preds = %394
  br label %465

397:                                              ; preds = %348
  %398 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %399 = call i32 @strcmp(ptr noundef %398, ptr noundef @.str.26) #7
  %400 = icmp eq i32 %399, 0
  br i1 %400, label %401, label %440

401:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %402 = load ptr, ptr %5, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.svm_model, ptr %402, i32 0, i32 1
  %404 = load i32, ptr %403, align 8, !tbaa !18
  store i32 %404, ptr %19, align 4, !tbaa !9
  %405 = load i32, ptr %19, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = mul i64 %406, 4
  %408 = call noalias ptr @malloc(i64 noundef %407) #8
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.svm_model, ptr %409, i32 0, i32 10
  store ptr %408, ptr %410, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %431, %401
  %412 = load i32, ptr %20, align 4, !tbaa !9
  %413 = load i32, ptr %19, align 4, !tbaa !9
  %414 = icmp slt i32 %412, %413
  br i1 %414, label %416, label %415

415:                                              ; preds = %411
  store i32 46, ptr %8, align 4
  br label %434

416:                                              ; preds = %411
  br label %417

417:                                              ; preds = %416
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.svm_model, ptr %419, i32 0, i32 10
  %421 = load ptr, ptr %420, align 8, !tbaa !28
  %422 = load i32, ptr %20, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds i32, ptr %421, i64 %423
  %425 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %418, ptr noundef @.str.37, ptr noundef %424)
  %426 = icmp ne i32 %425, 1
  br i1 %426, label %427, label %428

427:                                              ; preds = %417
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %434

428:                                              ; preds = %417
  br label %429

429:                                              ; preds = %428
  br label %430

430:                                              ; preds = %429
  br label %431

431:                                              ; preds = %430
  %432 = load i32, ptr %20, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %20, align 4, !tbaa !9
  br label %411, !llvm.loop !29

434:                                              ; preds = %427, %415
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  %435 = load i32, ptr %8, align 4
  switch i32 %435, label %437 [
    i32 46, label %436
  ]

436:                                              ; preds = %434
  store i32 0, ptr %8, align 4
  br label %437

437:                                              ; preds = %436, %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  %438 = load i32, ptr %8, align 4
  switch i32 %438, label %477 [
    i32 0, label %439
  ]

439:                                              ; preds = %437
  br label %464

440:                                              ; preds = %397
  %441 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %442 = call i32 @strcmp(ptr noundef %441, ptr noundef @.str.43) #7
  %443 = icmp eq i32 %442, 0
  br i1 %443, label %444, label %460

444:                                              ; preds = %440
  br label %445

445:                                              ; preds = %458, %444
  br label %446

446:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = call i32 @getc(ptr noundef %447)
  store i32 %448, ptr %21, align 4, !tbaa !9
  %449 = load i32, ptr %21, align 4, !tbaa !9
  %450 = icmp eq i32 %449, -1
  br i1 %450, label %454, label %451

451:                                              ; preds = %446
  %452 = load i32, ptr %21, align 4, !tbaa !9
  %453 = icmp eq i32 %452, 10
  br i1 %453, label %454, label %455

454:                                              ; preds = %451, %446
  store i32 52, ptr %8, align 4
  br label %456

455:                                              ; preds = %451
  store i32 0, ptr %8, align 4
  br label %456

456:                                              ; preds = %455, %454
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  %457 = load i32, ptr %8, align 4
  switch i32 %457, label %479 [
    i32 0, label %458
    i32 52, label %459
  ]

458:                                              ; preds = %456
  br label %445, !llvm.loop !30

459:                                              ; preds = %456
  br label %476

460:                                              ; preds = %440
  %461 = load ptr, ptr @stderr, align 8, !tbaa !5
  %462 = getelementptr inbounds [81 x i8], ptr %7, i64 0, i64 0
  %463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef @.str.44, ptr noundef %462) #6
  store i1 false, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

464:                                              ; preds = %439
  br label %465

465:                                              ; preds = %464, %396
  br label %466

466:                                              ; preds = %465, %347
  br label %467

467:                                              ; preds = %466, %298
  br label %468

468:                                              ; preds = %467, %255
  br label %469

469:                                              ; preds = %468, %206
  br label %470

470:                                              ; preds = %469, %191
  br label %471

471:                                              ; preds = %470, %176
  br label %472

472:                                              ; preds = %471, %161
  br label %473

473:                                              ; preds = %472, %146
  br label %474

474:                                              ; preds = %473, %131
  br label %475

475:                                              ; preds = %474, %82
  br label %24, !llvm.loop !31

476:                                              ; preds = %459
  store i1 true, ptr %3, align 1
  store i32 1, ptr %8, align 4
  br label %477

477:                                              ; preds = %476, %460, %437, %394, %345, %296, %253, %203, %188, %173, %158, %143, %129, %93, %80, %44, %31
  call void @llvm.lifetime.end.p0(i64 81, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  %478 = load i1, ptr %3, align 1
  ret i1 %478

479:                                              ; preds = %456
  unreachable
}

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #4

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #5

declare i32 @getc(ptr noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { mustprogress 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 #4 = { "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 willreturn memory(read) "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(read) }
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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTS13svm_parameter", !10, i64 0, !10, i64 4, !10, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !13, i64 80, !13, i64 88, !10, i64 96, !10, i64 100}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!12, !10, i64 4}
!17 = distinct !{!17, !15}
!18 = !{!19, !10, i64 104}
!19 = !{!"_ZTS9svm_model", !12, i64 0, !10, i64 104, !10, i64 108, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176}
!20 = !{!19, !6, i64 128}
!21 = distinct !{!21, !15}
!22 = !{!19, !6, i64 160}
!23 = distinct !{!23, !15}
!24 = !{!19, !6, i64 136}
!25 = distinct !{!25, !15}
!26 = !{!19, !6, i64 144}
!27 = distinct !{!27, !15}
!28 = !{!19, !6, i64 168}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}


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

@stderr = external local_unnamed_addr global ptr, align 8
@_ZL14svm_type_table = external hidden local_unnamed_addr global [6 x ptr], align 16
@_ZL17kernel_type_table = external hidden local_unnamed_addr global [6 x ptr], align 16
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) 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 #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z17read_model_headerP8_IO_FILEP9svm_model(ptr noundef %0, ptr noundef %1) local_unnamed_addr #3 {
  %3 = alloca [81 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 81, ptr nonnull %3) #6
  %4 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.31, ptr noundef nonnull %3)
  %.not192 = icmp eq i32 %4, 1
  br i1 %.not192, label %.lr.ph194, label %.loopexit

.lr.ph194:                                        ; preds = %2
  %5 = getelementptr inbounds i8, ptr %1, i64 104
  %6 = getelementptr inbounds i8, ptr %1, i64 168
  %7 = getelementptr inbounds i8, ptr %1, i64 144
  %8 = getelementptr inbounds i8, ptr %1, i64 136
  %9 = getelementptr inbounds i8, ptr %1, i64 160
  %10 = getelementptr inbounds i8, ptr %1, i64 128
  %11 = getelementptr inbounds i8, ptr %1, i64 108
  %12 = getelementptr inbounds i8, ptr %1, i64 24
  %13 = getelementptr inbounds i8, ptr %1, i64 16
  %14 = getelementptr inbounds i8, ptr %1, i64 8
  %15 = getelementptr inbounds i8, ptr %1, i64 4
  br label %16

16:                                               ; preds = %.lr.ph194, %.critedge
  %17 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.32) #7
  %18 = icmp eq i32 %17, 0
  br i1 %18, label %19, label %32

19:                                               ; preds = %16
  %20 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.31, ptr noundef nonnull %3)
  %.not141 = icmp eq i32 %20, 1
  br i1 %.not141, label %.preheader157, label %.loopexit

.preheader157:                                    ; preds = %19
  %21 = load ptr, ptr @_ZL14svm_type_table, align 16, !tbaa !5
  %.not142188 = icmp eq ptr %21, null
  br i1 %.not142188, label %.preheader157._crit_edge, label %.lr.ph190

.lr.ph190:                                        ; preds = %.preheader157, %25
  %indvars.iv240 = phi i64 [ %indvars.iv.next241, %25 ], [ 0, %.preheader157 ]
  %22 = phi ptr [ %27, %25 ], [ %21, %.preheader157 ]
  %23 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %3) #7
  %24 = icmp eq i32 %23, 0
  br i1 %24, label %28, label %25

25:                                               ; preds = %.lr.ph190
  %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1
  %26 = getelementptr inbounds [6 x ptr], ptr @_ZL14svm_type_table, i64 0, i64 %indvars.iv.next241
  %27 = load ptr, ptr %26, align 8, !tbaa !5
  %.not142 = icmp eq ptr %27, null
  br i1 %.not142, label %.preheader157._crit_edge, label %.lr.ph190, !llvm.loop !9

28:                                               ; preds = %.lr.ph190
  %29 = trunc nuw nsw i64 %indvars.iv240 to i32
  store i32 %29, ptr %1, align 8, !tbaa !11
  br label %.critedge

.preheader157._crit_edge:                         ; preds = %.preheader157, %25
  %30 = load ptr, ptr @stderr, align 8, !tbaa !5
  %31 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %30, ptr noundef nonnull @.str.33) #8
  br label %.loopexit

32:                                               ; preds = %16
  %33 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.34) #7
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %35, label %48

35:                                               ; preds = %32
  %36 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.31, ptr noundef nonnull %3)
  %.not138 = icmp eq i32 %36, 1
  br i1 %.not138, label %.preheader158, label %.loopexit

.preheader158:                                    ; preds = %35
  %37 = load ptr, ptr @_ZL17kernel_type_table, align 16, !tbaa !5
  %.not139185 = icmp eq ptr %37, null
  br i1 %.not139185, label %.preheader158._crit_edge, label %.lr.ph187

.lr.ph187:                                        ; preds = %.preheader158, %41
  %indvars.iv237 = phi i64 [ %indvars.iv.next238, %41 ], [ 0, %.preheader158 ]
  %38 = phi ptr [ %43, %41 ], [ %37, %.preheader158 ]
  %39 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) %3) #7
  %40 = icmp eq i32 %39, 0
  br i1 %40, label %44, label %41

41:                                               ; preds = %.lr.ph187
  %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1
  %42 = getelementptr inbounds [6 x ptr], ptr @_ZL17kernel_type_table, i64 0, i64 %indvars.iv.next238
  %43 = load ptr, ptr %42, align 8, !tbaa !5
  %.not139 = icmp eq ptr %43, null
  br i1 %.not139, label %.preheader158._crit_edge, label %.lr.ph187, !llvm.loop !15

44:                                               ; preds = %.lr.ph187
  %45 = trunc nuw nsw i64 %indvars.iv237 to i32
  store i32 %45, ptr %15, align 4, !tbaa !16
  br label %.critedge

.preheader158._crit_edge:                         ; preds = %.preheader158, %41
  %46 = load ptr, ptr @stderr, align 8, !tbaa !5
  %47 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %46, ptr noundef nonnull @.str.35) #8
  br label %.loopexit

48:                                               ; preds = %32
  %49 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.36) #7
  %50 = icmp eq i32 %49, 0
  br i1 %50, label %51, label %53

51:                                               ; preds = %48
  %52 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.37, ptr noundef nonnull %14)
  %.not137 = icmp eq i32 %52, 1
  br i1 %.not137, label %.critedge, label %.loopexit

53:                                               ; preds = %48
  %54 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.38) #7
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %58

56:                                               ; preds = %53
  %57 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.39, ptr noundef nonnull %13)
  %.not136 = icmp eq i32 %57, 1
  br i1 %.not136, label %.critedge, label %.loopexit

58:                                               ; preds = %53
  %59 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.40) #7
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %63

61:                                               ; preds = %58
  %62 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.39, ptr noundef nonnull %12)
  %.not135 = icmp eq i32 %62, 1
  br i1 %.not135, label %.critedge, label %.loopexit

63:                                               ; preds = %58
  %64 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.41) #7
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %68

66:                                               ; preds = %63
  %67 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.37, ptr noundef nonnull %5)
  %.not134 = icmp eq i32 %67, 1
  br i1 %.not134, label %.critedge, label %.loopexit

68:                                               ; preds = %63
  %69 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.42) #7
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %71, label %73

71:                                               ; preds = %68
  %72 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.37, ptr noundef nonnull %11)
  %.not133 = icmp eq i32 %72, 1
  br i1 %.not133, label %.critedge, label %.loopexit

73:                                               ; preds = %68
  %74 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.19) #7
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %76, label %88

76:                                               ; preds = %73
  %77 = load i32, ptr %5, align 8, !tbaa !17
  %78 = add nsw i32 %77, -1
  %79 = mul nsw i32 %78, %77
  %80 = sdiv i32 %79, 2
  %81 = sext i32 %80 to i64
  %82 = shl nsw i64 %81, 3
  %83 = call noalias ptr @malloc(i64 noundef %82) #9
  store ptr %83, ptr %10, align 8, !tbaa !19
  %.not132182 = icmp sgt i32 %79, 1
  br i1 %.not132182, label %.lr.ph184.preheader, label %.critedge

.lr.ph184.preheader:                              ; preds = %76
  %wide.trip.count235 = zext nneg i32 %80 to i64
  br label %.lr.ph184

84:                                               ; preds = %.lr.ph184
  %indvars.iv.next233 = add nuw nsw i64 %indvars.iv232, 1
  %exitcond236.not = icmp eq i64 %indvars.iv.next233, %wide.trip.count235
  br i1 %exitcond236.not, label %.critedge, label %.lr.ph184, !llvm.loop !20

.lr.ph184:                                        ; preds = %.lr.ph184.preheader, %84
  %indvars.iv232 = phi i64 [ 0, %.lr.ph184.preheader ], [ %indvars.iv.next233, %84 ]
  %85 = load ptr, ptr %10, align 8, !tbaa !19
  %86 = getelementptr inbounds double, ptr %85, i64 %indvars.iv232
  %87 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.39, ptr noundef %86)
  %.not131 = icmp eq i32 %87, 1
  br i1 %.not131, label %84, label %.loopexit

88:                                               ; preds = %73
  %89 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.22) #7
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %100

91:                                               ; preds = %88
  %92 = load i32, ptr %5, align 8, !tbaa !17
  %93 = sext i32 %92 to i64
  %94 = shl nsw i64 %93, 2
  %95 = call noalias ptr @malloc(i64 noundef %94) #9
  store ptr %95, ptr %9, align 8, !tbaa !21
  %.not130179 = icmp sgt i32 %92, 0
  br i1 %.not130179, label %.lr.ph181.preheader, label %.critedge

.lr.ph181.preheader:                              ; preds = %91
  %wide.trip.count230 = zext nneg i32 %92 to i64
  br label %.lr.ph181

96:                                               ; preds = %.lr.ph181
  %indvars.iv.next228 = add nuw nsw i64 %indvars.iv227, 1
  %exitcond231.not = icmp eq i64 %indvars.iv.next228, %wide.trip.count230
  br i1 %exitcond231.not, label %.critedge, label %.lr.ph181, !llvm.loop !22

.lr.ph181:                                        ; preds = %.lr.ph181.preheader, %96
  %indvars.iv227 = phi i64 [ 0, %.lr.ph181.preheader ], [ %indvars.iv.next228, %96 ]
  %97 = load ptr, ptr %9, align 8, !tbaa !21
  %98 = getelementptr inbounds i32, ptr %97, i64 %indvars.iv227
  %99 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.37, ptr noundef %98)
  %.not129 = icmp eq i32 %99, 1
  br i1 %.not129, label %96, label %.loopexit

100:                                              ; preds = %88
  %101 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.24) #7
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %115

103:                                              ; preds = %100
  %104 = load i32, ptr %5, align 8, !tbaa !17
  %105 = add nsw i32 %104, -1
  %106 = mul nsw i32 %105, %104
  %107 = sdiv i32 %106, 2
  %108 = sext i32 %107 to i64
  %109 = shl nsw i64 %108, 3
  %110 = call noalias ptr @malloc(i64 noundef %109) #9
  store ptr %110, ptr %8, align 8, !tbaa !23
  %.not128176 = icmp sgt i32 %106, 1
  br i1 %.not128176, label %.lr.ph178.preheader, label %.critedge

.lr.ph178.preheader:                              ; preds = %103
  %wide.trip.count225 = zext nneg i32 %107 to i64
  br label %.lr.ph178

111:                                              ; preds = %.lr.ph178
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %exitcond226.not = icmp eq i64 %indvars.iv.next223, %wide.trip.count225
  br i1 %exitcond226.not, label %.critedge, label %.lr.ph178, !llvm.loop !24

.lr.ph178:                                        ; preds = %.lr.ph178.preheader, %111
  %indvars.iv222 = phi i64 [ 0, %.lr.ph178.preheader ], [ %indvars.iv.next223, %111 ]
  %112 = load ptr, ptr %8, align 8, !tbaa !23
  %113 = getelementptr inbounds double, ptr %112, i64 %indvars.iv222
  %114 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.39, ptr noundef %113)
  %.not127 = icmp eq i32 %114, 1
  br i1 %.not127, label %111, label %.loopexit

115:                                              ; preds = %100
  %116 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.25) #7
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %130

118:                                              ; preds = %115
  %119 = load i32, ptr %5, align 8, !tbaa !17
  %120 = add nsw i32 %119, -1
  %121 = mul nsw i32 %120, %119
  %122 = sdiv i32 %121, 2
  %123 = sext i32 %122 to i64
  %124 = shl nsw i64 %123, 3
  %125 = call noalias ptr @malloc(i64 noundef %124) #9
  store ptr %125, ptr %7, align 8, !tbaa !25
  %.not126173 = icmp sgt i32 %121, 1
  br i1 %.not126173, label %.lr.ph175.preheader, label %.critedge

.lr.ph175.preheader:                              ; preds = %118
  %wide.trip.count220 = zext nneg i32 %122 to i64
  br label %.lr.ph175

126:                                              ; preds = %.lr.ph175
  %indvars.iv.next218 = add nuw nsw i64 %indvars.iv217, 1
  %exitcond221.not = icmp eq i64 %indvars.iv.next218, %wide.trip.count220
  br i1 %exitcond221.not, label %.critedge, label %.lr.ph175, !llvm.loop !26

.lr.ph175:                                        ; preds = %.lr.ph175.preheader, %126
  %indvars.iv217 = phi i64 [ 0, %.lr.ph175.preheader ], [ %indvars.iv.next218, %126 ]
  %127 = load ptr, ptr %7, align 8, !tbaa !25
  %128 = getelementptr inbounds double, ptr %127, i64 %indvars.iv217
  %129 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.39, ptr noundef %128)
  %.not125 = icmp eq i32 %129, 1
  br i1 %.not125, label %126, label %.loopexit

130:                                              ; preds = %115
  %131 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.26) #7
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %142

133:                                              ; preds = %130
  %134 = load i32, ptr %5, align 8, !tbaa !17
  %135 = sext i32 %134 to i64
  %136 = shl nsw i64 %135, 2
  %137 = call noalias ptr @malloc(i64 noundef %136) #9
  store ptr %137, ptr %6, align 8, !tbaa !27
  %.not124171 = icmp sgt i32 %134, 0
  br i1 %.not124171, label %.lr.ph.preheader, label %.critedge

.lr.ph.preheader:                                 ; preds = %133
  %wide.trip.count = zext nneg i32 %134 to i64
  br label %.lr.ph

138:                                              ; preds = %.lr.ph
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !28

.lr.ph:                                           ; preds = %.lr.ph.preheader, %138
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %138 ]
  %139 = load ptr, ptr %6, align 8, !tbaa !27
  %140 = getelementptr inbounds i32, ptr %139, i64 %indvars.iv
  %141 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.37, ptr noundef %140)
  %.not123 = icmp eq i32 %141, 1
  br i1 %.not123, label %138, label %.loopexit

142:                                              ; preds = %130
  %143 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.43) #7
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %.preheader, label %146

.preheader:                                       ; preds = %142, %.preheader
  %145 = call i32 @getc(ptr noundef %0)
  switch i32 %145, label %.preheader [
    i32 -1, label %.loopexit
    i32 10, label %.loopexit
  ]

146:                                              ; preds = %142
  %147 = load ptr, ptr @stderr, align 8, !tbaa !5
  %148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %147, ptr noundef nonnull @.str.44, ptr noundef nonnull %3) #8
  br label %.loopexit

.critedge:                                        ; preds = %138, %126, %111, %96, %84, %133, %118, %103, %91, %76, %44, %28, %56, %66, %71, %61, %51
  %149 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef nonnull @.str.31, ptr noundef nonnull %3)
  %.not = icmp eq i32 %149, 1
  br i1 %.not, label %16, label %.loopexit, !llvm.loop !29

.loopexit:                                        ; preds = %.critedge, %19, %35, %51, %56, %61, %66, %71, %.lr.ph, %.lr.ph175, %.lr.ph178, %.lr.ph181, %.lr.ph184, %.preheader, %.preheader, %2, %.preheader158._crit_edge, %.preheader157._crit_edge, %146
  %.9 = phi i1 [ false, %.preheader157._crit_edge ], [ false, %.preheader158._crit_edge ], [ false, %146 ], [ false, %2 ], [ true, %.preheader ], [ true, %.preheader ], [ false, %.lr.ph184 ], [ false, %.lr.ph181 ], [ false, %.lr.ph178 ], [ false, %.lr.ph175 ], [ false, %.lr.ph ], [ false, %71 ], [ false, %66 ], [ false, %61 ], [ false, %56 ], [ false, %51 ], [ false, %35 ], [ false, %19 ], [ false, %.critedge ]
  call void @llvm.lifetime.end.p0(i64 81, ptr nonnull %3) #6
  ret i1 %.9
}

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @getc(ptr nocapture noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree 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 #2 = { 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 #3 = { mustprogress 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 #4 = { "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(argmem: read) "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(read) }
attributes #8 = { cold 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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTS13svm_parameter", !13, i64 0, !13, i64 4, !13, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !13, i64 56, !6, i64 64, !6, i64 72, !14, i64 80, !14, i64 88, !13, i64 96, !13, i64 100}
!13 = !{!"int", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !10}
!16 = !{!12, !13, i64 4}
!17 = !{!18, !13, i64 104}
!18 = !{!"_ZTS9svm_model", !12, i64 0, !13, i64 104, !13, i64 108, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !13, i64 176}
!19 = !{!18, !6, i64 128}
!20 = distinct !{!20, !10}
!21 = !{!18, !6, i64 160}
!22 = distinct !{!22, !10}
!23 = !{!18, !6, i64 136}
!24 = distinct !{!24, !10}
!25 = !{!18, !6, i64 144}
!26 = distinct !{!26, !10}
!27 = !{!18, !6, i64 168}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass