; LLVM IR from reworks-org/galaxy :: deps/sfml_deps/flac-src/src/share/getopt/getopt.ll_share_ (getopt_internal)

; 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.share__option = type { ptr, i32, ptr, i32 }

@share__optarg = external dso_local global ptr, align 8
@share__optind = external dso_local global i32, align 4
@share__opterr = external dso_local global i32, align 4
@share__optopt = external dso_local global i32, align 4
@share____getopt_initialized = external hidden global i32, align 4
@nextchar = external hidden global ptr, align 8
@last_nonopt = external hidden global i32, align 4
@first_nonopt = external hidden global i32, align 4
@ordering = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@posixly_correct = external hidden global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [46 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @share___getopt_internal(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5) #0 {
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  store i32 %0, ptr %8, align 4, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !9
  store ptr %3, ptr %11, align 8, !tbaa !9
  store ptr %4, ptr %12, align 8, !tbaa !9
  store i32 %5, ptr %13, align 4, !tbaa !5
  store ptr null, ptr @share__optarg, align 8, !tbaa !9
  %31 = load i32, ptr @share__optind, align 4, !tbaa !5
  %32 = icmp eq i32 %31, 0
  br i1 %32, label %36, label %33

33:                                               ; preds = %6
  %34 = load i32, ptr @share____getopt_initialized, align 4, !tbaa !5
  %35 = icmp ne i32 %34, 0
  br i1 %35, label %45, label %36

36:                                               ; preds = %33, %6
  %37 = load i32, ptr @share__optind, align 4, !tbaa !5
  %38 = icmp eq i32 %37, 0
  br i1 %38, label %39, label %40

39:                                               ; preds = %36
  store i32 1, ptr @share__optind, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %39, %36
  %41 = load i32, ptr %8, align 4, !tbaa !5
  %42 = load ptr, ptr %9, align 8, !tbaa !9
  %43 = load ptr, ptr %10, align 8, !tbaa !9
  %44 = call ptr @share___getopt_initialize(i32 noundef %41, ptr noundef %42, ptr noundef %43)
  store ptr %44, ptr %10, align 8, !tbaa !9
  store i32 1, ptr @share____getopt_initialized, align 4, !tbaa !5
  br label %45

45:                                               ; preds = %40, %33
  %46 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %47 = icmp eq ptr %46, null
  br i1 %47, label %53, label %48

48:                                               ; preds = %45
  %49 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %50 = load i8, ptr %49, align 1, !tbaa !11
  %51 = sext i8 %50 to i32
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %219

53:                                               ; preds = %48, %45
  %54 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %55 = load i32, ptr @share__optind, align 4, !tbaa !5
  %56 = icmp sgt i32 %54, %55
  br i1 %56, label %57, label %59

57:                                               ; preds = %53
  %58 = load i32, ptr @share__optind, align 4, !tbaa !5
  store i32 %58, ptr @last_nonopt, align 4, !tbaa !5
  br label %59

59:                                               ; preds = %57, %53
  %60 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  %61 = load i32, ptr @share__optind, align 4, !tbaa !5
  %62 = icmp sgt i32 %60, %61
  br i1 %62, label %63, label %65

63:                                               ; preds = %59
  %64 = load i32, ptr @share__optind, align 4, !tbaa !5
  store i32 %64, ptr @first_nonopt, align 4, !tbaa !5
  br label %65

65:                                               ; preds = %63, %59
  %66 = load i32, ptr @ordering, align 4, !tbaa !5
  %67 = icmp eq i32 %66, 1
  br i1 %67, label %68, label %119

68:                                               ; preds = %65
  %69 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  %70 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %71 = icmp ne i32 %69, %70
  br i1 %71, label %72, label %78

72:                                               ; preds = %68
  %73 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %74 = load i32, ptr @share__optind, align 4, !tbaa !5
  %75 = icmp ne i32 %73, %74
  br i1 %75, label %76, label %78

76:                                               ; preds = %72
  %77 = load ptr, ptr %9, align 8, !tbaa !9
  call void @exchange(ptr noundef %77)
  br label %85

78:                                               ; preds = %72, %68
  %79 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %80 = load i32, ptr @share__optind, align 4, !tbaa !5
  %81 = icmp ne i32 %79, %80
  br i1 %81, label %82, label %84

82:                                               ; preds = %78
  %83 = load i32, ptr @share__optind, align 4, !tbaa !5
  store i32 %83, ptr @first_nonopt, align 4, !tbaa !5
  br label %84

84:                                               ; preds = %82, %78
  br label %85

85:                                               ; preds = %84, %76
  br label %86

86:                                               ; preds = %114, %85
  %87 = load i32, ptr @share__optind, align 4, !tbaa !5
  %88 = load i32, ptr %8, align 4, !tbaa !5
  %89 = icmp slt i32 %87, %88
  br i1 %89, label %90, label %112

90:                                               ; preds = %86
  %91 = load ptr, ptr %9, align 8, !tbaa !9
  %92 = load i32, ptr @share__optind, align 4, !tbaa !5
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds ptr, ptr %91, i64 %93
  %95 = load ptr, ptr %94, align 8, !tbaa !9
  %96 = getelementptr inbounds i8, ptr %95, i64 0
  %97 = load i8, ptr %96, align 1, !tbaa !11
  %98 = sext i8 %97 to i32
  %99 = icmp ne i32 %98, 45
  br i1 %99, label %110, label %100

100:                                              ; preds = %90
  %101 = load ptr, ptr %9, align 8, !tbaa !9
  %102 = load i32, ptr @share__optind, align 4, !tbaa !5
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds ptr, ptr %101, i64 %103
  %105 = load ptr, ptr %104, align 8, !tbaa !9
  %106 = getelementptr inbounds i8, ptr %105, i64 1
  %107 = load i8, ptr %106, align 1, !tbaa !11
  %108 = sext i8 %107 to i32
  %109 = icmp eq i32 %108, 0
  br label %110

110:                                              ; preds = %100, %90
  %111 = phi i1 [ true, %90 ], [ %109, %100 ]
  br label %112

112:                                              ; preds = %110, %86
  %113 = phi i1 [ false, %86 ], [ %111, %110 ]
  br i1 %113, label %114, label %117

114:                                              ; preds = %112
  %115 = load i32, ptr @share__optind, align 4, !tbaa !5
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr @share__optind, align 4, !tbaa !5
  br label %86, !llvm.loop !12

117:                                              ; preds = %112
  %118 = load i32, ptr @share__optind, align 4, !tbaa !5
  store i32 %118, ptr @last_nonopt, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %117, %65
  %120 = load i32, ptr @share__optind, align 4, !tbaa !5
  %121 = load i32, ptr %8, align 4, !tbaa !5
  %122 = icmp ne i32 %120, %121
  br i1 %122, label %123, label %153

123:                                              ; preds = %119
  %124 = load ptr, ptr %9, align 8, !tbaa !9
  %125 = load i32, ptr @share__optind, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds ptr, ptr %124, i64 %126
  %128 = load ptr, ptr %127, align 8, !tbaa !9
  %129 = call i32 @strcmp(ptr noundef %128, ptr noundef @.str) #4
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %153, label %131

131:                                              ; preds = %123
  %132 = load i32, ptr @share__optind, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr @share__optind, align 4, !tbaa !5
  %134 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  %135 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %136 = icmp ne i32 %134, %135
  br i1 %136, label %137, label %143

137:                                              ; preds = %131
  %138 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %139 = load i32, ptr @share__optind, align 4, !tbaa !5
  %140 = icmp ne i32 %138, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %137
  %142 = load ptr, ptr %9, align 8, !tbaa !9
  call void @exchange(ptr noundef %142)
  br label %150

143:                                              ; preds = %137, %131
  %144 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  %145 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %146 = icmp eq i32 %144, %145
  br i1 %146, label %147, label %149

147:                                              ; preds = %143
  %148 = load i32, ptr @share__optind, align 4, !tbaa !5
  store i32 %148, ptr @first_nonopt, align 4, !tbaa !5
  br label %149

149:                                              ; preds = %147, %143
  br label %150

150:                                              ; preds = %149, %141
  %151 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %151, ptr @last_nonopt, align 4, !tbaa !5
  %152 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %152, ptr @share__optind, align 4, !tbaa !5
  br label %153

153:                                              ; preds = %150, %123, %119
  %154 = load i32, ptr @share__optind, align 4, !tbaa !5
  %155 = load i32, ptr %8, align 4, !tbaa !5
  %156 = icmp eq i32 %154, %155
  br i1 %156, label %157, label %164

157:                                              ; preds = %153
  %158 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  %159 = load i32, ptr @last_nonopt, align 4, !tbaa !5
  %160 = icmp ne i32 %158, %159
  br i1 %160, label %161, label %163

161:                                              ; preds = %157
  %162 = load i32, ptr @first_nonopt, align 4, !tbaa !5
  store i32 %162, ptr @share__optind, align 4, !tbaa !5
  br label %163

163:                                              ; preds = %161, %157
  store i32 -1, ptr %7, align 4
  br label %933

164:                                              ; preds = %153
  %165 = load ptr, ptr %9, align 8, !tbaa !9
  %166 = load i32, ptr @share__optind, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds ptr, ptr %165, i64 %167
  %169 = load ptr, ptr %168, align 8, !tbaa !9
  %170 = getelementptr inbounds i8, ptr %169, i64 0
  %171 = load i8, ptr %170, align 1, !tbaa !11
  %172 = sext i8 %171 to i32
  %173 = icmp ne i32 %172, 45
  br i1 %173, label %184, label %174

174:                                              ; preds = %164
  %175 = load ptr, ptr %9, align 8, !tbaa !9
  %176 = load i32, ptr @share__optind, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds ptr, ptr %175, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = getelementptr inbounds i8, ptr %179, i64 1
  %181 = load i8, ptr %180, align 1, !tbaa !11
  %182 = sext i8 %181 to i32
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %195

184:                                              ; preds = %174, %164
  %185 = load i32, ptr @ordering, align 4, !tbaa !5
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %188

187:                                              ; preds = %184
  store i32 -1, ptr %7, align 4
  br label %933

188:                                              ; preds = %184
  %189 = load ptr, ptr %9, align 8, !tbaa !9
  %190 = load i32, ptr @share__optind, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr @share__optind, align 4, !tbaa !5
  %192 = sext i32 %190 to i64
  %193 = getelementptr inbounds ptr, ptr %189, i64 %192
  %194 = load ptr, ptr %193, align 8, !tbaa !9
  store ptr %194, ptr @share__optarg, align 8, !tbaa !9
  store i32 1, ptr %7, align 4
  br label %933

195:                                              ; preds = %174
  %196 = load ptr, ptr %9, align 8, !tbaa !9
  %197 = load i32, ptr @share__optind, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds ptr, ptr %196, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !9
  %201 = getelementptr inbounds i8, ptr %200, i64 1
  %202 = load ptr, ptr %11, align 8, !tbaa !9
  %203 = icmp ne ptr %202, null
  br i1 %203, label %204, label %214

204:                                              ; preds = %195
  %205 = load ptr, ptr %9, align 8, !tbaa !9
  %206 = load i32, ptr @share__optind, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds ptr, ptr %205, i64 %207
  %209 = load ptr, ptr %208, align 8, !tbaa !9
  %210 = getelementptr inbounds i8, ptr %209, i64 1
  %211 = load i8, ptr %210, align 1, !tbaa !11
  %212 = sext i8 %211 to i32
  %213 = icmp eq i32 %212, 45
  br label %214

214:                                              ; preds = %204, %195
  %215 = phi i1 [ false, %195 ], [ %213, %204 ]
  %216 = zext i1 %215 to i32
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i8, ptr %201, i64 %217
  store ptr %218, ptr @nextchar, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %214, %48
  %220 = load ptr, ptr %11, align 8, !tbaa !9
  %221 = icmp ne ptr %220, null
  br i1 %221, label %222, label %556

222:                                              ; preds = %219
  %223 = load ptr, ptr %9, align 8, !tbaa !9
  %224 = load i32, ptr @share__optind, align 4, !tbaa !5
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds ptr, ptr %223, i64 %225
  %227 = load ptr, ptr %226, align 8, !tbaa !9
  %228 = getelementptr inbounds i8, ptr %227, i64 1
  %229 = load i8, ptr %228, align 1, !tbaa !11
  %230 = sext i8 %229 to i32
  %231 = icmp eq i32 %230, 45
  br i1 %231, label %257, label %232

232:                                              ; preds = %222
  %233 = load i32, ptr %13, align 4, !tbaa !5
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %556

235:                                              ; preds = %232
  %236 = load ptr, ptr %9, align 8, !tbaa !9
  %237 = load i32, ptr @share__optind, align 4, !tbaa !5
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds ptr, ptr %236, i64 %238
  %240 = load ptr, ptr %239, align 8, !tbaa !9
  %241 = getelementptr inbounds i8, ptr %240, i64 2
  %242 = load i8, ptr %241, align 1, !tbaa !11
  %243 = sext i8 %242 to i32
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %257, label %245

245:                                              ; preds = %235
  %246 = load ptr, ptr %10, align 8, !tbaa !9
  %247 = load ptr, ptr %9, align 8, !tbaa !9
  %248 = load i32, ptr @share__optind, align 4, !tbaa !5
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds ptr, ptr %247, i64 %249
  %251 = load ptr, ptr %250, align 8, !tbaa !9
  %252 = getelementptr inbounds i8, ptr %251, i64 1
  %253 = load i8, ptr %252, align 1, !tbaa !11
  %254 = sext i8 %253 to i32
  %255 = call ptr @strchr(ptr noundef %246, i32 noundef %254) #4
  %256 = icmp ne ptr %255, null
  br i1 %256, label %556, label %257

257:                                              ; preds = %245, %235, %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store ptr null, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 -1, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %258 = load ptr, ptr @nextchar, align 8, !tbaa !9
  store ptr %258, ptr %14, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %272, %257
  %260 = load ptr, ptr %14, align 8, !tbaa !9
  %261 = load i8, ptr %260, align 1, !tbaa !11
  %262 = sext i8 %261 to i32
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %269

264:                                              ; preds = %259
  %265 = load ptr, ptr %14, align 8, !tbaa !9
  %266 = load i8, ptr %265, align 1, !tbaa !11
  %267 = sext i8 %266 to i32
  %268 = icmp ne i32 %267, 61
  br label %269

269:                                              ; preds = %264, %259
  %270 = phi i1 [ false, %259 ], [ %268, %264 ]
  br i1 %270, label %271, label %275

271:                                              ; preds = %269
  br label %272

272:                                              ; preds = %271
  %273 = load ptr, ptr %14, align 8, !tbaa !9
  %274 = getelementptr inbounds i8, ptr %273, i32 1
  store ptr %274, ptr %14, align 8, !tbaa !9
  br label %259, !llvm.loop !14

275:                                              ; preds = %269
  %276 = load ptr, ptr %11, align 8, !tbaa !9
  store ptr %276, ptr %15, align 8, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %277

277:                                              ; preds = %318, %275
  %278 = load ptr, ptr %15, align 8, !tbaa !9
  %279 = getelementptr inbounds %struct.share__option, ptr %278, i32 0, i32 0
  %280 = load ptr, ptr %279, align 8, !tbaa !15
  %281 = icmp ne ptr %280, null
  br i1 %281, label %282, label %323

282:                                              ; preds = %277
  %283 = load ptr, ptr %15, align 8, !tbaa !9
  %284 = getelementptr inbounds %struct.share__option, ptr %283, i32 0, i32 0
  %285 = load ptr, ptr %284, align 8, !tbaa !15
  %286 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %287 = load ptr, ptr %14, align 8, !tbaa !9
  %288 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %289 = ptrtoint ptr %287 to i64
  %290 = ptrtoint ptr %288 to i64
  %291 = sub i64 %289, %290
  %292 = call i32 @strncmp(ptr noundef %285, ptr noundef %286, i64 noundef %291) #4
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %317, label %294

294:                                              ; preds = %282
  %295 = load ptr, ptr %14, align 8, !tbaa !9
  %296 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %297 = ptrtoint ptr %295 to i64
  %298 = ptrtoint ptr %296 to i64
  %299 = sub i64 %297, %298
  %300 = load ptr, ptr %15, align 8, !tbaa !9
  %301 = getelementptr inbounds %struct.share__option, ptr %300, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8, !tbaa !15
  %303 = call i64 @strlen(ptr noundef %302) #4
  %304 = icmp eq i64 %299, %303
  br i1 %304, label %305, label %308

305:                                              ; preds = %294
  %306 = load ptr, ptr %15, align 8, !tbaa !9
  store ptr %306, ptr %16, align 8, !tbaa !9
  %307 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %307, ptr %19, align 4, !tbaa !5
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %323

308:                                              ; preds = %294
  %309 = load ptr, ptr %16, align 8, !tbaa !9
  %310 = icmp eq ptr %309, null
  br i1 %310, label %311, label %314

311:                                              ; preds = %308
  %312 = load ptr, ptr %15, align 8, !tbaa !9
  store ptr %312, ptr %16, align 8, !tbaa !9
  %313 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %313, ptr %19, align 4, !tbaa !5
  br label %315

314:                                              ; preds = %308
  store i32 1, ptr %18, align 4, !tbaa !5
  br label %315

315:                                              ; preds = %314, %311
  br label %316

316:                                              ; preds = %315
  br label %317

317:                                              ; preds = %316, %282
  br label %318

318:                                              ; preds = %317
  %319 = load ptr, ptr %15, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.share__option, ptr %319, i32 1
  store ptr %320, ptr %15, align 8, !tbaa !9
  %321 = load i32, ptr %20, align 4, !tbaa !5
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %20, align 4, !tbaa !5
  br label %277, !llvm.loop !17

323:                                              ; preds = %305, %277
  %324 = load i32, ptr %18, align 4, !tbaa !5
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %350

326:                                              ; preds = %323
  %327 = load i32, ptr %17, align 4, !tbaa !5
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %350, label %329

329:                                              ; preds = %326
  %330 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %343

332:                                              ; preds = %329
  %333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %334 = load ptr, ptr %9, align 8, !tbaa !9
  %335 = getelementptr inbounds ptr, ptr %334, i64 0
  %336 = load ptr, ptr %335, align 8, !tbaa !9
  %337 = load ptr, ptr %9, align 8, !tbaa !9
  %338 = load i32, ptr @share__optind, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %337, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !9
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %333, ptr noundef @.str.1, ptr noundef %336, ptr noundef %341) #5
  br label %343

343:                                              ; preds = %332, %329
  %344 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %345 = call i64 @strlen(ptr noundef %344) #4
  %346 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %347 = getelementptr inbounds i8, ptr %346, i64 %345
  store ptr %347, ptr @nextchar, align 8, !tbaa !9
  %348 = load i32, ptr @share__optind, align 4, !tbaa !5
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr @share__optind, align 4, !tbaa !5
  store i32 0, ptr @share__optopt, align 4, !tbaa !5
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

350:                                              ; preds = %326, %323
  %351 = load ptr, ptr %16, align 8, !tbaa !9
  %352 = icmp ne ptr %351, null
  br i1 %352, label %353, label %493

353:                                              ; preds = %350
  %354 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %354, ptr %20, align 4, !tbaa !5
  %355 = load i32, ptr @share__optind, align 4, !tbaa !5
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr @share__optind, align 4, !tbaa !5
  %357 = load ptr, ptr %14, align 8, !tbaa !9
  %358 = load i8, ptr %357, align 1, !tbaa !11
  %359 = icmp ne i8 %358, 0
  br i1 %359, label %360, label %419

360:                                              ; preds = %353
  %361 = load ptr, ptr %16, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.share__option, ptr %361, i32 0, i32 1
  %363 = load i32, ptr %362, align 8, !tbaa !18
  %364 = icmp ne i32 %363, 0
  br i1 %364, label %365, label %368

365:                                              ; preds = %360
  %366 = load ptr, ptr %14, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %366, i64 1
  store ptr %367, ptr @share__optarg, align 8, !tbaa !9
  br label %418

368:                                              ; preds = %360
  %369 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %371, label %410

371:                                              ; preds = %368
  %372 = load ptr, ptr %9, align 8, !tbaa !9
  %373 = load i32, ptr @share__optind, align 4, !tbaa !5
  %374 = sub nsw i32 %373, 1
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds ptr, ptr %372, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !9
  %378 = getelementptr inbounds i8, ptr %377, i64 1
  %379 = load i8, ptr %378, align 1, !tbaa !11
  %380 = sext i8 %379 to i32
  %381 = icmp eq i32 %380, 45
  br i1 %381, label %382, label %391

382:                                              ; preds = %371
  %383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %384 = load ptr, ptr %9, align 8, !tbaa !9
  %385 = getelementptr inbounds ptr, ptr %384, i64 0
  %386 = load ptr, ptr %385, align 8, !tbaa !9
  %387 = load ptr, ptr %16, align 8, !tbaa !9
  %388 = getelementptr inbounds %struct.share__option, ptr %387, i32 0, i32 0
  %389 = load ptr, ptr %388, align 8, !tbaa !15
  %390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %383, ptr noundef @.str.2, ptr noundef %386, ptr noundef %389) #5
  br label %409

391:                                              ; preds = %371
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = load ptr, ptr %9, align 8, !tbaa !9
  %394 = getelementptr inbounds ptr, ptr %393, i64 0
  %395 = load ptr, ptr %394, align 8, !tbaa !9
  %396 = load ptr, ptr %9, align 8, !tbaa !9
  %397 = load i32, ptr @share__optind, align 4, !tbaa !5
  %398 = sub nsw i32 %397, 1
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds ptr, ptr %396, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !9
  %402 = getelementptr inbounds i8, ptr %401, i64 0
  %403 = load i8, ptr %402, align 1, !tbaa !11
  %404 = sext i8 %403 to i32
  %405 = load ptr, ptr %16, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.share__option, ptr %405, i32 0, i32 0
  %407 = load ptr, ptr %406, align 8, !tbaa !15
  %408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %392, ptr noundef @.str.3, ptr noundef %395, i32 noundef %404, ptr noundef %407) #5
  br label %409

409:                                              ; preds = %391, %382
  br label %410

410:                                              ; preds = %409, %368
  %411 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %412 = call i64 @strlen(ptr noundef %411) #4
  %413 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %414 = getelementptr inbounds i8, ptr %413, i64 %412
  store ptr %414, ptr @nextchar, align 8, !tbaa !9
  %415 = load ptr, ptr %16, align 8, !tbaa !9
  %416 = getelementptr inbounds %struct.share__option, ptr %415, i32 0, i32 3
  %417 = load i32, ptr %416, align 8, !tbaa !19
  store i32 %417, ptr @share__optopt, align 4, !tbaa !5
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

418:                                              ; preds = %365
  br label %467

419:                                              ; preds = %353
  %420 = load ptr, ptr %16, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.share__option, ptr %420, i32 0, i32 1
  %422 = load i32, ptr %421, align 8, !tbaa !18
  %423 = icmp eq i32 %422, 1
  br i1 %423, label %424, label %466

424:                                              ; preds = %419
  %425 = load i32, ptr @share__optind, align 4, !tbaa !5
  %426 = load i32, ptr %8, align 4, !tbaa !5
  %427 = icmp slt i32 %425, %426
  br i1 %427, label %428, label %435

428:                                              ; preds = %424
  %429 = load ptr, ptr %9, align 8, !tbaa !9
  %430 = load i32, ptr @share__optind, align 4, !tbaa !5
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr @share__optind, align 4, !tbaa !5
  %432 = sext i32 %430 to i64
  %433 = getelementptr inbounds ptr, ptr %429, i64 %432
  %434 = load ptr, ptr %433, align 8, !tbaa !9
  store ptr %434, ptr @share__optarg, align 8, !tbaa !9
  br label %465

435:                                              ; preds = %424
  %436 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %450

438:                                              ; preds = %435
  %439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %440 = load ptr, ptr %9, align 8, !tbaa !9
  %441 = getelementptr inbounds ptr, ptr %440, i64 0
  %442 = load ptr, ptr %441, align 8, !tbaa !9
  %443 = load ptr, ptr %9, align 8, !tbaa !9
  %444 = load i32, ptr @share__optind, align 4, !tbaa !5
  %445 = sub nsw i32 %444, 1
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds ptr, ptr %443, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %439, ptr noundef @.str.4, ptr noundef %442, ptr noundef %448) #5
  br label %450

450:                                              ; preds = %438, %435
  %451 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %452 = call i64 @strlen(ptr noundef %451) #4
  %453 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %454 = getelementptr inbounds i8, ptr %453, i64 %452
  store ptr %454, ptr @nextchar, align 8, !tbaa !9
  %455 = load ptr, ptr %16, align 8, !tbaa !9
  %456 = getelementptr inbounds %struct.share__option, ptr %455, i32 0, i32 3
  %457 = load i32, ptr %456, align 8, !tbaa !19
  store i32 %457, ptr @share__optopt, align 4, !tbaa !5
  %458 = load ptr, ptr %10, align 8, !tbaa !9
  %459 = getelementptr inbounds i8, ptr %458, i64 0
  %460 = load i8, ptr %459, align 1, !tbaa !11
  %461 = sext i8 %460 to i32
  %462 = icmp eq i32 %461, 58
  %463 = zext i1 %462 to i64
  %464 = select i1 %462, i32 58, i32 63
  store i32 %464, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

465:                                              ; preds = %428
  br label %466

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

467:                                              ; preds = %466, %418
  %468 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %469 = call i64 @strlen(ptr noundef %468) #4
  %470 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %471 = getelementptr inbounds i8, ptr %470, i64 %469
  store ptr %471, ptr @nextchar, align 8, !tbaa !9
  %472 = load ptr, ptr %12, align 8, !tbaa !9
  %473 = icmp ne ptr %472, null
  br i1 %473, label %474, label %477

474:                                              ; preds = %467
  %475 = load i32, ptr %20, align 4, !tbaa !5
  %476 = load ptr, ptr %12, align 8, !tbaa !9
  store i32 %475, ptr %476, align 4, !tbaa !5
  br label %477

477:                                              ; preds = %474, %467
  %478 = load ptr, ptr %16, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.share__option, ptr %478, i32 0, i32 2
  %480 = load ptr, ptr %479, align 8, !tbaa !20
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %489

482:                                              ; preds = %477
  %483 = load ptr, ptr %16, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct.share__option, ptr %483, i32 0, i32 3
  %485 = load i32, ptr %484, align 8, !tbaa !19
  %486 = load ptr, ptr %16, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.share__option, ptr %486, i32 0, i32 2
  %488 = load ptr, ptr %487, align 8, !tbaa !20
  store i32 %485, ptr %488, align 4, !tbaa !5
  store i32 0, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

489:                                              ; preds = %477
  %490 = load ptr, ptr %16, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.share__option, ptr %490, i32 0, i32 3
  %492 = load i32, ptr %491, align 8, !tbaa !19
  store i32 %492, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

493:                                              ; preds = %350
  %494 = load i32, ptr %13, align 4, !tbaa !5
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %513

496:                                              ; preds = %493
  %497 = load ptr, ptr %9, align 8, !tbaa !9
  %498 = load i32, ptr @share__optind, align 4, !tbaa !5
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds ptr, ptr %497, i64 %499
  %501 = load ptr, ptr %500, align 8, !tbaa !9
  %502 = getelementptr inbounds i8, ptr %501, i64 1
  %503 = load i8, ptr %502, align 1, !tbaa !11
  %504 = sext i8 %503 to i32
  %505 = icmp eq i32 %504, 45
  br i1 %505, label %513, label %506

506:                                              ; preds = %496
  %507 = load ptr, ptr %10, align 8, !tbaa !9
  %508 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %509 = load i8, ptr %508, align 1, !tbaa !11
  %510 = sext i8 %509 to i32
  %511 = call ptr @strchr(ptr noundef %507, i32 noundef %510) #4
  %512 = icmp eq ptr %511, null
  br i1 %512, label %513, label %552

513:                                              ; preds = %506, %496, %493
  %514 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %515 = icmp ne i32 %514, 0
  br i1 %515, label %516, label %549

516:                                              ; preds = %513
  %517 = load ptr, ptr %9, align 8, !tbaa !9
  %518 = load i32, ptr @share__optind, align 4, !tbaa !5
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds ptr, ptr %517, i64 %519
  %521 = load ptr, ptr %520, align 8, !tbaa !9
  %522 = getelementptr inbounds i8, ptr %521, i64 1
  %523 = load i8, ptr %522, align 1, !tbaa !11
  %524 = sext i8 %523 to i32
  %525 = icmp eq i32 %524, 45
  br i1 %525, label %526, label %533

526:                                              ; preds = %516
  %527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %528 = load ptr, ptr %9, align 8, !tbaa !9
  %529 = getelementptr inbounds ptr, ptr %528, i64 0
  %530 = load ptr, ptr %529, align 8, !tbaa !9
  %531 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %527, ptr noundef @.str.5, ptr noundef %530, ptr noundef %531) #5
  br label %548

533:                                              ; preds = %516
  %534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %535 = load ptr, ptr %9, align 8, !tbaa !9
  %536 = getelementptr inbounds ptr, ptr %535, i64 0
  %537 = load ptr, ptr %536, align 8, !tbaa !9
  %538 = load ptr, ptr %9, align 8, !tbaa !9
  %539 = load i32, ptr @share__optind, align 4, !tbaa !5
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds ptr, ptr %538, i64 %540
  %542 = load ptr, ptr %541, align 8, !tbaa !9
  %543 = getelementptr inbounds i8, ptr %542, i64 0
  %544 = load i8, ptr %543, align 1, !tbaa !11
  %545 = sext i8 %544 to i32
  %546 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %547 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %534, ptr noundef @.str.6, ptr noundef %537, i32 noundef %545, ptr noundef %546) #5
  br label %548

548:                                              ; preds = %533, %526
  br label %549

549:                                              ; preds = %548, %513
  store ptr @.str.7, ptr @nextchar, align 8, !tbaa !9
  %550 = load i32, ptr @share__optind, align 4, !tbaa !5
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr @share__optind, align 4, !tbaa !5
  store i32 0, ptr @share__optopt, align 4, !tbaa !5
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %553

552:                                              ; preds = %506
  store i32 0, ptr %21, align 4
  br label %553

553:                                              ; preds = %552, %549, %489, %482, %450, %410, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  %554 = load i32, ptr %21, align 4
  switch i32 %554, label %935 [
    i32 0, label %555
    i32 1, label %933
  ]

555:                                              ; preds = %553
  br label %556

556:                                              ; preds = %555, %245, %232, %219
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #5
  %557 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %558 = getelementptr inbounds i8, ptr %557, i32 1
  store ptr %558, ptr @nextchar, align 8, !tbaa !9
  %559 = load i8, ptr %557, align 1, !tbaa !11
  store i8 %559, ptr %22, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %560 = load ptr, ptr %10, align 8, !tbaa !9
  %561 = load i8, ptr %22, align 1, !tbaa !11
  %562 = sext i8 %561 to i32
  %563 = call ptr @strchr(ptr noundef %560, i32 noundef %562) #4
  store ptr %563, ptr %23, align 8, !tbaa !9
  %564 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %565 = load i8, ptr %564, align 1, !tbaa !11
  %566 = sext i8 %565 to i32
  %567 = icmp eq i32 %566, 0
  br i1 %567, label %568, label %571

568:                                              ; preds = %556
  %569 = load i32, ptr @share__optind, align 4, !tbaa !5
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr @share__optind, align 4, !tbaa !5
  br label %571

571:                                              ; preds = %568, %556
  %572 = load ptr, ptr %23, align 8, !tbaa !9
  %573 = icmp eq ptr %572, null
  br i1 %573, label %578, label %574

574:                                              ; preds = %571
  %575 = load i8, ptr %22, align 1, !tbaa !11
  %576 = sext i8 %575 to i32
  %577 = icmp eq i32 %576, 58
  br i1 %577, label %578, label %604

578:                                              ; preds = %574, %571
  %579 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %580 = icmp ne i32 %579, 0
  br i1 %580, label %581, label %601

581:                                              ; preds = %578
  %582 = load ptr, ptr @posixly_correct, align 8, !tbaa !9
  %583 = icmp ne ptr %582, null
  br i1 %583, label %584, label %592

584:                                              ; preds = %581
  %585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %586 = load ptr, ptr %9, align 8, !tbaa !9
  %587 = getelementptr inbounds ptr, ptr %586, i64 0
  %588 = load ptr, ptr %587, align 8, !tbaa !9
  %589 = load i8, ptr %22, align 1, !tbaa !11
  %590 = sext i8 %589 to i32
  %591 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %585, ptr noundef @.str.8, ptr noundef %588, i32 noundef %590) #5
  br label %600

592:                                              ; preds = %581
  %593 = load ptr, ptr @stderr, align 8, !tbaa !9
  %594 = load ptr, ptr %9, align 8, !tbaa !9
  %595 = getelementptr inbounds ptr, ptr %594, i64 0
  %596 = load ptr, ptr %595, align 8, !tbaa !9
  %597 = load i8, ptr %22, align 1, !tbaa !11
  %598 = sext i8 %597 to i32
  %599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %593, ptr noundef @.str.9, ptr noundef %596, i32 noundef %598) #5
  br label %600

600:                                              ; preds = %592, %584
  br label %601

601:                                              ; preds = %600, %578
  %602 = load i8, ptr %22, align 1, !tbaa !11
  %603 = sext i8 %602 to i32
  store i32 %603, ptr @share__optopt, align 4, !tbaa !5
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %932

604:                                              ; preds = %574
  %605 = load ptr, ptr %23, align 8, !tbaa !9
  %606 = getelementptr inbounds i8, ptr %605, i64 0
  %607 = load i8, ptr %606, align 1, !tbaa !11
  %608 = sext i8 %607 to i32
  %609 = icmp eq i32 %608, 87
  br i1 %609, label %610, label %861

610:                                              ; preds = %604
  %611 = load ptr, ptr %23, align 8, !tbaa !9
  %612 = getelementptr inbounds i8, ptr %611, i64 1
  %613 = load i8, ptr %612, align 1, !tbaa !11
  %614 = sext i8 %613 to i32
  %615 = icmp eq i32 %614, 59
  br i1 %615, label %616, label %861

616:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  store ptr null, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 0, ptr %28, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 0, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %617 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %618 = load i8, ptr %617, align 1, !tbaa !11
  %619 = sext i8 %618 to i32
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %625

621:                                              ; preds = %616
  %622 = load ptr, ptr @nextchar, align 8, !tbaa !9
  store ptr %622, ptr @share__optarg, align 8, !tbaa !9
  %623 = load i32, ptr @share__optind, align 4, !tbaa !5
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr @share__optind, align 4, !tbaa !5
  br label %661

625:                                              ; preds = %616
  %626 = load i32, ptr @share__optind, align 4, !tbaa !5
  %627 = load i32, ptr %8, align 4, !tbaa !5
  %628 = icmp eq i32 %626, %627
  br i1 %628, label %629, label %653

629:                                              ; preds = %625
  %630 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %640

632:                                              ; preds = %629
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = load ptr, ptr %9, align 8, !tbaa !9
  %635 = getelementptr inbounds ptr, ptr %634, i64 0
  %636 = load ptr, ptr %635, align 8, !tbaa !9
  %637 = load i8, ptr %22, align 1, !tbaa !11
  %638 = sext i8 %637 to i32
  %639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %633, ptr noundef @.str.10, ptr noundef %636, i32 noundef %638) #5
  br label %640

640:                                              ; preds = %632, %629
  %641 = load i8, ptr %22, align 1, !tbaa !11
  %642 = sext i8 %641 to i32
  store i32 %642, ptr @share__optopt, align 4, !tbaa !5
  %643 = load ptr, ptr %10, align 8, !tbaa !9
  %644 = getelementptr inbounds i8, ptr %643, i64 0
  %645 = load i8, ptr %644, align 1, !tbaa !11
  %646 = sext i8 %645 to i32
  %647 = icmp eq i32 %646, 58
  br i1 %647, label %648, label %649

648:                                              ; preds = %640
  store i8 58, ptr %22, align 1, !tbaa !11
  br label %650

649:                                              ; preds = %640
  store i8 63, ptr %22, align 1, !tbaa !11
  br label %650

650:                                              ; preds = %649, %648
  %651 = load i8, ptr %22, align 1, !tbaa !11
  %652 = sext i8 %651 to i32
  store i32 %652, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

653:                                              ; preds = %625
  %654 = load ptr, ptr %9, align 8, !tbaa !9
  %655 = load i32, ptr @share__optind, align 4, !tbaa !5
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr @share__optind, align 4, !tbaa !5
  %657 = sext i32 %655 to i64
  %658 = getelementptr inbounds ptr, ptr %654, i64 %657
  %659 = load ptr, ptr %658, align 8, !tbaa !9
  store ptr %659, ptr @share__optarg, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %653
  br label %661

661:                                              ; preds = %660, %621
  %662 = load ptr, ptr @share__optarg, align 8, !tbaa !9
  store ptr %662, ptr %24, align 8, !tbaa !9
  store ptr %662, ptr @nextchar, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %676, %661
  %664 = load ptr, ptr %24, align 8, !tbaa !9
  %665 = load i8, ptr %664, align 1, !tbaa !11
  %666 = sext i8 %665 to i32
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %673

668:                                              ; preds = %663
  %669 = load ptr, ptr %24, align 8, !tbaa !9
  %670 = load i8, ptr %669, align 1, !tbaa !11
  %671 = sext i8 %670 to i32
  %672 = icmp ne i32 %671, 61
  br label %673

673:                                              ; preds = %668, %663
  %674 = phi i1 [ false, %663 ], [ %672, %668 ]
  br i1 %674, label %675, label %679

675:                                              ; preds = %673
  br label %676

676:                                              ; preds = %675
  %677 = load ptr, ptr %24, align 8, !tbaa !9
  %678 = getelementptr inbounds i8, ptr %677, i32 1
  store ptr %678, ptr %24, align 8, !tbaa !9
  br label %663, !llvm.loop !21

679:                                              ; preds = %673
  %680 = load ptr, ptr %11, align 8, !tbaa !9
  store ptr %680, ptr %25, align 8, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %681

681:                                              ; preds = %722, %679
  %682 = load ptr, ptr %25, align 8, !tbaa !9
  %683 = getelementptr inbounds %struct.share__option, ptr %682, i32 0, i32 0
  %684 = load ptr, ptr %683, align 8, !tbaa !15
  %685 = icmp ne ptr %684, null
  br i1 %685, label %686, label %727

686:                                              ; preds = %681
  %687 = load ptr, ptr %25, align 8, !tbaa !9
  %688 = getelementptr inbounds %struct.share__option, ptr %687, i32 0, i32 0
  %689 = load ptr, ptr %688, align 8, !tbaa !15
  %690 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %691 = load ptr, ptr %24, align 8, !tbaa !9
  %692 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %693 = ptrtoint ptr %691 to i64
  %694 = ptrtoint ptr %692 to i64
  %695 = sub i64 %693, %694
  %696 = call i32 @strncmp(ptr noundef %689, ptr noundef %690, i64 noundef %695) #4
  %697 = icmp ne i32 %696, 0
  br i1 %697, label %721, label %698

698:                                              ; preds = %686
  %699 = load ptr, ptr %24, align 8, !tbaa !9
  %700 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %701 = ptrtoint ptr %699 to i64
  %702 = ptrtoint ptr %700 to i64
  %703 = sub i64 %701, %702
  %704 = load ptr, ptr %25, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.share__option, ptr %704, i32 0, i32 0
  %706 = load ptr, ptr %705, align 8, !tbaa !15
  %707 = call i64 @strlen(ptr noundef %706) #4
  %708 = icmp eq i64 %703, %707
  br i1 %708, label %709, label %712

709:                                              ; preds = %698
  %710 = load ptr, ptr %25, align 8, !tbaa !9
  store ptr %710, ptr %26, align 8, !tbaa !9
  %711 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %711, ptr %29, align 4, !tbaa !5
  store i32 1, ptr %27, align 4, !tbaa !5
  br label %727

712:                                              ; preds = %698
  %713 = load ptr, ptr %26, align 8, !tbaa !9
  %714 = icmp eq ptr %713, null
  br i1 %714, label %715, label %718

715:                                              ; preds = %712
  %716 = load ptr, ptr %25, align 8, !tbaa !9
  store ptr %716, ptr %26, align 8, !tbaa !9
  %717 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %717, ptr %29, align 4, !tbaa !5
  br label %719

718:                                              ; preds = %712
  store i32 1, ptr %28, align 4, !tbaa !5
  br label %719

719:                                              ; preds = %718, %715
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720, %686
  br label %722

722:                                              ; preds = %721
  %723 = load ptr, ptr %25, align 8, !tbaa !9
  %724 = getelementptr inbounds %struct.share__option, ptr %723, i32 1
  store ptr %724, ptr %25, align 8, !tbaa !9
  %725 = load i32, ptr %30, align 4, !tbaa !5
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %30, align 4, !tbaa !5
  br label %681, !llvm.loop !22

727:                                              ; preds = %709, %681
  %728 = load i32, ptr %28, align 4, !tbaa !5
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %754

730:                                              ; preds = %727
  %731 = load i32, ptr %27, align 4, !tbaa !5
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %754, label %733

733:                                              ; preds = %730
  %734 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %747

736:                                              ; preds = %733
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = load ptr, ptr %9, align 8, !tbaa !9
  %739 = getelementptr inbounds ptr, ptr %738, i64 0
  %740 = load ptr, ptr %739, align 8, !tbaa !9
  %741 = load ptr, ptr %9, align 8, !tbaa !9
  %742 = load i32, ptr @share__optind, align 4, !tbaa !5
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds ptr, ptr %741, i64 %743
  %745 = load ptr, ptr %744, align 8, !tbaa !9
  %746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %737, ptr noundef @.str.11, ptr noundef %740, ptr noundef %745) #5
  br label %747

747:                                              ; preds = %736, %733
  %748 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %749 = call i64 @strlen(ptr noundef %748) #4
  %750 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %751 = getelementptr inbounds i8, ptr %750, i64 %749
  store ptr %751, ptr @nextchar, align 8, !tbaa !9
  %752 = load i32, ptr @share__optind, align 4, !tbaa !5
  %753 = add nsw i32 %752, 1
  store i32 %753, ptr @share__optind, align 4, !tbaa !5
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

754:                                              ; preds = %730, %727
  %755 = load ptr, ptr %26, align 8, !tbaa !9
  %756 = icmp ne ptr %755, null
  br i1 %756, label %757, label %859

757:                                              ; preds = %754
  %758 = load i32, ptr %29, align 4, !tbaa !5
  store i32 %758, ptr %30, align 4, !tbaa !5
  %759 = load ptr, ptr %24, align 8, !tbaa !9
  %760 = load i8, ptr %759, align 1, !tbaa !11
  %761 = icmp ne i8 %760, 0
  br i1 %761, label %762, label %788

762:                                              ; preds = %757
  %763 = load ptr, ptr %26, align 8, !tbaa !9
  %764 = getelementptr inbounds %struct.share__option, ptr %763, i32 0, i32 1
  %765 = load i32, ptr %764, align 8, !tbaa !18
  %766 = icmp ne i32 %765, 0
  br i1 %766, label %767, label %770

767:                                              ; preds = %762
  %768 = load ptr, ptr %24, align 8, !tbaa !9
  %769 = getelementptr inbounds i8, ptr %768, i64 1
  store ptr %769, ptr @share__optarg, align 8, !tbaa !9
  br label %787

770:                                              ; preds = %762
  %771 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %782

773:                                              ; preds = %770
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = load ptr, ptr %9, align 8, !tbaa !9
  %776 = getelementptr inbounds ptr, ptr %775, i64 0
  %777 = load ptr, ptr %776, align 8, !tbaa !9
  %778 = load ptr, ptr %26, align 8, !tbaa !9
  %779 = getelementptr inbounds %struct.share__option, ptr %778, i32 0, i32 0
  %780 = load ptr, ptr %779, align 8, !tbaa !15
  %781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %774, ptr noundef @.str.12, ptr noundef %777, ptr noundef %780) #5
  br label %782

782:                                              ; preds = %773, %770
  %783 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %784 = call i64 @strlen(ptr noundef %783) #4
  %785 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %786 = getelementptr inbounds i8, ptr %785, i64 %784
  store ptr %786, ptr @nextchar, align 8, !tbaa !9
  store i32 63, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

787:                                              ; preds = %767
  br label %833

788:                                              ; preds = %757
  %789 = load ptr, ptr %26, align 8, !tbaa !9
  %790 = getelementptr inbounds %struct.share__option, ptr %789, i32 0, i32 1
  %791 = load i32, ptr %790, align 8, !tbaa !18
  %792 = icmp eq i32 %791, 1
  br i1 %792, label %793, label %832

793:                                              ; preds = %788
  %794 = load i32, ptr @share__optind, align 4, !tbaa !5
  %795 = load i32, ptr %8, align 4, !tbaa !5
  %796 = icmp slt i32 %794, %795
  br i1 %796, label %797, label %804

797:                                              ; preds = %793
  %798 = load ptr, ptr %9, align 8, !tbaa !9
  %799 = load i32, ptr @share__optind, align 4, !tbaa !5
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr @share__optind, align 4, !tbaa !5
  %801 = sext i32 %799 to i64
  %802 = getelementptr inbounds ptr, ptr %798, i64 %801
  %803 = load ptr, ptr %802, align 8, !tbaa !9
  store ptr %803, ptr @share__optarg, align 8, !tbaa !9
  br label %831

804:                                              ; preds = %793
  %805 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %806 = icmp ne i32 %805, 0
  br i1 %806, label %807, label %819

807:                                              ; preds = %804
  %808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %809 = load ptr, ptr %9, align 8, !tbaa !9
  %810 = getelementptr inbounds ptr, ptr %809, i64 0
  %811 = load ptr, ptr %810, align 8, !tbaa !9
  %812 = load ptr, ptr %9, align 8, !tbaa !9
  %813 = load i32, ptr @share__optind, align 4, !tbaa !5
  %814 = sub nsw i32 %813, 1
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds ptr, ptr %812, i64 %815
  %817 = load ptr, ptr %816, align 8, !tbaa !9
  %818 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %808, ptr noundef @.str.4, ptr noundef %811, ptr noundef %817) #5
  br label %819

819:                                              ; preds = %807, %804
  %820 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %821 = call i64 @strlen(ptr noundef %820) #4
  %822 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %823 = getelementptr inbounds i8, ptr %822, i64 %821
  store ptr %823, ptr @nextchar, align 8, !tbaa !9
  %824 = load ptr, ptr %10, align 8, !tbaa !9
  %825 = getelementptr inbounds i8, ptr %824, i64 0
  %826 = load i8, ptr %825, align 1, !tbaa !11
  %827 = sext i8 %826 to i32
  %828 = icmp eq i32 %827, 58
  %829 = zext i1 %828 to i64
  %830 = select i1 %828, i32 58, i32 63
  store i32 %830, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

831:                                              ; preds = %797
  br label %832

832:                                              ; preds = %831, %788
  br label %833

833:                                              ; preds = %832, %787
  %834 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %835 = call i64 @strlen(ptr noundef %834) #4
  %836 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %837 = getelementptr inbounds i8, ptr %836, i64 %835
  store ptr %837, ptr @nextchar, align 8, !tbaa !9
  %838 = load ptr, ptr %12, align 8, !tbaa !9
  %839 = icmp ne ptr %838, null
  br i1 %839, label %840, label %843

840:                                              ; preds = %833
  %841 = load i32, ptr %30, align 4, !tbaa !5
  %842 = load ptr, ptr %12, align 8, !tbaa !9
  store i32 %841, ptr %842, align 4, !tbaa !5
  br label %843

843:                                              ; preds = %840, %833
  %844 = load ptr, ptr %26, align 8, !tbaa !9
  %845 = getelementptr inbounds %struct.share__option, ptr %844, i32 0, i32 2
  %846 = load ptr, ptr %845, align 8, !tbaa !20
  %847 = icmp ne ptr %846, null
  br i1 %847, label %848, label %855

848:                                              ; preds = %843
  %849 = load ptr, ptr %26, align 8, !tbaa !9
  %850 = getelementptr inbounds %struct.share__option, ptr %849, i32 0, i32 3
  %851 = load i32, ptr %850, align 8, !tbaa !19
  %852 = load ptr, ptr %26, align 8, !tbaa !9
  %853 = getelementptr inbounds %struct.share__option, ptr %852, i32 0, i32 2
  %854 = load ptr, ptr %853, align 8, !tbaa !20
  store i32 %851, ptr %854, align 4, !tbaa !5
  store i32 0, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

855:                                              ; preds = %843
  %856 = load ptr, ptr %26, align 8, !tbaa !9
  %857 = getelementptr inbounds %struct.share__option, ptr %856, i32 0, i32 3
  %858 = load i32, ptr %857, align 8, !tbaa !19
  store i32 %858, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

859:                                              ; preds = %754
  store ptr null, ptr @nextchar, align 8, !tbaa !9
  store i32 87, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %860

860:                                              ; preds = %859, %855, %848, %819, %782, %747, %650
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  br label %932

861:                                              ; preds = %610, %604
  %862 = load ptr, ptr %23, align 8, !tbaa !9
  %863 = getelementptr inbounds i8, ptr %862, i64 1
  %864 = load i8, ptr %863, align 1, !tbaa !11
  %865 = sext i8 %864 to i32
  %866 = icmp eq i32 %865, 58
  br i1 %866, label %867, label %929

867:                                              ; preds = %861
  %868 = load ptr, ptr %23, align 8, !tbaa !9
  %869 = getelementptr inbounds i8, ptr %868, i64 2
  %870 = load i8, ptr %869, align 1, !tbaa !11
  %871 = sext i8 %870 to i32
  %872 = icmp eq i32 %871, 58
  br i1 %872, label %873, label %884

873:                                              ; preds = %867
  %874 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %875 = load i8, ptr %874, align 1, !tbaa !11
  %876 = sext i8 %875 to i32
  %877 = icmp ne i32 %876, 0
  br i1 %877, label %878, label %882

878:                                              ; preds = %873
  %879 = load ptr, ptr @nextchar, align 8, !tbaa !9
  store ptr %879, ptr @share__optarg, align 8, !tbaa !9
  %880 = load i32, ptr @share__optind, align 4, !tbaa !5
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr @share__optind, align 4, !tbaa !5
  br label %883

882:                                              ; preds = %873
  store ptr null, ptr @share__optarg, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %882, %878
  store ptr null, ptr @nextchar, align 8, !tbaa !9
  br label %928

884:                                              ; preds = %867
  %885 = load ptr, ptr @nextchar, align 8, !tbaa !9
  %886 = load i8, ptr %885, align 1, !tbaa !11
  %887 = sext i8 %886 to i32
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %893

889:                                              ; preds = %884
  %890 = load ptr, ptr @nextchar, align 8, !tbaa !9
  store ptr %890, ptr @share__optarg, align 8, !tbaa !9
  %891 = load i32, ptr @share__optind, align 4, !tbaa !5
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr @share__optind, align 4, !tbaa !5
  br label %927

893:                                              ; preds = %884
  %894 = load i32, ptr @share__optind, align 4, !tbaa !5
  %895 = load i32, ptr %8, align 4, !tbaa !5
  %896 = icmp eq i32 %894, %895
  br i1 %896, label %897, label %919

897:                                              ; preds = %893
  %898 = load i32, ptr @share__opterr, align 4, !tbaa !5
  %899 = icmp ne i32 %898, 0
  br i1 %899, label %900, label %908

900:                                              ; preds = %897
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = load ptr, ptr %9, align 8, !tbaa !9
  %903 = getelementptr inbounds ptr, ptr %902, i64 0
  %904 = load ptr, ptr %903, align 8, !tbaa !9
  %905 = load i8, ptr %22, align 1, !tbaa !11
  %906 = sext i8 %905 to i32
  %907 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %901, ptr noundef @.str.10, ptr noundef %904, i32 noundef %906) #5
  br label %908

908:                                              ; preds = %900, %897
  %909 = load i8, ptr %22, align 1, !tbaa !11
  %910 = sext i8 %909 to i32
  store i32 %910, ptr @share__optopt, align 4, !tbaa !5
  %911 = load ptr, ptr %10, align 8, !tbaa !9
  %912 = getelementptr inbounds i8, ptr %911, i64 0
  %913 = load i8, ptr %912, align 1, !tbaa !11
  %914 = sext i8 %913 to i32
  %915 = icmp eq i32 %914, 58
  br i1 %915, label %916, label %917

916:                                              ; preds = %908
  store i8 58, ptr %22, align 1, !tbaa !11
  br label %918

917:                                              ; preds = %908
  store i8 63, ptr %22, align 1, !tbaa !11
  br label %918

918:                                              ; preds = %917, %916
  br label %926

919:                                              ; preds = %893
  %920 = load ptr, ptr %9, align 8, !tbaa !9
  %921 = load i32, ptr @share__optind, align 4, !tbaa !5
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr @share__optind, align 4, !tbaa !5
  %923 = sext i32 %921 to i64
  %924 = getelementptr inbounds ptr, ptr %920, i64 %923
  %925 = load ptr, ptr %924, align 8, !tbaa !9
  store ptr %925, ptr @share__optarg, align 8, !tbaa !9
  br label %926

926:                                              ; preds = %919, %918
  br label %927

927:                                              ; preds = %926, %889
  store ptr null, ptr @nextchar, align 8, !tbaa !9
  br label %928

928:                                              ; preds = %927, %883
  br label %929

929:                                              ; preds = %928, %861
  %930 = load i8, ptr %22, align 1, !tbaa !11
  %931 = sext i8 %930 to i32
  store i32 %931, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %932

932:                                              ; preds = %929, %860, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  br label %933

933:                                              ; preds = %932, %553, %188, %187, %163
  %934 = load i32, ptr %7, align 4
  ret i32 %934

935:                                              ; preds = %553
  unreachable
}

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

; Function Attrs: nounwind uwtable
declare hidden void @exchange(ptr noundef) #0

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #1

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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) }
attributes #5 = { 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 = distinct !{!14, !13}
!15 = !{!16, !10, i64 0}
!16 = !{!"share__option", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24}
!17 = distinct !{!17, !13}
!18 = !{!16, !6, i64 8}
!19 = !{!16, !6, i64 24}
!20 = !{!16, !10, i64 16}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}


; 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"

@share__optarg = external dso_local local_unnamed_addr global ptr, align 8
@share__optind = external dso_local local_unnamed_addr global i32, align 4
@share__opterr = external dso_local local_unnamed_addr global i32, align 4
@share__optopt = external dso_local local_unnamed_addr global i32, align 4
@share____getopt_initialized = external hidden local_unnamed_addr global i32, align 4
@nextchar = external hidden local_unnamed_addr global ptr, align 8
@last_nonopt = external hidden local_unnamed_addr global i32, align 4
@first_nonopt = external hidden local_unnamed_addr global i32, align 4
@ordering = external hidden local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@posixly_correct = external hidden local_unnamed_addr global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [46 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @share___getopt_internal(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef readonly %3, ptr noundef writeonly %4, i32 noundef %5) local_unnamed_addr #0 {
  store ptr null, ptr @share__optarg, align 8, !tbaa !5
  %7 = load i32, ptr @share__optind, align 4, !tbaa !9
  %8 = icmp ne i32 %7, 0
  %9 = load i32, ptr @share____getopt_initialized, align 4
  %10 = icmp ne i32 %9, 0
  %or.cond = select i1 %8, i1 %10, i1 false
  br i1 %or.cond, label %16, label %11

11:                                               ; preds = %6
  %12 = icmp eq i32 %7, 0
  br i1 %12, label %13, label %14

13:                                               ; preds = %11
  store i32 1, ptr @share__optind, align 4, !tbaa !9
  br label %14

14:                                               ; preds = %13, %11
  %15 = tail call ptr @share___getopt_initialize(i32 noundef %0, ptr noundef %1, ptr noundef %2)
  store i32 1, ptr @share____getopt_initialized, align 4, !tbaa !9
  br label %16

16:                                               ; preds = %6, %14
  %.0188 = phi ptr [ %2, %6 ], [ %15, %14 ]
  %17 = load ptr, ptr @nextchar, align 8, !tbaa !5
  %18 = icmp eq ptr %17, null
  br i1 %18, label %22, label %19

19:                                               ; preds = %16
  %20 = load i8, ptr %17, align 1, !tbaa !11
  %21 = icmp eq i8 %20, 0
  br i1 %21, label %22, label %92

22:                                               ; preds = %19, %16
  %23 = load i32, ptr @last_nonopt, align 4, !tbaa !9
  %24 = load i32, ptr @share__optind, align 4
  %25 = icmp sgt i32 %23, %24
  br i1 %25, label %26, label %27

26:                                               ; preds = %22
  store i32 %24, ptr @last_nonopt, align 4, !tbaa !9
  br label %27

27:                                               ; preds = %26, %22
  %28 = phi i32 [ %24, %26 ], [ %23, %22 ]
  %29 = load i32, ptr @first_nonopt, align 4, !tbaa !9
  %30 = icmp sgt i32 %29, %24
  br i1 %30, label %31, label %32

31:                                               ; preds = %27
  store i32 %24, ptr @first_nonopt, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %31, %27
  %33 = phi i32 [ %24, %31 ], [ %29, %27 ]
  %34 = load i32, ptr @ordering, align 4, !tbaa !9
  %35 = icmp eq i32 %34, 1
  br i1 %35, label %36, label %54

36:                                               ; preds = %32
  %.not = icmp eq i32 %33, %28
  %.not218 = icmp eq i32 %28, %24
  %or.cond265 = or i1 %.not, %.not218
  br i1 %or.cond265, label %38, label %37

37:                                               ; preds = %36
  tail call void @exchange(ptr noundef %1)
  %share__optind.promoted.pre = load i32, ptr @share__optind, align 4, !tbaa !9
  br label %40

38:                                               ; preds = %36
  br i1 %.not218, label %40, label %39

39:                                               ; preds = %38
  store i32 %24, ptr @first_nonopt, align 4, !tbaa !9
  br label %40

40:                                               ; preds = %38, %39, %37
  %share__optind.promoted = phi i32 [ %24, %38 ], [ %24, %39 ], [ %share__optind.promoted.pre, %37 ]
  %41 = icmp slt i32 %share__optind.promoted, %0
  br i1 %41, label %.lr.ph.preheader, label %.critedge

.lr.ph.preheader:                                 ; preds = %40
  %42 = sext i32 %share__optind.promoted to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.critedge3
  %43 = phi i32 [ %share__optind.promoted, %.lr.ph.preheader ], [ %51, %.critedge3 ]
  %indvars.iv = phi i64 [ %42, %.lr.ph.preheader ], [ %indvars.iv.next, %.critedge3 ]
  %44 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  %46 = load i8, ptr %45, align 1, !tbaa !11
  %.not220 = icmp eq i8 %46, 45
  br i1 %.not220, label %47, label %.critedge3

47:                                               ; preds = %.lr.ph
  %48 = getelementptr inbounds i8, ptr %45, i64 1
  %49 = load i8, ptr %48, align 1, !tbaa !11
  %50 = icmp eq i8 %49, 0
  br i1 %50, label %.critedge3, label %.critedge.loopexit.split.loop.exit373

.critedge3:                                       ; preds = %.lr.ph, %47
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %51 = trunc i64 %indvars.iv.next to i32
  store i32 %51, ptr @share__optind, align 4, !tbaa !9
  %exitcond.not = icmp eq i32 %51, %0
  br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !12

.critedge.loopexit.split.loop.exit373:            ; preds = %47
  %52 = trunc nsw i64 %indvars.iv to i32
  br label %.critedge

.critedge:                                        ; preds = %.critedge3, %.critedge.loopexit.split.loop.exit373, %40
  %53 = phi i32 [ %share__optind.promoted, %40 ], [ %43, %.critedge.loopexit.split.loop.exit373 ], [ %0, %.critedge3 ]
  %.lcssa311 = phi i32 [ %share__optind.promoted, %40 ], [ %52, %.critedge.loopexit.split.loop.exit373 ], [ %0, %.critedge3 ]
  store i32 %.lcssa311, ptr @last_nonopt, align 4, !tbaa !9
  br label %54

54:                                               ; preds = %.critedge, %32
  %55 = phi i32 [ %.lcssa311, %.critedge ], [ %28, %32 ]
  %56 = phi i32 [ %53, %.critedge ], [ %24, %32 ]
  %.not221 = icmp eq i32 %56, %0
  br i1 %.not221, label %.thread, label %57

57:                                               ; preds = %54
  %58 = sext i32 %56 to i64
  %59 = getelementptr inbounds ptr, ptr %1, i64 %58
  %60 = load ptr, ptr %59, align 8, !tbaa !5
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %60, ptr noundef nonnull dereferenceable(1) @.str) #3
  %.not222 = icmp eq i32 %61, 0
  br i1 %.not222, label %62, label %69

62:                                               ; preds = %57
  %63 = add nsw i32 %56, 1
  store i32 %63, ptr @share__optind, align 4, !tbaa !9
  %64 = load i32, ptr @first_nonopt, align 4, !tbaa !9
  %.not223 = icmp eq i32 %64, %55
  %.not224 = icmp eq i32 %55, %63
  %or.cond266 = select i1 %.not223, i1 true, i1 %.not224
  br i1 %or.cond266, label %66, label %65

65:                                               ; preds = %62
  tail call void @exchange(ptr noundef nonnull %1)
  br label %68

66:                                               ; preds = %62
  br i1 %.not223, label %67, label %68

67:                                               ; preds = %66
  store i32 %63, ptr @first_nonopt, align 4, !tbaa !9
  br label %68

68:                                               ; preds = %66, %67, %65
  store i32 %0, ptr @last_nonopt, align 4, !tbaa !9
  store i32 %0, ptr @share__optind, align 4, !tbaa !9
  br label %.thread

69:                                               ; preds = %57
  %70 = icmp eq i32 %56, %0
  br i1 %70, label %.thread, label %74

.thread:                                          ; preds = %54, %68, %69
  %71 = phi i32 [ %55, %69 ], [ %55, %54 ], [ %0, %68 ]
  %72 = load i32, ptr @first_nonopt, align 4, !tbaa !9
  %.not264 = icmp eq i32 %72, %71
  br i1 %.not264, label %.thread285, label %73

73:                                               ; preds = %.thread
  store i32 %72, ptr @share__optind, align 4, !tbaa !9
  br label %.thread285

74:                                               ; preds = %69
  %75 = sext i32 %56 to i64
  %76 = getelementptr inbounds ptr, ptr %1, i64 %75
  %77 = load ptr, ptr %76, align 8, !tbaa !5
  %78 = load i8, ptr %77, align 1, !tbaa !11
  %.not225 = icmp eq i8 %78, 45
  br i1 %.not225, label %79, label %83

79:                                               ; preds = %74
  %80 = getelementptr inbounds i8, ptr %77, i64 1
  %81 = load i8, ptr %80, align 1, !tbaa !11
  %82 = icmp eq i8 %81, 0
  br i1 %82, label %83, label %88

83:                                               ; preds = %79, %74
  %84 = load i32, ptr @ordering, align 4, !tbaa !9
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %.thread285, label %86

86:                                               ; preds = %83
  %87 = add nsw i32 %56, 1
  store i32 %87, ptr @share__optind, align 4, !tbaa !9
  store ptr %77, ptr @share__optarg, align 8, !tbaa !5
  br label %.thread285

88:                                               ; preds = %79
  %.not226 = icmp ne ptr %3, null
  %89 = icmp eq i8 %81, 45
  %spec.select = and i1 %.not226, %89
  %90 = zext i1 %spec.select to i64
  %91 = getelementptr inbounds i8, ptr %80, i64 %90
  store ptr %91, ptr @nextchar, align 8, !tbaa !5
  br label %92

92:                                               ; preds = %88, %19
  %93 = phi ptr [ %91, %88 ], [ %17, %19 ]
  %.not227 = icmp eq ptr %3, null
  br i1 %.not227, label %227, label %94

94:                                               ; preds = %92
  %95 = load i32, ptr @share__optind, align 4, !tbaa !9
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds ptr, ptr %1, i64 %96
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 1
  %100 = load i8, ptr %99, align 1, !tbaa !11
  %101 = sext i8 %100 to i32
  %102 = icmp eq i8 %100, 45
  br i1 %102, label %.preheader, label %103

103:                                              ; preds = %94
  %.not228 = icmp eq i32 %5, 0
  br i1 %.not228, label %227, label %104

104:                                              ; preds = %103
  %105 = getelementptr inbounds i8, ptr %98, i64 2
  %106 = load i8, ptr %105, align 1, !tbaa !11
  %.not229 = icmp eq i8 %106, 0
  br i1 %.not229, label %107, label %.preheader

107:                                              ; preds = %104
  %108 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.0188, i32 noundef %101) #3
  %.not230 = icmp eq ptr %108, null
  br i1 %.not230, label %.preheader, label %227

.preheader:                                       ; preds = %107, %104, %94
  br label %109

109:                                              ; preds = %.preheader, %111
  %.0187 = phi ptr [ %112, %111 ], [ %93, %.preheader ]
  %110 = load i8, ptr %.0187, align 1, !tbaa !11
  switch i8 %110, label %111 [
    i8 0, label %.critedge5
    i8 61, label %.critedge5
  ]

111:                                              ; preds = %109
  %112 = getelementptr inbounds i8, ptr %.0187, i64 1
  br label %109, !llvm.loop !14

.critedge5:                                       ; preds = %109, %109
  %113 = load ptr, ptr %3, align 8, !tbaa !15
  %.not233314.not = icmp eq ptr %113, null
  br i1 %.not233314.not, label %.thread356, label %.lr.ph320

.lr.ph320:                                        ; preds = %.critedge5
  %114 = ptrtoint ptr %.0187 to i64
  %115 = ptrtoint ptr %93 to i64
  %116 = sub i64 %114, %115
  br label %117

117:                                              ; preds = %.lr.ph320, %125
  %118 = phi ptr [ %113, %.lr.ph320 ], [ %128, %125 ]
  %.0176319 = phi i32 [ 0, %.lr.ph320 ], [ %127, %125 ]
  %.0177318 = phi i32 [ -1, %.lr.ph320 ], [ %.1178, %125 ]
  %.0180317 = phi i32 [ 0, %.lr.ph320 ], [ %.1181, %125 ]
  %.0183316 = phi ptr [ null, %.lr.ph320 ], [ %.1184, %125 ]
  %.0186315 = phi ptr [ %3, %.lr.ph320 ], [ %126, %125 ]
  %119 = tail call i32 @strncmp(ptr noundef nonnull %118, ptr noundef %93, i64 noundef %116) #3
  %.not234 = icmp eq i32 %119, 0
  br i1 %.not234, label %120, label %125

120:                                              ; preds = %117
  %121 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %118) #3
  %122 = icmp eq i64 %116, %121
  br i1 %122, label %.thread273, label %123

123:                                              ; preds = %120
  %124 = icmp eq ptr %.0183316, null
  %.0186..0183 = select i1 %124, ptr %.0186315, ptr %.0183316
  %.0180. = select i1 %124, i32 %.0180317, i32 1
  %.0176..0177 = select i1 %124, i32 %.0176319, i32 %.0177318
  br label %125

125:                                              ; preds = %123, %117
  %.1184 = phi ptr [ %.0183316, %117 ], [ %.0186..0183, %123 ]
  %.1181 = phi i32 [ %.0180317, %117 ], [ %.0180., %123 ]
  %.1178 = phi i32 [ %.0177318, %117 ], [ %.0176..0177, %123 ]
  %126 = getelementptr inbounds i8, ptr %.0186315, i64 32
  %127 = add nuw nsw i32 %.0176319, 1
  %128 = load ptr, ptr %126, align 8, !tbaa !15
  %.not233.not = icmp eq ptr %128, null
  br i1 %.not233.not, label %._crit_edge, label %117, !llvm.loop !17

._crit_edge:                                      ; preds = %125
  %129 = icmp eq i32 %.1181, 0
  br i1 %129, label %142, label %130

130:                                              ; preds = %._crit_edge
  %131 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not235 = icmp eq i32 %131, 0
  br i1 %.not235, label %136, label %132

132:                                              ; preds = %130
  %133 = load ptr, ptr @stderr, align 8, !tbaa !5
  %134 = load ptr, ptr %1, align 8, !tbaa !5
  %135 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %133, ptr noundef nonnull @.str.1, ptr noundef %134, ptr noundef %98) #4
  %.pre = load ptr, ptr @nextchar, align 8, !tbaa !5
  %.pre341 = load i32, ptr @share__optind, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %132, %130
  %137 = phi i32 [ %.pre341, %132 ], [ %95, %130 ]
  %138 = phi ptr [ %.pre, %132 ], [ %93, %130 ]
  %139 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %138) #3
  %140 = getelementptr inbounds i8, ptr %138, i64 %139
  store ptr %140, ptr @nextchar, align 8, !tbaa !5
  %141 = add nsw i32 %137, 1
  store i32 %141, ptr @share__optind, align 4, !tbaa !9
  store i32 0, ptr @share__optopt, align 4, !tbaa !9
  br label %.thread285

142:                                              ; preds = %._crit_edge
  %.not236 = icmp eq ptr %.1184, null
  br i1 %.not236, label %.thread356, label %.thread273

.thread273:                                       ; preds = %120, %142
  %.2185271278 = phi ptr [ %.1184, %142 ], [ %.0186315, %120 ]
  %.2179272277 = phi i32 [ %.1178, %142 ], [ %.0176319, %120 ]
  %143 = add nsw i32 %95, 1
  store i32 %143, ptr @share__optind, align 4, !tbaa !9
  %144 = load i8, ptr %.0187, align 1, !tbaa !11
  %.not239 = icmp eq i8 %144, 0
  %145 = getelementptr inbounds i8, ptr %.2185271278, i64 8
  %146 = load i32, ptr %145, align 8, !tbaa !18
  br i1 %.not239, label %171, label %147

147:                                              ; preds = %.thread273
  %.not241 = icmp eq i32 %146, 0
  br i1 %.not241, label %150, label %148

148:                                              ; preds = %147
  %149 = getelementptr inbounds i8, ptr %.0187, i64 1
  br label %.sink.split

150:                                              ; preds = %147
  %151 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not242 = icmp eq i32 %151, 0
  br i1 %.not242, label %165, label %152

152:                                              ; preds = %150
  %153 = load i8, ptr %99, align 1, !tbaa !11
  %154 = icmp eq i8 %153, 45
  %155 = load ptr, ptr @stderr, align 8, !tbaa !5
  %156 = load ptr, ptr %1, align 8, !tbaa !5
  br i1 %154, label %157, label %160

157:                                              ; preds = %152
  %158 = load ptr, ptr %.2185271278, align 8, !tbaa !15
  %159 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef nonnull @.str.2, ptr noundef %156, ptr noundef %158) #4
  br label %165

160:                                              ; preds = %152
  %161 = load i8, ptr %98, align 1, !tbaa !11
  %162 = sext i8 %161 to i32
  %163 = load ptr, ptr %.2185271278, align 8, !tbaa !15
  %164 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef nonnull @.str.3, ptr noundef %156, i32 noundef %162, ptr noundef %163) #4
  br label %165

165:                                              ; preds = %157, %160, %150
  %166 = load ptr, ptr @nextchar, align 8, !tbaa !5
  %167 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %166) #3
  %168 = getelementptr inbounds i8, ptr %166, i64 %167
  store ptr %168, ptr @nextchar, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %.2185271278, i64 24
  %170 = load i32, ptr %169, align 8, !tbaa !19
  store i32 %170, ptr @share__optopt, align 4, !tbaa !9
  br label %.thread285

171:                                              ; preds = %.thread273
  %172 = icmp eq i32 %146, 1
  br i1 %172, label %173, label %195

173:                                              ; preds = %171
  %174 = icmp slt i32 %143, %0
  br i1 %174, label %175, label %180

175:                                              ; preds = %173
  %176 = add nsw i32 %95, 2
  store i32 %176, ptr @share__optind, align 4, !tbaa !9
  %177 = sext i32 %143 to i64
  %178 = getelementptr inbounds ptr, ptr %1, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !5
  br label %.sink.split

180:                                              ; preds = %173
  %181 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not240 = icmp eq i32 %181, 0
  br i1 %.not240, label %186, label %182

182:                                              ; preds = %180
  %183 = load ptr, ptr @stderr, align 8, !tbaa !5
  %184 = load ptr, ptr %1, align 8, !tbaa !5
  %185 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str.4, ptr noundef %184, ptr noundef %98) #4
  %.pre342 = load ptr, ptr @nextchar, align 8, !tbaa !5
  br label %186

186:                                              ; preds = %182, %180
  %187 = phi ptr [ %.pre342, %182 ], [ %93, %180 ]
  %188 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %187) #3
  %189 = getelementptr inbounds i8, ptr %187, i64 %188
  store ptr %189, ptr @nextchar, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %.2185271278, i64 24
  %191 = load i32, ptr %190, align 8, !tbaa !19
  store i32 %191, ptr @share__optopt, align 4, !tbaa !9
  %192 = load i8, ptr %.0188, align 1, !tbaa !11
  %193 = icmp eq i8 %192, 58
  %194 = select i1 %193, i32 58, i32 63
  br label %.thread285

.sink.split:                                      ; preds = %148, %175
  %.sink376 = phi ptr [ %179, %175 ], [ %149, %148 ]
  store ptr %.sink376, ptr @share__optarg, align 8, !tbaa !5
  br label %195

195:                                              ; preds = %.sink.split, %171
  %196 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %93) #3
  %197 = getelementptr inbounds i8, ptr %93, i64 %196
  store ptr %197, ptr @nextchar, align 8, !tbaa !5
  %.not243 = icmp eq ptr %4, null
  br i1 %.not243, label %199, label %198

198:                                              ; preds = %195
  store i32 %.2179272277, ptr %4, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %198, %195
  %200 = getelementptr inbounds i8, ptr %.2185271278, i64 16
  %201 = load ptr, ptr %200, align 8, !tbaa !20
  %.not244 = icmp eq ptr %201, null
  %202 = getelementptr inbounds i8, ptr %.2185271278, i64 24
  %203 = load i32, ptr %202, align 8, !tbaa !19
  br i1 %.not244, label %.thread285, label %204

204:                                              ; preds = %199
  store i32 %203, ptr %201, align 4, !tbaa !9
  br label %.thread285

.thread356:                                       ; preds = %.critedge5, %142
  %.not237 = icmp eq i32 %5, 0
  br i1 %.not237, label %211, label %205

205:                                              ; preds = %.thread356
  br i1 %102, label %.thread282, label %206

206:                                              ; preds = %205
  %207 = load i8, ptr %93, align 1, !tbaa !11
  %208 = sext i8 %207 to i32
  %209 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.0188, i32 noundef %208) #3
  %210 = icmp eq ptr %209, null
  br i1 %210, label %.thread279, label %227

211:                                              ; preds = %.thread356
  %212 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not238 = icmp eq i32 %212, 0
  br i1 %.not238, label %224, label %215

.thread282:                                       ; preds = %205
  %213 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not238283 = icmp eq i32 %213, 0
  br i1 %.not238283, label %224, label %.thread284

.thread279:                                       ; preds = %206
  %214 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not238280 = icmp eq i32 %214, 0
  br i1 %.not238280, label %224, label %.thread281

215:                                              ; preds = %211
  br i1 %102, label %.thread284, label %.thread281

.thread284:                                       ; preds = %.thread282, %215
  %216 = load ptr, ptr @stderr, align 8, !tbaa !5
  %217 = load ptr, ptr %1, align 8, !tbaa !5
  %218 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %216, ptr noundef nonnull @.str.5, ptr noundef %217, ptr noundef %93) #4
  br label %224

.thread281:                                       ; preds = %.thread279, %215
  %219 = load ptr, ptr @stderr, align 8, !tbaa !5
  %220 = load ptr, ptr %1, align 8, !tbaa !5
  %221 = load i8, ptr %98, align 1, !tbaa !11
  %222 = sext i8 %221 to i32
  %223 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef nonnull @.str.6, ptr noundef %220, i32 noundef %222, ptr noundef %93) #4
  br label %224

224:                                              ; preds = %.thread282, %.thread279, %.thread284, %.thread281, %211
  store ptr @.str.7, ptr @nextchar, align 8, !tbaa !5
  %225 = load i32, ptr @share__optind, align 4, !tbaa !9
  %226 = add nsw i32 %225, 1
  store i32 %226, ptr @share__optind, align 4, !tbaa !9
  store i32 0, ptr @share__optopt, align 4, !tbaa !9
  br label %.thread285

227:                                              ; preds = %206, %107, %103, %92
  %228 = getelementptr inbounds i8, ptr %93, i64 1
  store ptr %228, ptr @nextchar, align 8, !tbaa !5
  %229 = load i8, ptr %93, align 1, !tbaa !11
  %230 = sext i8 %229 to i32
  %231 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.0188, i32 noundef %230) #3
  %232 = load i8, ptr %228, align 1, !tbaa !11
  %233 = icmp eq i8 %232, 0
  br i1 %233, label %234, label %237

234:                                              ; preds = %227
  %235 = load i32, ptr @share__optind, align 4, !tbaa !9
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr @share__optind, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %234, %227
  %238 = icmp eq ptr %231, null
  %239 = icmp eq i8 %229, 58
  %or.cond10 = or i1 %239, %238
  br i1 %or.cond10, label %240, label %247

240:                                              ; preds = %237
  %241 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not262 = icmp eq i32 %241, 0
  br i1 %.not262, label %246, label %.sink.split377

.sink.split377:                                   ; preds = %240
  %242 = load ptr, ptr @posixly_correct, align 8, !tbaa !5
  %.not263 = icmp eq ptr %242, null
  %243 = load ptr, ptr @stderr, align 8, !tbaa !5
  %244 = load ptr, ptr %1, align 8, !tbaa !5
  %.str.9..str.8 = select i1 %.not263, ptr @.str.9, ptr @.str.8
  %245 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %243, ptr noundef nonnull %.str.9..str.8, ptr noundef %244, i32 noundef %230) #4
  br label %246

246:                                              ; preds = %.sink.split377, %240
  store i32 %230, ptr @share__optopt, align 4, !tbaa !9
  br label %.thread285

247:                                              ; preds = %237
  %248 = load i8, ptr %231, align 1, !tbaa !11
  %249 = icmp eq i8 %248, 87
  %250 = getelementptr inbounds i8, ptr %231, i64 1
  %251 = load i8, ptr %250, align 1, !tbaa !11
  %252 = icmp eq i8 %251, 59
  %or.cond378 = select i1 %249, i1 %252, i1 false
  br i1 %or.cond378, label %253, label %._crit_edge343

253:                                              ; preds = %247
  %254 = load i8, ptr %228, align 1, !tbaa !11
  %.not248 = icmp eq i8 %254, 0
  br i1 %.not248, label %258, label %255

255:                                              ; preds = %253
  store ptr %228, ptr @share__optarg, align 8, !tbaa !5
  %256 = load i32, ptr @share__optind, align 4, !tbaa !9
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr @share__optind, align 4, !tbaa !9
  br label %275

258:                                              ; preds = %253
  %259 = load i32, ptr @share__optind, align 4, !tbaa !9
  %260 = icmp eq i32 %259, %0
  br i1 %260, label %261, label %270

261:                                              ; preds = %258
  %262 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not249 = icmp eq i32 %262, 0
  br i1 %.not249, label %267, label %263

263:                                              ; preds = %261
  %264 = load ptr, ptr @stderr, align 8, !tbaa !5
  %265 = load ptr, ptr %1, align 8, !tbaa !5
  %266 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef nonnull @.str.10, ptr noundef %265, i32 noundef %230) #4
  br label %267

267:                                              ; preds = %263, %261
  store i32 %230, ptr @share__optopt, align 4, !tbaa !9
  %268 = load i8, ptr %.0188, align 1, !tbaa !11
  %269 = icmp eq i8 %268, 58
  %. = select i1 %269, i32 58, i32 63
  br label %.thread285

270:                                              ; preds = %258
  %271 = add nsw i32 %259, 1
  store i32 %271, ptr @share__optind, align 4, !tbaa !9
  %272 = sext i32 %259 to i64
  %273 = getelementptr inbounds ptr, ptr %1, i64 %272
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  store ptr %274, ptr @share__optarg, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %270, %255
  %276 = phi i32 [ %271, %270 ], [ %257, %255 ]
  %277 = phi ptr [ %274, %270 ], [ %228, %255 ]
  store ptr %277, ptr @nextchar, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %280, %275
  %.0168 = phi ptr [ %277, %275 ], [ %281, %280 ]
  %279 = load i8, ptr %.0168, align 1, !tbaa !11
  switch i8 %279, label %280 [
    i8 0, label %.critedge12
    i8 61, label %.critedge12
  ]

280:                                              ; preds = %278
  %281 = getelementptr inbounds i8, ptr %.0168, i64 1
  br label %278, !llvm.loop !21

.critedge12:                                      ; preds = %278, %278
  %282 = load ptr, ptr %3, align 8, !tbaa !15
  %.not252324.not = icmp eq ptr %282, null
  br i1 %.not252324.not, label %.thread365, label %.lr.ph330

.lr.ph330:                                        ; preds = %.critedge12
  %283 = ptrtoint ptr %.0168 to i64
  %284 = ptrtoint ptr %277 to i64
  %285 = sub i64 %283, %284
  br label %286

286:                                              ; preds = %.lr.ph330, %294
  %287 = phi ptr [ %282, %.lr.ph330 ], [ %297, %294 ]
  %.0329 = phi i32 [ 0, %.lr.ph330 ], [ %296, %294 ]
  %.0160328 = phi i32 [ 0, %.lr.ph330 ], [ %.1, %294 ]
  %.0161327 = phi i32 [ 0, %.lr.ph330 ], [ %.1162, %294 ]
  %.0164326 = phi ptr [ null, %.lr.ph330 ], [ %.1165, %294 ]
  %.0167325 = phi ptr [ %3, %.lr.ph330 ], [ %295, %294 ]
  %288 = tail call i32 @strncmp(ptr noundef nonnull %287, ptr noundef %277, i64 noundef %285) #3
  %.not253 = icmp eq i32 %288, 0
  br i1 %.not253, label %289, label %294

289:                                              ; preds = %286
  %290 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %287) #3
  %291 = icmp eq i64 %285, %290
  br i1 %291, label %.thread295, label %292

292:                                              ; preds = %289
  %293 = icmp eq ptr %.0164326, null
  %.0167..0164 = select i1 %293, ptr %.0167325, ptr %.0164326
  %.0161. = select i1 %293, i32 %.0161327, i32 1
  %.0..0160 = select i1 %293, i32 %.0329, i32 %.0160328
  br label %294

294:                                              ; preds = %292, %286
  %.1165 = phi ptr [ %.0164326, %286 ], [ %.0167..0164, %292 ]
  %.1162 = phi i32 [ %.0161327, %286 ], [ %.0161., %292 ]
  %.1 = phi i32 [ %.0160328, %286 ], [ %.0..0160, %292 ]
  %295 = getelementptr inbounds i8, ptr %.0167325, i64 32
  %296 = add nuw nsw i32 %.0329, 1
  %297 = load ptr, ptr %295, align 8, !tbaa !15
  %.not252.not = icmp eq ptr %297, null
  br i1 %.not252.not, label %._crit_edge331, label %286, !llvm.loop !22

._crit_edge331:                                   ; preds = %294
  %298 = icmp eq i32 %.1162, 0
  br i1 %298, label %314, label %299

299:                                              ; preds = %._crit_edge331
  %300 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not254 = icmp eq i32 %300, 0
  br i1 %.not254, label %308, label %301

301:                                              ; preds = %299
  %302 = load ptr, ptr @stderr, align 8, !tbaa !5
  %303 = load ptr, ptr %1, align 8, !tbaa !5
  %304 = sext i32 %276 to i64
  %305 = getelementptr inbounds ptr, ptr %1, i64 %304
  %306 = load ptr, ptr %305, align 8, !tbaa !5
  %307 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %302, ptr noundef nonnull @.str.11, ptr noundef %303, ptr noundef %306) #4
  %.pre345 = load ptr, ptr @nextchar, align 8, !tbaa !5
  %.pre346 = load i32, ptr @share__optind, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %301, %299
  %309 = phi i32 [ %.pre346, %301 ], [ %276, %299 ]
  %310 = phi ptr [ %.pre345, %301 ], [ %277, %299 ]
  %311 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %310) #3
  %312 = getelementptr inbounds i8, ptr %310, i64 %311
  store ptr %312, ptr @nextchar, align 8, !tbaa !5
  %313 = add nsw i32 %309, 1
  store i32 %313, ptr @share__optind, align 4, !tbaa !9
  br label %.thread285

314:                                              ; preds = %._crit_edge331
  %.not255 = icmp eq ptr %.1165, null
  br i1 %.not255, label %.thread365, label %.thread295

.thread295:                                       ; preds = %289, %314
  %.2166293300 = phi ptr [ %.1165, %314 ], [ %.0167325, %289 ]
  %.2294299 = phi i32 [ %.1, %314 ], [ %.0329, %289 ]
  %.not256 = icmp eq i8 %279, 0
  %315 = getelementptr inbounds i8, ptr %.2166293300, i64 8
  %316 = load i32, ptr %315, align 8, !tbaa !18
  br i1 %.not256, label %331, label %317

317:                                              ; preds = %.thread295
  %.not258 = icmp eq i32 %316, 0
  br i1 %.not258, label %320, label %318

318:                                              ; preds = %317
  %319 = getelementptr inbounds i8, ptr %.0168, i64 1
  br label %.sink.split379

320:                                              ; preds = %317
  %321 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not259 = icmp eq i32 %321, 0
  br i1 %.not259, label %327, label %322

322:                                              ; preds = %320
  %323 = load ptr, ptr @stderr, align 8, !tbaa !5
  %324 = load ptr, ptr %1, align 8, !tbaa !5
  %325 = load ptr, ptr %.2166293300, align 8, !tbaa !15
  %326 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %323, ptr noundef nonnull @.str.12, ptr noundef %324, ptr noundef %325) #4
  %.pre347 = load ptr, ptr @nextchar, align 8, !tbaa !5
  br label %327

327:                                              ; preds = %322, %320
  %328 = phi ptr [ %.pre347, %322 ], [ %277, %320 ]
  %329 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %328) #3
  %330 = getelementptr inbounds i8, ptr %328, i64 %329
  store ptr %330, ptr @nextchar, align 8, !tbaa !5
  br label %.thread285

331:                                              ; preds = %.thread295
  %332 = icmp eq i32 %316, 1
  br i1 %332, label %333, label %357

333:                                              ; preds = %331
  %334 = icmp slt i32 %276, %0
  br i1 %334, label %335, label %340

335:                                              ; preds = %333
  %336 = add nsw i32 %276, 1
  store i32 %336, ptr @share__optind, align 4, !tbaa !9
  %337 = sext i32 %276 to i64
  %338 = getelementptr inbounds ptr, ptr %1, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  br label %.sink.split379

340:                                              ; preds = %333
  %341 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not257 = icmp eq i32 %341, 0
  br i1 %.not257, label %350, label %342

342:                                              ; preds = %340
  %343 = load ptr, ptr @stderr, align 8, !tbaa !5
  %344 = load ptr, ptr %1, align 8, !tbaa !5
  %345 = sext i32 %276 to i64
  %346 = getelementptr ptr, ptr %1, i64 %345
  %347 = getelementptr i8, ptr %346, i64 -8
  %348 = load ptr, ptr %347, align 8, !tbaa !5
  %349 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %343, ptr noundef nonnull @.str.4, ptr noundef %344, ptr noundef %348) #4
  %.pre348 = load ptr, ptr @nextchar, align 8, !tbaa !5
  br label %350

350:                                              ; preds = %342, %340
  %351 = phi ptr [ %.pre348, %342 ], [ %277, %340 ]
  %352 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %351) #3
  %353 = getelementptr inbounds i8, ptr %351, i64 %352
  store ptr %353, ptr @nextchar, align 8, !tbaa !5
  %354 = load i8, ptr %.0188, align 1, !tbaa !11
  %355 = icmp eq i8 %354, 58
  %356 = select i1 %355, i32 58, i32 63
  br label %.thread285

.sink.split379:                                   ; preds = %318, %335
  %.sink380 = phi ptr [ %339, %335 ], [ %319, %318 ]
  store ptr %.sink380, ptr @share__optarg, align 8, !tbaa !5
  br label %357

357:                                              ; preds = %.sink.split379, %331
  %358 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %277) #3
  %359 = getelementptr inbounds i8, ptr %277, i64 %358
  store ptr %359, ptr @nextchar, align 8, !tbaa !5
  %.not260 = icmp eq ptr %4, null
  br i1 %.not260, label %361, label %360

360:                                              ; preds = %357
  store i32 %.2294299, ptr %4, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %360, %357
  %362 = getelementptr inbounds i8, ptr %.2166293300, i64 16
  %363 = load ptr, ptr %362, align 8, !tbaa !20
  %.not261 = icmp eq ptr %363, null
  %364 = getelementptr inbounds i8, ptr %.2166293300, i64 24
  %365 = load i32, ptr %364, align 8, !tbaa !19
  br i1 %.not261, label %.thread285, label %366

366:                                              ; preds = %361
  store i32 %365, ptr %363, align 4, !tbaa !9
  br label %.thread285

.thread365:                                       ; preds = %.critedge12, %314
  store ptr null, ptr @nextchar, align 8, !tbaa !5
  br label %.thread285

._crit_edge343:                                   ; preds = %247
  %367 = icmp eq i8 %251, 58
  br i1 %367, label %368, label %.thread285

368:                                              ; preds = %._crit_edge343
  %369 = getelementptr inbounds i8, ptr %231, i64 2
  %370 = load i8, ptr %369, align 1, !tbaa !11
  %371 = icmp eq i8 %370, 58
  %372 = load i8, ptr %228, align 1, !tbaa !11
  %.not247 = icmp eq i8 %372, 0
  br i1 %371, label %373, label %378

373:                                              ; preds = %368
  br i1 %.not247, label %377, label %374

374:                                              ; preds = %373
  %375 = load i32, ptr @share__optind, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr @share__optind, align 4, !tbaa !9
  br label %377

377:                                              ; preds = %373, %374
  %.sink = phi ptr [ %228, %374 ], [ null, %373 ]
  store ptr %.sink, ptr @share__optarg, align 8
  store ptr null, ptr @nextchar, align 8, !tbaa !5
  br label %.thread285

378:                                              ; preds = %368
  br i1 %.not247, label %382, label %379

379:                                              ; preds = %378
  store ptr %228, ptr @share__optarg, align 8, !tbaa !5
  %380 = load i32, ptr @share__optind, align 4, !tbaa !9
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr @share__optind, align 4, !tbaa !9
  br label %399

382:                                              ; preds = %378
  %383 = load i32, ptr @share__optind, align 4, !tbaa !9
  %384 = icmp eq i32 %383, %0
  br i1 %384, label %385, label %394

385:                                              ; preds = %382
  %386 = load i32, ptr @share__opterr, align 4, !tbaa !9
  %.not246 = icmp eq i32 %386, 0
  br i1 %.not246, label %391, label %387

387:                                              ; preds = %385
  %388 = load ptr, ptr @stderr, align 8, !tbaa !5
  %389 = load ptr, ptr %1, align 8, !tbaa !5
  %390 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %388, ptr noundef nonnull @.str.10, ptr noundef %389, i32 noundef %230) #4
  br label %391

391:                                              ; preds = %387, %385
  store i32 %230, ptr @share__optopt, align 4, !tbaa !9
  %392 = load i8, ptr %.0188, align 1, !tbaa !11
  %393 = icmp eq i8 %392, 58
  %.267 = select i1 %393, i32 58, i32 63
  br label %399

394:                                              ; preds = %382
  %395 = add nsw i32 %383, 1
  store i32 %395, ptr @share__optind, align 4, !tbaa !9
  %396 = sext i32 %383 to i64
  %397 = getelementptr inbounds ptr, ptr %1, i64 %396
  %398 = load ptr, ptr %397, align 8, !tbaa !5
  store ptr %398, ptr @share__optarg, align 8, !tbaa !5
  br label %399

399:                                              ; preds = %391, %394, %379
  %.pre349.pre-phi = phi i32 [ %.267, %391 ], [ %230, %394 ], [ %230, %379 ]
  store ptr null, ptr @nextchar, align 8, !tbaa !5
  br label %.thread285

.thread285:                                       ; preds = %361, %199, %._crit_edge343, %399, %377, %136, %224, %186, %165, %204, %246, %.thread365, %366, %350, %327, %308, %267, %83, %.thread, %73, %86
  %.3 = phi i32 [ 1, %86 ], [ -1, %73 ], [ -1, %.thread ], [ -1, %83 ], [ 63, %246 ], [ 0, %366 ], [ 63, %327 ], [ %356, %350 ], [ 87, %.thread365 ], [ 63, %308 ], [ %., %267 ], [ 63, %136 ], [ 63, %224 ], [ %194, %186 ], [ 63, %165 ], [ 0, %204 ], [ %230, %377 ], [ %.pre349.pre-phi, %399 ], [ %230, %._crit_edge343 ], [ %203, %199 ], [ %365, %361 ]
  ret i32 %.3
}

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #1

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { 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 #3 = { nounwind willreturn memory(read) }
attributes #4 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16, !6, i64 0}
!16 = !{!"share__option", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24}
!17 = distinct !{!17, !13}
!18 = !{!16, !10, i64 8}
!19 = !{!16, !10, i64 24}
!20 = !{!16, !6, i64 16}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}


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