; LLVM IR from csviragh/robotsim :: src/utilities (param_utils)

; 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.unit_model_params_t = type { %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, %struct.unit_param_double_t, [512 x i8] }
%struct.unit_param_double_t = type { [64 x i8], [10 x i8], double }

@.str.20 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = 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 [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @SetNamesOfUnitModelParams(ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @GetUnitModelParamsFromFile(ptr noundef %0, ptr noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [256 x i8], align 16
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %12 = load ptr, ptr %3, align 8, !tbaa !5
  call void @SetNamesOfUnitModelParams(ptr noundef %12)
  %13 = load ptr, ptr %4, align 8, !tbaa !5
  %14 = icmp eq ptr null, %13
  br i1 %14, label %15, label %60

15:                                               ; preds = %2
  %16 = load ptr, ptr %3, align 8, !tbaa !5
  %17 = getelementptr inbounds %struct.unit_model_params_t, ptr %16, i32 0, i32 0
  %18 = getelementptr inbounds %struct.unit_param_double_t, ptr %17, i32 0, i32 2
  store double 1.000000e+00, ptr %18, align 8, !tbaa !9
  %19 = load ptr, ptr %3, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.unit_model_params_t, ptr %19, i32 0, i32 1
  %21 = getelementptr inbounds %struct.unit_param_double_t, ptr %20, i32 0, i32 2
  store double 1.000000e+00, ptr %21, align 8, !tbaa !13
  %22 = load ptr, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.unit_model_params_t, ptr %22, i32 0, i32 2
  %24 = getelementptr inbounds %struct.unit_param_double_t, ptr %23, i32 0, i32 2
  store double 7.000000e+02, ptr %24, align 8, !tbaa !14
  %25 = load ptr, ptr %3, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.unit_model_params_t, ptr %25, i32 0, i32 3
  %27 = getelementptr inbounds %struct.unit_param_double_t, ptr %26, i32 0, i32 2
  store double 2.000000e-01, ptr %27, align 8, !tbaa !15
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.unit_model_params_t, ptr %28, i32 0, i32 4
  %30 = getelementptr inbounds %struct.unit_param_double_t, ptr %29, i32 0, i32 2
  store double 0.000000e+00, ptr %30, align 8, !tbaa !16
  %31 = load ptr, ptr %3, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.unit_model_params_t, ptr %31, i32 0, i32 5
  %33 = getelementptr inbounds %struct.unit_param_double_t, ptr %32, i32 0, i32 2
  store double 8.000000e+04, ptr %33, align 8, !tbaa !17
  %34 = load ptr, ptr %3, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.unit_model_params_t, ptr %34, i32 0, i32 0
  %36 = getelementptr inbounds %struct.unit_param_double_t, ptr %35, i32 0, i32 2
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  %37 = load ptr, ptr %3, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.unit_model_params_t, ptr %37, i32 0, i32 8
  %39 = getelementptr inbounds %struct.unit_param_double_t, ptr %38, i32 0, i32 2
  store double 0.000000e+00, ptr %39, align 8, !tbaa !18
  %40 = load ptr, ptr %3, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.unit_model_params_t, ptr %40, i32 0, i32 10
  %42 = getelementptr inbounds %struct.unit_param_double_t, ptr %41, i32 0, i32 2
  store double 0.000000e+00, ptr %42, align 8, !tbaa !19
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.unit_model_params_t, ptr %43, i32 0, i32 9
  %45 = getelementptr inbounds %struct.unit_param_double_t, ptr %44, i32 0, i32 2
  store double 0.000000e+00, ptr %45, align 8, !tbaa !20
  %46 = load ptr, ptr %3, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.unit_model_params_t, ptr %46, i32 0, i32 11
  %48 = getelementptr inbounds %struct.unit_param_double_t, ptr %47, i32 0, i32 2
  store double 0.000000e+00, ptr %48, align 8, !tbaa !21
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.unit_model_params_t, ptr %49, i32 0, i32 6
  %51 = getelementptr inbounds %struct.unit_param_double_t, ptr %50, i32 0, i32 2
  store double 5.000000e-01, ptr %51, align 8, !tbaa !22
  %52 = load ptr, ptr %3, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.unit_model_params_t, ptr %52, i32 0, i32 5
  %54 = getelementptr inbounds %struct.unit_param_double_t, ptr %53, i32 0, i32 2
  %55 = load double, ptr %54, align 8, !tbaa !17
  %56 = load ptr, ptr %3, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.unit_model_params_t, ptr %56, i32 0, i32 7
  %58 = getelementptr inbounds %struct.unit_param_double_t, ptr %57, i32 0, i32 2
  store double %55, ptr %58, align 8, !tbaa !23
  %59 = call i32 (ptr, ...) @printf(ptr noundef @.str.20)
  br label %318

60:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 256, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 0, ptr %10, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !24
  br label %61

61:                                               ; preds = %291, %60
  %62 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = call ptr @fgets(ptr noundef %62, i32 noundef 256, ptr noundef %63)
  %65 = icmp ne ptr %64, null
  br i1 %65, label %66, label %292

66:                                               ; preds = %61
  %67 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  %68 = call ptr @RStrip(ptr noundef %67)
  %69 = call ptr @LSkip(ptr noundef %68)
  store ptr %69, ptr %6, align 8, !tbaa !5
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = load i8, ptr %70, align 1, !tbaa !26
  %72 = sext i8 %71 to i32
  %73 = icmp eq i32 %72, 59
  br i1 %73, label %79, label %74

74:                                               ; preds = %66
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = load i8, ptr %75, align 1, !tbaa !26
  %77 = sext i8 %76 to i32
  %78 = icmp eq i32 %77, 35
  br i1 %78, label %79, label %80

79:                                               ; preds = %74, %66
  br label %291

80:                                               ; preds = %74
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = call ptr @FindCharOrComment(ptr noundef %81, i8 noundef signext 61)
  store ptr %82, ptr %7, align 8, !tbaa !5
  %83 = load ptr, ptr %7, align 8, !tbaa !5
  %84 = load i8, ptr %83, align 1, !tbaa !26
  %85 = sext i8 %84 to i32
  %86 = icmp eq i32 %85, 61
  br i1 %86, label %87, label %96

87:                                               ; preds = %80
  %88 = load ptr, ptr %7, align 8, !tbaa !5
  store i8 0, ptr %88, align 1, !tbaa !26
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = call ptr @RStrip(ptr noundef %89)
  store ptr %90, ptr %8, align 8, !tbaa !5
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %91, i64 1
  %93 = call ptr @LSkip(ptr noundef %92)
  store ptr %93, ptr %9, align 8, !tbaa !5
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = call ptr @FindCharOrComment(ptr noundef %94, i8 noundef signext 0)
  store ptr %95, ptr %7, align 8, !tbaa !5
  br label %96

96:                                               ; preds = %87, %80
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  %98 = call i32 @strcmp(ptr noundef %97, ptr noundef @.str.21) #7
  %99 = icmp eq i32 %98, 0
  br i1 %99, label %100, label %108

100:                                              ; preds = %96
  %101 = load ptr, ptr %9, align 8, !tbaa !5
  %102 = call double @atof(ptr noundef %101) #7
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.unit_model_params_t, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds %struct.unit_param_double_t, ptr %104, i32 0, i32 2
  store double %102, ptr %105, align 8, !tbaa !9
  %106 = load i32, ptr %10, align 4, !tbaa !24
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %10, align 4, !tbaa !24
  br label %290

108:                                              ; preds = %96
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = call i32 @strcmp(ptr noundef %109, ptr noundef @.str.22) #7
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %112, label %120

112:                                              ; preds = %108
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = call double @atof(ptr noundef %113) #7
  %115 = load ptr, ptr %3, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.unit_model_params_t, ptr %115, i32 0, i32 1
  %117 = getelementptr inbounds %struct.unit_param_double_t, ptr %116, i32 0, i32 2
  store double %114, ptr %117, align 8, !tbaa !13
  %118 = load i32, ptr %10, align 4, !tbaa !24
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %10, align 4, !tbaa !24
  br label %289

120:                                              ; preds = %108
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = call i32 @strcmp(ptr noundef %121, ptr noundef @.str.23) #7
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %132

124:                                              ; preds = %120
  %125 = load ptr, ptr %9, align 8, !tbaa !5
  %126 = call double @atof(ptr noundef %125) #7
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.unit_model_params_t, ptr %127, i32 0, i32 2
  %129 = getelementptr inbounds %struct.unit_param_double_t, ptr %128, i32 0, i32 2
  store double %126, ptr %129, align 8, !tbaa !14
  %130 = load i32, ptr %10, align 4, !tbaa !24
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %10, align 4, !tbaa !24
  br label %288

132:                                              ; preds = %120
  %133 = load ptr, ptr %8, align 8, !tbaa !5
  %134 = call i32 @strcmp(ptr noundef %133, ptr noundef @.str.24) #7
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %144

136:                                              ; preds = %132
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = call double @atof(ptr noundef %137) #7
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.unit_model_params_t, ptr %139, i32 0, i32 3
  %141 = getelementptr inbounds %struct.unit_param_double_t, ptr %140, i32 0, i32 2
  store double %138, ptr %141, align 8, !tbaa !15
  %142 = load i32, ptr %10, align 4, !tbaa !24
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %10, align 4, !tbaa !24
  br label %287

144:                                              ; preds = %132
  %145 = load ptr, ptr %8, align 8, !tbaa !5
  %146 = call i32 @strcmp(ptr noundef %145, ptr noundef @.str.25) #7
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %156

148:                                              ; preds = %144
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = call double @atof(ptr noundef %149) #7
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.unit_model_params_t, ptr %151, i32 0, i32 4
  %153 = getelementptr inbounds %struct.unit_param_double_t, ptr %152, i32 0, i32 2
  store double %150, ptr %153, align 8, !tbaa !16
  %154 = load i32, ptr %10, align 4, !tbaa !24
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %10, align 4, !tbaa !24
  br label %286

156:                                              ; preds = %144
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = call i32 @strcmp(ptr noundef %157, ptr noundef @.str.26) #7
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %168

160:                                              ; preds = %156
  %161 = load ptr, ptr %9, align 8, !tbaa !5
  %162 = call double @atof(ptr noundef %161) #7
  %163 = load ptr, ptr %3, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.unit_model_params_t, ptr %163, i32 0, i32 5
  %165 = getelementptr inbounds %struct.unit_param_double_t, ptr %164, i32 0, i32 2
  store double %162, ptr %165, align 8, !tbaa !17
  %166 = load i32, ptr %10, align 4, !tbaa !24
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %10, align 4, !tbaa !24
  br label %285

168:                                              ; preds = %156
  %169 = load ptr, ptr %8, align 8, !tbaa !5
  %170 = call i32 @strcmp(ptr noundef %169, ptr noundef @.str.27) #7
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %180

172:                                              ; preds = %168
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = call double @atof(ptr noundef %173) #7
  %175 = load ptr, ptr %3, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.unit_model_params_t, ptr %175, i32 0, i32 8
  %177 = getelementptr inbounds %struct.unit_param_double_t, ptr %176, i32 0, i32 2
  store double %174, ptr %177, align 8, !tbaa !18
  %178 = load i32, ptr %10, align 4, !tbaa !24
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %10, align 4, !tbaa !24
  br label %284

180:                                              ; preds = %168
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = call i32 @strcmp(ptr noundef %181, ptr noundef @.str.28) #7
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %192

184:                                              ; preds = %180
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = call double @atof(ptr noundef %185) #7
  %187 = load ptr, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.unit_model_params_t, ptr %187, i32 0, i32 10
  %189 = getelementptr inbounds %struct.unit_param_double_t, ptr %188, i32 0, i32 2
  store double %186, ptr %189, align 8, !tbaa !19
  %190 = load i32, ptr %10, align 4, !tbaa !24
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %10, align 4, !tbaa !24
  br label %283

192:                                              ; preds = %180
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = call i32 @strcmp(ptr noundef %193, ptr noundef @.str.29) #7
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %196, label %204

196:                                              ; preds = %192
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = call double @atof(ptr noundef %197) #7
  %199 = load ptr, ptr %3, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.unit_model_params_t, ptr %199, i32 0, i32 9
  %201 = getelementptr inbounds %struct.unit_param_double_t, ptr %200, i32 0, i32 2
  store double %198, ptr %201, align 8, !tbaa !20
  %202 = load i32, ptr %10, align 4, !tbaa !24
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %10, align 4, !tbaa !24
  br label %282

204:                                              ; preds = %192
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = call i32 @strcmp(ptr noundef %205, ptr noundef @.str.30) #7
  %207 = icmp eq i32 %206, 0
  br i1 %207, label %208, label %216

208:                                              ; preds = %204
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = call double @atof(ptr noundef %209) #7
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.unit_model_params_t, ptr %211, i32 0, i32 11
  %213 = getelementptr inbounds %struct.unit_param_double_t, ptr %212, i32 0, i32 2
  store double %210, ptr %213, align 8, !tbaa !21
  %214 = load i32, ptr %10, align 4, !tbaa !24
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %10, align 4, !tbaa !24
  br label %281

216:                                              ; preds = %204
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  %218 = call i32 @strcmp(ptr noundef %217, ptr noundef @.str.31) #7
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %228

220:                                              ; preds = %216
  %221 = load ptr, ptr %9, align 8, !tbaa !5
  %222 = call double @atof(ptr noundef %221) #7
  %223 = load ptr, ptr %3, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.unit_model_params_t, ptr %223, i32 0, i32 12
  %225 = getelementptr inbounds %struct.unit_param_double_t, ptr %224, i32 0, i32 2
  store double %222, ptr %225, align 8, !tbaa !27
  %226 = load i32, ptr %10, align 4, !tbaa !24
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %10, align 4, !tbaa !24
  br label %280

228:                                              ; preds = %216
  %229 = load ptr, ptr %8, align 8, !tbaa !5
  %230 = call i32 @strcmp(ptr noundef %229, ptr noundef @.str.32) #7
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %240

232:                                              ; preds = %228
  %233 = load ptr, ptr %9, align 8, !tbaa !5
  %234 = call double @atof(ptr noundef %233) #7
  %235 = load ptr, ptr %3, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.unit_model_params_t, ptr %235, i32 0, i32 13
  %237 = getelementptr inbounds %struct.unit_param_double_t, ptr %236, i32 0, i32 2
  store double %234, ptr %237, align 8, !tbaa !28
  %238 = load i32, ptr %10, align 4, !tbaa !24
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %10, align 4, !tbaa !24
  br label %279

240:                                              ; preds = %228
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = call i32 @strcmp(ptr noundef %241, ptr noundef @.str.33) #7
  %243 = icmp eq i32 %242, 0
  br i1 %243, label %244, label %252

244:                                              ; preds = %240
  %245 = load ptr, ptr %9, align 8, !tbaa !5
  %246 = call double @atof(ptr noundef %245) #7
  %247 = load ptr, ptr %3, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.unit_model_params_t, ptr %247, i32 0, i32 14
  %249 = getelementptr inbounds %struct.unit_param_double_t, ptr %248, i32 0, i32 2
  store double %246, ptr %249, align 8, !tbaa !29
  %250 = load i32, ptr %10, align 4, !tbaa !24
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %10, align 4, !tbaa !24
  br label %278

252:                                              ; preds = %240
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = call i32 @strcmp(ptr noundef %253, ptr noundef @.str.34) #7
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %264

256:                                              ; preds = %252
  %257 = load ptr, ptr %9, align 8, !tbaa !5
  %258 = call double @atof(ptr noundef %257) #7
  %259 = load ptr, ptr %3, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.unit_model_params_t, ptr %259, i32 0, i32 6
  %261 = getelementptr inbounds %struct.unit_param_double_t, ptr %260, i32 0, i32 2
  store double %258, ptr %261, align 8, !tbaa !22
  %262 = load i32, ptr %10, align 4, !tbaa !24
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %10, align 4, !tbaa !24
  br label %277

264:                                              ; preds = %252
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = call i32 @strcmp(ptr noundef %265, ptr noundef @.str.35) #7
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %276

268:                                              ; preds = %264
  %269 = load ptr, ptr %9, align 8, !tbaa !5
  %270 = call double @atof(ptr noundef %269) #7
  %271 = load ptr, ptr %3, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.unit_model_params_t, ptr %271, i32 0, i32 7
  %273 = getelementptr inbounds %struct.unit_param_double_t, ptr %272, i32 0, i32 2
  store double %270, ptr %273, align 8, !tbaa !23
  %274 = load i32, ptr %10, align 4, !tbaa !24
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %10, align 4, !tbaa !24
  br label %276

276:                                              ; preds = %268, %264
  br label %277

277:                                              ; preds = %276, %256
  br label %278

278:                                              ; preds = %277, %244
  br label %279

279:                                              ; preds = %278, %232
  br label %280

280:                                              ; preds = %279, %220
  br label %281

281:                                              ; preds = %280, %208
  br label %282

282:                                              ; preds = %281, %196
  br label %283

283:                                              ; preds = %282, %184
  br label %284

284:                                              ; preds = %283, %172
  br label %285

285:                                              ; preds = %284, %160
  br label %286

286:                                              ; preds = %285, %148
  br label %287

287:                                              ; preds = %286, %136
  br label %288

288:                                              ; preds = %287, %124
  br label %289

289:                                              ; preds = %288, %112
  br label %290

290:                                              ; preds = %289, %100
  br label %291

291:                                              ; preds = %290, %79
  br label %61, !llvm.loop !30

292:                                              ; preds = %61
  %293 = load i32, ptr %10, align 4, !tbaa !24
  %294 = icmp slt i32 %293, 15
  br i1 %294, label %295, label %314

295:                                              ; preds = %292
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = call ptr @recover_fileName(ptr noundef %296)
  %298 = call i32 (ptr, ...) @printf(ptr noundef @.str.36, ptr noundef %297)
  %299 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  %300 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  %301 = call i32 (ptr, ...) @printf(ptr noundef @.str.39)
  %302 = call i32 (ptr, ...) @printf(ptr noundef @.str.40)
  %303 = call i32 (ptr, ...) @printf(ptr noundef @.str.41)
  %304 = call i32 (ptr, ...) @printf(ptr noundef @.str.42)
  %305 = call i32 (ptr, ...) @printf(ptr noundef @.str.43)
  %306 = call i32 (ptr, ...) @printf(ptr noundef @.str.44)
  %307 = call i32 (ptr, ...) @printf(ptr noundef @.str.45)
  %308 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  %309 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  %310 = call i32 (ptr, ...) @printf(ptr noundef @.str.48)
  %311 = call i32 (ptr, ...) @printf(ptr noundef @.str.49)
  %312 = call i32 (ptr, ...) @printf(ptr noundef @.str.50)
  %313 = call i32 (ptr, ...) @printf(ptr noundef @.str.51)
  call void @exit(i32 noundef -1) #8
  unreachable

314:                                              ; preds = %292
  %315 = load ptr, ptr %3, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.unit_model_params_t, ptr %315, i32 0, i32 15
  %317 = getelementptr inbounds %struct.unit_param_double_t, ptr %316, i32 0, i32 2
  store double 1.000000e+00, ptr %317, align 8, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #6
  br label %318

318:                                              ; preds = %314, %15
  ret void
}

declare i32 @printf(ptr noundef, ...) #1

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

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #1

declare ptr @LSkip(ptr noundef) #1

declare ptr @RStrip(ptr noundef) #1

declare ptr @FindCharOrComment(ptr noundef, i8 noundef signext) #1

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

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare double @atof(ptr noundef nonnull) #4

declare ptr @recover_fileName(ptr noundef) #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #5

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !12, i64 80}
!10 = !{!"", !11, i64 0, !11, i64 88, !11, i64 176, !11, i64 264, !11, i64 352, !11, i64 440, !11, i64 528, !11, i64 616, !11, i64 704, !11, i64 792, !11, i64 880, !11, i64 968, !11, i64 1056, !11, i64 1144, !11, i64 1232, !11, i64 1320, !7, i64 1408}
!11 = !{!"", !7, i64 0, !7, i64 64, !12, i64 80}
!12 = !{!"double", !7, i64 0}
!13 = !{!10, !12, i64 168}
!14 = !{!10, !12, i64 256}
!15 = !{!10, !12, i64 344}
!16 = !{!10, !12, i64 432}
!17 = !{!10, !12, i64 520}
!18 = !{!10, !12, i64 784}
!19 = !{!10, !12, i64 960}
!20 = !{!10, !12, i64 872}
!21 = !{!10, !12, i64 1048}
!22 = !{!10, !12, i64 608}
!23 = !{!10, !12, i64 696}
!24 = !{!25, !25, i64 0}
!25 = !{!"int", !7, i64 0}
!26 = !{!7, !7, i64 0}
!27 = !{!10, !12, i64 1136}
!28 = !{!10, !12, i64 1224}
!29 = !{!10, !12, i64 1312}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!10, !12, i64 1400}


