; LLVM IR from bkaradzic/bgfx :: 3rdparty/fcpp (cpp3)

; 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.sizes = type { i16, i16, i16 }
%struct.fppTag = type { i32, ptr }
%struct.Global = type { i32, i32, ptr, ptr, i32, i32, i32, ptr, i32, i32, i32, i32, [513 x i8], ptr, i8, i8, i8, i8, i8, [32 x i8], ptr, [20 x ptr], ptr, [20 x ptr], [20 x i8], i32, [5 x ptr], [5 x ptr], i8, ptr, [1025 x i8], ptr, [31 x ptr], i32, ptr, [64 x ptr], i32, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, i8, ptr, i64, i8, i8, i8, i8, i8, i8, ptr, [20 x ptr], i32, i8, i8, i8, ptr }
%struct.defbuf = type { ptr, ptr, i32, i32, [1 x i8] }

@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@size_table = external global [0 x %struct.sizes], align 2

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @fpp_dooptions(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  store i8 0, ptr %7, align 1, !tbaa !9
  br label %16

16:                                               ; preds = %517, %2
  %17 = load ptr, ptr %5, align 8, !tbaa !5
  %18 = icmp ne ptr %17, null
  br i1 %18, label %19, label %23

19:                                               ; preds = %16
  %20 = load i8, ptr %7, align 1, !tbaa !9
  %21 = icmp ne i8 %20, 0
  %22 = xor i1 %21, true
  br label %23

23:                                               ; preds = %19, %16
  %24 = phi i1 [ false, %16 ], [ %22, %19 ]
  br i1 %24, label %25, label %520

25:                                               ; preds = %23
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.fppTag, ptr %26, i32 0, i32 0
  %28 = load i32, ptr %27, align 8, !tbaa !10
  switch i32 %28, label %515 [
    i32 0, label %29
    i32 30, label %30
    i32 32, label %36
    i32 29, label %46
    i32 26, label %56
    i32 23, label %66
    i32 25, label %76
    i32 24, label %86
    i32 22, label %96
    i32 21, label %106
    i32 20, label %116
    i32 19, label %126
    i32 17, label %136
    i32 18, label %146
    i32 1, label %156
    i32 2, label %167
    i32 3, label %214
    i32 4, label %217
    i32 27, label %235
    i32 28, label %235
    i32 5, label %270
    i32 6, label %283
    i32 7, label %296
    i32 8, label %306
    i32 9, label %406
    i32 10, label %419
    i32 11, label %424
    i32 34, label %437
    i32 12, label %443
    i32 13, label %449
    i32 16, label %455
    i32 14, label %461
    i32 15, label %467
    i32 31, label %477
    i32 33, label %489
    i32 35, label %499
    i32 36, label %509
  ]

29:                                               ; preds = %25
  store i8 1, ptr %7, align 1, !tbaa !9
  br label %517

30:                                               ; preds = %25
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.fppTag, ptr %31, i32 0, i32 1
  %33 = load ptr, ptr %32, align 8, !tbaa !13
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.Global, ptr %34, i32 0, i32 59
  store ptr %33, ptr %35, align 8, !tbaa !14
  br label %517

36:                                               ; preds = %25
  %37 = load ptr, ptr %5, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.fppTag, ptr %37, i32 0, i32 1
  %39 = load ptr, ptr %38, align 8, !tbaa !13
  %40 = icmp ne ptr %39, null
  %41 = zext i1 %40 to i64
  %42 = select i1 %40, i32 1, i32 0
  %43 = trunc i32 %42 to i8
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.Global, ptr %44, i32 0, i32 62
  store i8 %43, ptr %45, align 4, !tbaa !17
  br label %517

46:                                               ; preds = %25
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.fppTag, ptr %47, i32 0, i32 1
  %49 = load ptr, ptr %48, align 8, !tbaa !13
  %50 = icmp ne ptr %49, null
  %51 = zext i1 %50 to i64
  %52 = select i1 %50, i32 1, i32 0
  %53 = trunc i32 %52 to i8
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.Global, ptr %54, i32 0, i32 58
  store i8 %53, ptr %55, align 1, !tbaa !18
  br label %517

56:                                               ; preds = %25
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.fppTag, ptr %57, i32 0, i32 1
  %59 = load ptr, ptr %58, align 8, !tbaa !13
  %60 = icmp ne ptr %59, null
  %61 = zext i1 %60 to i64
  %62 = select i1 %60, i32 1, i32 0
  %63 = trunc i32 %62 to i8
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.Global, ptr %64, i32 0, i32 56
  store i8 %63, ptr %65, align 1, !tbaa !19
  br label %517

66:                                               ; preds = %25
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.fppTag, ptr %67, i32 0, i32 1
  %69 = load ptr, ptr %68, align 8, !tbaa !13
  %70 = icmp ne ptr %69, null
  %71 = zext i1 %70 to i64
  %72 = select i1 %70, i32 1, i32 0
  %73 = trunc i32 %72 to i8
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.Global, ptr %74, i32 0, i32 53
  store i8 %73, ptr %75, align 8, !tbaa !20
  br label %517

76:                                               ; preds = %25
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.fppTag, ptr %77, i32 0, i32 1
  %79 = load ptr, ptr %78, align 8, !tbaa !13
  %80 = icmp ne ptr %79, null
  %81 = zext i1 %80 to i64
  %82 = select i1 %80, i32 1, i32 0
  %83 = trunc i32 %82 to i8
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.Global, ptr %84, i32 0, i32 55
  store i8 %83, ptr %85, align 2, !tbaa !21
  br label %517

86:                                               ; preds = %25
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.fppTag, ptr %87, i32 0, i32 1
  %89 = load ptr, ptr %88, align 8, !tbaa !13
  %90 = icmp ne ptr %89, null
  %91 = zext i1 %90 to i64
  %92 = select i1 %90, i32 1, i32 0
  %93 = trunc i32 %92 to i8
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.Global, ptr %94, i32 0, i32 54
  store i8 %93, ptr %95, align 1, !tbaa !22
  br label %517

96:                                               ; preds = %25
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.fppTag, ptr %97, i32 0, i32 1
  %99 = load ptr, ptr %98, align 8, !tbaa !13
  %100 = icmp ne ptr %99, null
  %101 = zext i1 %100 to i64
  %102 = select i1 %100, i32 1, i32 0
  %103 = trunc i32 %102 to i8
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.Global, ptr %104, i32 0, i32 49
  store i8 %103, ptr %105, align 2, !tbaa !23
  br label %517

106:                                              ; preds = %25
  %107 = load ptr, ptr %5, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.fppTag, ptr %107, i32 0, i32 1
  %109 = load ptr, ptr %108, align 8, !tbaa !13
  %110 = icmp ne ptr %109, null
  %111 = zext i1 %110 to i64
  %112 = select i1 %110, i32 1, i32 0
  %113 = trunc i32 %112 to i8
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.Global, ptr %114, i32 0, i32 48
  store i8 %113, ptr %115, align 1, !tbaa !24
  br label %517

116:                                              ; preds = %25
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.fppTag, ptr %117, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !13
  %120 = icmp ne ptr %119, null
  %121 = zext i1 %120 to i64
  %122 = select i1 %120, i32 1, i32 0
  %123 = trunc i32 %122 to i8
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.Global, ptr %124, i32 0, i32 47
  store i8 %123, ptr %125, align 4, !tbaa !25
  br label %517

126:                                              ; preds = %25
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.fppTag, ptr %127, i32 0, i32 1
  %129 = load ptr, ptr %128, align 8, !tbaa !13
  %130 = icmp ne ptr %129, null
  %131 = zext i1 %130 to i64
  %132 = select i1 %130, i32 1, i32 0
  %133 = trunc i32 %132 to i8
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.Global, ptr %134, i32 0, i32 46
  store i8 %133, ptr %135, align 1, !tbaa !26
  br label %517

136:                                              ; preds = %25
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.fppTag, ptr %137, i32 0, i32 1
  %139 = load ptr, ptr %138, align 8, !tbaa !13
  %140 = icmp ne ptr %139, null
  %141 = zext i1 %140 to i64
  %142 = select i1 %140, i32 1, i32 0
  %143 = trunc i32 %142 to i8
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.Global, ptr %144, i32 0, i32 44
  store i8 %143, ptr %145, align 1, !tbaa !27
  br label %517

146:                                              ; preds = %25
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.fppTag, ptr %147, i32 0, i32 1
  %149 = load ptr, ptr %148, align 8, !tbaa !13
  %150 = icmp ne ptr %149, null
  %151 = zext i1 %150 to i64
  %152 = select i1 %150, i32 1, i32 0
  %153 = trunc i32 %152 to i8
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.Global, ptr %154, i32 0, i32 45
  store i8 %153, ptr %155, align 2, !tbaa !28
  br label %517

156:                                              ; preds = %25
  %157 = load ptr, ptr %5, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.fppTag, ptr %157, i32 0, i32 1
  %159 = load ptr, ptr %158, align 8, !tbaa !13
  %160 = icmp ne ptr %159, null
  br i1 %160, label %161, label %166

161:                                              ; preds = %156
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.Global, ptr %162, i32 0, i32 15
  store i8 1, ptr %163, align 1, !tbaa !29
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.Global, ptr %164, i32 0, i32 14
  store i8 1, ptr %165, align 8, !tbaa !30
  br label %166

166:                                              ; preds = %161, %156
  br label %517

167:                                              ; preds = %25
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %168 = load ptr, ptr %5, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.fppTag, ptr %168, i32 0, i32 1
  %170 = load ptr, ptr %169, align 8, !tbaa !13
  store ptr %170, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %171, ptr %9, align 8, !tbaa !5
  br label %172

172:                                              ; preds = %184, %167
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = load i8, ptr %173, align 1, !tbaa !9
  %175 = sext i8 %174 to i32
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %172
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = load i8, ptr %178, align 1, !tbaa !9
  %180 = sext i8 %179 to i32
  %181 = icmp ne i32 %180, 61
  br label %182

182:                                              ; preds = %177, %172
  %183 = phi i1 [ false, %172 ], [ %181, %177 ]
  br i1 %183, label %184, label %187

184:                                              ; preds = %182
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i32 1
  store ptr %186, ptr %9, align 8, !tbaa !5
  br label %172, !llvm.loop !31

187:                                              ; preds = %182
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = load i8, ptr %188, align 1, !tbaa !9
  %190 = sext i8 %189 to i32
  %191 = icmp eq i32 %190, 0
  br i1 %191, label %192, label %193

192:                                              ; preds = %187
  store ptr @.str.3, ptr %9, align 8, !tbaa !5
  br label %196

193:                                              ; preds = %187
  %194 = load ptr, ptr %9, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i32 1
  store ptr %195, ptr %9, align 8, !tbaa !5
  store i8 0, ptr %194, align 1, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = call ptr @fpp_defendel(ptr noundef %197, ptr noundef %198, i32 noundef 0)
  store ptr %199, ptr %6, align 8, !tbaa !5
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = icmp ne ptr %200, null
  br i1 %201, label %203, label %202

202:                                              ; preds = %196
  store i32 1, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %211

203:                                              ; preds = %196
  %204 = load ptr, ptr %4, align 8, !tbaa !5
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = call ptr @fpp_savestring(ptr noundef %204, ptr noundef %205)
  %207 = load ptr, ptr %6, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.defbuf, ptr %207, i32 0, i32 1
  store ptr %206, ptr %208, align 8, !tbaa !33
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.defbuf, ptr %209, i32 0, i32 3
  store i32 -1, ptr %210, align 4, !tbaa !35
  store i32 0, ptr %10, align 4
  br label %211

211:                                              ; preds = %203, %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %212 = load i32, ptr %10, align 4
  switch i32 %212, label %521 [
    i32 0, label %213
  ]

213:                                              ; preds = %211
  br label %517

214:                                              ; preds = %25
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.Global, ptr %215, i32 0, i32 16
  store i8 1, ptr %216, align 2, !tbaa !36
  br label %517

217:                                              ; preds = %25
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.Global, ptr %218, i32 0, i32 22
  %220 = load ptr, ptr %219, align 8, !tbaa !37
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.Global, ptr %221, i32 0, i32 21
  %223 = getelementptr inbounds [20 x ptr], ptr %222, i64 0, i64 20
  %224 = icmp uge ptr %220, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %217
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %226, i32 noundef 56)
  store i32 17, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %521

227:                                              ; preds = %217
  %228 = load ptr, ptr %5, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.fppTag, ptr %228, i32 0, i32 1
  %230 = load ptr, ptr %229, align 8, !tbaa !13
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.Global, ptr %231, i32 0, i32 22
  %233 = load ptr, ptr %232, align 8, !tbaa !37
  %234 = getelementptr inbounds ptr, ptr %233, i32 1
  store ptr %234, ptr %232, align 8, !tbaa !37
  store ptr %230, ptr %233, align 8, !tbaa !5
  br label %517

235:                                              ; preds = %25, %25
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.Global, ptr %236, i32 0, i32 25
  %238 = load i32, ptr %237, align 4, !tbaa !38
  %239 = icmp uge i32 %238, 20
  br i1 %239, label %240, label %242

240:                                              ; preds = %235
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %241, i32 noundef 57)
  store i32 18, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %521

242:                                              ; preds = %235
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.fppTag, ptr %243, i32 0, i32 1
  %245 = load ptr, ptr %244, align 8, !tbaa !13
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.Global, ptr %246, i32 0, i32 23
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.Global, ptr %248, i32 0, i32 25
  %250 = load i32, ptr %249, align 4, !tbaa !38
  %251 = zext i32 %250 to i64
  %252 = getelementptr inbounds [20 x ptr], ptr %247, i64 0, i64 %251
  store ptr %245, ptr %252, align 8, !tbaa !5
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.fppTag, ptr %253, i32 0, i32 0
  %255 = load i32, ptr %254, align 8, !tbaa !10
  %256 = icmp eq i32 %255, 27
  %257 = zext i1 %256 to i32
  %258 = trunc i32 %257 to i8
  %259 = load ptr, ptr %4, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.Global, ptr %259, i32 0, i32 24
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.Global, ptr %261, i32 0, i32 25
  %263 = load i32, ptr %262, align 4, !tbaa !38
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds [20 x i8], ptr %260, i64 0, i64 %264
  store i8 %258, ptr %265, align 1, !tbaa !9
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.Global, ptr %266, i32 0, i32 25
  %268 = load i32, ptr %267, align 4, !tbaa !38
  %269 = add i32 %268, 1
  store i32 %269, ptr %267, align 4, !tbaa !38
  br label %517

270:                                              ; preds = %25
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.fppTag, ptr %271, i32 0, i32 1
  %273 = load ptr, ptr %272, align 8, !tbaa !13
  %274 = icmp ne ptr %273, null
  %275 = zext i1 %274 to i64
  %276 = select i1 %274, i32 1, i32 0
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.Global, ptr %277, i32 0, i32 17
  %279 = load i8, ptr %278, align 1, !tbaa !39
  %280 = sext i8 %279 to i32
  %281 = or i32 %280, %276
  %282 = trunc i32 %281 to i8
  store i8 %282, ptr %278, align 1, !tbaa !39
  br label %517

283:                                              ; preds = %25
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.fppTag, ptr %284, i32 0, i32 1
  %286 = load ptr, ptr %285, align 8, !tbaa !13
  %287 = icmp ne ptr %286, null
  %288 = zext i1 %287 to i64
  %289 = select i1 %287, i32 2, i32 0
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.Global, ptr %290, i32 0, i32 17
  %292 = load i8, ptr %291, align 1, !tbaa !39
  %293 = sext i8 %292 to i32
  %294 = or i32 %293, %289
  %295 = trunc i32 %294 to i8
  store i8 %295, ptr %291, align 1, !tbaa !39
  br label %517

296:                                              ; preds = %25
  %297 = load ptr, ptr %5, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.fppTag, ptr %297, i32 0, i32 1
  %299 = load ptr, ptr %298, align 8, !tbaa !13
  %300 = icmp ne ptr %299, null
  %301 = xor i1 %300, true
  %302 = zext i1 %301 to i32
  %303 = trunc i32 %302 to i8
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.Global, ptr %304, i32 0, i32 28
  store i8 %303, ptr %305, align 8, !tbaa !40
  br label %517

306:                                              ; preds = %25
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.fppTag, ptr %307, i32 0, i32 1
  %309 = load ptr, ptr %308, align 8, !tbaa !13
  store ptr %309, ptr %15, align 8, !tbaa !5
  store ptr @size_table, ptr %11, align 8, !tbaa !5
  %310 = load ptr, ptr %15, align 8, !tbaa !5
  %311 = load i8, ptr %310, align 1, !tbaa !9
  %312 = sext i8 %311 to i32
  %313 = icmp ne i32 %312, 42
  %314 = zext i1 %313 to i32
  store i32 %314, ptr %13, align 4, !tbaa !41
  br i1 %313, label %315, label %316

315:                                              ; preds = %306
  store i32 512, ptr %14, align 4, !tbaa !41
  br label %319

316:                                              ; preds = %306
  %317 = load ptr, ptr %15, align 8, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %317, i32 1
  store ptr %318, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %14, align 4, !tbaa !41
  br label %319

319:                                              ; preds = %316, %315
  br label %320

320:                                              ; preds = %385, %346, %319
  %321 = load ptr, ptr %11, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.sizes, ptr %321, i32 0, i32 0
  %323 = load i16, ptr %322, align 2, !tbaa !42
  %324 = sext i16 %323 to i32
  %325 = load i32, ptr %14, align 4, !tbaa !41
  %326 = icmp ne i32 %324, %325
  br i1 %326, label %327, label %332

327:                                              ; preds = %320
  %328 = load ptr, ptr %15, align 8, !tbaa !5
  %329 = load i8, ptr %328, align 1, !tbaa !9
  %330 = sext i8 %329 to i32
  %331 = icmp ne i32 %330, 0
  br label %332

332:                                              ; preds = %327, %320
  %333 = phi i1 [ false, %320 ], [ %331, %327 ]
  br i1 %333, label %334, label %388

334:                                              ; preds = %332
  %335 = call ptr @__ctype_b_loc() #6
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  %338 = load i8, ptr %337, align 1, !tbaa !9
  %339 = sext i8 %338 to i32
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds i16, ptr %336, i64 %340
  %342 = load i16, ptr %341, align 2, !tbaa !45
  %343 = zext i16 %342 to i32
  %344 = and i32 %343, 2048
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %349, label %346

346:                                              ; preds = %334
  %347 = load ptr, ptr %15, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i32 1
  store ptr %348, ptr %15, align 8, !tbaa !5
  br label %320, !llvm.loop !46

349:                                              ; preds = %334
  store i32 0, ptr %12, align 4, !tbaa !41
  br label %350

350:                                              ; preds = %362, %349
  %351 = call ptr @__ctype_b_loc() #6
  %352 = load ptr, ptr %351, align 8, !tbaa !5
  %353 = load ptr, ptr %15, align 8, !tbaa !5
  %354 = load i8, ptr %353, align 1, !tbaa !9
  %355 = sext i8 %354 to i32
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i16, ptr %352, i64 %356
  %358 = load i16, ptr %357, align 2, !tbaa !45
  %359 = zext i16 %358 to i32
  %360 = and i32 %359, 2048
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %372

362:                                              ; preds = %350
  %363 = load i32, ptr %12, align 4, !tbaa !41
  %364 = mul nsw i32 %363, 10
  store i32 %364, ptr %12, align 4, !tbaa !41
  %365 = load ptr, ptr %15, align 8, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %365, i32 1
  store ptr %366, ptr %15, align 8, !tbaa !5
  %367 = load i8, ptr %365, align 1, !tbaa !9
  %368 = sext i8 %367 to i32
  %369 = sub nsw i32 %368, 48
  %370 = load i32, ptr %12, align 4, !tbaa !41
  %371 = add nsw i32 %370, %369
  store i32 %371, ptr %12, align 4, !tbaa !41
  br label %350, !llvm.loop !47

372:                                              ; preds = %350
  %373 = load i32, ptr %13, align 4, !tbaa !41
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %380

375:                                              ; preds = %372
  %376 = load i32, ptr %12, align 4, !tbaa !41
  %377 = trunc i32 %376 to i16
  %378 = load ptr, ptr %11, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.sizes, ptr %378, i32 0, i32 1
  store i16 %377, ptr %379, align 2, !tbaa !48
  br label %385

380:                                              ; preds = %372
  %381 = load i32, ptr %12, align 4, !tbaa !41
  %382 = trunc i32 %381 to i16
  %383 = load ptr, ptr %11, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.sizes, ptr %383, i32 0, i32 2
  store i16 %382, ptr %384, align 2, !tbaa !49
  br label %385

385:                                              ; preds = %380, %375
  %386 = load ptr, ptr %11, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.sizes, ptr %386, i32 1
  store ptr %387, ptr %11, align 8, !tbaa !5
  br label %320, !llvm.loop !46

388:                                              ; preds = %332
  %389 = load ptr, ptr %11, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.sizes, ptr %389, i32 0, i32 0
  %391 = load i16, ptr %390, align 2, !tbaa !42
  %392 = sext i16 %391 to i32
  %393 = load i32, ptr %14, align 4, !tbaa !41
  %394 = icmp ne i32 %392, %393
  br i1 %394, label %395, label %397

395:                                              ; preds = %388
  %396 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %396, i32 noundef 39, ptr noundef null)
  br label %405

397:                                              ; preds = %388
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  %399 = load i8, ptr %398, align 1, !tbaa !9
  %400 = sext i8 %399 to i32
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %404

402:                                              ; preds = %397
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %403, i32 noundef 40, ptr noundef null)
  br label %404

404:                                              ; preds = %402, %397
  br label %405

405:                                              ; preds = %404, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  br label %517

406:                                              ; preds = %25
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = load ptr, ptr %5, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.fppTag, ptr %408, i32 0, i32 1
  %410 = load ptr, ptr %409, align 8, !tbaa !13
  %411 = call ptr @fpp_defendel(ptr noundef %407, ptr noundef %410, i32 noundef 1)
  %412 = icmp eq ptr %411, null
  br i1 %412, label %413, label %418

413:                                              ; preds = %406
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.fppTag, ptr %415, i32 0, i32 1
  %417 = load ptr, ptr %416, align 8, !tbaa !13
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %414, i32 noundef 41, ptr noundef %417)
  br label %418

418:                                              ; preds = %413, %406
  br label %517

419:                                              ; preds = %25
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.Global, ptr %420, i32 0, i32 18
  %422 = load i8, ptr %421, align 4, !tbaa !50
  %423 = add i8 %422, 1
  store i8 %423, ptr %421, align 4, !tbaa !50
  br label %517

424:                                              ; preds = %25
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.Global, ptr %425, i32 0, i32 12
  %427 = getelementptr inbounds [513 x i8], ptr %426, i64 0, i64 0
  %428 = load ptr, ptr %5, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.fppTag, ptr %428, i32 0, i32 1
  %430 = load ptr, ptr %429, align 8, !tbaa !13
  %431 = call ptr @strcpy(ptr noundef %427, ptr noundef %430) #5
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.fppTag, ptr %432, i32 0, i32 1
  %434 = load ptr, ptr %433, align 8, !tbaa !13
  %435 = load ptr, ptr %4, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.Global, ptr %435, i32 0, i32 39
  store ptr %434, ptr %436, align 8, !tbaa !51
  br label %517

437:                                              ; preds = %25
  %438 = load ptr, ptr %5, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.fppTag, ptr %438, i32 0, i32 1
  %440 = load ptr, ptr %439, align 8, !tbaa !13
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.Global, ptr %441, i32 0, i32 37
  store ptr %440, ptr %442, align 8, !tbaa !52
  br label %517

443:                                              ; preds = %25
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.fppTag, ptr %444, i32 0, i32 1
  %446 = load ptr, ptr %445, align 8, !tbaa !13
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.Global, ptr %447, i32 0, i32 38
  store ptr %446, ptr %448, align 8, !tbaa !53
  br label %517

449:                                              ; preds = %25
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.fppTag, ptr %450, i32 0, i32 1
  %452 = load ptr, ptr %451, align 8, !tbaa !13
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.Global, ptr %453, i32 0, i32 41
  store ptr %452, ptr %454, align 8, !tbaa !54
  br label %517

455:                                              ; preds = %25
  %456 = load ptr, ptr %5, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.fppTag, ptr %456, i32 0, i32 1
  %458 = load ptr, ptr %457, align 8, !tbaa !13
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.Global, ptr %459, i32 0, i32 42
  store ptr %458, ptr %460, align 8, !tbaa !55
  br label %517

461:                                              ; preds = %25
  %462 = load ptr, ptr %5, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.fppTag, ptr %462, i32 0, i32 1
  %464 = load ptr, ptr %463, align 8, !tbaa !13
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.Global, ptr %465, i32 0, i32 40
  store ptr %464, ptr %466, align 8, !tbaa !56
  br label %517

467:                                              ; preds = %25
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.fppTag, ptr %468, i32 0, i32 1
  %470 = load ptr, ptr %469, align 8, !tbaa !13
  %471 = icmp ne ptr %470, null
  %472 = zext i1 %471 to i64
  %473 = select i1 %471, i32 1, i32 0
  %474 = trunc i32 %473 to i8
  %475 = load ptr, ptr %4, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.Global, ptr %475, i32 0, i32 43
  store i8 %474, ptr %476, align 8, !tbaa !57
  br label %517

477:                                              ; preds = %25
  %478 = load ptr, ptr %5, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.fppTag, ptr %478, i32 0, i32 1
  %480 = load ptr, ptr %479, align 8, !tbaa !13
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.Global, ptr %481, i32 0, i32 60
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.Global, ptr %483, i32 0, i32 61
  %485 = load i32, ptr %484, align 8, !tbaa !58
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %484, align 8, !tbaa !58
  %487 = sext i32 %485 to i64
  %488 = getelementptr inbounds [20 x ptr], ptr %482, i64 0, i64 %487
  store ptr %480, ptr %488, align 8, !tbaa !5
  br label %517

489:                                              ; preds = %25
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.fppTag, ptr %490, i32 0, i32 1
  %492 = load ptr, ptr %491, align 8, !tbaa !13
  %493 = icmp ne ptr %492, null
  %494 = zext i1 %493 to i64
  %495 = select i1 %493, i32 1, i32 0
  %496 = trunc i32 %495 to i8
  %497 = load ptr, ptr %4, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.Global, ptr %497, i32 0, i32 63
  store i8 %496, ptr %498, align 1, !tbaa !59
  br label %517

499:                                              ; preds = %25
  %500 = load ptr, ptr %5, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.fppTag, ptr %500, i32 0, i32 1
  %502 = load ptr, ptr %501, align 8, !tbaa !13
  %503 = icmp ne ptr %502, null
  %504 = zext i1 %503 to i64
  %505 = select i1 %503, i32 1, i32 0
  %506 = trunc i32 %505 to i8
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.Global, ptr %507, i32 0, i32 64
  store i8 %506, ptr %508, align 2, !tbaa !60
  br label %517

509:                                              ; preds = %25
  %510 = load ptr, ptr %5, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.fppTag, ptr %510, i32 0, i32 1
  %512 = load ptr, ptr %511, align 8, !tbaa !13
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.Global, ptr %513, i32 0, i32 65
  store ptr %512, ptr %514, align 8, !tbaa !61
  br label %517

515:                                              ; preds = %25
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, i32, ...) @fpp_cerror(ptr noundef %516, i32 noundef 42, ptr noundef null)
  br label %517

517:                                              ; preds = %515, %509, %499, %489, %477, %467, %461, %455, %449, %443, %437, %424, %419, %418, %405, %296, %283, %270, %242, %227, %214, %213, %166, %146, %136, %126, %116, %106, %96, %86, %76, %66, %56, %46, %36, %30, %29
  %518 = load ptr, ptr %5, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.fppTag, ptr %518, i32 1
  store ptr %519, ptr %5, align 8, !tbaa !5
  br label %16, !llvm.loop !62

520:                                              ; preds = %23
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %521

521:                                              ; preds = %520, %240, %225, %211
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %522 = load i32, ptr %3, align 4
  ret i32 %522
}

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

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

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

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() #3

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

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

!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 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 0}
!11 = !{!"fppTag", !12, i64 0, !6, i64 8}
!12 = !{!"int", !7, i64 0}
!13 = !{!11, !6, i64 8}
!14 = !{!15, !6, i64 2992}
!15 = !{!"Global", !12, i64 0, !12, i64 4, !6, i64 8, !6, i64 16, !12, i64 24, !12, i64 28, !12, i64 32, !6, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !7, i64 64, !6, i64 584, !7, i64 592, !7, i64 593, !7, i64 594, !7, i64 595, !7, i64 596, !7, i64 597, !6, i64 632, !7, i64 640, !6, i64 800, !7, i64 808, !7, i64 968, !12, i64 988, !7, i64 992, !7, i64 1032, !7, i64 1072, !6, i64 1080, !7, i64 1088, !6, i64 2120, !7, i64 2128, !12, i64 2376, !6, i64 2384, !7, i64 2392, !12, i64 2904, !6, i64 2912, !6, i64 2920, !6, i64 2928, !6, i64 2936, !6, i64 2944, !6, i64 2952, !7, i64 2960, !7, i64 2961, !7, i64 2962, !7, i64 2963, !7, i64 2964, !7, i64 2965, !7, i64 2966, !7, i64 2967, !6, i64 2968, !16, i64 2976, !7, i64 2984, !7, i64 2985, !7, i64 2986, !7, i64 2987, !7, i64 2988, !7, i64 2989, !6, i64 2992, !7, i64 3000, !12, i64 3160, !7, i64 3164, !7, i64 3165, !7, i64 3166, !6, i64 3168}
!16 = !{!"long", !7, i64 0}
!17 = !{!15, !7, i64 3164}
!18 = !{!15, !7, i64 2989}
!19 = !{!15, !7, i64 2987}
!20 = !{!15, !7, i64 2984}
!21 = !{!15, !7, i64 2986}
!22 = !{!15, !7, i64 2985}
!23 = !{!15, !7, i64 2966}
!24 = !{!15, !7, i64 2965}
!25 = !{!15, !7, i64 2964}
!26 = !{!15, !7, i64 2963}
!27 = !{!15, !7, i64 2961}
!28 = !{!15, !7, i64 2962}
!29 = !{!15, !7, i64 593}
!30 = !{!15, !7, i64 592}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !6, i64 8}
!34 = !{!"defbuf", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !7, i64 24}
!35 = !{!34, !12, i64 20}
!36 = !{!15, !7, i64 594}
!37 = !{!15, !6, i64 800}
!38 = !{!15, !12, i64 988}
!39 = !{!15, !7, i64 595}
!40 = !{!15, !7, i64 1072}
!41 = !{!12, !12, i64 0}
!42 = !{!43, !44, i64 0}
!43 = !{!"sizes", !44, i64 0, !44, i64 2, !44, i64 4}
!44 = !{!"short", !7, i64 0}
!45 = !{!44, !44, i64 0}
!46 = distinct !{!46, !32}
!47 = distinct !{!47, !32}
!48 = !{!43, !44, i64 2}
!49 = !{!43, !44, i64 4}
!50 = !{!15, !7, i64 596}
!51 = !{!15, !6, i64 2928}
!52 = !{!15, !6, i64 2912}
!53 = !{!15, !6, i64 2920}
!54 = !{!15, !6, i64 2944}
!55 = !{!15, !6, i64 2952}
!56 = !{!15, !6, i64 2936}
!57 = !{!15, !7, i64 2960}
!58 = !{!15, !12, i64 3160}
!59 = !{!15, !7, i64 3165}
!60 = !{!15, !7, i64 3166}
!61 = !{!15, !6, i64 3168}
!62 = distinct !{!62, !32}


; 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.sizes = type { i16, i16, i16 }

@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@size_table = external local_unnamed_addr global [0 x %struct.sizes], align 2

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @fpp_dooptions(ptr noundef %0, ptr noundef readonly %1) local_unnamed_addr #0 {
  %.not204 = icmp eq ptr %1, null
  br i1 %.not204, label %.critedge173, label %.lr.ph200

.lr.ph200:                                        ; preds = %2
  %3 = getelementptr inbounds i8, ptr %0, i64 3168
  %4 = getelementptr inbounds i8, ptr %0, i64 3166
  %5 = getelementptr inbounds i8, ptr %0, i64 3165
  %6 = getelementptr inbounds i8, ptr %0, i64 3000
  %7 = getelementptr inbounds i8, ptr %0, i64 3160
  %8 = getelementptr inbounds i8, ptr %0, i64 2960
  %9 = getelementptr inbounds i8, ptr %0, i64 2936
  %10 = getelementptr inbounds i8, ptr %0, i64 2952
  %11 = getelementptr inbounds i8, ptr %0, i64 2944
  %12 = getelementptr inbounds i8, ptr %0, i64 2920
  %13 = getelementptr inbounds i8, ptr %0, i64 2912
  %14 = getelementptr inbounds i8, ptr %0, i64 64
  %15 = getelementptr inbounds i8, ptr %0, i64 2928
  %16 = getelementptr inbounds i8, ptr %0, i64 596
  %17 = getelementptr inbounds i8, ptr %0, i64 1072
  %18 = getelementptr inbounds i8, ptr %0, i64 595
  %19 = getelementptr inbounds i8, ptr %0, i64 988
  %20 = getelementptr inbounds i8, ptr %0, i64 808
  %21 = getelementptr inbounds i8, ptr %0, i64 968
  %22 = getelementptr inbounds i8, ptr %0, i64 800
  %23 = getelementptr inbounds i8, ptr %0, i64 594
  %24 = getelementptr inbounds i8, ptr %0, i64 593
  %25 = getelementptr inbounds i8, ptr %0, i64 592
  %26 = getelementptr inbounds i8, ptr %0, i64 2962
  %27 = getelementptr inbounds i8, ptr %0, i64 2961
  %28 = getelementptr inbounds i8, ptr %0, i64 2963
  %29 = getelementptr inbounds i8, ptr %0, i64 2964
  %30 = getelementptr inbounds i8, ptr %0, i64 2965
  %31 = getelementptr inbounds i8, ptr %0, i64 2966
  %32 = getelementptr inbounds i8, ptr %0, i64 2985
  %33 = getelementptr inbounds i8, ptr %0, i64 2986
  %34 = getelementptr inbounds i8, ptr %0, i64 2984
  %35 = getelementptr inbounds i8, ptr %0, i64 2987
  %36 = getelementptr inbounds i8, ptr %0, i64 2989
  %37 = getelementptr inbounds i8, ptr %0, i64 3164
  %38 = getelementptr inbounds i8, ptr %0, i64 2992
  br label %39

39:                                               ; preds = %235, %.lr.ph200
  %.0134199 = phi ptr [ %1, %.lr.ph200 ], [ %236, %235 ]
  %40 = load i32, ptr %.0134199, align 8, !tbaa !5
  switch i32 %40, label %234 [
    i32 0, label %.critedge173
    i32 30, label %41
    i32 32, label %44
    i32 29, label %48
    i32 26, label %52
    i32 23, label %56
    i32 25, label %60
    i32 24, label %64
    i32 22, label %68
    i32 21, label %72
    i32 20, label %76
    i32 19, label %80
    i32 17, label %84
    i32 18, label %88
    i32 1, label %92
    i32 2, label %96
    i32 3, label %110
    i32 4, label %111
    i32 27, label %117
    i32 28, label %117
    i32 5, label %130
    i32 6, label %136
    i32 7, label %142
    i32 8, label %146
    i32 9, label %182
    i32 10, label %189
    i32 11, label %192
    i32 34, label %197
    i32 12, label %200
    i32 13, label %203
    i32 16, label %206
    i32 14, label %209
    i32 15, label %212
    i32 31, label %216
    i32 33, label %223
    i32 35, label %227
    i32 36, label %231
  ]

41:                                               ; preds = %39
  %42 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %43 = load ptr, ptr %42, align 8, !tbaa !11
  store ptr %43, ptr %38, align 8, !tbaa !12
  br label %235

44:                                               ; preds = %39
  %45 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %46 = load ptr, ptr %45, align 8, !tbaa !11
  %.not171 = icmp ne ptr %46, null
  %47 = zext i1 %.not171 to i8
  store i8 %47, ptr %37, align 4, !tbaa !15
  br label %235

48:                                               ; preds = %39
  %49 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %50 = load ptr, ptr %49, align 8, !tbaa !11
  %.not170 = icmp ne ptr %50, null
  %51 = zext i1 %.not170 to i8
  store i8 %51, ptr %36, align 1, !tbaa !16
  br label %235

52:                                               ; preds = %39
  %53 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %54 = load ptr, ptr %53, align 8, !tbaa !11
  %.not169 = icmp ne ptr %54, null
  %55 = zext i1 %.not169 to i8
  store i8 %55, ptr %35, align 1, !tbaa !17
  br label %235

56:                                               ; preds = %39
  %57 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %58 = load ptr, ptr %57, align 8, !tbaa !11
  %.not168 = icmp ne ptr %58, null
  %59 = zext i1 %.not168 to i8
  store i8 %59, ptr %34, align 8, !tbaa !18
  br label %235

60:                                               ; preds = %39
  %61 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %62 = load ptr, ptr %61, align 8, !tbaa !11
  %.not167 = icmp ne ptr %62, null
  %63 = zext i1 %.not167 to i8
  store i8 %63, ptr %33, align 2, !tbaa !19
  br label %235

64:                                               ; preds = %39
  %65 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %66 = load ptr, ptr %65, align 8, !tbaa !11
  %.not166 = icmp ne ptr %66, null
  %67 = zext i1 %.not166 to i8
  store i8 %67, ptr %32, align 1, !tbaa !20
  br label %235

68:                                               ; preds = %39
  %69 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %70 = load ptr, ptr %69, align 8, !tbaa !11
  %.not165 = icmp ne ptr %70, null
  %71 = zext i1 %.not165 to i8
  store i8 %71, ptr %31, align 2, !tbaa !21
  br label %235

72:                                               ; preds = %39
  %73 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %74 = load ptr, ptr %73, align 8, !tbaa !11
  %.not164 = icmp ne ptr %74, null
  %75 = zext i1 %.not164 to i8
  store i8 %75, ptr %30, align 1, !tbaa !22
  br label %235

76:                                               ; preds = %39
  %77 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %78 = load ptr, ptr %77, align 8, !tbaa !11
  %.not163 = icmp ne ptr %78, null
  %79 = zext i1 %.not163 to i8
  store i8 %79, ptr %29, align 4, !tbaa !23
  br label %235

80:                                               ; preds = %39
  %81 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %82 = load ptr, ptr %81, align 8, !tbaa !11
  %.not162 = icmp ne ptr %82, null
  %83 = zext i1 %.not162 to i8
  store i8 %83, ptr %28, align 1, !tbaa !24
  br label %235

84:                                               ; preds = %39
  %85 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %86 = load ptr, ptr %85, align 8, !tbaa !11
  %.not161 = icmp ne ptr %86, null
  %87 = zext i1 %.not161 to i8
  store i8 %87, ptr %27, align 1, !tbaa !25
  br label %235

88:                                               ; preds = %39
  %89 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %90 = load ptr, ptr %89, align 8, !tbaa !11
  %.not160 = icmp ne ptr %90, null
  %91 = zext i1 %.not160 to i8
  store i8 %91, ptr %26, align 2, !tbaa !26
  br label %235

92:                                               ; preds = %39
  %93 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !11
  %.not159 = icmp eq ptr %94, null
  br i1 %.not159, label %235, label %95

95:                                               ; preds = %92
  store i8 1, ptr %24, align 1, !tbaa !27
  store i8 1, ptr %25, align 8, !tbaa !28
  br label %235

96:                                               ; preds = %39
  %97 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %98 = load ptr, ptr %97, align 8, !tbaa !11
  br label %99

99:                                               ; preds = %101, %96
  %.0132 = phi ptr [ %98, %96 ], [ %102, %101 ]
  %100 = load i8, ptr %.0132, align 1, !tbaa !29
  switch i8 %100, label %101 [
    i8 0, label %.loopexit
    i8 61, label %103
  ]

101:                                              ; preds = %99
  %102 = getelementptr inbounds i8, ptr %.0132, i64 1
  br label %99, !llvm.loop !30

103:                                              ; preds = %99
  %104 = getelementptr inbounds i8, ptr %.0132, i64 1
  store i8 0, ptr %.0132, align 1, !tbaa !29
  br label %.loopexit

.loopexit:                                        ; preds = %99, %103
  %.1133 = phi ptr [ %104, %103 ], [ @.str.3, %99 ]
  %105 = tail call ptr @fpp_defendel(ptr noundef %0, ptr noundef %98, i32 noundef 0) #4
  %.not158.not = icmp eq ptr %105, null
  br i1 %.not158.not, label %.critedge173, label %106

106:                                              ; preds = %.loopexit
  %107 = tail call ptr @fpp_savestring(ptr noundef %0, ptr noundef nonnull %.1133) #4
  %108 = getelementptr inbounds i8, ptr %105, i64 8
  store ptr %107, ptr %108, align 8, !tbaa !32
  %109 = getelementptr inbounds i8, ptr %105, i64 20
  store i32 -1, ptr %109, align 4, !tbaa !34
  br label %235

110:                                              ; preds = %39
  store i8 1, ptr %23, align 2, !tbaa !35
  br label %235

111:                                              ; preds = %39
  %112 = load ptr, ptr %22, align 8, !tbaa !36
  %.not155 = icmp ult ptr %112, %22
  br i1 %.not155, label %113, label %.critedge173.sink.split

113:                                              ; preds = %111
  %114 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %115 = load ptr, ptr %114, align 8, !tbaa !11
  %116 = getelementptr inbounds i8, ptr %112, i64 8
  store ptr %116, ptr %22, align 8, !tbaa !36
  store ptr %115, ptr %112, align 8, !tbaa !37
  br label %235

117:                                              ; preds = %39, %39
  %118 = load i32, ptr %19, align 4, !tbaa !38
  %119 = icmp ugt i32 %118, 19
  br i1 %119, label %.critedge173.sink.split, label %120

120:                                              ; preds = %117
  %121 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %122 = load ptr, ptr %121, align 8, !tbaa !11
  %123 = zext nneg i32 %118 to i64
  %124 = getelementptr inbounds [20 x ptr], ptr %20, i64 0, i64 %123
  store ptr %122, ptr %124, align 8, !tbaa !37
  %125 = icmp eq i32 %40, 27
  %126 = zext i1 %125 to i8
  %127 = getelementptr inbounds [20 x i8], ptr %21, i64 0, i64 %123
  store i8 %126, ptr %127, align 1, !tbaa !29
  %128 = load i32, ptr %19, align 4, !tbaa !38
  %129 = add i32 %128, 1
  store i32 %129, ptr %19, align 4, !tbaa !38
  br label %235

130:                                              ; preds = %39
  %131 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %132 = load ptr, ptr %131, align 8, !tbaa !11
  %.not154 = icmp ne ptr %132, null
  %133 = zext i1 %.not154 to i8
  %134 = load i8, ptr %18, align 1, !tbaa !39
  %135 = or i8 %134, %133
  store i8 %135, ptr %18, align 1, !tbaa !39
  br label %235

136:                                              ; preds = %39
  %137 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %138 = load ptr, ptr %137, align 8, !tbaa !11
  %.not153 = icmp eq ptr %138, null
  %139 = select i1 %.not153, i8 0, i8 2
  %140 = load i8, ptr %18, align 1, !tbaa !39
  %141 = or i8 %139, %140
  store i8 %141, ptr %18, align 1, !tbaa !39
  br label %235

142:                                              ; preds = %39
  %143 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %144 = load ptr, ptr %143, align 8, !tbaa !11
  %.not152 = icmp eq ptr %144, null
  %145 = zext i1 %.not152 to i8
  store i8 %145, ptr %17, align 8, !tbaa !40
  br label %235

146:                                              ; preds = %39
  %147 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %148 = load ptr, ptr %147, align 8, !tbaa !11
  %149 = load i8, ptr %148, align 1, !tbaa !29
  %.not145 = icmp eq i8 %149, 42
  %.0125 = select i1 %.not145, i32 0, i32 512
  %.0.idx = zext i1 %.not145 to i64
  %.0 = getelementptr inbounds i8, ptr %148, i64 %.0.idx
  %150 = load i16, ptr @size_table, align 2, !tbaa !41
  %151 = sext i16 %150 to i32
  %.not146192 = icmp eq i32 %.0125, %151
  br i1 %.not146192, label %.outer._crit_edge, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %146
  %. = select i1 %.not145, i64 4, i64 2
  br label %.lr.ph.split

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader, %._crit_edge189
  %.1.ph194 = phi ptr [ %167, %._crit_edge189 ], [ %.0, %.lr.ph.split.preheader ]
  %.0130.ph193 = phi ptr [ %177, %._crit_edge189 ], [ @size_table, %.lr.ph.split.preheader ]
  %152 = load i8, ptr %.1.ph194, align 1, !tbaa !29
  %.not147182 = icmp eq i8 %152, 0
  br i1 %.not147182, label %.critedge2, label %.lr.ph184

.lr.ph184:                                        ; preds = %.lr.ph.split
  %153 = tail call ptr @__ctype_b_loc() #5
  %154 = load ptr, ptr %153, align 8, !tbaa !37
  br label %155

155:                                              ; preds = %.lr.ph184, %161
  %156 = phi i8 [ %152, %.lr.ph184 ], [ %163, %161 ]
  %.1177183 = phi ptr [ %.1.ph194, %.lr.ph184 ], [ %162, %161 ]
  %157 = sext i8 %156 to i64
  %158 = getelementptr inbounds i16, ptr %154, i64 %157
  %159 = load i16, ptr %158, align 2, !tbaa !44
  %160 = and i16 %159, 2048
  %.not150 = icmp eq i16 %160, 0
  br i1 %.not150, label %161, label %.lr.ph188

161:                                              ; preds = %155
  %162 = getelementptr inbounds i8, ptr %.1177183, i64 1
  %163 = load i8, ptr %162, align 1, !tbaa !29
  %.not147 = icmp eq i8 %163, 0
  br i1 %.not147, label %.critedge2, label %155

.lr.ph188:                                        ; preds = %155, %.lr.ph188
  %164 = phi i8 [ %170, %.lr.ph188 ], [ %156, %155 ]
  %.2187 = phi ptr [ %167, %.lr.ph188 ], [ %.1177183, %155 ]
  %.0129186 = phi i32 [ %169, %.lr.ph188 ], [ 0, %155 ]
  %165 = sext i8 %164 to i32
  %166 = mul nsw i32 %.0129186, 10
  %167 = getelementptr inbounds i8, ptr %.2187, i64 1
  %168 = add i32 %166, -48
  %169 = add i32 %168, %165
  %170 = load i8, ptr %167, align 1, !tbaa !29
  %171 = sext i8 %170 to i64
  %172 = getelementptr inbounds i16, ptr %154, i64 %171
  %173 = load i16, ptr %172, align 2, !tbaa !44
  %174 = and i16 %173, 2048
  %.not151 = icmp eq i16 %174, 0
  br i1 %.not151, label %._crit_edge189, label %.lr.ph188, !llvm.loop !45

._crit_edge189:                                   ; preds = %.lr.ph188
  %175 = trunc i32 %169 to i16
  %176 = getelementptr inbounds i8, ptr %.0130.ph193, i64 %.
  store i16 %175, ptr %176, align 2, !tbaa !44
  %177 = getelementptr inbounds i8, ptr %.0130.ph193, i64 6
  %178 = load i16, ptr %177, align 2, !tbaa !41
  %179 = sext i16 %178 to i32
  %.not146 = icmp eq i32 %.0125, %179
  br i1 %.not146, label %.outer._crit_edge, label %.lr.ph.split, !llvm.loop !46

.critedge2:                                       ; preds = %.lr.ph.split, %161
  tail call void (ptr, i32, ...) @fpp_cerror(ptr noundef %0, i32 noundef 39, ptr noundef null) #4
  br label %235

.outer._crit_edge:                                ; preds = %._crit_edge189, %146
  %.1.lcssa = phi ptr [ %.0, %146 ], [ %167, %._crit_edge189 ]
  %180 = load i8, ptr %.1.lcssa, align 1, !tbaa !29
  %.not149 = icmp eq i8 %180, 0
  br i1 %.not149, label %235, label %181

181:                                              ; preds = %.outer._crit_edge
  tail call void (ptr, i32, ...) @fpp_cerror(ptr noundef %0, i32 noundef 40, ptr noundef null) #4
  br label %235

182:                                              ; preds = %39
  %183 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %184 = load ptr, ptr %183, align 8, !tbaa !11
  %185 = tail call ptr @fpp_defendel(ptr noundef %0, ptr noundef %184, i32 noundef 1) #4
  %186 = icmp eq ptr %185, null
  br i1 %186, label %187, label %235

187:                                              ; preds = %182
  %188 = load ptr, ptr %183, align 8, !tbaa !11
  tail call void (ptr, i32, ...) @fpp_cerror(ptr noundef %0, i32 noundef 41, ptr noundef %188) #4
  br label %235

189:                                              ; preds = %39
  %190 = load i8, ptr %16, align 4, !tbaa !47
  %191 = add i8 %190, 1
  store i8 %191, ptr %16, align 4, !tbaa !47
  br label %235

192:                                              ; preds = %39
  %193 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %194 = load ptr, ptr %193, align 8, !tbaa !11
  %195 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %14, ptr noundef nonnull dereferenceable(1) %194) #4
  %196 = load ptr, ptr %193, align 8, !tbaa !11
  store ptr %196, ptr %15, align 8, !tbaa !48
  br label %235

197:                                              ; preds = %39
  %198 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %199 = load ptr, ptr %198, align 8, !tbaa !11
  store ptr %199, ptr %13, align 8, !tbaa !49
  br label %235

200:                                              ; preds = %39
  %201 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %202 = load ptr, ptr %201, align 8, !tbaa !11
  store ptr %202, ptr %12, align 8, !tbaa !50
  br label %235

203:                                              ; preds = %39
  %204 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %205 = load ptr, ptr %204, align 8, !tbaa !11
  store ptr %205, ptr %11, align 8, !tbaa !51
  br label %235

206:                                              ; preds = %39
  %207 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %208 = load ptr, ptr %207, align 8, !tbaa !11
  store ptr %208, ptr %10, align 8, !tbaa !52
  br label %235

209:                                              ; preds = %39
  %210 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %211 = load ptr, ptr %210, align 8, !tbaa !11
  store ptr %211, ptr %9, align 8, !tbaa !53
  br label %235

212:                                              ; preds = %39
  %213 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %214 = load ptr, ptr %213, align 8, !tbaa !11
  %.not144 = icmp ne ptr %214, null
  %215 = zext i1 %.not144 to i8
  store i8 %215, ptr %8, align 8, !tbaa !54
  br label %235

216:                                              ; preds = %39
  %217 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %218 = load ptr, ptr %217, align 8, !tbaa !11
  %219 = load i32, ptr %7, align 8, !tbaa !55
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %7, align 8, !tbaa !55
  %221 = sext i32 %219 to i64
  %222 = getelementptr inbounds [20 x ptr], ptr %6, i64 0, i64 %221
  store ptr %218, ptr %222, align 8, !tbaa !37
  br label %235

223:                                              ; preds = %39
  %224 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %225 = load ptr, ptr %224, align 8, !tbaa !11
  %.not143 = icmp ne ptr %225, null
  %226 = zext i1 %.not143 to i8
  store i8 %226, ptr %5, align 1, !tbaa !56
  br label %235

227:                                              ; preds = %39
  %228 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %229 = load ptr, ptr %228, align 8, !tbaa !11
  %.not142 = icmp ne ptr %229, null
  %230 = zext i1 %.not142 to i8
  store i8 %230, ptr %4, align 2, !tbaa !57
  br label %235

231:                                              ; preds = %39
  %232 = getelementptr inbounds i8, ptr %.0134199, i64 8
  %233 = load ptr, ptr %232, align 8, !tbaa !11
  store ptr %233, ptr %3, align 8, !tbaa !58
  br label %235

234:                                              ; preds = %39
  tail call void (ptr, i32, ...) @fpp_cerror(ptr noundef %0, i32 noundef 42, ptr noundef null) #4
  br label %235

235:                                              ; preds = %106, %.critedge2, %181, %.outer._crit_edge, %182, %187, %92, %95, %234, %231, %227, %223, %216, %212, %209, %206, %203, %200, %197, %192, %189, %142, %136, %130, %120, %113, %110, %88, %84, %80, %76, %72, %68, %64, %60, %56, %52, %48, %44, %41
  %236 = getelementptr inbounds i8, ptr %.0134199, i64 16
  br label %39, !llvm.loop !59

.critedge173.sink.split:                          ; preds = %117, %111
  %.sink = phi i32 [ 56, %111 ], [ 57, %117 ]
  %.3.ph = phi i32 [ 17, %111 ], [ 18, %117 ]
  tail call void (ptr, i32, ...) @fpp_cerror(ptr noundef nonnull %0, i32 noundef %.sink) #4
  br label %.critedge173

.critedge173:                                     ; preds = %39, %.loopexit, %.critedge173.sink.split, %2
  %.3 = phi i32 [ 0, %2 ], [ %.3.ph, %.critedge173.sink.split ], [ %40, %39 ], [ 1, %.loopexit ]
  ret i32 %.3
}

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

declare ptr @fpp_savestring(ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() local_unnamed_addr #2

; 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 #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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn 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 #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"fppTag", !7, i64 0, !10, i64 8}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !10, i64 8}
!12 = !{!13, !10, i64 2992}
!13 = !{!"Global", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 16, !7, i64 24, !7, i64 28, !7, i64 32, !10, i64 40, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !8, i64 64, !10, i64 584, !8, i64 592, !8, i64 593, !8, i64 594, !8, i64 595, !8, i64 596, !8, i64 597, !10, i64 632, !8, i64 640, !10, i64 800, !8, i64 808, !8, i64 968, !7, i64 988, !8, i64 992, !8, i64 1032, !8, i64 1072, !10, i64 1080, !8, i64 1088, !10, i64 2120, !8, i64 2128, !7, i64 2376, !10, i64 2384, !8, i64 2392, !7, i64 2904, !10, i64 2912, !10, i64 2920, !10, i64 2928, !10, i64 2936, !10, i64 2944, !10, i64 2952, !8, i64 2960, !8, i64 2961, !8, i64 2962, !8, i64 2963, !8, i64 2964, !8, i64 2965, !8, i64 2966, !8, i64 2967, !10, i64 2968, !14, i64 2976, !8, i64 2984, !8, i64 2985, !8, i64 2986, !8, i64 2987, !8, i64 2988, !8, i64 2989, !10, i64 2992, !8, i64 3000, !7, i64 3160, !8, i64 3164, !8, i64 3165, !8, i64 3166, !10, i64 3168}
!14 = !{!"long", !8, i64 0}
!15 = !{!13, !8, i64 3164}
!16 = !{!13, !8, i64 2989}
!17 = !{!13, !8, i64 2987}
!18 = !{!13, !8, i64 2984}
!19 = !{!13, !8, i64 2986}
!20 = !{!13, !8, i64 2985}
!21 = !{!13, !8, i64 2966}
!22 = !{!13, !8, i64 2965}
!23 = !{!13, !8, i64 2964}
!24 = !{!13, !8, i64 2963}
!25 = !{!13, !8, i64 2961}
!26 = !{!13, !8, i64 2962}
!27 = !{!13, !8, i64 593}
!28 = !{!13, !8, i64 592}
!29 = !{!8, !8, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!33, !10, i64 8}
!33 = !{!"defbuf", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 20, !8, i64 24}
!34 = !{!33, !7, i64 20}
!35 = !{!13, !8, i64 594}
!36 = !{!13, !10, i64 800}
!37 = !{!10, !10, i64 0}
!38 = !{!13, !7, i64 988}
!39 = !{!13, !8, i64 595}
!40 = !{!13, !8, i64 1072}
!41 = !{!42, !43, i64 0}
!42 = !{!"sizes", !43, i64 0, !43, i64 2, !43, i64 4}
!43 = !{!"short", !8, i64 0}
!44 = !{!43, !43, i64 0}
!45 = distinct !{!45, !31}
!46 = distinct !{!46, !31}
!47 = !{!13, !8, i64 596}
!48 = !{!13, !10, i64 2928}
!49 = !{!13, !10, i64 2912}
!50 = !{!13, !10, i64 2920}
!51 = !{!13, !10, i64 2944}
!52 = !{!13, !10, i64 2952}
!53 = !{!13, !10, i64 2936}
!54 = !{!13, !8, i64 2960}
!55 = !{!13, !7, i64 3160}
!56 = !{!13, !8, i64 3165}
!57 = !{!13, !8, i64 3166}
!58 = !{!13, !10, i64 3168}
!59 = distinct !{!59, !31}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass