; LLVM IR from Discngine/fpocket :: src (fparams)

; 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.option = type { ptr, i32, ptr, i32 }
%struct.s_fparams = type { [2000 x i8], [2000 x i8], [2000 x i8], [8000 x i8], ptr, ptr, ptr, i32, i32, ptr, ptr, ptr, i8, i8, i32, i32, i16, i32, i32, i32, i16, i32, i32, i32, i16, float, float, float, float, float, [20 x ptr], i16, i16, [20 x ptr], i32, [10 x i8] }

@write_mode = external dso_local global [10 x i8], align 1
@opterr = external global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@get_fpocket_args.fplong_options = external hidden global [22 x %struct.option], align 16
@optarg = external global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external global ptr, align 8
@.str.34 = external hidden unnamed_addr constant [179 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local ptr @init_def_fparams() #0

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

declare ptr @my_malloc(i64 noundef) #2

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

; Function Attrs: nounwind uwtable
define dso_local ptr @get_fpocket_args(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i16, align 2
  %12 = alloca i16, align 2
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca [8000 x ptr], align 16
  %16 = alloca i16, align 2
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %25 = call ptr @init_def_fparams()
  store ptr %25, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %11) #7
  store i16 0, ptr %11, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #7
  store i32 0, ptr @opterr, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 64000, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr %16) #7
  store i16 0, ptr %16, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store ptr @.str, ptr %17, align 8, !tbaa !9
  br label %26

26:                                               ; preds = %497, %2
  %27 = load i32, ptr %8, align 4, !tbaa !5
  %28 = icmp ne i32 %27, -1
  br i1 %28, label %29, label %498

29:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !5
  store ptr null, ptr @optarg, align 8, !tbaa !9
  %30 = load i32, ptr %4, align 4, !tbaa !5
  %31 = load ptr, ptr %5, align 8, !tbaa !9
  %32 = call i32 @getopt_long(i32 noundef %30, ptr noundef %31, ptr noundef @.str.22, ptr noundef @get_fpocket_args.fplong_options, ptr noundef %18) #7
  store i32 %32, ptr %8, align 4, !tbaa !5
  %33 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %33, label %497 [
    i32 0, label %497
    i32 119, label %34
    i32 97, label %102
    i32 99, label %144
    i32 107, label %186
    i32 114, label %228
    i32 80, label %286
    i32 117, label %388
    i32 102, label %395
    i32 109, label %403
    i32 77, label %411
    i32 105, label %419
    i32 112, label %427
    i32 68, label %435
    i32 101, label %443
    i32 67, label %450
    i32 121, label %457
    i32 100, label %463
    i32 120, label %466
    i32 65, label %471
    i32 118, label %480
    i32 108, label %487
    i32 76, label %494
  ]

34:                                               ; preds = %29
  %35 = load i32, ptr %6, align 4, !tbaa !5
  %36 = add nsw i32 %35, 1
  store i32 %36, ptr %6, align 4, !tbaa !5
  %37 = load ptr, ptr @optarg, align 8, !tbaa !9
  %38 = getelementptr inbounds i8, ptr %37, i64 0
  %39 = load i8, ptr %38, align 1, !tbaa !13
  %40 = sext i8 %39 to i32
  %41 = icmp ne i32 %40, 100
  br i1 %41, label %42, label %78

42:                                               ; preds = %34
  %43 = load ptr, ptr @optarg, align 8, !tbaa !9
  %44 = getelementptr inbounds i8, ptr %43, i64 0
  %45 = load i8, ptr %44, align 1, !tbaa !13
  %46 = sext i8 %45 to i32
  %47 = icmp ne i32 %46, 98
  br i1 %47, label %48, label %78

48:                                               ; preds = %42
  %49 = load ptr, ptr @optarg, align 8, !tbaa !9
  %50 = getelementptr inbounds i8, ptr %49, i64 0
  %51 = load i8, ptr %50, align 1, !tbaa !13
  %52 = sext i8 %51 to i32
  %53 = icmp ne i32 %52, 112
  br i1 %53, label %54, label %78

54:                                               ; preds = %48
  %55 = load ptr, ptr @optarg, align 8, !tbaa !9
  %56 = getelementptr inbounds i8, ptr %55, i64 0
  %57 = load i8, ptr %56, align 1, !tbaa !13
  %58 = sext i8 %57 to i32
  %59 = icmp ne i32 %58, 109
  br i1 %59, label %60, label %78

60:                                               ; preds = %54
  %61 = load ptr, ptr @optarg, align 8, !tbaa !9
  %62 = call i32 @strcmp(ptr noundef %61, ptr noundef @.str.23) #8
  %63 = icmp ne i32 %62, 0
  br i1 %63, label %64, label %78

64:                                               ; preds = %60
  %65 = load ptr, ptr @optarg, align 8, !tbaa !9
  %66 = call i32 @strcmp(ptr noundef %65, ptr noundef @.str.24) #8
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %78

68:                                               ; preds = %64
  %69 = load ptr, ptr @optarg, align 8, !tbaa !9
  %70 = call i32 @strcmp(ptr noundef %69, ptr noundef @.str.25) #8
  %71 = icmp ne i32 %70, 0
  br i1 %71, label %72, label %78

72:                                               ; preds = %68
  %73 = load ptr, ptr @optarg, align 8, !tbaa !9
  %74 = call i32 @strcmp(ptr noundef %73, ptr noundef @.str.26) #8
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %78

76:                                               ; preds = %72
  %77 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %497

78:                                               ; preds = %72, %68, %64, %60, %54, %48, %42, %34
  %79 = load ptr, ptr @optarg, align 8, !tbaa !9
  %80 = call i32 @strcmp(ptr noundef %79, ptr noundef @.str.25) #8
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %91, label %82

82:                                               ; preds = %78
  %83 = load ptr, ptr %7, align 8, !tbaa !9
  %84 = getelementptr inbounds %struct.s_fparams, ptr %83, i32 0, i32 35
  %85 = getelementptr inbounds [10 x i8], ptr %84, i64 0, i64 0
  %86 = call ptr @strcpy(ptr noundef %85, ptr noundef @.str.26) #7
  %87 = load ptr, ptr %7, align 8, !tbaa !9
  %88 = getelementptr inbounds %struct.s_fparams, ptr %87, i32 0, i32 35
  %89 = getelementptr inbounds [10 x i8], ptr %88, i64 0, i64 0
  %90 = call ptr @strcpy(ptr noundef @write_mode, ptr noundef %89) #7
  br label %101

91:                                               ; preds = %78
  %92 = load ptr, ptr %7, align 8, !tbaa !9
  %93 = getelementptr inbounds %struct.s_fparams, ptr %92, i32 0, i32 35
  %94 = getelementptr inbounds [10 x i8], ptr %93, i64 0, i64 0
  %95 = load ptr, ptr @optarg, align 8, !tbaa !9
  %96 = call ptr @strcpy(ptr noundef %94, ptr noundef %95) #7
  %97 = load ptr, ptr %7, align 8, !tbaa !9
  %98 = getelementptr inbounds %struct.s_fparams, ptr %97, i32 0, i32 35
  %99 = getelementptr inbounds [10 x i8], ptr %98, i64 0, i64 0
  %100 = call ptr @strcpy(ptr noundef @write_mode, ptr noundef %99) #7
  br label %101

101:                                              ; preds = %91, %82
  br label %497

102:                                              ; preds = %29
  %103 = load i32, ptr %6, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr %6, align 4, !tbaa !5
  %105 = load ptr, ptr @optarg, align 8, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !9
  %107 = call ptr @strtok(ptr noundef %105, ptr noundef %106) #7
  store ptr %107, ptr %13, align 8, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %108

108:                                              ; preds = %111, %102
  %109 = load ptr, ptr %13, align 8, !tbaa !9
  %110 = icmp ne ptr %109, null
  br i1 %110, label %111, label %137

111:                                              ; preds = %108
  %112 = call noalias ptr @malloc(i64 noundef 21) #9
  %113 = load ptr, ptr %7, align 8, !tbaa !9
  %114 = getelementptr inbounds %struct.s_fparams, ptr %113, i32 0, i32 33
  %115 = load i32, ptr %19, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds [20 x ptr], ptr %114, i64 0, i64 %116
  store ptr %112, ptr %117, align 8, !tbaa !9
  %118 = load ptr, ptr %7, align 8, !tbaa !9
  %119 = getelementptr inbounds %struct.s_fparams, ptr %118, i32 0, i32 33
  %120 = load i32, ptr %19, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds [20 x ptr], ptr %119, i64 0, i64 %121
  %123 = load ptr, ptr %122, align 8, !tbaa !9
  %124 = load ptr, ptr %13, align 8, !tbaa !9
  %125 = call ptr @strncpy(ptr noundef %123, ptr noundef %124, i64 noundef 20) #7
  %126 = load ptr, ptr %7, align 8, !tbaa !9
  %127 = getelementptr inbounds %struct.s_fparams, ptr %126, i32 0, i32 33
  %128 = load i32, ptr %19, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds [20 x ptr], ptr %127, i64 0, i64 %129
  %131 = load ptr, ptr %130, align 8, !tbaa !9
  %132 = getelementptr inbounds i8, ptr %131, i64 20
  store i8 0, ptr %132, align 1, !tbaa !13
  %133 = load i32, ptr %19, align 4, !tbaa !5
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr %19, align 4, !tbaa !5
  %135 = load ptr, ptr %17, align 8, !tbaa !9
  %136 = call ptr @strtok(ptr noundef null, ptr noundef %135) #7
  store ptr %136, ptr %13, align 8, !tbaa !9
  br label %108, !llvm.loop !14

137:                                              ; preds = %108
  %138 = load i32, ptr %19, align 4, !tbaa !5
  %139 = trunc i32 %138 to i16
  %140 = load ptr, ptr %7, align 8, !tbaa !9
  %141 = getelementptr inbounds %struct.s_fparams, ptr %140, i32 0, i32 32
  store i16 %139, ptr %141, align 2, !tbaa !16
  %142 = load ptr, ptr %7, align 8, !tbaa !9
  %143 = getelementptr inbounds %struct.s_fparams, ptr %142, i32 0, i32 7
  store i32 0, ptr %143, align 8, !tbaa !19
  br label %497

144:                                              ; preds = %29
  %145 = load ptr, ptr @optarg, align 8, !tbaa !9
  %146 = load ptr, ptr %17, align 8, !tbaa !9
  %147 = call ptr @strtok(ptr noundef %145, ptr noundef %146) #7
  store ptr %147, ptr %13, align 8, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %148

148:                                              ; preds = %151, %144
  %149 = load ptr, ptr %13, align 8, !tbaa !9
  %150 = icmp ne ptr %149, null
  br i1 %150, label %151, label %177

151:                                              ; preds = %148
  %152 = call noalias ptr @malloc(i64 noundef 21) #9
  %153 = load ptr, ptr %7, align 8, !tbaa !9
  %154 = getelementptr inbounds %struct.s_fparams, ptr %153, i32 0, i32 30
  %155 = load i32, ptr %20, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [20 x ptr], ptr %154, i64 0, i64 %156
  store ptr %152, ptr %157, align 8, !tbaa !9
  %158 = load ptr, ptr %7, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.s_fparams, ptr %158, i32 0, i32 30
  %160 = load i32, ptr %20, align 4, !tbaa !5
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds [20 x ptr], ptr %159, i64 0, i64 %161
  %163 = load ptr, ptr %162, align 8, !tbaa !9
  %164 = load ptr, ptr %13, align 8, !tbaa !9
  %165 = call ptr @strncpy(ptr noundef %163, ptr noundef %164, i64 noundef 20) #7
  %166 = load ptr, ptr %7, align 8, !tbaa !9
  %167 = getelementptr inbounds %struct.s_fparams, ptr %166, i32 0, i32 30
  %168 = load i32, ptr %20, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [20 x ptr], ptr %167, i64 0, i64 %169
  %171 = load ptr, ptr %170, align 8, !tbaa !9
  %172 = getelementptr inbounds i8, ptr %171, i64 20
  store i8 0, ptr %172, align 1, !tbaa !13
  %173 = load i32, ptr %20, align 4, !tbaa !5
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %20, align 4, !tbaa !5
  %175 = load ptr, ptr %17, align 8, !tbaa !9
  %176 = call ptr @strtok(ptr noundef null, ptr noundef %175) #7
  store ptr %176, ptr %13, align 8, !tbaa !9
  br label %148, !llvm.loop !20

177:                                              ; preds = %148
  %178 = load ptr, ptr %7, align 8, !tbaa !9
  %179 = getelementptr inbounds %struct.s_fparams, ptr %178, i32 0, i32 34
  store i32 0, ptr %179, align 8, !tbaa !21
  %180 = load i32, ptr %20, align 4, !tbaa !5
  %181 = trunc i32 %180 to i16
  %182 = load ptr, ptr %7, align 8, !tbaa !9
  %183 = getelementptr inbounds %struct.s_fparams, ptr %182, i32 0, i32 31
  store i16 %181, ptr %183, align 8, !tbaa !22
  %184 = load i32, ptr %6, align 4, !tbaa !5
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %6, align 4, !tbaa !5
  br label %497

186:                                              ; preds = %29
  %187 = load ptr, ptr @optarg, align 8, !tbaa !9
  %188 = load ptr, ptr %17, align 8, !tbaa !9
  %189 = call ptr @strtok(ptr noundef %187, ptr noundef %188) #7
  store ptr %189, ptr %13, align 8, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %190

190:                                              ; preds = %193, %186
  %191 = load ptr, ptr %13, align 8, !tbaa !9
  %192 = icmp ne ptr %191, null
  br i1 %192, label %193, label %219

193:                                              ; preds = %190
  %194 = call noalias ptr @malloc(i64 noundef 21) #9
  %195 = load ptr, ptr %7, align 8, !tbaa !9
  %196 = getelementptr inbounds %struct.s_fparams, ptr %195, i32 0, i32 30
  %197 = load i32, ptr %21, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [20 x ptr], ptr %196, i64 0, i64 %198
  store ptr %194, ptr %199, align 8, !tbaa !9
  %200 = load ptr, ptr %7, align 8, !tbaa !9
  %201 = getelementptr inbounds %struct.s_fparams, ptr %200, i32 0, i32 30
  %202 = load i32, ptr %21, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [20 x ptr], ptr %201, i64 0, i64 %203
  %205 = load ptr, ptr %204, align 8, !tbaa !9
  %206 = load ptr, ptr %13, align 8, !tbaa !9
  %207 = call ptr @strncpy(ptr noundef %205, ptr noundef %206, i64 noundef 20) #7
  %208 = load ptr, ptr %7, align 8, !tbaa !9
  %209 = getelementptr inbounds %struct.s_fparams, ptr %208, i32 0, i32 30
  %210 = load i32, ptr %21, align 4, !tbaa !5
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [20 x ptr], ptr %209, i64 0, i64 %211
  %213 = load ptr, ptr %212, align 8, !tbaa !9
  %214 = getelementptr inbounds i8, ptr %213, i64 20
  store i8 0, ptr %214, align 1, !tbaa !13
  %215 = load i32, ptr %21, align 4, !tbaa !5
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %21, align 4, !tbaa !5
  %217 = load ptr, ptr %17, align 8, !tbaa !9
  %218 = call ptr @strtok(ptr noundef null, ptr noundef %217) #7
  store ptr %218, ptr %13, align 8, !tbaa !9
  br label %190, !llvm.loop !23

219:                                              ; preds = %190
  %220 = load i32, ptr %21, align 4, !tbaa !5
  %221 = trunc i32 %220 to i16
  %222 = load ptr, ptr %7, align 8, !tbaa !9
  %223 = getelementptr inbounds %struct.s_fparams, ptr %222, i32 0, i32 31
  store i16 %221, ptr %223, align 8, !tbaa !22
  %224 = load ptr, ptr %7, align 8, !tbaa !9
  %225 = getelementptr inbounds %struct.s_fparams, ptr %224, i32 0, i32 34
  store i32 1, ptr %225, align 8, !tbaa !21
  %226 = load i32, ptr %6, align 4, !tbaa !5
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %6, align 4, !tbaa !5
  br label %497

228:                                              ; preds = %29
  %229 = load i32, ptr %6, align 4, !tbaa !5
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %6, align 4, !tbaa !5
  %231 = load ptr, ptr @optarg, align 8, !tbaa !9
  %232 = call ptr @strtok(ptr noundef %231, ptr noundef @.str.28) #7
  store ptr %232, ptr %13, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %283, %228
  %234 = load ptr, ptr %13, align 8, !tbaa !9
  %235 = icmp ne ptr %234, null
  br i1 %235, label %236, label %285

236:                                              ; preds = %233
  %237 = load i16, ptr %16, align 2, !tbaa !11
  %238 = add i16 %237, 1
  store i16 %238, ptr %16, align 2, !tbaa !11
  %239 = load i16, ptr %16, align 2, !tbaa !11
  %240 = sext i16 %239 to i32
  %241 = icmp eq i32 %240, 1
  br i1 %241, label %242, label %247

242:                                              ; preds = %236
  %243 = load ptr, ptr %13, align 8, !tbaa !9
  %244 = call i32 @atoi(ptr noundef %243) #8
  %245 = load ptr, ptr %7, align 8, !tbaa !9
  %246 = getelementptr inbounds %struct.s_fparams, ptr %245, i32 0, i32 7
  store i32 %244, ptr %246, align 8, !tbaa !19
  br label %283

247:                                              ; preds = %236
  %248 = load i16, ptr %16, align 2, !tbaa !11
  %249 = sext i16 %248 to i32
  %250 = icmp eq i32 %249, 2
  br i1 %250, label %251, label %264

251:                                              ; preds = %247
  %252 = call noalias ptr @malloc(i64 noundef 21) #9
  %253 = load ptr, ptr %7, align 8, !tbaa !9
  %254 = getelementptr inbounds %struct.s_fparams, ptr %253, i32 0, i32 6
  store ptr %252, ptr %254, align 8, !tbaa !24
  %255 = load ptr, ptr %7, align 8, !tbaa !9
  %256 = getelementptr inbounds %struct.s_fparams, ptr %255, i32 0, i32 6
  %257 = load ptr, ptr %256, align 8, !tbaa !24
  %258 = load ptr, ptr %13, align 8, !tbaa !9
  %259 = call ptr @strncpy(ptr noundef %257, ptr noundef %258, i64 noundef 20) #7
  %260 = load ptr, ptr %7, align 8, !tbaa !9
  %261 = getelementptr inbounds %struct.s_fparams, ptr %260, i32 0, i32 6
  %262 = load ptr, ptr %261, align 8, !tbaa !24
  %263 = getelementptr inbounds i8, ptr %262, i64 20
  store i8 0, ptr %263, align 1, !tbaa !13
  br label %282

264:                                              ; preds = %247
  %265 = load i16, ptr %16, align 2, !tbaa !11
  %266 = sext i16 %265 to i32
  %267 = icmp eq i32 %266, 3
  br i1 %267, label %268, label %281

268:                                              ; preds = %264
  %269 = call noalias ptr @malloc(i64 noundef 21) #9
  %270 = load ptr, ptr %7, align 8, !tbaa !9
  %271 = getelementptr inbounds %struct.s_fparams, ptr %270, i32 0, i32 5
  store ptr %269, ptr %271, align 8, !tbaa !25
  %272 = load ptr, ptr %7, align 8, !tbaa !9
  %273 = getelementptr inbounds %struct.s_fparams, ptr %272, i32 0, i32 5
  %274 = load ptr, ptr %273, align 8, !tbaa !25
  %275 = load ptr, ptr %13, align 8, !tbaa !9
  %276 = call ptr @strncpy(ptr noundef %274, ptr noundef %275, i64 noundef 20) #7
  %277 = load ptr, ptr %7, align 8, !tbaa !9
  %278 = getelementptr inbounds %struct.s_fparams, ptr %277, i32 0, i32 5
  %279 = load ptr, ptr %278, align 8, !tbaa !25
  %280 = getelementptr inbounds i8, ptr %279, i64 20
  store i8 0, ptr %280, align 1, !tbaa !13
  br label %281

281:                                              ; preds = %268, %264
  br label %282

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

283:                                              ; preds = %282, %242
  %284 = call ptr @strtok(ptr noundef null, ptr noundef @.str.28) #7
  store ptr %284, ptr %13, align 8, !tbaa !9
  br label %233, !llvm.loop !26

285:                                              ; preds = %233
  br label %497

286:                                              ; preds = %29
  %287 = load i32, ptr %6, align 4, !tbaa !5
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %6, align 4, !tbaa !5
  %289 = load ptr, ptr %7, align 8, !tbaa !9
  %290 = getelementptr inbounds %struct.s_fparams, ptr %289, i32 0, i32 3
  %291 = getelementptr inbounds [8000 x i8], ptr %290, i64 0, i64 0
  %292 = load ptr, ptr @optarg, align 8, !tbaa !9
  %293 = call ptr @strcpy(ptr noundef %291, ptr noundef %292) #7
  %294 = load ptr, ptr %7, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct.s_fparams, ptr %294, i32 0, i32 3
  %296 = getelementptr inbounds [8000 x i8], ptr %295, i64 0, i64 0
  store ptr %296, ptr %22, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %301, %286
  %298 = load ptr, ptr %22, align 8, !tbaa !9
  %299 = call ptr @strtok_r(ptr noundef %298, ptr noundef @.str.29, ptr noundef %22) #7
  store ptr %299, ptr %13, align 8, !tbaa !9
  %300 = icmp ne ptr %299, null
  br i1 %300, label %301, label %306

301:                                              ; preds = %297
  %302 = load ptr, ptr %7, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.s_fparams, ptr %302, i32 0, i32 8
  %304 = load i32, ptr %303, align 4, !tbaa !27
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %303, align 4, !tbaa !27
  br label %297, !llvm.loop !28

306:                                              ; preds = %297
  %307 = load ptr, ptr %7, align 8, !tbaa !9
  %308 = getelementptr inbounds %struct.s_fparams, ptr %307, i32 0, i32 8
  %309 = load i32, ptr %308, align 4, !tbaa !27
  %310 = sext i32 %309 to i64
  %311 = mul i64 %310, 1
  %312 = call ptr @my_malloc(i64 noundef %311)
  %313 = load ptr, ptr %7, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct.s_fparams, ptr %313, i32 0, i32 9
  store ptr %312, ptr %314, align 8, !tbaa !29
  %315 = load ptr, ptr %7, align 8, !tbaa !9
  %316 = getelementptr inbounds %struct.s_fparams, ptr %315, i32 0, i32 8
  %317 = load i32, ptr %316, align 4, !tbaa !27
  %318 = sext i32 %317 to i64
  %319 = mul i64 %318, 1
  %320 = call ptr @my_malloc(i64 noundef %319)
  %321 = load ptr, ptr %7, align 8, !tbaa !9
  %322 = getelementptr inbounds %struct.s_fparams, ptr %321, i32 0, i32 10
  store ptr %320, ptr %322, align 8, !tbaa !30
  %323 = load ptr, ptr %7, align 8, !tbaa !9
  %324 = getelementptr inbounds %struct.s_fparams, ptr %323, i32 0, i32 8
  %325 = load i32, ptr %324, align 4, !tbaa !27
  %326 = sext i32 %325 to i64
  %327 = mul i64 %326, 2
  %328 = call ptr @my_malloc(i64 noundef %327)
  %329 = load ptr, ptr %7, align 8, !tbaa !9
  %330 = getelementptr inbounds %struct.s_fparams, ptr %329, i32 0, i32 11
  store ptr %328, ptr %330, align 8, !tbaa !31
  store i32 0, ptr %10, align 4, !tbaa !5
  %331 = load ptr, ptr %7, align 8, !tbaa !9
  %332 = getelementptr inbounds %struct.s_fparams, ptr %331, i32 0, i32 3
  %333 = getelementptr inbounds [8000 x i8], ptr %332, i64 0, i64 0
  %334 = load ptr, ptr @optarg, align 8, !tbaa !9
  %335 = call ptr @strcpy(ptr noundef %333, ptr noundef %334) #7
  %336 = load ptr, ptr %7, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.s_fparams, ptr %336, i32 0, i32 3
  %338 = getelementptr inbounds [8000 x i8], ptr %337, i64 0, i64 0
  store ptr %338, ptr %22, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %384, %306
  %340 = load ptr, ptr %22, align 8, !tbaa !9
  %341 = call ptr @strtok_r(ptr noundef %340, ptr noundef @.str.29, ptr noundef %22) #7
  store ptr %341, ptr %13, align 8, !tbaa !9
  %342 = icmp ne ptr %341, null
  br i1 %342, label %343, label %387

343:                                              ; preds = %339
  %344 = load ptr, ptr %13, align 8, !tbaa !9
  %345 = call ptr @strcpy(ptr noundef %15, ptr noundef %344) #7
  %346 = getelementptr inbounds [8000 x ptr], ptr %15, i64 0, i64 0
  store ptr %346, ptr %23, align 8, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %347

347:                                              ; preds = %381, %343
  %348 = load ptr, ptr %23, align 8, !tbaa !9
  %349 = call ptr @strtok_r(ptr noundef %348, ptr noundef @.str.28, ptr noundef %23) #7
  store ptr %349, ptr %14, align 8, !tbaa !9
  %350 = icmp ne ptr %349, null
  br i1 %350, label %351, label %384

351:                                              ; preds = %347
  %352 = load i32, ptr %9, align 4, !tbaa !5
  switch i32 %352, label %381 [
    i32 0, label %353
    i32 1, label %363
    i32 2, label %372
  ]

353:                                              ; preds = %351
  %354 = load ptr, ptr %14, align 8, !tbaa !9
  %355 = call i32 @atoi(ptr noundef %354) #8
  %356 = trunc i32 %355 to i16
  %357 = load ptr, ptr %7, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.s_fparams, ptr %357, i32 0, i32 11
  %359 = load ptr, ptr %358, align 8, !tbaa !31
  %360 = load i32, ptr %10, align 4, !tbaa !5
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds i16, ptr %359, i64 %361
  store i16 %356, ptr %362, align 2, !tbaa !11
  br label %363

363:                                              ; preds = %353, %351
  %364 = load ptr, ptr %7, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.s_fparams, ptr %364, i32 0, i32 10
  %366 = load ptr, ptr %365, align 8, !tbaa !30
  %367 = load i32, ptr %10, align 4, !tbaa !5
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds i8, ptr %366, i64 %368
  %370 = load ptr, ptr %14, align 8, !tbaa !9
  %371 = call ptr @strncpy(ptr noundef %369, ptr noundef %370, i64 noundef 1) #7
  br label %372

372:                                              ; preds = %363, %351
  %373 = load ptr, ptr %7, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.s_fparams, ptr %373, i32 0, i32 9
  %375 = load ptr, ptr %374, align 8, !tbaa !29
  %376 = load i32, ptr %10, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i8, ptr %375, i64 %377
  %379 = load ptr, ptr %14, align 8, !tbaa !9
  %380 = call ptr @strncpy(ptr noundef %378, ptr noundef %379, i64 noundef 1) #7
  br label %381

381:                                              ; preds = %372, %351
  %382 = load i32, ptr %9, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %9, align 4, !tbaa !5
  br label %347, !llvm.loop !32

384:                                              ; preds = %347
  %385 = load i32, ptr %10, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %10, align 4, !tbaa !5
  br label %339, !llvm.loop !33

387:                                              ; preds = %339
  br label %497

388:                                              ; preds = %29
  %389 = load i32, ptr %6, align 4, !tbaa !5
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr %6, align 4, !tbaa !5
  %391 = load ptr, ptr @optarg, align 8, !tbaa !9
  %392 = call i32 @atoi(ptr noundef %391) #8
  %393 = load ptr, ptr %7, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.s_fparams, ptr %393, i32 0, i32 14
  store i32 %392, ptr %394, align 4, !tbaa !34
  br label %497

395:                                              ; preds = %29
  %396 = load i32, ptr %6, align 4, !tbaa !5
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %6, align 4, !tbaa !5
  %398 = load ptr, ptr %7, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.s_fparams, ptr %398, i32 0, i32 0
  %400 = getelementptr inbounds [2000 x i8], ptr %399, i64 0, i64 0
  %401 = load ptr, ptr @optarg, align 8, !tbaa !9
  %402 = call ptr @strcpy(ptr noundef %400, ptr noundef %401) #7
  br label %497

403:                                              ; preds = %29
  %404 = load ptr, ptr @optarg, align 8, !tbaa !9
  %405 = call double @atof(ptr noundef %404) #8
  %406 = fptrunc double %405 to float
  %407 = load ptr, ptr %7, align 8, !tbaa !9
  %408 = getelementptr inbounds %struct.s_fparams, ptr %407, i32 0, i32 27
  store float %406, ptr %408, align 8, !tbaa !35
  %409 = load i32, ptr %6, align 4, !tbaa !5
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %6, align 4, !tbaa !5
  br label %497

411:                                              ; preds = %29
  %412 = load ptr, ptr @optarg, align 8, !tbaa !9
  %413 = call double @atof(ptr noundef %412) #8
  %414 = fptrunc double %413 to float
  %415 = load ptr, ptr %7, align 8, !tbaa !9
  %416 = getelementptr inbounds %struct.s_fparams, ptr %415, i32 0, i32 29
  store float %414, ptr %416, align 8, !tbaa !36
  %417 = load i32, ptr %6, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %6, align 4, !tbaa !5
  br label %497

419:                                              ; preds = %29
  %420 = load ptr, ptr @optarg, align 8, !tbaa !9
  %421 = call i32 @atoi(ptr noundef %420) #8
  %422 = trunc i32 %421 to i16
  %423 = load ptr, ptr %7, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.s_fparams, ptr %423, i32 0, i32 24
  store i16 %422, ptr %424, align 4, !tbaa !37
  %425 = load i32, ptr %6, align 4, !tbaa !5
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %6, align 4, !tbaa !5
  br label %497

427:                                              ; preds = %29
  %428 = load ptr, ptr @optarg, align 8, !tbaa !9
  %429 = call double @atof(ptr noundef %428) #8
  %430 = fptrunc double %429 to float
  %431 = load ptr, ptr %7, align 8, !tbaa !9
  %432 = getelementptr inbounds %struct.s_fparams, ptr %431, i32 0, i32 26
  store float %430, ptr %432, align 4, !tbaa !38
  %433 = load i32, ptr %6, align 4, !tbaa !5
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %6, align 4, !tbaa !5
  br label %497

435:                                              ; preds = %29
  %436 = load ptr, ptr @optarg, align 8, !tbaa !9
  %437 = call double @atof(ptr noundef %436) #8
  %438 = fptrunc double %437 to float
  %439 = load ptr, ptr %7, align 8, !tbaa !9
  %440 = getelementptr inbounds %struct.s_fparams, ptr %439, i32 0, i32 25
  store float %438, ptr %440, align 8, !tbaa !39
  %441 = load i32, ptr %6, align 4, !tbaa !5
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %6, align 4, !tbaa !5
  br label %497

443:                                              ; preds = %29
  %444 = load ptr, ptr %7, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.s_fparams, ptr %444, i32 0, i32 12
  %446 = load ptr, ptr @optarg, align 8, !tbaa !9
  %447 = call ptr @strncpy(ptr noundef %445, ptr noundef %446, i64 noundef 1) #7
  %448 = load i32, ptr %6, align 4, !tbaa !5
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr %6, align 4, !tbaa !5
  br label %497

450:                                              ; preds = %29
  %451 = load i32, ptr %6, align 4, !tbaa !5
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %6, align 4, !tbaa !5
  %453 = load ptr, ptr %7, align 8, !tbaa !9
  %454 = getelementptr inbounds %struct.s_fparams, ptr %453, i32 0, i32 13
  %455 = load ptr, ptr @optarg, align 8, !tbaa !9
  %456 = call ptr @strncpy(ptr noundef %454, ptr noundef %455, i64 noundef 1) #7
  br label %497

457:                                              ; preds = %29
  %458 = load ptr, ptr %7, align 8, !tbaa !9
  %459 = getelementptr inbounds %struct.s_fparams, ptr %458, i32 0, i32 1
  %460 = getelementptr inbounds [2000 x i8], ptr %459, i64 0, i64 0
  %461 = load ptr, ptr @optarg, align 8, !tbaa !9
  %462 = call ptr @strcpy(ptr noundef %460, ptr noundef %461) #7
  br label %497

463:                                              ; preds = %29
  %464 = load ptr, ptr %7, align 8, !tbaa !9
  %465 = getelementptr inbounds %struct.s_fparams, ptr %464, i32 0, i32 18
  store i32 1, ptr %465, align 4, !tbaa !40
  br label %497

466:                                              ; preds = %29
  %467 = load ptr, ptr %7, align 8, !tbaa !9
  %468 = getelementptr inbounds %struct.s_fparams, ptr %467, i32 0, i32 20
  store i16 1, ptr %468, align 4, !tbaa !41
  %469 = load i32, ptr %6, align 4, !tbaa !5
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %6, align 4, !tbaa !5
  br label %497

471:                                              ; preds = %29
  %472 = load ptr, ptr @optarg, align 8, !tbaa !9
  %473 = call double @atof(ptr noundef %472) #8
  %474 = fptrunc double %473 to float
  %475 = fptosi float %474 to i32
  %476 = load ptr, ptr %7, align 8, !tbaa !9
  %477 = getelementptr inbounds %struct.s_fparams, ptr %476, i32 0, i32 21
  store i32 %475, ptr %477, align 8, !tbaa !42
  %478 = load i32, ptr %6, align 4, !tbaa !5
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %6, align 4, !tbaa !5
  br label %497

480:                                              ; preds = %29
  %481 = load ptr, ptr @optarg, align 8, !tbaa !9
  %482 = call i32 @atoi(ptr noundef %481) #8
  %483 = load ptr, ptr %7, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct.s_fparams, ptr %483, i32 0, i32 22
  store i32 %482, ptr %484, align 4, !tbaa !43
  %485 = load i32, ptr %6, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %6, align 4, !tbaa !5
  br label %497

487:                                              ; preds = %29
  %488 = load ptr, ptr @optarg, align 8, !tbaa !9
  %489 = call i32 @atoi(ptr noundef %488) #8
  %490 = load ptr, ptr %7, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.s_fparams, ptr %490, i32 0, i32 19
  store i32 %489, ptr %491, align 8, !tbaa !44
  %492 = load i32, ptr %6, align 4, !tbaa !5
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %6, align 4, !tbaa !5
  br label %497

494:                                              ; preds = %29
  %495 = load i32, ptr %6, align 4, !tbaa !5
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %6, align 4, !tbaa !5
  br label %497

497:                                              ; preds = %494, %487, %480, %471, %466, %463, %457, %450, %443, %435, %427, %419, %411, %403, %395, %388, %387, %285, %219, %177, %137, %101, %76, %29, %29
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %26, !llvm.loop !45

498:                                              ; preds = %26
  %499 = load ptr, ptr %7, align 8, !tbaa !9
  %500 = getelementptr inbounds %struct.s_fparams, ptr %499, i32 0, i32 0
  %501 = getelementptr inbounds [2000 x i8], ptr %500, i64 0, i64 0
  %502 = call ptr @strstr(ptr noundef %501, ptr noundef @.str.30) #8
  %503 = icmp ne ptr %502, null
  br i1 %503, label %504, label %520

504:                                              ; preds = %498
  %505 = load ptr, ptr %7, align 8, !tbaa !9
  %506 = getelementptr inbounds %struct.s_fparams, ptr %505, i32 0, i32 35
  %507 = getelementptr inbounds [10 x i8], ptr %506, i64 0, i64 0
  %508 = load i8, ptr %507, align 4, !tbaa !13
  %509 = sext i8 %508 to i32
  %510 = icmp eq i32 %509, 100
  br i1 %510, label %511, label %520

511:                                              ; preds = %504
  %512 = load ptr, ptr %7, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.s_fparams, ptr %512, i32 0, i32 35
  %514 = getelementptr inbounds [10 x i8], ptr %513, i64 0, i64 0
  %515 = call ptr @strcpy(ptr noundef %514, ptr noundef @.str.31) #7
  %516 = load ptr, ptr %7, align 8, !tbaa !9
  %517 = getelementptr inbounds %struct.s_fparams, ptr %516, i32 0, i32 35
  %518 = getelementptr inbounds [10 x i8], ptr %517, i64 0, i64 0
  %519 = call ptr @strcpy(ptr noundef @write_mode, ptr noundef %518) #7
  br label %543

520:                                              ; preds = %504, %498
  %521 = load ptr, ptr %7, align 8, !tbaa !9
  %522 = getelementptr inbounds %struct.s_fparams, ptr %521, i32 0, i32 0
  %523 = getelementptr inbounds [2000 x i8], ptr %522, i64 0, i64 0
  %524 = call ptr @strstr(ptr noundef %523, ptr noundef @.str.32) #8
  %525 = icmp ne ptr %524, null
  br i1 %525, label %526, label %542

526:                                              ; preds = %520
  %527 = load ptr, ptr %7, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.s_fparams, ptr %527, i32 0, i32 35
  %529 = getelementptr inbounds [10 x i8], ptr %528, i64 0, i64 0
  %530 = load i8, ptr %529, align 4, !tbaa !13
  %531 = sext i8 %530 to i32
  %532 = icmp eq i32 %531, 100
  br i1 %532, label %533, label %542

533:                                              ; preds = %526
  %534 = load ptr, ptr %7, align 8, !tbaa !9
  %535 = getelementptr inbounds %struct.s_fparams, ptr %534, i32 0, i32 35
  %536 = getelementptr inbounds [10 x i8], ptr %535, i64 0, i64 0
  %537 = call ptr @strcpy(ptr noundef %536, ptr noundef @.str.33) #7
  %538 = load ptr, ptr %7, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.s_fparams, ptr %538, i32 0, i32 35
  %540 = getelementptr inbounds [10 x i8], ptr %539, i64 0, i64 0
  %541 = call ptr @strcpy(ptr noundef @write_mode, ptr noundef %540) #7
  br label %542

542:                                              ; preds = %533, %526, %520
  br label %543

543:                                              ; preds = %542, %511
  %544 = load ptr, ptr %7, align 8, !tbaa !9
  %545 = getelementptr inbounds %struct.s_fparams, ptr %544, i32 0, i32 8
  %546 = load i32, ptr %545, align 4, !tbaa !27
  %547 = icmp sgt i32 %546, 0
  br i1 %547, label %548, label %556

548:                                              ; preds = %543
  %549 = load ptr, ptr %7, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.s_fparams, ptr %549, i32 0, i32 7
  %551 = load i32, ptr %550, align 8, !tbaa !19
  %552 = icmp sgt i32 %551, -1
  br i1 %552, label %553, label %556

553:                                              ; preds = %548
  %554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %555 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef @.str.34) #7
  store ptr null, ptr %3, align 8
  store i32 1, ptr %24, align 4
  br label %558

556:                                              ; preds = %548, %543
  %557 = load ptr, ptr %7, align 8, !tbaa !9
  store ptr %557, ptr %3, align 8
  store i32 1, ptr %24, align 4
  br label %558

558:                                              ; preds = %556, %553
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 64000, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  %559 = load ptr, ptr %3, align 8
  ret ptr %559
}

; Function Attrs: nounwind
declare i32 @getopt_long(i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

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

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind
declare ptr @strtok(ptr noundef, ptr noundef) #3

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

; Function Attrs: nounwind
declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #6

; Function Attrs: nounwind
declare ptr @strtok_r(ptr noundef, ptr noundef, ptr noundef) #3

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @strstr(ptr noundef, ptr noundef) #4

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind 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 #5 = { 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 #6 = { 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 #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !12, i64 14290}
!17 = !{!"s_fparams", !7, i64 0, !7, i64 2000, !7, i64 4000, !7, i64 6000, !10, i64 14000, !10, i64 14008, !10, i64 14016, !6, i64 14024, !6, i64 14028, !10, i64 14032, !10, i64 14040, !10, i64 14048, !7, i64 14056, !7, i64 14057, !6, i64 14060, !6, i64 14064, !12, i64 14068, !6, i64 14072, !6, i64 14076, !6, i64 14080, !12, i64 14084, !6, i64 14088, !6, i64 14092, !6, i64 14096, !12, i64 14100, !18, i64 14104, !18, i64 14108, !18, i64 14112, !18, i64 14116, !18, i64 14120, !7, i64 14128, !12, i64 14288, !12, i64 14290, !7, i64 14296, !6, i64 14456, !7, i64 14460}
!18 = !{!"float", !7, i64 0}
!19 = !{!17, !6, i64 14024}
!20 = distinct !{!20, !15}
!21 = !{!17, !6, i64 14456}
!22 = !{!17, !12, i64 14288}
!23 = distinct !{!23, !15}
!24 = !{!17, !10, i64 14016}
!25 = !{!17, !10, i64 14008}
!26 = distinct !{!26, !15}
!27 = !{!17, !6, i64 14028}
!28 = distinct !{!28, !15}
!29 = !{!17, !10, i64 14032}
!30 = !{!17, !10, i64 14040}
!31 = !{!17, !10, i64 14048}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = !{!17, !6, i64 14060}
!35 = !{!17, !18, i64 14112}
!36 = !{!17, !18, i64 14120}
!37 = !{!17, !12, i64 14100}
!38 = !{!17, !18, i64 14108}
!39 = !{!17, !18, i64 14104}
!40 = !{!17, !6, i64 14076}
!41 = !{!17, !12, i64 14084}
!42 = !{!17, !6, i64 14088}
!43 = !{!17, !6, i64 14092}
!44 = !{!17, !6, i64 14080}
!45 = distinct !{!45, !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"

%struct.option = type { ptr, i32, ptr, i32 }

@write_mode = external dso_local global [10 x i8], align 1
@opterr = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@get_fpocket_args.fplong_options = external hidden global [22 x %struct.option], align 16
@optarg = external local_unnamed_addr global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.34 = external hidden unnamed_addr constant [179 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local ptr @init_def_fparams() local_unnamed_addr #0

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

declare ptr @my_malloc(i64 noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local ptr @get_fpocket_args(i32 noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca [8000 x ptr], align 16
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = tail call ptr @init_def_fparams()
  store i32 0, ptr @opterr, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64000, ptr nonnull %3) #10
  %8 = getelementptr inbounds i8, ptr %7, i64 14080
  %9 = getelementptr inbounds i8, ptr %7, i64 14092
  %10 = getelementptr inbounds i8, ptr %7, i64 14088
  %11 = getelementptr inbounds i8, ptr %7, i64 14084
  %12 = getelementptr inbounds i8, ptr %7, i64 14076
  %13 = getelementptr inbounds i8, ptr %7, i64 2000
  %14 = getelementptr inbounds i8, ptr %7, i64 14057
  %15 = getelementptr inbounds i8, ptr %7, i64 14056
  %16 = getelementptr inbounds i8, ptr %7, i64 14104
  %17 = getelementptr inbounds i8, ptr %7, i64 14108
  %18 = getelementptr inbounds i8, ptr %7, i64 14100
  %19 = getelementptr inbounds i8, ptr %7, i64 14120
  %20 = getelementptr inbounds i8, ptr %7, i64 14112
  %21 = getelementptr inbounds i8, ptr %7, i64 14060
  %22 = getelementptr inbounds i8, ptr %7, i64 6000
  %23 = getelementptr inbounds i8, ptr %7, i64 14028
  %24 = getelementptr inbounds i8, ptr %7, i64 14032
  %25 = getelementptr inbounds i8, ptr %7, i64 14040
  %26 = getelementptr inbounds i8, ptr %7, i64 14048
  %27 = getelementptr inbounds i8, ptr %7, i64 14008
  %28 = getelementptr inbounds i8, ptr %7, i64 14016
  %29 = getelementptr inbounds i8, ptr %7, i64 14024
  %30 = getelementptr inbounds i8, ptr %7, i64 14128
  %31 = getelementptr inbounds i8, ptr %7, i64 14288
  %32 = getelementptr inbounds i8, ptr %7, i64 14456
  %33 = getelementptr inbounds i8, ptr %7, i64 14296
  %34 = getelementptr inbounds i8, ptr %7, i64 14290
  %35 = getelementptr inbounds i8, ptr %7, i64 14460
  br label %36

36:                                               ; preds = %2, %.loopexit
  %.0138210 = phi i16 [ 0, %2 ], [ %.2, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #10
  store i32 0, ptr %4, align 4, !tbaa !5
  store ptr null, ptr @optarg, align 8, !tbaa !9
  %37 = call i32 @getopt_long(i32 noundef %0, ptr noundef %1, ptr noundef nonnull @.str.22, ptr noundef nonnull @get_fpocket_args.fplong_options, ptr noundef nonnull %4) #10
  switch i32 %37, label %.loopexit [
    i32 108, label %187
    i32 119, label %38
    i32 97, label %59
    i32 99, label %68
    i32 107, label %77
    i32 114, label %86
    i32 80, label %102
    i32 117, label %144
    i32 102, label %147
    i32 109, label %150
    i32 77, label %154
    i32 105, label %158
    i32 112, label %162
    i32 68, label %166
    i32 101, label %170
    i32 67, label %172
    i32 121, label %174
    i32 100, label %177
    i32 120, label %178
    i32 65, label %179
    i32 118, label %184
  ]

38:                                               ; preds = %36
  %39 = load ptr, ptr @optarg, align 8, !tbaa !9
  %40 = load i8, ptr %39, align 1, !tbaa !11
  switch i8 %40, label %41 [
    i8 100, label %51
    i8 98, label %51
    i8 112, label %51
    i8 109, label %51
  ]

41:                                               ; preds = %38
  %42 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %39, ptr noundef nonnull dereferenceable(1) @.str.23) #11
  %.not167 = icmp eq i32 %42, 0
  br i1 %.not167, label %51, label %43

43:                                               ; preds = %41
  %44 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %39, ptr noundef nonnull dereferenceable(1) @.str.24) #11
  %.not168 = icmp eq i32 %44, 0
  br i1 %.not168, label %51, label %45

45:                                               ; preds = %43
  %46 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %39, ptr noundef nonnull dereferenceable(1) @.str.25) #11
  %.not169 = icmp eq i32 %46, 0
  br i1 %.not169, label %51, label %47

47:                                               ; preds = %45
  %48 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %39, ptr noundef nonnull dereferenceable(1) @.str.26) #11
  %.not170 = icmp eq i32 %48, 0
  br i1 %.not170, label %51, label %49

49:                                               ; preds = %47
  %50 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %.loopexit

51:                                               ; preds = %38, %38, %38, %38, %47, %45, %43, %41
  %52 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %39, ptr noundef nonnull dereferenceable(1) @.str.25) #11
  %.not171 = icmp eq i32 %52, 0
  br i1 %.not171, label %53, label %56

53:                                               ; preds = %51
  %54 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.26) #10
  %55 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @write_mode, ptr noundef nonnull dereferenceable(1) %35) #10
  br label %.loopexit

56:                                               ; preds = %51
  %57 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) %39) #10
  %58 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @write_mode, ptr noundef nonnull dereferenceable(1) %35) #10
  br label %.loopexit

59:                                               ; preds = %36
  %60 = load ptr, ptr @optarg, align 8, !tbaa !9
  %61 = call ptr @strtok(ptr noundef %60, ptr noundef nonnull @.str) #10
  %.not162202 = icmp eq ptr %61, null
  br i1 %.not162202, label %._crit_edge207, label %.lr.ph206

.lr.ph206:                                        ; preds = %59, %.lr.ph206
  %indvars.iv222 = phi i64 [ %indvars.iv.next223, %.lr.ph206 ], [ 0, %59 ]
  %.0141203 = phi ptr [ %66, %.lr.ph206 ], [ %61, %59 ]
  %62 = call noalias dereferenceable_or_null(21) ptr @malloc(i64 noundef 21) #12
  %63 = getelementptr inbounds [20 x ptr], ptr %33, i64 0, i64 %indvars.iv222
  store ptr %62, ptr %63, align 8, !tbaa !9
  %64 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) %.0141203, i64 noundef 20) #10
  %65 = getelementptr inbounds i8, ptr %62, i64 20
  store i8 0, ptr %65, align 1, !tbaa !11
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %66 = call ptr @strtok(ptr noundef null, ptr noundef nonnull @.str) #10
  %.not162 = icmp eq ptr %66, null
  br i1 %.not162, label %._crit_edge207.loopexit, label %.lr.ph206, !llvm.loop !12

._crit_edge207.loopexit:                          ; preds = %.lr.ph206
  %67 = trunc i64 %indvars.iv.next223 to i16
  br label %._crit_edge207

._crit_edge207:                                   ; preds = %._crit_edge207.loopexit, %59
  %.0136.lcssa = phi i16 [ 0, %59 ], [ %67, %._crit_edge207.loopexit ]
  store i16 %.0136.lcssa, ptr %34, align 2, !tbaa !14
  store i32 0, ptr %29, align 8, !tbaa !18
  br label %.loopexit

68:                                               ; preds = %36
  %69 = load ptr, ptr @optarg, align 8, !tbaa !9
  %70 = call ptr @strtok(ptr noundef %69, ptr noundef nonnull @.str) #10
  %.not161195 = icmp eq ptr %70, null
  br i1 %.not161195, label %._crit_edge200, label %.lr.ph199

.lr.ph199:                                        ; preds = %68, %.lr.ph199
  %indvars.iv219 = phi i64 [ %indvars.iv.next220, %.lr.ph199 ], [ 0, %68 ]
  %.1142196 = phi ptr [ %75, %.lr.ph199 ], [ %70, %68 ]
  %71 = call noalias dereferenceable_or_null(21) ptr @malloc(i64 noundef 21) #12
  %72 = getelementptr inbounds [20 x ptr], ptr %30, i64 0, i64 %indvars.iv219
  store ptr %71, ptr %72, align 8, !tbaa !9
  %73 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %71, ptr noundef nonnull dereferenceable(1) %.1142196, i64 noundef 20) #10
  %74 = getelementptr inbounds i8, ptr %71, i64 20
  store i8 0, ptr %74, align 1, !tbaa !11
  %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1
  %75 = call ptr @strtok(ptr noundef null, ptr noundef nonnull @.str) #10
  %.not161 = icmp eq ptr %75, null
  br i1 %.not161, label %._crit_edge200.loopexit, label %.lr.ph199, !llvm.loop !19

._crit_edge200.loopexit:                          ; preds = %.lr.ph199
  %76 = trunc i64 %indvars.iv.next220 to i16
  br label %._crit_edge200

._crit_edge200:                                   ; preds = %._crit_edge200.loopexit, %68
  %.0135.lcssa = phi i16 [ 0, %68 ], [ %76, %._crit_edge200.loopexit ]
  store i32 0, ptr %32, align 8, !tbaa !20
  store i16 %.0135.lcssa, ptr %31, align 8, !tbaa !21
  br label %.loopexit

77:                                               ; preds = %36
  %78 = load ptr, ptr @optarg, align 8, !tbaa !9
  %79 = call ptr @strtok(ptr noundef %78, ptr noundef nonnull @.str) #10
  %.not160188 = icmp eq ptr %79, null
  br i1 %.not160188, label %._crit_edge193, label %.lr.ph192

.lr.ph192:                                        ; preds = %77, %.lr.ph192
  %indvars.iv216 = phi i64 [ %indvars.iv.next217, %.lr.ph192 ], [ 0, %77 ]
  %.2143189 = phi ptr [ %84, %.lr.ph192 ], [ %79, %77 ]
  %80 = call noalias dereferenceable_or_null(21) ptr @malloc(i64 noundef 21) #12
  %81 = getelementptr inbounds [20 x ptr], ptr %30, i64 0, i64 %indvars.iv216
  store ptr %80, ptr %81, align 8, !tbaa !9
  %82 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %80, ptr noundef nonnull dereferenceable(1) %.2143189, i64 noundef 20) #10
  %83 = getelementptr inbounds i8, ptr %80, i64 20
  store i8 0, ptr %83, align 1, !tbaa !11
  %indvars.iv.next217 = add nuw nsw i64 %indvars.iv216, 1
  %84 = call ptr @strtok(ptr noundef null, ptr noundef nonnull @.str) #10
  %.not160 = icmp eq ptr %84, null
  br i1 %.not160, label %._crit_edge193.loopexit, label %.lr.ph192, !llvm.loop !22

._crit_edge193.loopexit:                          ; preds = %.lr.ph192
  %85 = trunc i64 %indvars.iv.next217 to i16
  br label %._crit_edge193

._crit_edge193:                                   ; preds = %._crit_edge193.loopexit, %77
  %.0.lcssa = phi i16 [ 0, %77 ], [ %85, %._crit_edge193.loopexit ]
  store i16 %.0.lcssa, ptr %31, align 8, !tbaa !21
  store i32 1, ptr %32, align 8, !tbaa !20
  br label %.loopexit

86:                                               ; preds = %36
  %87 = load ptr, ptr @optarg, align 8, !tbaa !9
  %88 = call ptr @strtok(ptr noundef %87, ptr noundef nonnull @.str.28) #10
  %.not159183 = icmp eq ptr %88, null
  br i1 %.not159183, label %.loopexit, label %.lr.ph187

.lr.ph187:                                        ; preds = %86, %100
  %.1185 = phi i16 [ %89, %100 ], [ %.0138210, %86 ]
  %.3184 = phi ptr [ %101, %100 ], [ %88, %86 ]
  %89 = add i16 %.1185, 1
  switch i16 %.1185, label %100 [
    i16 0, label %90
    i16 1, label %92
    i16 2, label %96
  ]

90:                                               ; preds = %.lr.ph187
  %91 = call i32 @atoi(ptr nocapture noundef %.3184) #11
  store i32 %91, ptr %29, align 8, !tbaa !18
  br label %100

92:                                               ; preds = %.lr.ph187
  %93 = call noalias dereferenceable_or_null(21) ptr @malloc(i64 noundef 21) #12
  store ptr %93, ptr %28, align 8, !tbaa !23
  %94 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %93, ptr noundef nonnull dereferenceable(1) %.3184, i64 noundef 20) #10
  %95 = getelementptr inbounds i8, ptr %93, i64 20
  store i8 0, ptr %95, align 1, !tbaa !11
  br label %100

96:                                               ; preds = %.lr.ph187
  %97 = call noalias dereferenceable_or_null(21) ptr @malloc(i64 noundef 21) #12
  store ptr %97, ptr %27, align 8, !tbaa !24
  %98 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %97, ptr noundef nonnull dereferenceable(1) %.3184, i64 noundef 20) #10
  %99 = getelementptr inbounds i8, ptr %97, i64 20
  store i8 0, ptr %99, align 1, !tbaa !11
  br label %100

100:                                              ; preds = %.lr.ph187, %92, %96, %90
  %101 = call ptr @strtok(ptr noundef null, ptr noundef nonnull @.str.28) #10
  %.not159 = icmp eq ptr %101, null
  br i1 %.not159, label %.loopexit, label %.lr.ph187, !llvm.loop !25

102:                                              ; preds = %36
  %103 = load ptr, ptr @optarg, align 8, !tbaa !9
  %104 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %103) #10
  store ptr %22, ptr %5, align 8, !tbaa !9
  %105 = call ptr @strtok_r(ptr noundef nonnull %22, ptr noundef nonnull @.str.29, ptr noundef nonnull %5) #10
  %.not154173 = icmp eq ptr %105, null
  br i1 %.not154173, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %102, %.lr.ph
  %106 = load i32, ptr %23, align 4, !tbaa !26
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %23, align 4, !tbaa !26
  %108 = load ptr, ptr %5, align 8, !tbaa !9
  %109 = call ptr @strtok_r(ptr noundef %108, ptr noundef nonnull @.str.29, ptr noundef nonnull %5) #10
  %.not154 = icmp eq ptr %109, null
  br i1 %.not154, label %._crit_edge, label %.lr.ph, !llvm.loop !27

._crit_edge:                                      ; preds = %.lr.ph, %102
  %110 = load i32, ptr %23, align 4, !tbaa !26
  %111 = sext i32 %110 to i64
  %112 = call ptr @my_malloc(i64 noundef %111) #10
  store ptr %112, ptr %24, align 8, !tbaa !28
  %113 = load i32, ptr %23, align 4, !tbaa !26
  %114 = sext i32 %113 to i64
  %115 = call ptr @my_malloc(i64 noundef %114) #10
  store ptr %115, ptr %25, align 8, !tbaa !29
  %116 = load i32, ptr %23, align 4, !tbaa !26
  %117 = sext i32 %116 to i64
  %118 = shl nsw i64 %117, 1
  %119 = call ptr @my_malloc(i64 noundef %118) #10
  store ptr %119, ptr %26, align 8, !tbaa !30
  %120 = load ptr, ptr @optarg, align 8, !tbaa !9
  %121 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %120) #10
  store ptr %22, ptr %5, align 8, !tbaa !9
  %122 = call ptr @strtok_r(ptr noundef nonnull %22, ptr noundef nonnull @.str.29, ptr noundef nonnull %5) #10
  %.not155179 = icmp eq ptr %122, null
  br i1 %.not155179, label %.loopexit, label %.lr.ph182

.lr.ph182:                                        ; preds = %._crit_edge, %._crit_edge178
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge178 ], [ 0, %._crit_edge ]
  %123 = phi ptr [ %143, %._crit_edge178 ], [ %122, %._crit_edge ]
  %124 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %123) #10
  store ptr %3, ptr %6, align 8, !tbaa !9
  %125 = call ptr @strtok_r(ptr noundef nonnull %3, ptr noundef nonnull @.str.28, ptr noundef nonnull %6) #10
  %.not156174 = icmp eq ptr %125, null
  br i1 %.not156174, label %._crit_edge178, label %.lr.ph177

.lr.ph177:                                        ; preds = %.lr.ph182, %138
  %126 = phi ptr [ %141, %138 ], [ %125, %.lr.ph182 ]
  %.0145175 = phi i32 [ %139, %138 ], [ 0, %.lr.ph182 ]
  switch i32 %.0145175, label %138 [
    i32 0, label %127
    i32 1, label %132
    i32 2, label %._crit_edge225
  ]

._crit_edge225:                                   ; preds = %.lr.ph177
  %stxncpy.char0158.pre = load i8, ptr %126, align 1
  br label %135

127:                                              ; preds = %.lr.ph177
  %128 = call i32 @atoi(ptr nocapture noundef %126) #11
  %129 = trunc i32 %128 to i16
  %130 = load ptr, ptr %26, align 8, !tbaa !30
  %131 = getelementptr inbounds i16, ptr %130, i64 %indvars.iv
  store i16 %129, ptr %131, align 2, !tbaa !31
  br label %132

132:                                              ; preds = %127, %.lr.ph177
  %133 = load ptr, ptr %25, align 8, !tbaa !29
  %134 = getelementptr inbounds i8, ptr %133, i64 %indvars.iv
  %stxncpy.char0157 = load i8, ptr %126, align 1
  store i8 %stxncpy.char0157, ptr %134, align 1
  br label %135

135:                                              ; preds = %._crit_edge225, %132
  %stxncpy.char0158 = phi i8 [ %stxncpy.char0158.pre, %._crit_edge225 ], [ %stxncpy.char0157, %132 ]
  %136 = load ptr, ptr %24, align 8, !tbaa !28
  %137 = getelementptr inbounds i8, ptr %136, i64 %indvars.iv
  store i8 %stxncpy.char0158, ptr %137, align 1
  br label %138

138:                                              ; preds = %135, %.lr.ph177
  %139 = add nuw nsw i32 %.0145175, 1
  %140 = load ptr, ptr %6, align 8, !tbaa !9
  %141 = call ptr @strtok_r(ptr noundef %140, ptr noundef nonnull @.str.28, ptr noundef nonnull %6) #10
  %.not156 = icmp eq ptr %141, null
  br i1 %.not156, label %._crit_edge178, label %.lr.ph177, !llvm.loop !32

._crit_edge178:                                   ; preds = %138, %.lr.ph182
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %142 = load ptr, ptr %5, align 8, !tbaa !9
  %143 = call ptr @strtok_r(ptr noundef %142, ptr noundef nonnull @.str.29, ptr noundef nonnull %5) #10
  %.not155 = icmp eq ptr %143, null
  br i1 %.not155, label %.loopexit, label %.lr.ph182, !llvm.loop !33

144:                                              ; preds = %36
  %145 = load ptr, ptr @optarg, align 8, !tbaa !9
  %146 = call i32 @atoi(ptr nocapture noundef %145) #11
  store i32 %146, ptr %21, align 4, !tbaa !34
  br label %.loopexit

147:                                              ; preds = %36
  %148 = load ptr, ptr @optarg, align 8, !tbaa !9
  %149 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) %148) #10
  br label %.loopexit

150:                                              ; preds = %36
  %151 = load ptr, ptr @optarg, align 8, !tbaa !9
  %152 = call double @atof(ptr noundef %151) #11
  %153 = fptrunc double %152 to float
  store float %153, ptr %20, align 8, !tbaa !35
  br label %.loopexit

154:                                              ; preds = %36
  %155 = load ptr, ptr @optarg, align 8, !tbaa !9
  %156 = call double @atof(ptr noundef %155) #11
  %157 = fptrunc double %156 to float
  store float %157, ptr %19, align 8, !tbaa !36
  br label %.loopexit

158:                                              ; preds = %36
  %159 = load ptr, ptr @optarg, align 8, !tbaa !9
  %160 = call i32 @atoi(ptr nocapture noundef %159) #11
  %161 = trunc i32 %160 to i16
  store i16 %161, ptr %18, align 4, !tbaa !37
  br label %.loopexit

162:                                              ; preds = %36
  %163 = load ptr, ptr @optarg, align 8, !tbaa !9
  %164 = call double @atof(ptr noundef %163) #11
  %165 = fptrunc double %164 to float
  store float %165, ptr %17, align 4, !tbaa !38
  br label %.loopexit

166:                                              ; preds = %36
  %167 = load ptr, ptr @optarg, align 8, !tbaa !9
  %168 = call double @atof(ptr noundef %167) #11
  %169 = fptrunc double %168 to float
  store float %169, ptr %16, align 8, !tbaa !39
  br label %.loopexit

170:                                              ; preds = %36
  %171 = load ptr, ptr @optarg, align 8, !tbaa !9
  %stxncpy.char0153 = load i8, ptr %171, align 1
  store i8 %stxncpy.char0153, ptr %15, align 1
  br label %.loopexit

172:                                              ; preds = %36
  %173 = load ptr, ptr @optarg, align 8, !tbaa !9
  %stxncpy.char0 = load i8, ptr %173, align 1
  store i8 %stxncpy.char0, ptr %14, align 1
  br label %.loopexit

174:                                              ; preds = %36
  %175 = load ptr, ptr @optarg, align 8, !tbaa !9
  %176 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) %175) #10
  br label %.loopexit

177:                                              ; preds = %36
  store i32 1, ptr %12, align 4, !tbaa !40
  br label %.loopexit

178:                                              ; preds = %36
  store i16 1, ptr %11, align 4, !tbaa !41
  br label %.loopexit

179:                                              ; preds = %36
  %180 = load ptr, ptr @optarg, align 8, !tbaa !9
  %181 = call double @atof(ptr noundef %180) #11
  %182 = fptrunc double %181 to float
  %183 = fptosi float %182 to i32
  store i32 %183, ptr %10, align 8, !tbaa !42
  br label %.loopexit

184:                                              ; preds = %36
  %185 = load ptr, ptr @optarg, align 8, !tbaa !9
  %186 = call i32 @atoi(ptr nocapture noundef %185) #11
  store i32 %186, ptr %9, align 4, !tbaa !43
  br label %.loopexit

187:                                              ; preds = %36
  %188 = load ptr, ptr @optarg, align 8, !tbaa !9
  %189 = call i32 @atoi(ptr nocapture noundef %188) #11
  store i32 %189, ptr %8, align 8, !tbaa !44
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge178, %100, %._crit_edge, %86, %53, %56, %187, %184, %179, %178, %177, %174, %172, %170, %166, %162, %158, %154, %150, %147, %144, %._crit_edge193, %._crit_edge200, %._crit_edge207, %49, %36
  %.2 = phi i16 [ %.0138210, %187 ], [ %.0138210, %184 ], [ %.0138210, %179 ], [ %.0138210, %178 ], [ %.0138210, %177 ], [ %.0138210, %174 ], [ %.0138210, %172 ], [ %.0138210, %170 ], [ %.0138210, %166 ], [ %.0138210, %162 ], [ %.0138210, %158 ], [ %.0138210, %154 ], [ %.0138210, %150 ], [ %.0138210, %147 ], [ %.0138210, %144 ], [ %.0138210, %._crit_edge193 ], [ %.0138210, %._crit_edge200 ], [ %.0138210, %._crit_edge207 ], [ %.0138210, %49 ], [ %.0138210, %56 ], [ %.0138210, %53 ], [ %.0138210, %86 ], [ %.0138210, %._crit_edge ], [ %.0138210, %36 ], [ %89, %100 ], [ %.0138210, %._crit_edge178 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #10
  %.not = icmp eq i32 %37, -1
  br i1 %.not, label %190, label %36, !llvm.loop !45

190:                                              ; preds = %.loopexit
  %191 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.30) #11
  %.not151 = icmp eq ptr %191, null
  br i1 %.not151, label %195, label %192

192:                                              ; preds = %190
  %193 = load i8, ptr %35, align 4, !tbaa !11
  %194 = icmp eq i8 %193, 100
  br i1 %194, label %.sink.split, label %195

195:                                              ; preds = %192, %190
  %196 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.32) #11
  %.not152 = icmp eq ptr %196, null
  br i1 %.not152, label %202, label %197

197:                                              ; preds = %195
  %198 = load i8, ptr %35, align 4, !tbaa !11
  %199 = icmp eq i8 %198, 100
  br i1 %199, label %.sink.split, label %202

.sink.split:                                      ; preds = %197, %192
  %.str.33.sink = phi ptr [ @.str.31, %192 ], [ @.str.33, %197 ]
  %200 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) %.str.33.sink) #10
  %201 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @write_mode, ptr noundef nonnull dereferenceable(1) %35) #10
  br label %202

202:                                              ; preds = %.sink.split, %195, %197
  %203 = load i32, ptr %23, align 4, !tbaa !26
  %204 = icmp sgt i32 %203, 0
  br i1 %204, label %205, label %211

205:                                              ; preds = %202
  %206 = load i32, ptr %29, align 8, !tbaa !18
  %207 = icmp sgt i32 %206, -1
  br i1 %207, label %208, label %211

208:                                              ; preds = %205
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef nonnull @.str.34) #13
  br label %211

211:                                              ; preds = %202, %205, %208
  %.0137 = phi ptr [ null, %208 ], [ %7, %205 ], [ %7, %202 ]
  call void @llvm.lifetime.end.p0(i64 64000, ptr nonnull %3) #10
  ret ptr %.0137
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn
declare ptr @strtok(ptr noundef, ptr nocapture noundef readonly) local_unnamed_addr #7

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #9

; Function Attrs: mustprogress nofree nounwind willreturn
declare ptr @strtok_r(ptr noundef, ptr nocapture noundef readonly, ptr noundef) local_unnamed_addr #7

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !16, i64 14290}
!15 = !{!"s_fparams", !7, i64 0, !7, i64 2000, !7, i64 4000, !7, i64 6000, !10, i64 14000, !10, i64 14008, !10, i64 14016, !6, i64 14024, !6, i64 14028, !10, i64 14032, !10, i64 14040, !10, i64 14048, !7, i64 14056, !7, i64 14057, !6, i64 14060, !6, i64 14064, !16, i64 14068, !6, i64 14072, !6, i64 14076, !6, i64 14080, !16, i64 14084, !6, i64 14088, !6, i64 14092, !6, i64 14096, !16, i64 14100, !17, i64 14104, !17, i64 14108, !17, i64 14112, !17, i64 14116, !17, i64 14120, !7, i64 14128, !16, i64 14288, !16, i64 14290, !7, i64 14296, !6, i64 14456, !7, i64 14460}
!16 = !{!"short", !7, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = !{!15, !6, i64 14024}
!19 = distinct !{!19, !13}
!20 = !{!15, !6, i64 14456}
!21 = !{!15, !16, i64 14288}
!22 = distinct !{!22, !13}
!23 = !{!15, !10, i64 14016}
!24 = !{!15, !10, i64 14008}
!25 = distinct !{!25, !13}
!26 = !{!15, !6, i64 14028}
!27 = distinct !{!27, !13}
!28 = !{!15, !10, i64 14032}
!29 = !{!15, !10, i64 14040}
!30 = !{!15, !10, i64 14048}
!31 = !{!16, !16, i64 0}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = !{!15, !6, i64 14060}
!35 = !{!15, !17, i64 14112}
!36 = !{!15, !17, i64 14120}
!37 = !{!15, !16, i64 14100}
!38 = !{!15, !17, i64 14108}
!39 = !{!15, !17, i64 14104}
!40 = !{!15, !6, i64 14076}
!41 = !{!15, !16, i64 14084}
!42 = !{!15, !6, i64 14088}
!43 = !{!15, !6, i64 14092}
!44 = !{!15, !6, i64 14080}
!45 = distinct !{!45, !13}


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