; 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.20 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = 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 [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @SetNamesOfUnitModelParams(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @GetUnitModelParamsFromFile(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca [256 x i8], align 16
  tail call void @SetNamesOfUnitModelParams(ptr noundef %0)
  %4 = icmp eq ptr %1, null
  br i1 %4, label %5, label %19

5:                                                ; preds = %2
  %6 = getelementptr inbounds i8, ptr %0, i64 80
  %7 = getelementptr inbounds i8, ptr %0, i64 168
  store double 1.000000e+00, ptr %7, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %0, i64 256
  store double 7.000000e+02, ptr %8, align 8, !tbaa !11
  %9 = getelementptr inbounds i8, ptr %0, i64 344
  store double 2.000000e-01, ptr %9, align 8, !tbaa !12
  %10 = getelementptr inbounds i8, ptr %0, i64 432
  store double 0.000000e+00, ptr %10, align 8, !tbaa !13
  %11 = getelementptr inbounds i8, ptr %0, i64 520
  store double 8.000000e+04, ptr %11, align 8, !tbaa !14
  store double 1.000000e+00, ptr %6, align 8, !tbaa !15
  %12 = getelementptr inbounds i8, ptr %0, i64 784
  store double 0.000000e+00, ptr %12, align 8, !tbaa !16
  %13 = getelementptr inbounds i8, ptr %0, i64 960
  store double 0.000000e+00, ptr %13, align 8, !tbaa !17
  %14 = getelementptr inbounds i8, ptr %0, i64 872
  store double 0.000000e+00, ptr %14, align 8, !tbaa !18
  %15 = getelementptr inbounds i8, ptr %0, i64 1048
  store double 0.000000e+00, ptr %15, align 8, !tbaa !19
  %16 = getelementptr inbounds i8, ptr %0, i64 608
  store double 5.000000e-01, ptr %16, align 8, !tbaa !20
  %17 = getelementptr inbounds i8, ptr %0, i64 696
  store double 8.000000e+04, ptr %17, align 8, !tbaa !21
  %18 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20)
  br label %118

19:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #7
  %20 = call ptr @fgets(ptr noundef nonnull %3, i32 noundef 256, ptr noundef nonnull %1)
  %.not94 = icmp eq ptr %20, null
  br i1 %.not94, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %19
  %21 = getelementptr inbounds i8, ptr %0, i64 696
  %22 = getelementptr inbounds i8, ptr %0, i64 608
  %23 = getelementptr inbounds i8, ptr %0, i64 1312
  %24 = getelementptr inbounds i8, ptr %0, i64 1224
  %25 = getelementptr inbounds i8, ptr %0, i64 1136
  %26 = getelementptr inbounds i8, ptr %0, i64 1048
  %27 = getelementptr inbounds i8, ptr %0, i64 872
  %28 = getelementptr inbounds i8, ptr %0, i64 960
  %29 = getelementptr inbounds i8, ptr %0, i64 784
  %30 = getelementptr inbounds i8, ptr %0, i64 520
  %31 = getelementptr inbounds i8, ptr %0, i64 432
  %32 = getelementptr inbounds i8, ptr %0, i64 344
  %33 = getelementptr inbounds i8, ptr %0, i64 256
  %34 = getelementptr inbounds i8, ptr %0, i64 168
  %35 = getelementptr inbounds i8, ptr %0, i64 80
  br label %36

36:                                               ; preds = %.lr.ph, %96
  %.097 = phi i32 [ 0, %.lr.ph ], [ %.1, %96 ]
  %.08796 = phi ptr [ undef, %.lr.ph ], [ %.2, %96 ]
  %.08995 = phi ptr [ undef, %.lr.ph ], [ %.291, %96 ]
  %37 = call ptr @RStrip(ptr noundef nonnull %3) #7
  %38 = call ptr @LSkip(ptr noundef %37) #7
  %39 = load i8, ptr %38, align 1, !tbaa !22
  switch i8 %39, label %40 [
    i8 59, label %96
    i8 35, label %96
  ]

40:                                               ; preds = %36
  %41 = call ptr @FindCharOrComment(ptr noundef nonnull %38, i8 noundef signext 61) #7
  %42 = load i8, ptr %41, align 1, !tbaa !22
  %43 = icmp eq i8 %42, 61
  br i1 %43, label %44, label %49

44:                                               ; preds = %40
  store i8 0, ptr %41, align 1, !tbaa !22
  %45 = call ptr @RStrip(ptr noundef nonnull %38) #7
  %46 = getelementptr inbounds i8, ptr %41, i64 1
  %47 = call ptr @LSkip(ptr noundef nonnull %46) #7
  %48 = call ptr @FindCharOrComment(ptr noundef %47, i8 noundef signext 0) #7
  br label %49

49:                                               ; preds = %44, %40
  %.190 = phi ptr [ %45, %44 ], [ %.08995, %40 ]
  %.188 = phi ptr [ %47, %44 ], [ %.08796, %40 ]
  %50 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.21) #8
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %.sink.split, label %52

52:                                               ; preds = %49
  %53 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.22) #8
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %.sink.split, label %55

55:                                               ; preds = %52
  %56 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.23) #8
  %57 = icmp eq i32 %56, 0
  br i1 %57, label %.sink.split, label %58

58:                                               ; preds = %55
  %59 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.24) #8
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %.sink.split, label %61

61:                                               ; preds = %58
  %62 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.25) #8
  %63 = icmp eq i32 %62, 0
  br i1 %63, label %.sink.split, label %64

64:                                               ; preds = %61
  %65 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.26) #8
  %66 = icmp eq i32 %65, 0
  br i1 %66, label %.sink.split, label %67

67:                                               ; preds = %64
  %68 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.27) #8
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %.sink.split, label %70

70:                                               ; preds = %67
  %71 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.28) #8
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %.sink.split, label %73

73:                                               ; preds = %70
  %74 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.29) #8
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %.sink.split, label %76

76:                                               ; preds = %73
  %77 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.30) #8
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %.sink.split, label %79

79:                                               ; preds = %76
  %80 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.31) #8
  %81 = icmp eq i32 %80, 0
  br i1 %81, label %.sink.split, label %82

82:                                               ; preds = %79
  %83 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.32) #8
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %.sink.split, label %85

85:                                               ; preds = %82
  %86 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.33) #8
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %.sink.split, label %88

88:                                               ; preds = %85
  %89 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.34) #8
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %.sink.split, label %91

91:                                               ; preds = %88
  %92 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.190, ptr noundef nonnull dereferenceable(1) @.str.35) #8
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %.sink.split, label %96

.sink.split:                                      ; preds = %91, %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49
  %.sink99 = phi ptr [ %35, %49 ], [ %34, %52 ], [ %33, %55 ], [ %32, %58 ], [ %31, %61 ], [ %30, %64 ], [ %29, %67 ], [ %28, %70 ], [ %27, %73 ], [ %26, %76 ], [ %25, %79 ], [ %24, %82 ], [ %23, %85 ], [ %22, %88 ], [ %21, %91 ]
  %94 = call double @atof(ptr noundef %.188) #8
  store double %94, ptr %.sink99, align 8, !tbaa !23
  %95 = add nsw i32 %.097, 1
  br label %96

96:                                               ; preds = %.sink.split, %36, %36, %91
  %.291 = phi ptr [ %.08995, %36 ], [ %.190, %91 ], [ %.08995, %36 ], [ %.190, %.sink.split ]
  %.2 = phi ptr [ %.08796, %36 ], [ %.188, %91 ], [ %.08796, %36 ], [ %.188, %.sink.split ]
  %.1 = phi i32 [ %.097, %36 ], [ %.097, %91 ], [ %.097, %36 ], [ %95, %.sink.split ]
  %97 = call ptr @fgets(ptr noundef nonnull %3, i32 noundef 256, ptr noundef nonnull %1)
  %.not = icmp eq ptr %97, null
  br i1 %.not, label %._crit_edge, label %36, !llvm.loop !24

._crit_edge:                                      ; preds = %96
  %98 = icmp slt i32 %.1, 15
  br i1 %98, label %._crit_edge.thread, label %116

._crit_edge.thread:                               ; preds = %19, %._crit_edge
  %99 = call ptr @recover_fileName(ptr noundef nonnull %1) #7
  %100 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.36, ptr noundef %99)
  %101 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.37)
  %102 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  %103 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39)
  %104 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40)
  %105 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  %106 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42)
  %107 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43)
  %108 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44)
  %109 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45)
  %110 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.46)
  %111 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47)
  %112 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48)
  %113 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49)
  %114 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50)
  %115 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51)
  call void @exit(i32 noundef -1) #9
  unreachable

116:                                              ; preds = %._crit_edge
  %117 = getelementptr inbounds i8, ptr %0, i64 1400
  store double 1.000000e+00, ptr %117, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #7
  br label %118

118:                                              ; preds = %116, %5
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

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

declare ptr @LSkip(ptr noundef) local_unnamed_addr #3

declare ptr @RStrip(ptr noundef) local_unnamed_addr #3

declare ptr @FindCharOrComment(ptr noundef, i8 noundef signext) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #5

declare ptr @recover_fileName(ptr noundef) local_unnamed_addr #3

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #6

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 168}
!6 = !{!"", !7, i64 0, !7, i64 88, !7, i64 176, !7, i64 264, !7, i64 352, !7, i64 440, !7, i64 528, !7, i64 616, !7, i64 704, !7, i64 792, !7, i64 880, !7, i64 968, !7, i64 1056, !7, i64 1144, !7, i64 1232, !7, i64 1320, !8, i64 1408}
!7 = !{!"", !8, i64 0, !8, i64 64, !10, i64 80}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!6, !10, i64 256}
!12 = !{!6, !10, i64 344}
!13 = !{!6, !10, i64 432}
!14 = !{!6, !10, i64 520}
!15 = !{!6, !10, i64 80}
!16 = !{!6, !10, i64 784}
!17 = !{!6, !10, i64 960}
!18 = !{!6, !10, i64 872}
!19 = !{!6, !10, i64 1048}
!20 = !{!6, !10, i64 608}
!21 = !{!6, !10, i64 696}
!22 = !{!8, !8, i64 0}
!23 = !{!10, !10, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!6, !10, i64 1400}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass