; LLVM IR from chdb-io/chdb :: base/poco/Foundation/src (pcre_compile)

; 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.compile_data = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8] }
%struct.named_group = type { ptr, i32, i32 }
%struct.real_pcre8_or_16 = type { i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, ptr, ptr }

@_pcre_default_tables = external constant [0 x i8], align 1
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@pcre_malloc = external global ptr, align 8
@pcre_free = external global ptr, align 8

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

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

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

; Function Attrs: nounwind uwtable
define dso_local ptr @pcre_compile2(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i64, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %struct.compile_data, align 8
  %32 = alloca ptr, align 8
  %33 = alloca [4096 x i8], align 16
  %34 = alloca [20 x %struct.named_group], align 16
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 1, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 -1, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 -1, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 192, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  store ptr %31, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4096, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 320, ptr %34) #5
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %53, ptr %30, align 8, !tbaa !5
  %54 = load ptr, ptr %11, align 8, !tbaa !5
  %55 = icmp eq ptr %54, null
  br i1 %55, label %56, label %62

56:                                               ; preds = %6
  %57 = load ptr, ptr %10, align 8, !tbaa !5
  %58 = icmp ne ptr %57, null
  br i1 %58, label %59, label %61

59:                                               ; preds = %56
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 99, ptr %60, align 4, !tbaa !9
  br label %61

61:                                               ; preds = %59, %56
  store ptr null, ptr %7, align 8
  store i32 1, ptr %35, align 4
  br label %1269

62:                                               ; preds = %6
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr null, ptr %63, align 8, !tbaa !5
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  br i1 %65, label %66, label %68

66:                                               ; preds = %62
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %68

68:                                               ; preds = %66, %62
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = icmp eq ptr %69, null
  br i1 %70, label %71, label %72

71:                                               ; preds = %68
  store i32 16, ptr %23, align 4, !tbaa !9
  br label %1102

72:                                               ; preds = %68
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %73, align 4, !tbaa !9
  %74 = load ptr, ptr %13, align 8, !tbaa !5
  %75 = icmp eq ptr %74, null
  br i1 %75, label %76, label %77

76:                                               ; preds = %72
  store ptr @_pcre_default_tables, ptr %13, align 8, !tbaa !5
  br label %77

77:                                               ; preds = %76, %72
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 0
  %80 = load ptr, ptr %32, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.compile_data, ptr %80, i32 0, i32 0
  store ptr %79, ptr %81, align 8, !tbaa !11
  %82 = load ptr, ptr %13, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 256
  %84 = load ptr, ptr %32, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.compile_data, ptr %84, i32 0, i32 1
  store ptr %83, ptr %85, align 8, !tbaa !13
  %86 = load ptr, ptr %13, align 8, !tbaa !5
  %87 = getelementptr inbounds i8, ptr %86, i64 512
  %88 = load ptr, ptr %32, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.compile_data, ptr %88, i32 0, i32 2
  store ptr %87, ptr %89, align 8, !tbaa !14
  %90 = load ptr, ptr %13, align 8, !tbaa !5
  %91 = getelementptr inbounds i8, ptr %90, i64 832
  %92 = load ptr, ptr %32, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.compile_data, ptr %92, i32 0, i32 3
  store ptr %91, ptr %93, align 8, !tbaa !15
  %94 = load i32, ptr %9, align 4, !tbaa !9
  %95 = and i32 %94, -671054464
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %98

97:                                               ; preds = %77
  store i32 17, ptr %23, align 4, !tbaa !9
  br label %1094

98:                                               ; preds = %77
  %99 = load i32, ptr %9, align 4, !tbaa !9
  %100 = and i32 %99, 65536
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %98
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %103

103:                                              ; preds = %102, %98
  %104 = load ptr, ptr %32, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.compile_data, ptr %104, i32 0, i32 25
  store i32 0, ptr %105, align 4, !tbaa !16
  br label %106

106:                                              ; preds = %430, %428, %103
  %107 = load ptr, ptr %30, align 8, !tbaa !5
  %108 = load i32, ptr %24, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds i8, ptr %107, i64 %109
  %111 = load i8, ptr %110, align 1, !tbaa !17
  %112 = zext i8 %111 to i32
  %113 = icmp eq i32 %112, 40
  br i1 %113, label %114, label %123

114:                                              ; preds = %106
  %115 = load ptr, ptr %30, align 8, !tbaa !5
  %116 = load i32, ptr %24, align 4, !tbaa !9
  %117 = add nsw i32 %116, 1
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds i8, ptr %115, i64 %118
  %120 = load i8, ptr %119, align 1, !tbaa !17
  %121 = zext i8 %120 to i32
  %122 = icmp eq i32 %121, 42
  br label %123

123:                                              ; preds = %114, %106
  %124 = phi i1 [ false, %106 ], [ %122, %114 ]
  br i1 %124, label %125, label %431

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  store i32 0, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  store i32 0, ptr %37, align 4, !tbaa !9
  %126 = load ptr, ptr %30, align 8, !tbaa !5
  %127 = load i32, ptr %24, align 4, !tbaa !9
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds i8, ptr %126, i64 %128
  %130 = getelementptr inbounds i8, ptr %129, i64 2
  %131 = call i32 @strncmp(ptr noundef %130, ptr noundef @.str, i64 noundef 5) #6
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %138

133:                                              ; preds = %125
  %134 = load i32, ptr %24, align 4, !tbaa !9
  %135 = add nsw i32 %134, 7
  store i32 %135, ptr %24, align 4, !tbaa !9
  %136 = load i32, ptr %9, align 4, !tbaa !9
  %137 = or i32 %136, 2048
  store i32 %137, ptr %9, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %428, !llvm.loop !18

138:                                              ; preds = %125
  %139 = load ptr, ptr %30, align 8, !tbaa !5
  %140 = load i32, ptr %24, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds i8, ptr %139, i64 %141
  %143 = getelementptr inbounds i8, ptr %142, i64 2
  %144 = call i32 @strncmp(ptr noundef %143, ptr noundef @.str.1, i64 noundef 4) #6
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %151

146:                                              ; preds = %138
  %147 = load i32, ptr %24, align 4, !tbaa !9
  %148 = add nsw i32 %147, 6
  store i32 %148, ptr %24, align 4, !tbaa !9
  %149 = load i32, ptr %9, align 4, !tbaa !9
  %150 = or i32 %149, 2048
  store i32 %150, ptr %9, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %428, !llvm.loop !18

151:                                              ; preds = %138
  %152 = load ptr, ptr %30, align 8, !tbaa !5
  %153 = load i32, ptr %24, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i8, ptr %152, i64 %154
  %156 = getelementptr inbounds i8, ptr %155, i64 2
  %157 = call i32 @strncmp(ptr noundef %156, ptr noundef @.str.2, i64 noundef 4) #6
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %164

159:                                              ; preds = %151
  %160 = load i32, ptr %24, align 4, !tbaa !9
  %161 = add nsw i32 %160, 6
  store i32 %161, ptr %24, align 4, !tbaa !9
  %162 = load i32, ptr %9, align 4, !tbaa !9
  %163 = or i32 %162, 536870912
  store i32 %163, ptr %9, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %428, !llvm.loop !18

164:                                              ; preds = %151
  %165 = load ptr, ptr %30, align 8, !tbaa !5
  %166 = load i32, ptr %24, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i8, ptr %165, i64 %167
  %169 = getelementptr inbounds i8, ptr %168, i64 2
  %170 = call i32 @strncmp(ptr noundef %169, ptr noundef @.str.3, i64 noundef 16) #6
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %177

172:                                              ; preds = %164
  %173 = load i32, ptr %24, align 4, !tbaa !9
  %174 = add nsw i32 %173, 18
  store i32 %174, ptr %24, align 4, !tbaa !9
  %175 = load i32, ptr %9, align 4, !tbaa !9
  %176 = or i32 %175, 131072
  store i32 %176, ptr %9, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %428, !llvm.loop !18

177:                                              ; preds = %164
  %178 = load ptr, ptr %30, align 8, !tbaa !5
  %179 = load i32, ptr %24, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i8, ptr %178, i64 %180
  %182 = getelementptr inbounds i8, ptr %181, i64 2
  %183 = call i32 @strncmp(ptr noundef %182, ptr noundef @.str.4, i64 noundef 13) #6
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %190

185:                                              ; preds = %177
  %186 = load i32, ptr %24, align 4, !tbaa !9
  %187 = add nsw i32 %186, 15
  store i32 %187, ptr %24, align 4, !tbaa !9
  %188 = load i32, ptr %9, align 4, !tbaa !9
  %189 = or i32 %188, 67108864
  store i32 %189, ptr %9, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %428, !llvm.loop !18

190:                                              ; preds = %177
  %191 = load ptr, ptr %30, align 8, !tbaa !5
  %192 = load i32, ptr %24, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds i8, ptr %191, i64 %193
  %195 = getelementptr inbounds i8, ptr %194, i64 2
  %196 = call i32 @strncmp(ptr noundef %195, ptr noundef @.str.5, i64 noundef 12) #6
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %198, label %255

198:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  store i32 0, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  %199 = load i32, ptr %24, align 4, !tbaa !9
  %200 = add nsw i32 %199, 14
  store i32 %200, ptr %39, align 4, !tbaa !9
  br label %201

201:                                              ; preds = %220, %198
  %202 = call ptr @__ctype_b_loc() #7
  %203 = load ptr, ptr %202, align 8, !tbaa !5
  %204 = load ptr, ptr %30, align 8, !tbaa !5
  %205 = load i32, ptr %39, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds i8, ptr %204, i64 %206
  %208 = load i8, ptr %207, align 1, !tbaa !17
  %209 = zext i8 %208 to i32
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds i16, ptr %203, i64 %210
  %212 = load i16, ptr %211, align 2, !tbaa !20
  %213 = zext i16 %212 to i32
  %214 = and i32 %213, 2048
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %232

216:                                              ; preds = %201
  %217 = load i32, ptr %38, align 4, !tbaa !9
  %218 = icmp ugt i32 %217, 429496728
  br i1 %218, label %219, label %220

219:                                              ; preds = %216
  br label %232

220:                                              ; preds = %216
  %221 = load i32, ptr %38, align 4, !tbaa !9
  %222 = mul i32 %221, 10
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  %224 = load i32, ptr %39, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %39, align 4, !tbaa !9
  %226 = sext i32 %224 to i64
  %227 = getelementptr inbounds i8, ptr %223, i64 %226
  %228 = load i8, ptr %227, align 1, !tbaa !17
  %229 = zext i8 %228 to i32
  %230 = add i32 %222, %229
  %231 = sub i32 %230, 48
  store i32 %231, ptr %38, align 4, !tbaa !9
  br label %201, !llvm.loop !22

232:                                              ; preds = %219, %201
  %233 = load ptr, ptr %30, align 8, !tbaa !5
  %234 = load i32, ptr %39, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %39, align 4, !tbaa !9
  %236 = sext i32 %234 to i64
  %237 = getelementptr inbounds i8, ptr %233, i64 %236
  %238 = load i8, ptr %237, align 1, !tbaa !17
  %239 = zext i8 %238 to i32
  %240 = icmp ne i32 %239, 41
  br i1 %240, label %241, label %242

241:                                              ; preds = %232
  store i32 5, ptr %35, align 4
  br label %254

242:                                              ; preds = %232
  %243 = load i32, ptr %38, align 4, !tbaa !9
  %244 = load i32, ptr %20, align 4, !tbaa !9
  %245 = icmp ult i32 %243, %244
  br i1 %245, label %246, label %252

246:                                              ; preds = %242
  %247 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %247, ptr %20, align 4, !tbaa !9
  %248 = load ptr, ptr %32, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.compile_data, ptr %248, i32 0, i32 25
  %250 = load i32, ptr %249, align 4, !tbaa !16
  %251 = or i32 %250, 8192
  store i32 %251, ptr %249, align 4, !tbaa !16
  br label %252

252:                                              ; preds = %246, %242
  %253 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %253, ptr %24, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %254, !llvm.loop !18

254:                                              ; preds = %252, %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  br label %428

255:                                              ; preds = %190
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = load i32, ptr %24, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds i8, ptr %256, i64 %258
  %260 = getelementptr inbounds i8, ptr %259, i64 2
  %261 = call i32 @strncmp(ptr noundef %260, ptr noundef @.str.6, i64 noundef 16) #6
  %262 = icmp eq i32 %261, 0
  br i1 %262, label %263, label %320

263:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  %264 = load i32, ptr %24, align 4, !tbaa !9
  %265 = add nsw i32 %264, 18
  store i32 %265, ptr %41, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %285, %263
  %267 = call ptr @__ctype_b_loc() #7
  %268 = load ptr, ptr %267, align 8, !tbaa !5
  %269 = load ptr, ptr %30, align 8, !tbaa !5
  %270 = load i32, ptr %41, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i8, ptr %269, i64 %271
  %273 = load i8, ptr %272, align 1, !tbaa !17
  %274 = zext i8 %273 to i32
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i16, ptr %268, i64 %275
  %277 = load i16, ptr %276, align 2, !tbaa !20
  %278 = zext i16 %277 to i32
  %279 = and i32 %278, 2048
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %281, label %297

281:                                              ; preds = %266
  %282 = load i32, ptr %40, align 4, !tbaa !9
  %283 = icmp ugt i32 %282, 429496728
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  br label %297

285:                                              ; preds = %281
  %286 = load i32, ptr %40, align 4, !tbaa !9
  %287 = mul i32 %286, 10
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = load i32, ptr %41, align 4, !tbaa !9
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %41, align 4, !tbaa !9
  %291 = sext i32 %289 to i64
  %292 = getelementptr inbounds i8, ptr %288, i64 %291
  %293 = load i8, ptr %292, align 1, !tbaa !17
  %294 = zext i8 %293 to i32
  %295 = add i32 %287, %294
  %296 = sub i32 %295, 48
  store i32 %296, ptr %40, align 4, !tbaa !9
  br label %266, !llvm.loop !23

297:                                              ; preds = %284, %266
  %298 = load ptr, ptr %30, align 8, !tbaa !5
  %299 = load i32, ptr %41, align 4, !tbaa !9
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %41, align 4, !tbaa !9
  %301 = sext i32 %299 to i64
  %302 = getelementptr inbounds i8, ptr %298, i64 %301
  %303 = load i8, ptr %302, align 1, !tbaa !17
  %304 = zext i8 %303 to i32
  %305 = icmp ne i32 %304, 41
  br i1 %305, label %306, label %307

306:                                              ; preds = %297
  store i32 5, ptr %35, align 4
  br label %319

307:                                              ; preds = %297
  %308 = load i32, ptr %40, align 4, !tbaa !9
  %309 = load i32, ptr %21, align 4, !tbaa !9
  %310 = icmp ult i32 %308, %309
  br i1 %310, label %311, label %317

311:                                              ; preds = %307
  %312 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %312, ptr %21, align 4, !tbaa !9
  %313 = load ptr, ptr %32, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.compile_data, ptr %313, i32 0, i32 25
  %315 = load i32, ptr %314, align 4, !tbaa !16
  %316 = or i32 %315, 16384
  store i32 %316, ptr %314, align 4, !tbaa !16
  br label %317

317:                                              ; preds = %311, %307
  %318 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %318, ptr %24, align 4, !tbaa !9
  store i32 4, ptr %35, align 4
  br label %319, !llvm.loop !18

319:                                              ; preds = %317, %306
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %428

320:                                              ; preds = %255
  br label %321

321:                                              ; preds = %320
  br label %322

322:                                              ; preds = %321
  br label %323

323:                                              ; preds = %322
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  %327 = load ptr, ptr %30, align 8, !tbaa !5
  %328 = load i32, ptr %24, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds i8, ptr %327, i64 %329
  %331 = getelementptr inbounds i8, ptr %330, i64 2
  %332 = call i32 @strncmp(ptr noundef %331, ptr noundef @.str.7, i64 noundef 3) #6
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %334, label %337

334:                                              ; preds = %326
  %335 = load i32, ptr %24, align 4, !tbaa !9
  %336 = add nsw i32 %335, 5
  store i32 %336, ptr %24, align 4, !tbaa !9
  store i32 1048576, ptr %36, align 4, !tbaa !9
  br label %409

337:                                              ; preds = %326
  %338 = load ptr, ptr %30, align 8, !tbaa !5
  %339 = load i32, ptr %24, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds i8, ptr %338, i64 %340
  %342 = getelementptr inbounds i8, ptr %341, i64 2
  %343 = call i32 @strncmp(ptr noundef %342, ptr noundef @.str.8, i64 noundef 3) #6
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %348

345:                                              ; preds = %337
  %346 = load i32, ptr %24, align 4, !tbaa !9
  %347 = add nsw i32 %346, 5
  store i32 %347, ptr %24, align 4, !tbaa !9
  store i32 2097152, ptr %36, align 4, !tbaa !9
  br label %408

348:                                              ; preds = %337
  %349 = load ptr, ptr %30, align 8, !tbaa !5
  %350 = load i32, ptr %24, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i8, ptr %349, i64 %351
  %353 = getelementptr inbounds i8, ptr %352, i64 2
  %354 = call i32 @strncmp(ptr noundef %353, ptr noundef @.str.9, i64 noundef 5) #6
  %355 = icmp eq i32 %354, 0
  br i1 %355, label %356, label %359

356:                                              ; preds = %348
  %357 = load i32, ptr %24, align 4, !tbaa !9
  %358 = add nsw i32 %357, 7
  store i32 %358, ptr %24, align 4, !tbaa !9
  store i32 3145728, ptr %36, align 4, !tbaa !9
  br label %407

359:                                              ; preds = %348
  %360 = load ptr, ptr %30, align 8, !tbaa !5
  %361 = load i32, ptr %24, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i8, ptr %360, i64 %362
  %364 = getelementptr inbounds i8, ptr %363, i64 2
  %365 = call i32 @strncmp(ptr noundef %364, ptr noundef @.str.10, i64 noundef 4) #6
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %370

367:                                              ; preds = %359
  %368 = load i32, ptr %24, align 4, !tbaa !9
  %369 = add nsw i32 %368, 6
  store i32 %369, ptr %24, align 4, !tbaa !9
  store i32 4194304, ptr %36, align 4, !tbaa !9
  br label %406

370:                                              ; preds = %359
  %371 = load ptr, ptr %30, align 8, !tbaa !5
  %372 = load i32, ptr %24, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i8, ptr %371, i64 %373
  %375 = getelementptr inbounds i8, ptr %374, i64 2
  %376 = call i32 @strncmp(ptr noundef %375, ptr noundef @.str.11, i64 noundef 8) #6
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %381

378:                                              ; preds = %370
  %379 = load i32, ptr %24, align 4, !tbaa !9
  %380 = add nsw i32 %379, 10
  store i32 %380, ptr %24, align 4, !tbaa !9
  store i32 5242880, ptr %36, align 4, !tbaa !9
  br label %405

381:                                              ; preds = %370
  %382 = load ptr, ptr %30, align 8, !tbaa !5
  %383 = load i32, ptr %24, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i8, ptr %382, i64 %384
  %386 = getelementptr inbounds i8, ptr %385, i64 2
  %387 = call i32 @strncmp(ptr noundef %386, ptr noundef @.str.12, i64 noundef 12) #6
  %388 = icmp eq i32 %387, 0
  br i1 %388, label %389, label %392

389:                                              ; preds = %381
  %390 = load i32, ptr %24, align 4, !tbaa !9
  %391 = add nsw i32 %390, 14
  store i32 %391, ptr %24, align 4, !tbaa !9
  store i32 8388608, ptr %37, align 4, !tbaa !9
  br label %404

392:                                              ; preds = %381
  %393 = load ptr, ptr %30, align 8, !tbaa !5
  %394 = load i32, ptr %24, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds i8, ptr %393, i64 %395
  %397 = getelementptr inbounds i8, ptr %396, i64 2
  %398 = call i32 @strncmp(ptr noundef %397, ptr noundef @.str.13, i64 noundef 12) #6
  %399 = icmp eq i32 %398, 0
  br i1 %399, label %400, label %403

400:                                              ; preds = %392
  %401 = load i32, ptr %24, align 4, !tbaa !9
  %402 = add nsw i32 %401, 14
  store i32 %402, ptr %24, align 4, !tbaa !9
  store i32 16777216, ptr %37, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %400, %392
  br label %404

404:                                              ; preds = %403, %389
  br label %405

405:                                              ; preds = %404, %378
  br label %406

406:                                              ; preds = %405, %367
  br label %407

407:                                              ; preds = %406, %356
  br label %408

408:                                              ; preds = %407, %345
  br label %409

409:                                              ; preds = %408, %334
  %410 = load i32, ptr %36, align 4, !tbaa !9
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %417

412:                                              ; preds = %409
  %413 = load i32, ptr %9, align 4, !tbaa !9
  %414 = and i32 %413, -7340033
  %415 = load i32, ptr %36, align 4, !tbaa !9
  %416 = or i32 %414, %415
  store i32 %416, ptr %9, align 4, !tbaa !9
  br label %427

417:                                              ; preds = %409
  %418 = load i32, ptr %37, align 4, !tbaa !9
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %425

420:                                              ; preds = %417
  %421 = load i32, ptr %9, align 4, !tbaa !9
  %422 = and i32 %421, -25165825
  %423 = load i32, ptr %37, align 4, !tbaa !9
  %424 = or i32 %422, %423
  store i32 %424, ptr %9, align 4, !tbaa !9
  br label %426

425:                                              ; preds = %417
  store i32 5, ptr %35, align 4
  br label %428

426:                                              ; preds = %420
  br label %427

427:                                              ; preds = %426, %412
  store i32 0, ptr %35, align 4
  br label %428

428:                                              ; preds = %427, %425, %319, %254, %185, %172, %159, %146, %133
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  %429 = load i32, ptr %35, align 4
  switch i32 %429, label %1271 [
    i32 0, label %430
    i32 4, label %106
    i32 5, label %431
  ]

430:                                              ; preds = %428
  br label %106, !llvm.loop !18

431:                                              ; preds = %428, %123
  %432 = load i32, ptr %9, align 4, !tbaa !9
  %433 = and i32 %432, 2048
  %434 = icmp ne i32 %433, 0
  %435 = zext i1 %434 to i32
  store i32 %435, ptr %25, align 4, !tbaa !9
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %442

438:                                              ; preds = %431
  %439 = load i32, ptr %26, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %442

441:                                              ; preds = %438
  store i32 78, ptr %23, align 4, !tbaa !9
  br label %1102

442:                                              ; preds = %438, %431
  %443 = load i32, ptr %25, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %455

445:                                              ; preds = %442
  %446 = load i32, ptr %9, align 4, !tbaa !9
  %447 = and i32 %446, 8192
  %448 = icmp eq i32 %447, 0
  br i1 %448, label %449, label %455

449:                                              ; preds = %445
  %450 = load ptr, ptr %8, align 8, !tbaa !5
  %451 = load ptr, ptr %12, align 8, !tbaa !5
  %452 = call i32 @_pcre_valid_utf(ptr noundef %450, i32 noundef -1, ptr noundef %451)
  store i32 %452, ptr %23, align 4, !tbaa !9
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %455

454:                                              ; preds = %449
  store i32 44, ptr %23, align 4, !tbaa !9
  br label %1102

455:                                              ; preds = %449, %445, %442
  %456 = load i32, ptr %9, align 4, !tbaa !9
  %457 = and i32 %456, 25165824
  %458 = icmp eq i32 %457, 25165824
  br i1 %458, label %459, label %460

459:                                              ; preds = %455
  store i32 56, ptr %23, align 4, !tbaa !9
  br label %1094

460:                                              ; preds = %455
  %461 = load i32, ptr %9, align 4, !tbaa !9
  %462 = and i32 %461, 7340032
  switch i32 %462, label %469 [
    i32 0, label %463
    i32 1048576, label %464
    i32 2097152, label %465
    i32 3145728, label %466
    i32 4194304, label %467
    i32 5242880, label %468
  ]

463:                                              ; preds = %460
  store i32 10, ptr %22, align 4, !tbaa !9
  br label %470

464:                                              ; preds = %460
  store i32 13, ptr %22, align 4, !tbaa !9
  br label %470

465:                                              ; preds = %460
  store i32 10, ptr %22, align 4, !tbaa !9
  br label %470

466:                                              ; preds = %460
  store i32 3338, ptr %22, align 4, !tbaa !9
  br label %470

467:                                              ; preds = %460
  store i32 -1, ptr %22, align 4, !tbaa !9
  br label %470

468:                                              ; preds = %460
  store i32 -2, ptr %22, align 4, !tbaa !9
  br label %470

469:                                              ; preds = %460
  store i32 56, ptr %23, align 4, !tbaa !9
  br label %1094

470:                                              ; preds = %468, %467, %466, %465, %464, %463
  %471 = load i32, ptr %22, align 4, !tbaa !9
  %472 = icmp eq i32 %471, -2
  br i1 %472, label %473, label %476

473:                                              ; preds = %470
  %474 = load ptr, ptr %32, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.compile_data, ptr %474, i32 0, i32 33
  store i32 2, ptr %475, align 4, !tbaa !24
  br label %513

476:                                              ; preds = %470
  %477 = load i32, ptr %22, align 4, !tbaa !9
  %478 = icmp slt i32 %477, 0
  br i1 %478, label %479, label %482

479:                                              ; preds = %476
  %480 = load ptr, ptr %32, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.compile_data, ptr %480, i32 0, i32 33
  store i32 1, ptr %481, align 4, !tbaa !24
  br label %512

482:                                              ; preds = %476
  %483 = load ptr, ptr %32, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.compile_data, ptr %483, i32 0, i32 33
  store i32 0, ptr %484, align 4, !tbaa !24
  %485 = load i32, ptr %22, align 4, !tbaa !9
  %486 = icmp sgt i32 %485, 255
  br i1 %486, label %487, label %503

487:                                              ; preds = %482
  %488 = load ptr, ptr %32, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.compile_data, ptr %488, i32 0, i32 34
  store i32 2, ptr %489, align 8, !tbaa !25
  %490 = load i32, ptr %22, align 4, !tbaa !9
  %491 = ashr i32 %490, 8
  %492 = and i32 %491, 255
  %493 = trunc i32 %492 to i8
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.compile_data, ptr %494, i32 0, i32 35
  %496 = getelementptr inbounds [4 x i8], ptr %495, i64 0, i64 0
  store i8 %493, ptr %496, align 4, !tbaa !17
  %497 = load i32, ptr %22, align 4, !tbaa !9
  %498 = and i32 %497, 255
  %499 = trunc i32 %498 to i8
  %500 = load ptr, ptr %32, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.compile_data, ptr %500, i32 0, i32 35
  %502 = getelementptr inbounds [4 x i8], ptr %501, i64 0, i64 1
  store i8 %499, ptr %502, align 1, !tbaa !17
  br label %511

503:                                              ; preds = %482
  %504 = load ptr, ptr %32, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.compile_data, ptr %504, i32 0, i32 34
  store i32 1, ptr %505, align 8, !tbaa !25
  %506 = load i32, ptr %22, align 4, !tbaa !9
  %507 = trunc i32 %506 to i8
  %508 = load ptr, ptr %32, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.compile_data, ptr %508, i32 0, i32 35
  %510 = getelementptr inbounds [4 x i8], ptr %509, i64 0, i64 0
  store i8 %507, ptr %510, align 4, !tbaa !17
  br label %511

511:                                              ; preds = %503, %487
  br label %512

512:                                              ; preds = %511, %479
  br label %513

513:                                              ; preds = %512, %473
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.compile_data, ptr %514, i32 0, i32 19
  store i32 0, ptr %515, align 4, !tbaa !26
  %516 = load ptr, ptr %32, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.compile_data, ptr %516, i32 0, i32 20
  store i32 0, ptr %517, align 8, !tbaa !27
  %518 = load ptr, ptr %32, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.compile_data, ptr %518, i32 0, i32 17
  store i32 0, ptr %519, align 4, !tbaa !28
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.compile_data, ptr %520, i32 0, i32 16
  store i32 0, ptr %521, align 8, !tbaa !29
  %522 = load ptr, ptr %32, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.compile_data, ptr %522, i32 0, i32 12
  store i32 0, ptr %523, align 8, !tbaa !30
  %524 = load ptr, ptr %32, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.compile_data, ptr %524, i32 0, i32 13
  store i32 0, ptr %525, align 4, !tbaa !31
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.compile_data, ptr %526, i32 0, i32 11
  store ptr null, ptr %527, align 8, !tbaa !32
  %528 = load ptr, ptr %32, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.compile_data, ptr %528, i32 0, i32 30
  store i32 0, ptr %529, align 8, !tbaa !33
  %530 = load ptr, ptr %32, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.compile_data, ptr %530, i32 0, i32 31
  store i32 0, ptr %531, align 4, !tbaa !34
  %532 = load ptr, ptr %32, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.compile_data, ptr %532, i32 0, i32 21
  store i32 0, ptr %533, align 4, !tbaa !35
  %534 = getelementptr inbounds [4096 x i8], ptr %33, i64 0, i64 0
  %535 = load ptr, ptr %32, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.compile_data, ptr %535, i32 0, i32 5
  store ptr %534, ptr %536, align 8, !tbaa !36
  %537 = getelementptr inbounds [4096 x i8], ptr %33, i64 0, i64 0
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.compile_data, ptr %538, i32 0, i32 8
  store ptr %537, ptr %539, align 8, !tbaa !37
  %540 = load ptr, ptr %32, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.compile_data, ptr %540, i32 0, i32 32
  store i32 0, ptr %541, align 8, !tbaa !38
  %542 = getelementptr inbounds [4096 x i8], ptr %33, i64 0, i64 0
  %543 = load ptr, ptr %32, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.compile_data, ptr %543, i32 0, i32 4
  store ptr %542, ptr %544, align 8, !tbaa !39
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.compile_data, ptr %545, i32 0, i32 15
  store i32 4096, ptr %546, align 4, !tbaa !40
  %547 = getelementptr inbounds [20 x %struct.named_group], ptr %34, i64 0, i64 0
  %548 = load ptr, ptr %32, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.compile_data, ptr %548, i32 0, i32 10
  store ptr %547, ptr %549, align 8, !tbaa !41
  %550 = load ptr, ptr %32, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.compile_data, ptr %550, i32 0, i32 14
  store i32 20, ptr %551, align 8, !tbaa !42
  %552 = load ptr, ptr %8, align 8, !tbaa !5
  %553 = load ptr, ptr %32, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.compile_data, ptr %553, i32 0, i32 6
  store ptr %552, ptr %554, align 8, !tbaa !43
  %555 = load ptr, ptr %8, align 8, !tbaa !5
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = call i64 @strlen(ptr noundef %556) #6
  %558 = getelementptr inbounds i8, ptr %555, i64 %557
  %559 = load ptr, ptr %32, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.compile_data, ptr %559, i32 0, i32 7
  store ptr %558, ptr %560, align 8, !tbaa !44
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.compile_data, ptr %561, i32 0, i32 26
  store i32 0, ptr %562, align 8, !tbaa !45
  %563 = load ptr, ptr %32, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.compile_data, ptr %563, i32 0, i32 22
  store i32 0, ptr %564, align 8, !tbaa !46
  %565 = load ptr, ptr %32, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.compile_data, ptr %565, i32 0, i32 23
  store i32 0, ptr %566, align 4, !tbaa !47
  %567 = load ptr, ptr %32, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.compile_data, ptr %567, i32 0, i32 18
  store i32 0, ptr %568, align 8, !tbaa !48
  %569 = load i32, ptr %9, align 4, !tbaa !9
  %570 = load ptr, ptr %32, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.compile_data, ptr %570, i32 0, i32 24
  store i32 %569, ptr %571, align 8, !tbaa !49
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.compile_data, ptr %572, i32 0, i32 9
  store ptr null, ptr %573, align 8, !tbaa !50
  %574 = load i32, ptr %24, align 4, !tbaa !9
  %575 = load ptr, ptr %30, align 8, !tbaa !5
  %576 = sext i32 %574 to i64
  %577 = getelementptr inbounds i8, ptr %575, i64 %576
  store ptr %577, ptr %30, align 8, !tbaa !5
  %578 = getelementptr inbounds [4096 x i8], ptr %33, i64 0, i64 0
  store ptr %578, ptr %28, align 8, !tbaa !5
  %579 = load ptr, ptr %28, align 8, !tbaa !5
  store i8 -125, ptr %579, align 1, !tbaa !17
  %580 = load ptr, ptr %32, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.compile_data, ptr %580, i32 0, i32 24
  %582 = load i32, ptr %581, align 8, !tbaa !49
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = call i32 @compile_regex(i32 noundef %582, ptr noundef %28, ptr noundef %30, ptr noundef %23, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef %18, ptr noundef %16, ptr noundef %19, ptr noundef %17, ptr noundef null, ptr noundef %583, ptr noundef %15)
  %585 = load i32, ptr %23, align 4, !tbaa !9
  %586 = icmp ne i32 %585, 0
  br i1 %586, label %587, label %588

587:                                              ; preds = %513
  br label %1094

588:                                              ; preds = %513
  %589 = load i32, ptr %15, align 4, !tbaa !9
  %590 = icmp sgt i32 %589, 65536
  br i1 %590, label %591, label %592

591:                                              ; preds = %588
  store i32 20, ptr %23, align 4, !tbaa !9
  br label %1094

592:                                              ; preds = %588
  %593 = load i32, ptr %15, align 4, !tbaa !9
  %594 = load ptr, ptr %32, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.compile_data, ptr %594, i32 0, i32 12
  %596 = load i32, ptr %595, align 8, !tbaa !30
  %597 = load ptr, ptr %32, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.compile_data, ptr %597, i32 0, i32 13
  %599 = load i32, ptr %598, align 4, !tbaa !31
  %600 = mul nsw i32 %596, %599
  %601 = add nsw i32 %593, %600
  %602 = sext i32 %601 to i64
  %603 = mul i64 %602, 1
  %604 = add i64 64, %603
  store i64 %604, ptr %27, align 8, !tbaa !51
  %605 = load ptr, ptr @pcre_malloc, align 8, !tbaa !5
  %606 = load i64, ptr %27, align 8, !tbaa !51
  %607 = call ptr %605(i64 noundef %606)
  store ptr %607, ptr %14, align 8, !tbaa !5
  %608 = load ptr, ptr %14, align 8, !tbaa !5
  %609 = icmp eq ptr %608, null
  br i1 %609, label %610, label %611

610:                                              ; preds = %592
  store i32 21, ptr %23, align 4, !tbaa !9
  br label %1094

611:                                              ; preds = %592
  %612 = load ptr, ptr %14, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %612, i32 0, i32 0
  store i32 1346589253, ptr %613, align 8, !tbaa !53
  %614 = load i64, ptr %27, align 8, !tbaa !51
  %615 = trunc i64 %614 to i32
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %616, i32 0, i32 1
  store i32 %615, ptr %617, align 4, !tbaa !55
  %618 = load ptr, ptr %32, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.compile_data, ptr %618, i32 0, i32 24
  %620 = load i32, ptr %619, align 8, !tbaa !49
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %621, i32 0, i32 2
  store i32 %620, ptr %622, align 8, !tbaa !56
  %623 = load ptr, ptr %32, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.compile_data, ptr %623, i32 0, i32 25
  %625 = load i32, ptr %624, align 4, !tbaa !16
  %626 = load ptr, ptr %14, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %626, i32 0, i32 3
  store i32 %625, ptr %627, align 4, !tbaa !57
  %628 = load i32, ptr %20, align 4, !tbaa !9
  %629 = load ptr, ptr %14, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %629, i32 0, i32 4
  store i32 %628, ptr %630, align 8, !tbaa !58
  %631 = load i32, ptr %21, align 4, !tbaa !9
  %632 = load ptr, ptr %14, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %632, i32 0, i32 5
  store i32 %631, ptr %633, align 4, !tbaa !59
  %634 = load ptr, ptr %14, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %634, i32 0, i32 6
  store i16 0, ptr %635, align 8, !tbaa !60
  %636 = load ptr, ptr %14, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %636, i32 0, i32 7
  store i16 0, ptr %637, align 2, !tbaa !61
  %638 = load ptr, ptr %14, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %638, i32 0, i32 11
  store i16 64, ptr %639, align 2, !tbaa !62
  %640 = load ptr, ptr %32, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.compile_data, ptr %640, i32 0, i32 13
  %642 = load i32, ptr %641, align 4, !tbaa !31
  %643 = trunc i32 %642 to i16
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %644, i32 0, i32 12
  store i16 %643, ptr %645, align 4, !tbaa !63
  %646 = load ptr, ptr %32, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.compile_data, ptr %646, i32 0, i32 12
  %648 = load i32, ptr %647, align 8, !tbaa !30
  %649 = trunc i32 %648 to i16
  %650 = load ptr, ptr %14, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %650, i32 0, i32 13
  store i16 %649, ptr %651, align 2, !tbaa !64
  %652 = load ptr, ptr %14, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %652, i32 0, i32 14
  store i16 0, ptr %653, align 8, !tbaa !65
  %654 = load ptr, ptr %13, align 8, !tbaa !5
  %655 = icmp eq ptr %654, @_pcre_default_tables
  br i1 %655, label %656, label %657

656:                                              ; preds = %611
  br label %659

657:                                              ; preds = %611
  %658 = load ptr, ptr %13, align 8, !tbaa !5
  br label %659

659:                                              ; preds = %657, %656
  %660 = phi ptr [ null, %656 ], [ %658, %657 ]
  %661 = load ptr, ptr %14, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %661, i32 0, i32 18
  store ptr %660, ptr %662, align 8, !tbaa !66
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %663, i32 0, i32 19
  store ptr null, ptr %664, align 8, !tbaa !67
  %665 = load ptr, ptr %14, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %665, i32 0, i32 17
  store i16 0, ptr %666, align 2, !tbaa !68
  %667 = load ptr, ptr %14, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %667, i32 0, i32 16
  store i16 0, ptr %668, align 4, !tbaa !69
  %669 = load ptr, ptr %14, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %669, i32 0, i32 15
  store i16 0, ptr %670, align 2, !tbaa !70
  %671 = load ptr, ptr %32, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.compile_data, ptr %671, i32 0, i32 16
  %673 = load i32, ptr %672, align 8, !tbaa !29
  %674 = load ptr, ptr %32, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.compile_data, ptr %674, i32 0, i32 17
  store i32 %673, ptr %675, align 4, !tbaa !28
  %676 = load ptr, ptr %32, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.compile_data, ptr %676, i32 0, i32 22
  store i32 0, ptr %677, align 8, !tbaa !46
  %678 = load ptr, ptr %32, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.compile_data, ptr %678, i32 0, i32 23
  store i32 0, ptr %679, align 4, !tbaa !47
  %680 = load ptr, ptr %32, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.compile_data, ptr %680, i32 0, i32 16
  store i32 0, ptr %681, align 8, !tbaa !29
  %682 = load ptr, ptr %32, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.compile_data, ptr %682, i32 0, i32 18
  store i32 0, ptr %683, align 8, !tbaa !48
  %684 = load ptr, ptr %14, align 8, !tbaa !5
  %685 = load ptr, ptr %14, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %685, i32 0, i32 11
  %687 = load i16, ptr %686, align 2, !tbaa !62
  %688 = zext i16 %687 to i32
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i8, ptr %684, i64 %689
  %691 = load ptr, ptr %32, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.compile_data, ptr %691, i32 0, i32 11
  store ptr %690, ptr %692, align 8, !tbaa !32
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.compile_data, ptr %693, i32 0, i32 11
  %695 = load ptr, ptr %694, align 8, !tbaa !32
  %696 = load ptr, ptr %14, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %696, i32 0, i32 12
  %698 = load i16, ptr %697, align 4, !tbaa !63
  %699 = zext i16 %698 to i32
  %700 = load ptr, ptr %14, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %700, i32 0, i32 13
  %702 = load i16, ptr %701, align 2, !tbaa !64
  %703 = zext i16 %702 to i32
  %704 = mul nsw i32 %699, %703
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds i8, ptr %695, i64 %705
  store ptr %706, ptr %29, align 8, !tbaa !5
  %707 = load ptr, ptr %29, align 8, !tbaa !5
  %708 = load ptr, ptr %32, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.compile_data, ptr %708, i32 0, i32 5
  store ptr %707, ptr %709, align 8, !tbaa !36
  %710 = load ptr, ptr %32, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.compile_data, ptr %710, i32 0, i32 4
  %712 = load ptr, ptr %711, align 8, !tbaa !39
  %713 = load ptr, ptr %32, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.compile_data, ptr %713, i32 0, i32 8
  store ptr %712, ptr %714, align 8, !tbaa !37
  %715 = load ptr, ptr %32, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.compile_data, ptr %715, i32 0, i32 32
  store i32 0, ptr %716, align 8, !tbaa !38
  %717 = load ptr, ptr %32, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.compile_data, ptr %717, i32 0, i32 26
  store i32 0, ptr %718, align 8, !tbaa !45
  %719 = load ptr, ptr %32, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.compile_data, ptr %719, i32 0, i32 27
  store i32 0, ptr %720, align 4, !tbaa !71
  %721 = load ptr, ptr %32, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.compile_data, ptr %721, i32 0, i32 28
  store i32 0, ptr %722, align 8, !tbaa !72
  %723 = load ptr, ptr %32, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.compile_data, ptr %723, i32 0, i32 29
  store i32 0, ptr %724, align 4, !tbaa !73
  %725 = load ptr, ptr %32, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.compile_data, ptr %725, i32 0, i32 9
  store ptr null, ptr %726, align 8, !tbaa !50
  %727 = load ptr, ptr %32, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.compile_data, ptr %727, i32 0, i32 12
  %729 = load i32, ptr %728, align 8, !tbaa !30
  %730 = icmp sgt i32 %729, 0
  br i1 %730, label %731, label %770

731:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  %732 = load ptr, ptr %32, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.compile_data, ptr %732, i32 0, i32 12
  %734 = load i32, ptr %733, align 8, !tbaa !30
  store i32 %734, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %735 = load ptr, ptr %32, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.compile_data, ptr %735, i32 0, i32 10
  %737 = load ptr, ptr %736, align 8, !tbaa !41
  store ptr %737, ptr %43, align 8, !tbaa !5
  %738 = load ptr, ptr %32, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.compile_data, ptr %738, i32 0, i32 12
  store i32 0, ptr %739, align 8, !tbaa !30
  br label %740

740:                                              ; preds = %754, %731
  %741 = load i32, ptr %42, align 4, !tbaa !9
  %742 = icmp sgt i32 %741, 0
  br i1 %742, label %743, label %759

743:                                              ; preds = %740
  %744 = load ptr, ptr %32, align 8, !tbaa !5
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.named_group, ptr %745, i32 0, i32 0
  %747 = load ptr, ptr %746, align 8, !tbaa !74
  %748 = load ptr, ptr %43, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.named_group, ptr %748, i32 0, i32 1
  %750 = load i32, ptr %749, align 8, !tbaa !76
  %751 = load ptr, ptr %43, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.named_group, ptr %751, i32 0, i32 2
  %753 = load i32, ptr %752, align 4, !tbaa !77
  call void @add_name(ptr noundef %744, ptr noundef %747, i32 noundef %750, i32 noundef %753)
  br label %754

754:                                              ; preds = %743
  %755 = load i32, ptr %42, align 4, !tbaa !9
  %756 = add nsw i32 %755, -1
  store i32 %756, ptr %42, align 4, !tbaa !9
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.named_group, ptr %757, i32 1
  store ptr %758, ptr %43, align 8, !tbaa !5
  br label %740, !llvm.loop !78

759:                                              ; preds = %740
  %760 = load ptr, ptr %32, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.compile_data, ptr %760, i32 0, i32 14
  %762 = load i32, ptr %761, align 8, !tbaa !42
  %763 = icmp sgt i32 %762, 20
  br i1 %763, label %764, label %769

764:                                              ; preds = %759
  %765 = load ptr, ptr @pcre_free, align 8, !tbaa !5
  %766 = load ptr, ptr %32, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.compile_data, ptr %766, i32 0, i32 10
  %768 = load ptr, ptr %767, align 8, !tbaa !41
  call void %765(ptr noundef %768)
  br label %769

769:                                              ; preds = %764, %759
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  br label %770

770:                                              ; preds = %769, %659
  %771 = load ptr, ptr %8, align 8, !tbaa !5
  %772 = load i32, ptr %24, align 4, !tbaa !9
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds i8, ptr %771, i64 %773
  store ptr %774, ptr %30, align 8, !tbaa !5
  %775 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %775, ptr %28, align 8, !tbaa !5
  %776 = load ptr, ptr %28, align 8, !tbaa !5
  store i8 -125, ptr %776, align 1, !tbaa !17
  %777 = load ptr, ptr %14, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %777, i32 0, i32 2
  %779 = load i32, ptr %778, align 8, !tbaa !56
  %780 = load ptr, ptr %32, align 8, !tbaa !5
  %781 = call i32 @compile_regex(i32 noundef %779, ptr noundef %28, ptr noundef %30, ptr noundef %23, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef %18, ptr noundef %16, ptr noundef %19, ptr noundef %17, ptr noundef null, ptr noundef %780, ptr noundef null)
  %782 = load ptr, ptr %32, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.compile_data, ptr %782, i32 0, i32 16
  %784 = load i32, ptr %783, align 8, !tbaa !29
  %785 = trunc i32 %784 to i16
  %786 = load ptr, ptr %14, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %786, i32 0, i32 9
  store i16 %785, ptr %787, align 2, !tbaa !79
  %788 = load ptr, ptr %32, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.compile_data, ptr %788, i32 0, i32 19
  %790 = load i32, ptr %789, align 4, !tbaa !26
  %791 = trunc i32 %790 to i16
  %792 = load ptr, ptr %14, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %792, i32 0, i32 10
  store i16 %791, ptr %793, align 8, !tbaa !80
  %794 = load ptr, ptr %32, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.compile_data, ptr %794, i32 0, i32 18
  %796 = load i32, ptr %795, align 8, !tbaa !48
  %797 = trunc i32 %796 to i16
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %798, i32 0, i32 8
  store i16 %797, ptr %799, align 4, !tbaa !81
  %800 = load ptr, ptr %32, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.compile_data, ptr %800, i32 0, i32 25
  %802 = load i32, ptr %801, align 4, !tbaa !16
  %803 = or i32 %802, 1
  %804 = load ptr, ptr %14, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %804, i32 0, i32 3
  store i32 %803, ptr %805, align 4, !tbaa !57
  %806 = load ptr, ptr %32, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.compile_data, ptr %806, i32 0, i32 27
  %808 = load i32, ptr %807, align 4, !tbaa !71
  %809 = icmp ne i32 %808, 0
  br i1 %809, label %810, label %811

810:                                              ; preds = %770
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 -1, ptr %17, align 4, !tbaa !9
  br label %811

811:                                              ; preds = %810, %770
  %812 = load i32, ptr %23, align 4, !tbaa !9
  %813 = icmp eq i32 %812, 0
  br i1 %813, label %814, label %820

814:                                              ; preds = %811
  %815 = load ptr, ptr %30, align 8, !tbaa !5
  %816 = load i8, ptr %815, align 1, !tbaa !17
  %817 = zext i8 %816 to i32
  %818 = icmp ne i32 %817, 0
  br i1 %818, label %819, label %820

819:                                              ; preds = %814
  store i32 22, ptr %23, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %819, %814, %811
  %821 = load ptr, ptr %28, align 8, !tbaa !5
  %822 = getelementptr inbounds i8, ptr %821, i32 1
  store ptr %822, ptr %28, align 8, !tbaa !5
  store i8 0, ptr %821, align 1, !tbaa !17
  %823 = load ptr, ptr %28, align 8, !tbaa !5
  %824 = load ptr, ptr %29, align 8, !tbaa !5
  %825 = ptrtoint ptr %823 to i64
  %826 = ptrtoint ptr %824 to i64
  %827 = sub i64 %825, %826
  %828 = load i32, ptr %15, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = icmp sgt i64 %827, %829
  br i1 %830, label %831, label %832

831:                                              ; preds = %820
  store i32 23, ptr %23, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %831, %820
  %833 = load ptr, ptr %32, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.compile_data, ptr %833, i32 0, i32 8
  %835 = load ptr, ptr %834, align 8, !tbaa !37
  %836 = load ptr, ptr %32, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.compile_data, ptr %836, i32 0, i32 4
  %838 = load ptr, ptr %837, align 8, !tbaa !39
  %839 = icmp ugt ptr %835, %838
  br i1 %839, label %840, label %945

840:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  store i32 -1, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  store ptr null, ptr %45, align 8, !tbaa !5
  br label %841

841:                                              ; preds = %943, %840
  %842 = load i32, ptr %23, align 4, !tbaa !9
  %843 = icmp eq i32 %842, 0
  br i1 %843, label %844, label %852

844:                                              ; preds = %841
  %845 = load ptr, ptr %32, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.compile_data, ptr %845, i32 0, i32 8
  %847 = load ptr, ptr %846, align 8, !tbaa !37
  %848 = load ptr, ptr %32, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.compile_data, ptr %848, i32 0, i32 4
  %850 = load ptr, ptr %849, align 8, !tbaa !39
  %851 = icmp ugt ptr %847, %850
  br label %852

852:                                              ; preds = %844, %841
  %853 = phi i1 [ false, %841 ], [ %851, %844 ]
  br i1 %853, label %854, label %944

854:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  %855 = load ptr, ptr %32, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.compile_data, ptr %855, i32 0, i32 8
  %857 = load ptr, ptr %856, align 8, !tbaa !37
  %858 = getelementptr inbounds i8, ptr %857, i64 -2
  store ptr %858, ptr %856, align 8, !tbaa !37
  %859 = load ptr, ptr %32, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.compile_data, ptr %859, i32 0, i32 8
  %861 = load ptr, ptr %860, align 8, !tbaa !37
  %862 = getelementptr inbounds i8, ptr %861, i64 0
  %863 = load i8, ptr %862, align 1, !tbaa !17
  %864 = zext i8 %863 to i32
  %865 = shl i32 %864, 8
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.compile_data, ptr %866, i32 0, i32 8
  %868 = load ptr, ptr %867, align 8, !tbaa !37
  %869 = getelementptr inbounds i8, ptr %868, i64 1
  %870 = load i8, ptr %869, align 1, !tbaa !17
  %871 = zext i8 %870 to i32
  %872 = or i32 %865, %871
  store i32 %872, ptr %46, align 4, !tbaa !9
  %873 = load i32, ptr %46, align 4, !tbaa !9
  %874 = icmp eq i32 %873, 0
  br i1 %874, label %884, label %875

875:                                              ; preds = %854
  %876 = load ptr, ptr %29, align 8, !tbaa !5
  %877 = load i32, ptr %46, align 4, !tbaa !9
  %878 = sub nsw i32 %877, 1
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds i8, ptr %876, i64 %879
  %881 = load i8, ptr %880, align 1, !tbaa !17
  %882 = zext i8 %881 to i32
  %883 = icmp ne i32 %882, 117
  br i1 %883, label %884, label %885

884:                                              ; preds = %875, %854
  store i32 10, ptr %23, align 4, !tbaa !9
  store i32 15, ptr %35, align 4
  br label %941

885:                                              ; preds = %875
  %886 = load ptr, ptr %29, align 8, !tbaa !5
  %887 = load i32, ptr %46, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds i8, ptr %886, i64 %888
  %890 = load i8, ptr %889, align 1, !tbaa !17
  %891 = zext i8 %890 to i32
  %892 = shl i32 %891, 8
  %893 = load ptr, ptr %29, align 8, !tbaa !5
  %894 = load i32, ptr %46, align 4, !tbaa !9
  %895 = add nsw i32 %894, 1
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds i8, ptr %893, i64 %896
  %898 = load i8, ptr %897, align 1, !tbaa !17
  %899 = zext i8 %898 to i32
  %900 = or i32 %892, %899
  store i32 %900, ptr %47, align 4, !tbaa !9
  %901 = load i32, ptr %47, align 4, !tbaa !9
  %902 = load i32, ptr %44, align 4, !tbaa !9
  %903 = icmp ne i32 %901, %902
  br i1 %903, label %904, label %910

904:                                              ; preds = %885
  %905 = load ptr, ptr %29, align 8, !tbaa !5
  %906 = load i32, ptr %25, align 4, !tbaa !9
  %907 = load i32, ptr %47, align 4, !tbaa !9
  %908 = call ptr @_pcre_find_bracket(ptr noundef %905, i32 noundef %906, i32 noundef %907)
  store ptr %908, ptr %45, align 8, !tbaa !5
  %909 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %909, ptr %44, align 4, !tbaa !9
  br label %910

910:                                              ; preds = %904, %885
  %911 = load ptr, ptr %45, align 8, !tbaa !5
  %912 = icmp eq ptr %911, null
  br i1 %912, label %913, label %914

913:                                              ; preds = %910
  store i32 53, ptr %23, align 4, !tbaa !9
  br label %940

914:                                              ; preds = %910
  %915 = load ptr, ptr %45, align 8, !tbaa !5
  %916 = load ptr, ptr %29, align 8, !tbaa !5
  %917 = ptrtoint ptr %915 to i64
  %918 = ptrtoint ptr %916 to i64
  %919 = sub i64 %917, %918
  %920 = trunc i64 %919 to i32
  %921 = ashr i32 %920, 8
  %922 = trunc i32 %921 to i8
  %923 = load ptr, ptr %29, align 8, !tbaa !5
  %924 = load i32, ptr %46, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i8, ptr %923, i64 %925
  store i8 %922, ptr %926, align 1, !tbaa !17
  %927 = load ptr, ptr %45, align 8, !tbaa !5
  %928 = load ptr, ptr %29, align 8, !tbaa !5
  %929 = ptrtoint ptr %927 to i64
  %930 = ptrtoint ptr %928 to i64
  %931 = sub i64 %929, %930
  %932 = trunc i64 %931 to i32
  %933 = and i32 %932, 255
  %934 = trunc i32 %933 to i8
  %935 = load ptr, ptr %29, align 8, !tbaa !5
  %936 = load i32, ptr %46, align 4, !tbaa !9
  %937 = add nsw i32 %936, 1
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds i8, ptr %935, i64 %938
  store i8 %934, ptr %939, align 1, !tbaa !17
  br label %940

940:                                              ; preds = %914, %913
  store i32 0, ptr %35, align 4
  br label %941

941:                                              ; preds = %940, %884
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  %942 = load i32, ptr %35, align 4
  switch i32 %942, label %1271 [
    i32 0, label %943
    i32 15, label %944
  ]

943:                                              ; preds = %941
  br label %841, !llvm.loop !82

944:                                              ; preds = %941, %852
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  br label %945

945:                                              ; preds = %944, %832
  %946 = load ptr, ptr %32, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.compile_data, ptr %946, i32 0, i32 15
  %948 = load i32, ptr %947, align 4, !tbaa !40
  %949 = icmp sgt i32 %948, 4096
  br i1 %949, label %950, label %955

950:                                              ; preds = %945
  %951 = load ptr, ptr @pcre_free, align 8, !tbaa !5
  %952 = load ptr, ptr %32, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.compile_data, ptr %952, i32 0, i32 4
  %954 = load ptr, ptr %953, align 8, !tbaa !39
  call void %951(ptr noundef %954)
  br label %955

955:                                              ; preds = %950, %945
  %956 = load ptr, ptr %32, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.compile_data, ptr %956, i32 0, i32 4
  store ptr null, ptr %957, align 8, !tbaa !39
  %958 = load i32, ptr %23, align 4, !tbaa !9
  %959 = icmp eq i32 %958, 0
  br i1 %959, label %960, label %971

960:                                              ; preds = %955
  %961 = load ptr, ptr %14, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %961, i32 0, i32 10
  %963 = load i16, ptr %962, align 8, !tbaa !80
  %964 = zext i16 %963 to i32
  %965 = load ptr, ptr %14, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %965, i32 0, i32 9
  %967 = load i16, ptr %966, align 2, !tbaa !79
  %968 = zext i16 %967 to i32
  %969 = icmp sgt i32 %964, %968
  br i1 %969, label %970, label %971

970:                                              ; preds = %960
  store i32 15, ptr %23, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %970, %960, %955
  %972 = load i32, ptr %23, align 4, !tbaa !9
  %973 = icmp eq i32 %972, 0
  br i1 %973, label %974, label %983

974:                                              ; preds = %971
  %975 = load i32, ptr %9, align 4, !tbaa !9
  %976 = and i32 %975, 131072
  %977 = icmp eq i32 %976, 0
  br i1 %977, label %978, label %983

978:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %979 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %979, ptr %48, align 8, !tbaa !5
  %980 = load ptr, ptr %48, align 8, !tbaa !5
  %981 = load i32, ptr %25, align 4, !tbaa !9
  %982 = load ptr, ptr %32, align 8, !tbaa !5
  call void @auto_possessify(ptr noundef %980, i32 noundef %981, ptr noundef %982)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  br label %983

983:                                              ; preds = %978, %974, %971
  %984 = load i32, ptr %23, align 4, !tbaa !9
  %985 = icmp eq i32 %984, 0
  br i1 %985, label %986, label %1088

986:                                              ; preds = %983
  %987 = load ptr, ptr %32, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.compile_data, ptr %987, i32 0, i32 29
  %989 = load i32, ptr %988, align 4, !tbaa !73
  %990 = icmp ne i32 %989, 0
  br i1 %990, label %991, label %1088

991:                                              ; preds = %986
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  %992 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %992, ptr %49, align 8, !tbaa !5
  %993 = load ptr, ptr %29, align 8, !tbaa !5
  %994 = load i32, ptr %25, align 4, !tbaa !9
  %995 = call ptr @_pcre_find_bracket(ptr noundef %993, i32 noundef %994, i32 noundef -1)
  store ptr %995, ptr %49, align 8, !tbaa !5
  br label %996

996:                                              ; preds = %1083, %991
  %997 = load ptr, ptr %49, align 8, !tbaa !5
  %998 = icmp ne ptr %997, null
  br i1 %998, label %999, label %1087

999:                                              ; preds = %996
  %1000 = load ptr, ptr %49, align 8, !tbaa !5
  %1001 = getelementptr inbounds i8, ptr %1000, i64 1
  %1002 = load i8, ptr %1001, align 1, !tbaa !17
  %1003 = zext i8 %1002 to i32
  %1004 = shl i32 %1003, 8
  %1005 = load ptr, ptr %49, align 8, !tbaa !5
  %1006 = getelementptr inbounds i8, ptr %1005, i64 2
  %1007 = load i8, ptr %1006, align 1, !tbaa !17
  %1008 = zext i8 %1007 to i32
  %1009 = or i32 %1004, %1008
  %1010 = icmp eq i32 %1009, 0
  br i1 %1010, label %1011, label %1080

1011:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  %1012 = load ptr, ptr %49, align 8, !tbaa !5
  %1013 = getelementptr inbounds i8, ptr %1012, i64 -1
  %1014 = getelementptr inbounds i8, ptr %1013, i64 -2
  %1015 = load ptr, ptr %49, align 8, !tbaa !5
  %1016 = getelementptr inbounds i8, ptr %1015, i64 -2
  %1017 = load i8, ptr %1016, align 1, !tbaa !17
  %1018 = zext i8 %1017 to i32
  %1019 = shl i32 %1018, 8
  %1020 = load ptr, ptr %49, align 8, !tbaa !5
  %1021 = getelementptr inbounds i8, ptr %1020, i64 -1
  %1022 = load i8, ptr %1021, align 1, !tbaa !17
  %1023 = zext i8 %1022 to i32
  %1024 = or i32 %1019, %1023
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds i8, ptr %1014, i64 %1025
  store ptr %1026, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  %1027 = load ptr, ptr %51, align 8, !tbaa !5
  %1028 = load i8, ptr %1027, align 1, !tbaa !17
  %1029 = zext i8 %1028 to i32
  store i32 %1029, ptr %52, align 4, !tbaa !9
  %1030 = load ptr, ptr %51, align 8, !tbaa !5
  store i8 0, ptr %1030, align 1, !tbaa !17
  %1031 = load ptr, ptr %49, align 8, !tbaa !5
  %1032 = load ptr, ptr %14, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1032, i32 0, i32 2
  %1034 = load i32, ptr %1033, align 8, !tbaa !56
  %1035 = and i32 %1034, 2048
  %1036 = icmp ne i32 %1035, 0
  %1037 = zext i1 %1036 to i32
  %1038 = load ptr, ptr %32, align 8, !tbaa !5
  %1039 = call i32 @find_fixedlength(ptr noundef %1031, i32 noundef %1037, i32 noundef 1, ptr noundef %1038, ptr noundef null)
  store i32 %1039, ptr %50, align 4, !tbaa !9
  %1040 = load i32, ptr %52, align 4, !tbaa !9
  %1041 = trunc i32 %1040 to i8
  %1042 = load ptr, ptr %51, align 8, !tbaa !5
  store i8 %1041, ptr %1042, align 1, !tbaa !17
  %1043 = load i32, ptr %50, align 4, !tbaa !9
  %1044 = icmp slt i32 %1043, 0
  br i1 %1044, label %1045, label %1056

1045:                                             ; preds = %1011
  %1046 = load i32, ptr %50, align 4, !tbaa !9
  %1047 = icmp eq i32 %1046, -2
  br i1 %1047, label %1048, label %1049

1048:                                             ; preds = %1045
  br label %1054

1049:                                             ; preds = %1045
  %1050 = load i32, ptr %50, align 4, !tbaa !9
  %1051 = icmp eq i32 %1050, -4
  %1052 = zext i1 %1051 to i64
  %1053 = select i1 %1051, i32 70, i32 25
  br label %1054

1054:                                             ; preds = %1049, %1048
  %1055 = phi i32 [ 36, %1048 ], [ %1053, %1049 ]
  store i32 %1055, ptr %23, align 4, !tbaa !9
  store i32 16, ptr %35, align 4
  br label %1077

1056:                                             ; preds = %1011
  %1057 = load i32, ptr %50, align 4, !tbaa !9
  %1058 = load ptr, ptr %32, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.compile_data, ptr %1058, i32 0, i32 18
  %1060 = load i32, ptr %1059, align 8, !tbaa !48
  %1061 = icmp sgt i32 %1057, %1060
  br i1 %1061, label %1062, label %1066

1062:                                             ; preds = %1056
  %1063 = load i32, ptr %50, align 4, !tbaa !9
  %1064 = load ptr, ptr %32, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.compile_data, ptr %1064, i32 0, i32 18
  store i32 %1063, ptr %1065, align 8, !tbaa !48
  br label %1066

1066:                                             ; preds = %1062, %1056
  %1067 = load i32, ptr %50, align 4, !tbaa !9
  %1068 = ashr i32 %1067, 8
  %1069 = trunc i32 %1068 to i8
  %1070 = load ptr, ptr %49, align 8, !tbaa !5
  %1071 = getelementptr inbounds i8, ptr %1070, i64 1
  store i8 %1069, ptr %1071, align 1, !tbaa !17
  %1072 = load i32, ptr %50, align 4, !tbaa !9
  %1073 = and i32 %1072, 255
  %1074 = trunc i32 %1073 to i8
  %1075 = load ptr, ptr %49, align 8, !tbaa !5
  %1076 = getelementptr inbounds i8, ptr %1075, i64 2
  store i8 %1074, ptr %1076, align 1, !tbaa !17
  store i32 0, ptr %35, align 4
  br label %1077

1077:                                             ; preds = %1066, %1054
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  %1078 = load i32, ptr %35, align 4
  switch i32 %1078, label %1271 [
    i32 0, label %1079
    i32 16, label %1087
  ]

1079:                                             ; preds = %1077
  br label %1080

1080:                                             ; preds = %1079, %999
  %1081 = load ptr, ptr %49, align 8, !tbaa !5
  %1082 = getelementptr inbounds i8, ptr %1081, i64 3
  store ptr %1082, ptr %49, align 8, !tbaa !5
  br label %1083

1083:                                             ; preds = %1080
  %1084 = load ptr, ptr %49, align 8, !tbaa !5
  %1085 = load i32, ptr %25, align 4, !tbaa !9
  %1086 = call ptr @_pcre_find_bracket(ptr noundef %1084, i32 noundef %1085, i32 noundef -1)
  store ptr %1086, ptr %49, align 8, !tbaa !5
  br label %996, !llvm.loop !83

1087:                                             ; preds = %1077, %996
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  br label %1088

1088:                                             ; preds = %1087, %986, %983
  %1089 = load i32, ptr %23, align 4, !tbaa !9
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1091, label %1112

1091:                                             ; preds = %1088
  %1092 = load ptr, ptr @pcre_free, align 8, !tbaa !5
  %1093 = load ptr, ptr %14, align 8, !tbaa !5
  call void %1092(ptr noundef %1093)
  br label %1094

1094:                                             ; preds = %1091, %610, %591, %587, %469, %459, %97
  %1095 = load ptr, ptr %30, align 8, !tbaa !5
  %1096 = load ptr, ptr %8, align 8, !tbaa !5
  %1097 = ptrtoint ptr %1095 to i64
  %1098 = ptrtoint ptr %1096 to i64
  %1099 = sub i64 %1097, %1098
  %1100 = trunc i64 %1099 to i32
  %1101 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %1100, ptr %1101, align 4, !tbaa !9
  br label %1102

1102:                                             ; preds = %1094, %454, %441, %71
  %1103 = load i32, ptr %23, align 4, !tbaa !9
  %1104 = call ptr @find_error_text(i32 noundef %1103)
  %1105 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1104, ptr %1105, align 8, !tbaa !5
  %1106 = load ptr, ptr %10, align 8, !tbaa !5
  %1107 = icmp ne ptr %1106, null
  br i1 %1107, label %1108, label %1111

1108:                                             ; preds = %1102
  %1109 = load i32, ptr %23, align 4, !tbaa !9
  %1110 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %1109, ptr %1110, align 4, !tbaa !9
  br label %1111

1111:                                             ; preds = %1108, %1102
  store ptr null, ptr %7, align 8
  store i32 1, ptr %35, align 4
  br label %1269

1112:                                             ; preds = %1088
  %1113 = load ptr, ptr %14, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1113, i32 0, i32 2
  %1115 = load i32, ptr %1114, align 8, !tbaa !56
  %1116 = and i32 %1115, 16
  %1117 = icmp eq i32 %1116, 0
  br i1 %1117, label %1118, label %1186

1118:                                             ; preds = %1112
  %1119 = load ptr, ptr %29, align 8, !tbaa !5
  %1120 = load ptr, ptr %32, align 8, !tbaa !5
  %1121 = call i32 @is_anchored(ptr noundef %1119, i32 noundef 0, ptr noundef %1120, i32 noundef 0)
  %1122 = icmp ne i32 %1121, 0
  br i1 %1122, label %1123, label %1128

1123:                                             ; preds = %1118
  %1124 = load ptr, ptr %14, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1124, i32 0, i32 2
  %1126 = load i32, ptr %1125, align 8, !tbaa !56
  %1127 = or i32 %1126, 16
  store i32 %1127, ptr %1125, align 8, !tbaa !56
  br label %1185

1128:                                             ; preds = %1118
  %1129 = load i32, ptr %16, align 4, !tbaa !9
  %1130 = icmp slt i32 %1129, 0
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1128
  %1132 = load ptr, ptr %29, align 8, !tbaa !5
  %1133 = call i32 @find_firstassertedchar(ptr noundef %1132, ptr noundef %16, i32 noundef 0)
  store i32 %1133, ptr %18, align 4, !tbaa !9
  br label %1134

1134:                                             ; preds = %1131, %1128
  %1135 = load i32, ptr %16, align 4, !tbaa !9
  %1136 = icmp sge i32 %1135, 0
  br i1 %1136, label %1137, label %1173

1137:                                             ; preds = %1134
  %1138 = load i32, ptr %18, align 4, !tbaa !9
  %1139 = and i32 %1138, 255
  %1140 = trunc i32 %1139 to i16
  %1141 = load ptr, ptr %14, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1141, i32 0, i32 6
  store i16 %1140, ptr %1142, align 8, !tbaa !60
  %1143 = load i32, ptr %16, align 4, !tbaa !9
  %1144 = and i32 %1143, 1
  %1145 = icmp ne i32 %1144, 0
  br i1 %1145, label %1146, label %1168

1146:                                             ; preds = %1137
  %1147 = load ptr, ptr %32, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.compile_data, ptr %1147, i32 0, i32 1
  %1149 = load ptr, ptr %1148, align 8, !tbaa !13
  %1150 = load ptr, ptr %14, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1150, i32 0, i32 6
  %1152 = load i16, ptr %1151, align 8, !tbaa !60
  %1153 = zext i16 %1152 to i64
  %1154 = getelementptr inbounds i8, ptr %1149, i64 %1153
  %1155 = load i8, ptr %1154, align 1, !tbaa !17
  %1156 = zext i8 %1155 to i32
  %1157 = load ptr, ptr %14, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1157, i32 0, i32 6
  %1159 = load i16, ptr %1158, align 8, !tbaa !60
  %1160 = zext i16 %1159 to i32
  %1161 = icmp ne i32 %1156, %1160
  br i1 %1161, label %1162, label %1167

1162:                                             ; preds = %1146
  %1163 = load ptr, ptr %14, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1163, i32 0, i32 3
  %1165 = load i32, ptr %1164, align 4, !tbaa !57
  %1166 = or i32 %1165, 32
  store i32 %1166, ptr %1164, align 4, !tbaa !57
  br label %1167

1167:                                             ; preds = %1162, %1146
  br label %1168

1168:                                             ; preds = %1167, %1137
  %1169 = load ptr, ptr %14, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1169, i32 0, i32 3
  %1171 = load i32, ptr %1170, align 4, !tbaa !57
  %1172 = or i32 %1171, 16
  store i32 %1172, ptr %1170, align 4, !tbaa !57
  br label %1184

1173:                                             ; preds = %1134
  %1174 = load ptr, ptr %29, align 8, !tbaa !5
  %1175 = load ptr, ptr %32, align 8, !tbaa !5
  %1176 = call i32 @is_startline(ptr noundef %1174, i32 noundef 0, ptr noundef %1175, i32 noundef 0, i32 noundef 0)
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1183

1178:                                             ; preds = %1173
  %1179 = load ptr, ptr %14, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1179, i32 0, i32 3
  %1181 = load i32, ptr %1180, align 4, !tbaa !57
  %1182 = or i32 %1181, 256
  store i32 %1182, ptr %1180, align 4, !tbaa !57
  br label %1183

1183:                                             ; preds = %1178, %1173
  br label %1184

1184:                                             ; preds = %1183, %1168
  br label %1185

1185:                                             ; preds = %1184, %1123
  br label %1186

1186:                                             ; preds = %1185, %1112
  %1187 = load i32, ptr %17, align 4, !tbaa !9
  %1188 = icmp sge i32 %1187, 0
  br i1 %1188, label %1189, label %1235

1189:                                             ; preds = %1186
  %1190 = load ptr, ptr %14, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1190, i32 0, i32 2
  %1192 = load i32, ptr %1191, align 8, !tbaa !56
  %1193 = and i32 %1192, 16
  %1194 = icmp eq i32 %1193, 0
  br i1 %1194, label %1199, label %1195

1195:                                             ; preds = %1189
  %1196 = load i32, ptr %17, align 4, !tbaa !9
  %1197 = and i32 %1196, 2
  %1198 = icmp ne i32 %1197, 0
  br i1 %1198, label %1199, label %1235

1199:                                             ; preds = %1195, %1189
  %1200 = load i32, ptr %19, align 4, !tbaa !9
  %1201 = and i32 %1200, 255
  %1202 = trunc i32 %1201 to i16
  %1203 = load ptr, ptr %14, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1203, i32 0, i32 7
  store i16 %1202, ptr %1204, align 2, !tbaa !61
  %1205 = load i32, ptr %17, align 4, !tbaa !9
  %1206 = and i32 %1205, 1
  %1207 = icmp ne i32 %1206, 0
  br i1 %1207, label %1208, label %1230

1208:                                             ; preds = %1199
  %1209 = load ptr, ptr %32, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.compile_data, ptr %1209, i32 0, i32 1
  %1211 = load ptr, ptr %1210, align 8, !tbaa !13
  %1212 = load ptr, ptr %14, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1212, i32 0, i32 7
  %1214 = load i16, ptr %1213, align 2, !tbaa !61
  %1215 = zext i16 %1214 to i64
  %1216 = getelementptr inbounds i8, ptr %1211, i64 %1215
  %1217 = load i8, ptr %1216, align 1, !tbaa !17
  %1218 = zext i8 %1217 to i32
  %1219 = load ptr, ptr %14, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1219, i32 0, i32 7
  %1221 = load i16, ptr %1220, align 2, !tbaa !61
  %1222 = zext i16 %1221 to i32
  %1223 = icmp ne i32 %1218, %1222
  br i1 %1223, label %1224, label %1229

1224:                                             ; preds = %1208
  %1225 = load ptr, ptr %14, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1225, i32 0, i32 3
  %1227 = load i32, ptr %1226, align 4, !tbaa !57
  %1228 = or i32 %1227, 128
  store i32 %1228, ptr %1226, align 4, !tbaa !57
  br label %1229

1229:                                             ; preds = %1224, %1208
  br label %1230

1230:                                             ; preds = %1229, %1199
  %1231 = load ptr, ptr %14, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1231, i32 0, i32 3
  %1233 = load i32, ptr %1232, align 4, !tbaa !57
  %1234 = or i32 %1233, 64
  store i32 %1234, ptr %1232, align 4, !tbaa !57
  br label %1235

1235:                                             ; preds = %1230, %1195, %1186
  br label %1236

1236:                                             ; preds = %1262, %1235
  %1237 = load ptr, ptr %29, align 8, !tbaa !5
  %1238 = load ptr, ptr %28, align 8, !tbaa !5
  %1239 = load i32, ptr %25, align 4, !tbaa !9
  %1240 = load ptr, ptr %32, align 8, !tbaa !5
  %1241 = call i32 @could_be_empty_branch(ptr noundef %1237, ptr noundef %1238, i32 noundef %1239, ptr noundef %1240, ptr noundef null)
  %1242 = icmp ne i32 %1241, 0
  br i1 %1242, label %1243, label %1248

1243:                                             ; preds = %1236
  %1244 = load ptr, ptr %14, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1244, i32 0, i32 3
  %1246 = load i32, ptr %1245, align 4, !tbaa !57
  %1247 = or i32 %1246, 32768
  store i32 %1247, ptr %1245, align 4, !tbaa !57
  br label %1267

1248:                                             ; preds = %1236
  %1249 = load ptr, ptr %29, align 8, !tbaa !5
  %1250 = getelementptr inbounds i8, ptr %1249, i64 1
  %1251 = load i8, ptr %1250, align 1, !tbaa !17
  %1252 = zext i8 %1251 to i32
  %1253 = shl i32 %1252, 8
  %1254 = load ptr, ptr %29, align 8, !tbaa !5
  %1255 = getelementptr inbounds i8, ptr %1254, i64 2
  %1256 = load i8, ptr %1255, align 1, !tbaa !17
  %1257 = zext i8 %1256 to i32
  %1258 = or i32 %1253, %1257
  %1259 = load ptr, ptr %29, align 8, !tbaa !5
  %1260 = sext i32 %1258 to i64
  %1261 = getelementptr inbounds i8, ptr %1259, i64 %1260
  store ptr %1261, ptr %29, align 8, !tbaa !5
  br label %1262

1262:                                             ; preds = %1248
  %1263 = load ptr, ptr %29, align 8, !tbaa !5
  %1264 = load i8, ptr %1263, align 1, !tbaa !17
  %1265 = zext i8 %1264 to i32
  %1266 = icmp eq i32 %1265, 119
  br i1 %1266, label %1236, label %1267, !llvm.loop !84

1267:                                             ; preds = %1262, %1243
  %1268 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1268, ptr %7, align 8
  store i32 1, ptr %35, align 4
  br label %1269

1269:                                             ; preds = %1267, %1111, %61
  call void @llvm.lifetime.end.p0(i64 320, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4096, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 192, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  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 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  %1270 = load ptr, ptr %7, align 8
  ret ptr %1270

1271:                                             ; preds = %1077, %941, %428
  unreachable
}

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

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

declare i32 @_pcre_valid_utf(ptr noundef, i32 noundef, ptr noundef) #4

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"compile_data", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !7, i64 188}
!13 = !{!12, !6, i64 8}
!14 = !{!12, !6, i64 16}
!15 = !{!12, !6, i64 24}
!16 = !{!12, !10, i64 148}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!21, !21, i64 0}
!21 = !{!"short", !7, i64 0}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = !{!12, !10, i64 180}
!25 = !{!12, !10, i64 184}
!26 = !{!12, !10, i64 124}
!27 = !{!12, !10, i64 128}
!28 = !{!12, !10, i64 116}
!29 = !{!12, !10, i64 112}
!30 = !{!12, !10, i64 96}
!31 = !{!12, !10, i64 100}
!32 = !{!12, !6, i64 88}
!33 = !{!12, !10, i64 168}
!34 = !{!12, !10, i64 172}
!35 = !{!12, !10, i64 132}
!36 = !{!12, !6, i64 40}
!37 = !{!12, !6, i64 64}
!38 = !{!12, !10, i64 176}
!39 = !{!12, !6, i64 32}
!40 = !{!12, !10, i64 108}
!41 = !{!12, !6, i64 80}
!42 = !{!12, !10, i64 104}
!43 = !{!12, !6, i64 48}
!44 = !{!12, !6, i64 56}
!45 = !{!12, !10, i64 152}
!46 = !{!12, !10, i64 136}
!47 = !{!12, !10, i64 140}
!48 = !{!12, !10, i64 120}
!49 = !{!12, !10, i64 144}
!50 = !{!12, !6, i64 72}
!51 = !{!52, !52, i64 0}
!52 = !{!"long", !7, i64 0}
!53 = !{!54, !10, i64 0}
!54 = !{!"real_pcre8_or_16", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !21, i64 24, !21, i64 26, !21, i64 28, !21, i64 30, !21, i64 32, !21, i64 34, !21, i64 36, !21, i64 38, !21, i64 40, !21, i64 42, !21, i64 44, !21, i64 46, !6, i64 48, !6, i64 56}
!55 = !{!54, !10, i64 4}
!56 = !{!54, !10, i64 8}
!57 = !{!54, !10, i64 12}
!58 = !{!54, !10, i64 16}
!59 = !{!54, !10, i64 20}
!60 = !{!54, !21, i64 24}
!61 = !{!54, !21, i64 26}
!62 = !{!54, !21, i64 34}
!63 = !{!54, !21, i64 36}
!64 = !{!54, !21, i64 38}
!65 = !{!54, !21, i64 40}
!66 = !{!54, !6, i64 48}
!67 = !{!54, !6, i64 56}
!68 = !{!54, !21, i64 46}
!69 = !{!54, !21, i64 44}
!70 = !{!54, !21, i64 42}
!71 = !{!12, !10, i64 156}
!72 = !{!12, !10, i64 160}
!73 = !{!12, !10, i64 164}
!74 = !{!75, !6, i64 0}
!75 = !{!"named_group", !6, i64 0, !10, i64 8, !10, i64 12}
!76 = !{!75, !10, i64 8}
!77 = !{!75, !10, i64 12}
!78 = distinct !{!78, !19}
!79 = !{!54, !21, i64 30}
!80 = !{!54, !21, i64 32}
!81 = !{!54, !21, i64 28}
!82 = distinct !{!82, !19}
!83 = distinct !{!83, !19}
!84 = distinct !{!84, !19}


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

%struct.compile_data = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8] }
%struct.named_group = type { ptr, i32, i32 }

@_pcre_default_tables = external constant [0 x i8], align 1
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@pcre_malloc = external local_unnamed_addr global ptr, align 8
@pcre_free = external local_unnamed_addr global ptr, align 8

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

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

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

; Function Attrs: nounwind uwtable
define dso_local ptr @pcre_compile2(ptr noundef %0, i32 noundef %1, ptr noundef writeonly %2, ptr noundef writeonly %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.compile_data, align 8
  %16 = alloca [4096 x i8], align 16
  %17 = alloca [20 x %struct.named_group], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 320, ptr nonnull %17) #6
  store ptr %0, ptr %14, align 8, !tbaa !9
  %18 = icmp eq ptr %3, null
  br i1 %18, label %19, label %21

19:                                               ; preds = %6
  %.not409 = icmp eq ptr %2, null
  br i1 %.not409, label %.loopexit, label %20

20:                                               ; preds = %19
  store i32 99, ptr %2, align 4, !tbaa !5
  br label %.loopexit

21:                                               ; preds = %6
  store ptr null, ptr %3, align 8, !tbaa !9
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %23, label %22

22:                                               ; preds = %21
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %23

23:                                               ; preds = %22, %21
  %24 = icmp eq ptr %4, null
  br i1 %24, label %25, label %26

25:                                               ; preds = %23
  store i32 16, ptr %12, align 4, !tbaa !5
  br label %450

26:                                               ; preds = %23
  store i32 0, ptr %4, align 4, !tbaa !5
  %27 = icmp eq ptr %5, null
  %spec.store.select = select i1 %27, ptr @_pcre_default_tables, ptr %5
  store ptr %spec.store.select, ptr %15, align 8, !tbaa !11
  %28 = getelementptr inbounds i8, ptr %spec.store.select, i64 256
  %29 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %28, ptr %29, align 8, !tbaa !13
  %30 = getelementptr inbounds i8, ptr %spec.store.select, i64 512
  %31 = getelementptr inbounds i8, ptr %15, i64 16
  store ptr %30, ptr %31, align 8, !tbaa !14
  %32 = getelementptr inbounds i8, ptr %spec.store.select, i64 832
  %33 = getelementptr inbounds i8, ptr %15, i64 24
  store ptr %32, ptr %33, align 8, !tbaa !15
  %34 = and i32 %1, -671054464
  %.not385 = icmp eq i32 %34, 0
  br i1 %.not385, label %36, label %35

35:                                               ; preds = %26
  store i32 17, ptr %12, align 4, !tbaa !5
  br label %444

36:                                               ; preds = %26
  %37 = and i32 %1, 65536
  %.not386 = icmp ne i32 %37, 0
  %38 = getelementptr inbounds i8, ptr %15, i64 148
  store i32 0, ptr %38, align 4, !tbaa !16
  %39 = load i8, ptr %0, align 1, !tbaa !17
  %40 = icmp eq i8 %39, 40
  br i1 %40, label %.lr.ph494, label %.critedge

.lr.ph494:                                        ; preds = %36, %173
  %41 = phi ptr [ %176, %173 ], [ %0, %36 ]
  %.0333492 = phi i32 [ %.2, %173 ], [ %1, %36 ]
  %.0335491 = phi i32 [ %.3338, %173 ], [ -1, %36 ]
  %.0339490 = phi i32 [ %.3342, %173 ], [ -1, %36 ]
  %.0364489 = phi i32 [ %.4368, %173 ], [ 0, %36 ]
  %42 = phi i32 [ %174, %173 ], [ 0, %36 ]
  %43 = getelementptr i8, ptr %41, i64 1
  %44 = load i8, ptr %43, align 1, !tbaa !17
  %45 = icmp eq i8 %44, 42
  br i1 %45, label %46, label %.critedge

46:                                               ; preds = %.lr.ph494
  %47 = getelementptr inbounds i8, ptr %41, i64 2
  %48 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str, i64 noundef 5) #7
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %50, label %53

50:                                               ; preds = %46
  %51 = add nsw i32 %.0364489, 7
  %52 = or i32 %.0333492, 2048
  br label %173, !llvm.loop !18

53:                                               ; preds = %46
  %54 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.1, i64 noundef 4) #7
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %59

56:                                               ; preds = %53
  %57 = add nsw i32 %.0364489, 6
  %58 = or i32 %.0333492, 2048
  br label %173, !llvm.loop !18

59:                                               ; preds = %53
  %60 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.2, i64 noundef 4) #7
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %62, label %65

62:                                               ; preds = %59
  %63 = add nsw i32 %.0364489, 6
  %64 = or i32 %.0333492, 536870912
  br label %173, !llvm.loop !18

65:                                               ; preds = %59
  %66 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.3, i64 noundef 16) #7
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %71

68:                                               ; preds = %65
  %69 = add nsw i32 %.0364489, 18
  %70 = or i32 %.0333492, 131072
  br label %173, !llvm.loop !18

71:                                               ; preds = %65
  %72 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.4, i64 noundef 13) #7
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %77

74:                                               ; preds = %71
  %75 = add nsw i32 %.0364489, 15
  %76 = or i32 %.0333492, 67108864
  br label %173, !llvm.loop !18

77:                                               ; preds = %71
  %78 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.5, i64 noundef 12) #7
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %111

80:                                               ; preds = %77
  %81 = add nsw i32 %.0364489, 14
  %82 = tail call ptr @__ctype_b_loc() #8
  %83 = load ptr, ptr %82, align 8, !tbaa !9
  %84 = sext i32 %81 to i64
  %85 = getelementptr inbounds i8, ptr %0, i64 %84
  %86 = load i8, ptr %85, align 1, !tbaa !17
  %87 = zext i8 %86 to i64
  %88 = getelementptr inbounds i16, ptr %83, i64 %87
  %89 = load i16, ptr %88, align 2, !tbaa !20
  %90 = and i16 %89, 2048
  %91 = icmp eq i16 %90, 0
  br i1 %91, label %._crit_edge485, label %.lr.ph484

.lr.ph484:                                        ; preds = %80, %.lr.ph484
  %indvars.iv537 = phi i64 [ %indvars.iv.next538, %.lr.ph484 ], [ %84, %80 ]
  %92 = phi i8 [ %98, %.lr.ph484 ], [ %86, %80 ]
  %.0356481 = phi i32 [ %96, %.lr.ph484 ], [ 0, %80 ]
  %93 = zext i8 %92 to i32
  %94 = mul nuw i32 %.0356481, 10
  %indvars.iv.next538 = add nsw i64 %indvars.iv537, 1
  %95 = add i32 %94, -48
  %96 = add i32 %95, %93
  %97 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next538
  %98 = load i8, ptr %97, align 1, !tbaa !17
  %99 = zext i8 %98 to i64
  %100 = getelementptr inbounds i16, ptr %83, i64 %99
  %101 = load i16, ptr %100, align 2, !tbaa !20
  %102 = and i16 %101, 2048
  %103 = icmp eq i16 %102, 0
  %104 = icmp ugt i32 %96, 429496728
  %or.cond5 = select i1 %103, i1 true, i1 %104
  br i1 %or.cond5, label %._crit_edge485.loopexit, label %.lr.ph484, !llvm.loop !22

._crit_edge485.loopexit:                          ; preds = %.lr.ph484
  %105 = trunc nsw i64 %indvars.iv.next538 to i32
  br label %._crit_edge485

._crit_edge485:                                   ; preds = %._crit_edge485.loopexit, %80
  %.0356.lcssa = phi i32 [ 0, %80 ], [ %96, %._crit_edge485.loopexit ]
  %.0355.lcssa = phi i32 [ %81, %80 ], [ %105, %._crit_edge485.loopexit ]
  %.lcssa476 = phi i8 [ %86, %80 ], [ %98, %._crit_edge485.loopexit ]
  %106 = add nsw i32 %.0355.lcssa, 1
  %.not390 = icmp eq i8 %.lcssa476, 41
  br i1 %.not390, label %107, label %.critedge

107:                                              ; preds = %._crit_edge485
  %108 = icmp ult i32 %.0356.lcssa, %.0335491
  br i1 %108, label %109, label %173, !llvm.loop !18

109:                                              ; preds = %107
  %110 = or i32 %42, 8192
  store i32 %110, ptr %38, align 4, !tbaa !16
  br label %173, !llvm.loop !18

111:                                              ; preds = %77
  %112 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.6, i64 noundef 16) #7
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %145

114:                                              ; preds = %111
  %115 = add nsw i32 %.0364489, 18
  %116 = tail call ptr @__ctype_b_loc() #8
  %117 = load ptr, ptr %116, align 8, !tbaa !9
  %118 = sext i32 %115 to i64
  %119 = getelementptr inbounds i8, ptr %0, i64 %118
  %120 = load i8, ptr %119, align 1, !tbaa !17
  %121 = zext i8 %120 to i64
  %122 = getelementptr inbounds i16, ptr %117, i64 %121
  %123 = load i16, ptr %122, align 2, !tbaa !20
  %124 = and i16 %123, 2048
  %125 = icmp eq i16 %124, 0
  br i1 %125, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %114, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %118, %114 ]
  %126 = phi i8 [ %132, %.lr.ph ], [ %120, %114 ]
  %.0354477 = phi i32 [ %130, %.lr.ph ], [ 0, %114 ]
  %127 = zext i8 %126 to i32
  %128 = mul nuw i32 %.0354477, 10
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %129 = add i32 %128, -48
  %130 = add i32 %129, %127
  %131 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next
  %132 = load i8, ptr %131, align 1, !tbaa !17
  %133 = zext i8 %132 to i64
  %134 = getelementptr inbounds i16, ptr %117, i64 %133
  %135 = load i16, ptr %134, align 2, !tbaa !20
  %136 = and i16 %135, 2048
  %137 = icmp eq i16 %136, 0
  %138 = icmp ugt i32 %130, 429496728
  %or.cond7 = select i1 %137, i1 true, i1 %138
  br i1 %or.cond7, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !23

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %139 = trunc nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %114
  %.0354.lcssa = phi i32 [ 0, %114 ], [ %130, %._crit_edge.loopexit ]
  %.0353.lcssa = phi i32 [ %115, %114 ], [ %139, %._crit_edge.loopexit ]
  %.lcssa475 = phi i8 [ %120, %114 ], [ %132, %._crit_edge.loopexit ]
  %140 = add nsw i32 %.0353.lcssa, 1
  %.not389 = icmp eq i8 %.lcssa475, 41
  br i1 %.not389, label %141, label %.critedge

141:                                              ; preds = %._crit_edge
  %142 = icmp ult i32 %.0354.lcssa, %.0339490
  br i1 %142, label %143, label %173, !llvm.loop !18

143:                                              ; preds = %141
  %144 = or i32 %42, 16384
  store i32 %144, ptr %38, align 4, !tbaa !16
  br label %173, !llvm.loop !18

145:                                              ; preds = %111
  %146 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef 3) #7
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %166, label %148

148:                                              ; preds = %145
  %149 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 3) #7
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %166, label %151

151:                                              ; preds = %148
  %152 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.9, i64 noundef 5) #7
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %166, label %154

154:                                              ; preds = %151
  %155 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef 4) #7
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %166, label %157

157:                                              ; preds = %154
  %158 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.11, i64 noundef 8) #7
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %166, label %160

160:                                              ; preds = %157
  %161 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.12, i64 noundef 12) #7
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %170, label %163

163:                                              ; preds = %160
  %164 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) @.str.13, i64 noundef 12) #7
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %170, label %.critedge

166:                                              ; preds = %157, %154, %151, %148, %145
  %.sink = phi i32 [ 5, %145 ], [ 5, %148 ], [ 7, %151 ], [ 6, %154 ], [ 10, %157 ]
  %.0358.ph = phi i32 [ 1048576, %145 ], [ 2097152, %148 ], [ 3145728, %151 ], [ 4194304, %154 ], [ 5242880, %157 ]
  %167 = add nsw i32 %.0364489, %.sink
  %168 = and i32 %.0333492, -7340033
  %169 = or disjoint i32 %.0358.ph, %168
  br label %173

170:                                              ; preds = %163, %160
  %.0357.ph = phi i32 [ 8388608, %160 ], [ 16777216, %163 ]
  %.3367.ph428 = add nsw i32 %.0364489, 14
  %171 = and i32 %.0333492, -25165825
  %172 = or disjoint i32 %.0357.ph, %171
  br label %173

173:                                              ; preds = %166, %170, %143, %141, %109, %107, %74, %68, %62, %56, %50
  %174 = phi i32 [ %42, %50 ], [ %42, %56 ], [ %42, %62 ], [ %42, %68 ], [ %42, %74 ], [ %110, %109 ], [ %42, %107 ], [ %144, %143 ], [ %42, %141 ], [ %42, %170 ], [ %42, %166 ]
  %.4368 = phi i32 [ %51, %50 ], [ %57, %56 ], [ %63, %62 ], [ %69, %68 ], [ %75, %74 ], [ %106, %109 ], [ %106, %107 ], [ %140, %143 ], [ %140, %141 ], [ %.3367.ph428, %170 ], [ %167, %166 ]
  %.3342 = phi i32 [ %.0339490, %50 ], [ %.0339490, %56 ], [ %.0339490, %62 ], [ %.0339490, %68 ], [ %.0339490, %74 ], [ %.0339490, %109 ], [ %.0339490, %107 ], [ %.0354.lcssa, %143 ], [ %.0339490, %141 ], [ %.0339490, %170 ], [ %.0339490, %166 ]
  %.3338 = phi i32 [ %.0335491, %50 ], [ %.0335491, %56 ], [ %.0335491, %62 ], [ %.0335491, %68 ], [ %.0335491, %74 ], [ %.0356.lcssa, %109 ], [ %.0335491, %107 ], [ %.0335491, %143 ], [ %.0335491, %141 ], [ %.0335491, %170 ], [ %.0335491, %166 ]
  %.2 = phi i32 [ %52, %50 ], [ %58, %56 ], [ %64, %62 ], [ %70, %68 ], [ %76, %74 ], [ %.0333492, %109 ], [ %.0333492, %107 ], [ %.0333492, %143 ], [ %.0333492, %141 ], [ %172, %170 ], [ %169, %166 ]
  %175 = sext i32 %.4368 to i64
  %176 = getelementptr inbounds i8, ptr %0, i64 %175
  %177 = load i8, ptr %176, align 1, !tbaa !17
  %178 = icmp eq i8 %177, 40
  br i1 %178, label %.lr.ph494, label %.critedge

.critedge:                                        ; preds = %.lr.ph494, %173, %._crit_edge485, %._crit_edge, %163, %36
  %.0364.lcssa = phi i32 [ 0, %36 ], [ %.0364489, %163 ], [ %.0364489, %._crit_edge ], [ %.0364489, %._crit_edge485 ], [ %.4368, %173 ], [ %.0364489, %.lr.ph494 ]
  %.0339.lcssa = phi i32 [ -1, %36 ], [ %.0339490, %163 ], [ %.0339490, %._crit_edge ], [ %.0339490, %._crit_edge485 ], [ %.3342, %173 ], [ %.0339490, %.lr.ph494 ]
  %.0335.lcssa = phi i32 [ -1, %36 ], [ %.0335491, %163 ], [ %.0335491, %._crit_edge ], [ %.0335491, %._crit_edge485 ], [ %.3338, %173 ], [ %.0335491, %.lr.ph494 ]
  %.0333.lcssa = phi i32 [ %1, %36 ], [ %.0333492, %163 ], [ %.0333492, %._crit_edge ], [ %.0333492, %._crit_edge485 ], [ %.2, %173 ], [ %.0333492, %.lr.ph494 ]
  %179 = and i32 %.0333.lcssa, 2048
  %180 = icmp ne i32 %179, 0
  %.lobit = lshr exact i32 %179, 11
  %or.cond = and i1 %.not386, %180
  br i1 %or.cond, label %181, label %182

181:                                              ; preds = %.critedge
  store i32 78, ptr %12, align 4, !tbaa !5
  br label %450

182:                                              ; preds = %.critedge
  %183 = and i32 %.0333.lcssa, 10240
  %or.cond411 = icmp eq i32 %183, 2048
  br i1 %or.cond411, label %184, label %187

184:                                              ; preds = %182
  %185 = tail call i32 @_pcre_valid_utf(ptr noundef nonnull %0, i32 noundef -1, ptr noundef nonnull %4) #6
  store i32 %185, ptr %12, align 4, !tbaa !5
  %.not391 = icmp eq i32 %185, 0
  br i1 %.not391, label %187, label %186

186:                                              ; preds = %184
  store i32 44, ptr %12, align 4, !tbaa !5
  br label %450

187:                                              ; preds = %184, %182
  %188 = and i32 %.0333.lcssa, 25165824
  %189 = icmp eq i32 %188, 25165824
  br i1 %189, label %190, label %191

190:                                              ; preds = %187
  store i32 56, ptr %12, align 4, !tbaa !5
  br label %444

191:                                              ; preds = %187
  %192 = lshr i32 %.0333.lcssa, 20
  %193 = and i32 %192, 7
  switch i32 %193, label %195 [
    i32 0, label %205
    i32 1, label %194
    i32 2, label %205
    i32 3, label %200
    i32 4, label %198
    i32 5, label %196
  ]

194:                                              ; preds = %191
  br label %205

195:                                              ; preds = %191
  store i32 56, ptr %12, align 4, !tbaa !5
  br label %444

196:                                              ; preds = %191
  %197 = getelementptr inbounds i8, ptr %15, i64 180
  store i32 2, ptr %197, align 4, !tbaa !24
  br label %209

198:                                              ; preds = %191
  %199 = getelementptr inbounds i8, ptr %15, i64 180
  store i32 1, ptr %199, align 4, !tbaa !24
  br label %209

200:                                              ; preds = %191
  %201 = getelementptr inbounds i8, ptr %15, i64 180
  store i32 0, ptr %201, align 4, !tbaa !24
  %202 = getelementptr inbounds i8, ptr %15, i64 184
  store i32 2, ptr %202, align 8, !tbaa !25
  %203 = getelementptr inbounds i8, ptr %15, i64 188
  store i8 13, ptr %203, align 4, !tbaa !17
  %204 = getelementptr inbounds i8, ptr %15, i64 189
  store i8 10, ptr %204, align 1, !tbaa !17
  br label %209

205:                                              ; preds = %194, %191, %191
  %.0344.ph.ph.ph = phi i8 [ 10, %191 ], [ 10, %191 ], [ 13, %194 ]
  %206 = getelementptr inbounds i8, ptr %15, i64 180
  store i32 0, ptr %206, align 4, !tbaa !24
  %207 = getelementptr inbounds i8, ptr %15, i64 184
  store i32 1, ptr %207, align 8, !tbaa !25
  %208 = getelementptr inbounds i8, ptr %15, i64 188
  store i8 %.0344.ph.ph.ph, ptr %208, align 4, !tbaa !17
  br label %209

209:                                              ; preds = %198, %205, %200, %196
  %210 = getelementptr inbounds i8, ptr %15, i64 124
  %211 = getelementptr inbounds i8, ptr %15, i64 116
  %212 = getelementptr inbounds i8, ptr %15, i64 112
  %213 = getelementptr inbounds i8, ptr %15, i64 96
  %214 = getelementptr inbounds i8, ptr %15, i64 100
  %215 = getelementptr inbounds i8, ptr %15, i64 88
  %216 = getelementptr inbounds i8, ptr %15, i64 168
  store i32 0, ptr %216, align 8, !tbaa !26
  %217 = getelementptr inbounds i8, ptr %15, i64 172
  store i32 0, ptr %217, align 4, !tbaa !27
  %218 = getelementptr inbounds i8, ptr %15, i64 40
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %215, i8 0, i64 16, i1 false)
  store ptr %16, ptr %218, align 8, !tbaa !28
  %219 = getelementptr inbounds i8, ptr %15, i64 64
  store ptr %16, ptr %219, align 8, !tbaa !29
  %220 = getelementptr inbounds i8, ptr %15, i64 176
  store i32 0, ptr %220, align 8, !tbaa !30
  %221 = getelementptr inbounds i8, ptr %15, i64 32
  store ptr %16, ptr %221, align 8, !tbaa !31
  %222 = getelementptr inbounds i8, ptr %15, i64 108
  %223 = getelementptr inbounds i8, ptr %15, i64 80
  store ptr %17, ptr %223, align 8, !tbaa !32
  %224 = getelementptr inbounds i8, ptr %15, i64 104
  store <4 x i32> <i32 20, i32 4096, i32 0, i32 0>, ptr %224, align 8, !tbaa !5
  %225 = getelementptr inbounds i8, ptr %15, i64 48
  store ptr %0, ptr %225, align 8, !tbaa !33
  %226 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #7
  %227 = getelementptr inbounds i8, ptr %0, i64 %226
  %228 = getelementptr inbounds i8, ptr %15, i64 56
  store ptr %227, ptr %228, align 8, !tbaa !34
  %229 = getelementptr inbounds i8, ptr %15, i64 152
  store i32 0, ptr %229, align 8, !tbaa !35
  %230 = getelementptr inbounds i8, ptr %15, i64 136
  store i32 0, ptr %230, align 8, !tbaa !36
  %231 = getelementptr inbounds i8, ptr %15, i64 140
  store i32 0, ptr %231, align 4, !tbaa !37
  %232 = getelementptr inbounds i8, ptr %15, i64 120
  store <4 x i32> zeroinitializer, ptr %232, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %15, i64 144
  store i32 %.0333.lcssa, ptr %233, align 8, !tbaa !38
  %234 = getelementptr inbounds i8, ptr %15, i64 72
  store ptr null, ptr %234, align 8, !tbaa !39
  %235 = sext i32 %.0364.lcssa to i64
  %236 = getelementptr inbounds i8, ptr %0, i64 %235
  store ptr %236, ptr %14, align 8, !tbaa !9
  store ptr %16, ptr %13, align 8, !tbaa !9
  store i8 -125, ptr %16, align 16, !tbaa !17
  %237 = call i32 @compile_regex(i32 noundef %.0333.lcssa, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %12, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef null, ptr noundef nonnull %15, ptr noundef nonnull %7)
  %238 = load i32, ptr %12, align 4, !tbaa !5
  %.not392 = icmp eq i32 %238, 0
  br i1 %.not392, label %239, label %444

239:                                              ; preds = %209
  %240 = load i32, ptr %7, align 4, !tbaa !5
  %241 = icmp sgt i32 %240, 65536
  br i1 %241, label %242, label %243

242:                                              ; preds = %239
  store i32 20, ptr %12, align 4, !tbaa !5
  br label %444

243:                                              ; preds = %239
  %244 = load i32, ptr %213, align 8, !tbaa !40
  %245 = load i32, ptr %214, align 4, !tbaa !41
  %246 = mul nsw i32 %245, %244
  %247 = add nsw i32 %246, %240
  %248 = sext i32 %247 to i64
  %249 = add nsw i64 %248, 64
  %250 = load ptr, ptr @pcre_malloc, align 8, !tbaa !9
  %251 = call ptr %250(i64 noundef %249) #6
  %252 = icmp eq ptr %251, null
  br i1 %252, label %253, label %254

253:                                              ; preds = %243
  store i32 21, ptr %12, align 4, !tbaa !5
  br label %444

254:                                              ; preds = %243
  store i32 1346589253, ptr %251, align 8, !tbaa !42
  %255 = trunc i64 %249 to i32
  %256 = getelementptr inbounds i8, ptr %251, i64 4
  store i32 %255, ptr %256, align 4, !tbaa !44
  %257 = getelementptr inbounds i8, ptr %251, i64 8
  %258 = getelementptr inbounds i8, ptr %251, i64 12
  %259 = load <2 x i32>, ptr %233, align 8, !tbaa !5
  store <2 x i32> %259, ptr %257, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %251, i64 16
  store i32 %.0335.lcssa, ptr %260, align 8, !tbaa !45
  %261 = getelementptr inbounds i8, ptr %251, i64 20
  store i32 %.0339.lcssa, ptr %261, align 4, !tbaa !46
  %262 = getelementptr inbounds i8, ptr %251, i64 24
  store i16 0, ptr %262, align 8, !tbaa !47
  %263 = getelementptr inbounds i8, ptr %251, i64 26
  store i16 0, ptr %263, align 2, !tbaa !48
  %264 = getelementptr inbounds i8, ptr %251, i64 34
  store i16 64, ptr %264, align 2, !tbaa !49
  %265 = load i32, ptr %214, align 4, !tbaa !41
  %266 = trunc i32 %265 to i16
  %267 = getelementptr inbounds i8, ptr %251, i64 36
  store i16 %266, ptr %267, align 4, !tbaa !50
  %268 = load i32, ptr %213, align 8, !tbaa !40
  %269 = trunc i32 %268 to i16
  %270 = getelementptr inbounds i8, ptr %251, i64 38
  store i16 %269, ptr %270, align 2, !tbaa !51
  %271 = getelementptr inbounds i8, ptr %251, i64 40
  %272 = icmp eq ptr %spec.store.select, @_pcre_default_tables
  %273 = select i1 %272, ptr null, ptr %spec.store.select
  %274 = getelementptr inbounds i8, ptr %251, i64 48
  store ptr %273, ptr %274, align 8, !tbaa !52
  %275 = getelementptr inbounds i8, ptr %251, i64 56
  store ptr null, ptr %275, align 8, !tbaa !53
  store <4 x i16> zeroinitializer, ptr %271, align 8, !tbaa !20
  %276 = load i32, ptr %212, align 8, !tbaa !54
  store i32 %276, ptr %211, align 4, !tbaa !55
  store i32 0, ptr %230, align 8, !tbaa !36
  store i32 0, ptr %231, align 4, !tbaa !37
  store i32 0, ptr %212, align 8, !tbaa !54
  store i32 0, ptr %232, align 8, !tbaa !56
  %277 = getelementptr inbounds i8, ptr %251, i64 64
  store ptr %277, ptr %215, align 8, !tbaa !57
  %.mask = and i32 %265, 65535
  %.mask474 = and i32 %268, 65535
  %narrow = mul nuw i32 %.mask474, %.mask
  %278 = zext i32 %narrow to i64
  %279 = getelementptr inbounds i8, ptr %277, i64 %278
  store ptr %279, ptr %218, align 8, !tbaa !28
  %280 = load ptr, ptr %221, align 8, !tbaa !31
  store ptr %280, ptr %219, align 8, !tbaa !29
  store i32 0, ptr %220, align 8, !tbaa !30
  %281 = getelementptr inbounds i8, ptr %15, i64 156
  %282 = getelementptr inbounds i8, ptr %15, i64 164
  store ptr null, ptr %234, align 8, !tbaa !39
  %283 = icmp sgt i32 %268, 0
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %229, i8 0, i64 16, i1 false)
  br i1 %283, label %284, label %301

284:                                              ; preds = %254
  %285 = load ptr, ptr %223, align 8, !tbaa !32
  store i32 0, ptr %213, align 8, !tbaa !40
  br label %286

286:                                              ; preds = %284, %286
  %.0351520 = phi ptr [ %285, %284 ], [ %293, %286 ]
  %.0352519 = phi i32 [ %268, %284 ], [ %292, %286 ]
  %287 = load ptr, ptr %.0351520, align 8, !tbaa !58
  %288 = getelementptr inbounds i8, ptr %.0351520, i64 8
  %289 = load i32, ptr %288, align 8, !tbaa !60
  %290 = getelementptr inbounds i8, ptr %.0351520, i64 12
  %291 = load i32, ptr %290, align 4, !tbaa !61
  call void @add_name(ptr noundef nonnull %15, ptr noundef %287, i32 noundef %289, i32 noundef %291)
  %292 = add nsw i32 %.0352519, -1
  %293 = getelementptr inbounds i8, ptr %.0351520, i64 16
  %294 = icmp ugt i32 %.0352519, 1
  br i1 %294, label %286, label %295, !llvm.loop !62

295:                                              ; preds = %286
  %296 = load i32, ptr %224, align 8, !tbaa !63
  %297 = icmp sgt i32 %296, 20
  br i1 %297, label %298, label %301

298:                                              ; preds = %295
  %299 = load ptr, ptr @pcre_free, align 8, !tbaa !9
  %300 = load ptr, ptr %223, align 8, !tbaa !32
  call void %299(ptr noundef %300) #6
  br label %301

301:                                              ; preds = %295, %298, %254
  store ptr %236, ptr %14, align 8, !tbaa !9
  store ptr %279, ptr %13, align 8, !tbaa !9
  store i8 -125, ptr %279, align 1, !tbaa !17
  %302 = load i32, ptr %257, align 8, !tbaa !64
  %303 = call i32 @compile_regex(i32 noundef %302, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %12, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef null, ptr noundef nonnull %15, ptr noundef null)
  %304 = load i32, ptr %212, align 8, !tbaa !54
  %305 = trunc i32 %304 to i16
  %306 = getelementptr inbounds i8, ptr %251, i64 30
  store i16 %305, ptr %306, align 2, !tbaa !65
  %307 = load i32, ptr %210, align 4, !tbaa !66
  %308 = trunc i32 %307 to i16
  %309 = getelementptr inbounds i8, ptr %251, i64 32
  store i16 %308, ptr %309, align 8, !tbaa !67
  %310 = load i32, ptr %232, align 8, !tbaa !56
  %311 = trunc i32 %310 to i16
  %312 = getelementptr inbounds i8, ptr %251, i64 28
  store i16 %311, ptr %312, align 4, !tbaa !68
  %313 = load i32, ptr %38, align 4, !tbaa !16
  %314 = or i32 %313, 1
  store i32 %314, ptr %258, align 4, !tbaa !69
  %315 = load i32, ptr %281, align 4, !tbaa !70
  %.not393 = icmp eq i32 %315, 0
  br i1 %.not393, label %317, label %316

316:                                              ; preds = %301
  store i32 0, ptr %11, align 4, !tbaa !5
  store i32 -1, ptr %9, align 4, !tbaa !5
  br label %317

317:                                              ; preds = %316, %301
  %318 = load i32, ptr %12, align 4, !tbaa !5
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %324

320:                                              ; preds = %317
  %321 = load ptr, ptr %14, align 8, !tbaa !9
  %322 = load i8, ptr %321, align 1, !tbaa !17
  %.not394 = icmp eq i8 %322, 0
  br i1 %.not394, label %324, label %323

323:                                              ; preds = %320
  store i32 22, ptr %12, align 4, !tbaa !5
  br label %324

324:                                              ; preds = %323, %320, %317
  %325 = load ptr, ptr %13, align 8, !tbaa !9
  %326 = getelementptr inbounds i8, ptr %325, i64 1
  store ptr %326, ptr %13, align 8, !tbaa !9
  store i8 0, ptr %325, align 1, !tbaa !17
  %327 = load ptr, ptr %13, align 8, !tbaa !9
  %328 = ptrtoint ptr %327 to i64
  %329 = ptrtoint ptr %279 to i64
  %330 = sub i64 %328, %329
  %331 = load i32, ptr %7, align 4, !tbaa !5
  %332 = sext i32 %331 to i64
  %333 = icmp sgt i64 %330, %332
  br i1 %333, label %.thread, label %334

.thread:                                          ; preds = %324
  store i32 23, ptr %12, align 4, !tbaa !5
  br label %.critedge3

334:                                              ; preds = %324
  %.pre = load i32, ptr %12, align 4
  %335 = load ptr, ptr %219, align 8, !tbaa !29
  %336 = load ptr, ptr %221, align 8, !tbaa !31
  %337 = icmp ugt ptr %335, %336
  %338 = icmp eq i32 %.pre, 0
  %or.cond530 = select i1 %337, i1 %338, i1 false
  br i1 %or.cond530, label %.lr.ph523, label %.critedge3

.lr.ph523:                                        ; preds = %334, %369
  %.0345522 = phi ptr [ %.1346, %369 ], [ null, %334 ]
  %.0348521 = phi i32 [ %.1349, %369 ], [ -1, %334 ]
  %339 = load ptr, ptr %219, align 8, !tbaa !29
  %340 = load ptr, ptr %221, align 8, !tbaa !31
  %341 = icmp ugt ptr %339, %340
  br i1 %341, label %342, label %.critedge3

342:                                              ; preds = %.lr.ph523
  %343 = getelementptr inbounds i8, ptr %339, i64 -2
  store ptr %343, ptr %219, align 8, !tbaa !29
  %344 = load i8, ptr %343, align 1, !tbaa !17
  %345 = zext i8 %344 to i32
  %346 = shl nuw nsw i32 %345, 8
  %347 = getelementptr inbounds i8, ptr %339, i64 -1
  %348 = load i8, ptr %347, align 1, !tbaa !17
  %349 = zext i8 %348 to i32
  %350 = or disjoint i32 %346, %349
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %.thread462, label %352

352:                                              ; preds = %342
  %353 = zext nneg i32 %350 to i64
  %354 = getelementptr i8, ptr %279, i64 %353
  %355 = getelementptr i8, ptr %354, i64 -1
  %356 = load i8, ptr %355, align 1, !tbaa !17
  %.not395 = icmp eq i8 %356, 117
  br i1 %.not395, label %357, label %.thread462

.thread462:                                       ; preds = %342, %352
  store i32 10, ptr %12, align 4, !tbaa !5
  br label %.critedge3

357:                                              ; preds = %352
  %358 = load i8, ptr %354, align 1, !tbaa !17
  %359 = zext i8 %358 to i32
  %360 = shl nuw nsw i32 %359, 8
  %361 = getelementptr inbounds i8, ptr %354, i64 1
  %362 = load i8, ptr %361, align 1, !tbaa !17
  %363 = zext i8 %362 to i32
  %364 = or disjoint i32 %360, %363
  %.not396 = icmp eq i32 %364, %.0348521
  br i1 %.not396, label %367, label %365

365:                                              ; preds = %357
  %366 = call ptr @_pcre_find_bracket(ptr noundef nonnull %279, i32 noundef %.lobit, i32 noundef %364)
  br label %367

367:                                              ; preds = %365, %357
  %.1349 = phi i32 [ %364, %365 ], [ %.0348521, %357 ]
  %.1346 = phi ptr [ %366, %365 ], [ %.0345522, %357 ]
  %368 = icmp eq ptr %.1346, null
  br i1 %368, label %.thread552, label %369

.thread552:                                       ; preds = %367
  store i32 53, ptr %12, align 4, !tbaa !5
  br label %.critedge3

369:                                              ; preds = %367
  %370 = ptrtoint ptr %.1346 to i64
  %371 = sub i64 %370, %329
  %372 = trunc i64 %371 to i8
  %373 = lshr i64 %371, 8
  %374 = trunc i64 %373 to i8
  store i8 %374, ptr %354, align 1, !tbaa !17
  store i8 %372, ptr %361, align 1, !tbaa !17
  %.pre540 = load i32, ptr %12, align 4, !tbaa !5
  %375 = icmp eq i32 %.pre540, 0
  br i1 %375, label %.lr.ph523, label %.critedge3

.critedge3:                                       ; preds = %369, %.lr.ph523, %.thread552, %.thread, %.thread462, %334
  %376 = phi i32 [ 10, %.thread462 ], [ %.pre, %334 ], [ 23, %.thread ], [ 53, %.thread552 ], [ %.pre540, %369 ], [ 0, %.lr.ph523 ]
  %377 = load i32, ptr %222, align 4, !tbaa !71
  %378 = icmp sgt i32 %377, 4096
  br i1 %378, label %379, label %382

379:                                              ; preds = %.critedge3
  %380 = load ptr, ptr @pcre_free, align 8, !tbaa !9
  %381 = load ptr, ptr %221, align 8, !tbaa !31
  call void %380(ptr noundef %381) #6
  %.pre541 = load i32, ptr %12, align 4, !tbaa !5
  br label %382

382:                                              ; preds = %379, %.critedge3
  %383 = phi i32 [ %.pre541, %379 ], [ %376, %.critedge3 ]
  store ptr null, ptr %221, align 8, !tbaa !31
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %390

385:                                              ; preds = %382
  %386 = load i16, ptr %309, align 8, !tbaa !67
  %387 = load i16, ptr %306, align 2, !tbaa !65
  %388 = icmp ugt i16 %386, %387
  br i1 %388, label %389, label %390

389:                                              ; preds = %385
  store i32 15, ptr %12, align 4, !tbaa !5
  br label %390

390:                                              ; preds = %389, %385, %382
  %391 = phi i32 [ 15, %389 ], [ 0, %385 ], [ %383, %382 ]
  %392 = and i32 %.0333.lcssa, 131072
  %393 = or i32 %391, %392
  %or.cond415 = icmp eq i32 %393, 0
  br i1 %or.cond415, label %394, label %395

394:                                              ; preds = %390
  call void @auto_possessify(ptr noundef nonnull %279, i32 noundef %.lobit, ptr noundef nonnull %15)
  %.pre542 = load i32, ptr %12, align 4, !tbaa !5
  br label %395

395:                                              ; preds = %394, %390
  %396 = phi i32 [ %.pre542, %394 ], [ %391, %390 ]
  %397 = icmp ne i32 %396, 0
  %398 = load i32, ptr %282, align 4
  %.not397 = icmp eq i32 %398, 0
  %or.cond416 = select i1 %397, i1 true, i1 %.not397
  br i1 %or.cond416, label %440, label %399

399:                                              ; preds = %395
  %400 = call ptr @_pcre_find_bracket(ptr noundef nonnull %279, i32 noundef %.lobit, i32 noundef -1)
  %.not398525 = icmp eq ptr %400, null
  br i1 %.not398525, label %thread-pre-split, label %.lr.ph528

.lr.ph528:                                        ; preds = %399, %437
  %.0334526 = phi ptr [ %439, %437 ], [ %400, %399 ]
  %401 = getelementptr inbounds i8, ptr %.0334526, i64 1
  %402 = load i8, ptr %401, align 1, !tbaa !17
  %403 = zext i8 %402 to i32
  %404 = shl nuw nsw i32 %403, 8
  %405 = getelementptr inbounds i8, ptr %.0334526, i64 2
  %406 = load i8, ptr %405, align 1, !tbaa !17
  %407 = zext i8 %406 to i32
  %408 = or disjoint i32 %404, %407
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %410, label %437

410:                                              ; preds = %.lr.ph528
  %411 = getelementptr inbounds i8, ptr %.0334526, i64 -1
  %412 = getelementptr inbounds i8, ptr %.0334526, i64 -3
  %413 = getelementptr inbounds i8, ptr %.0334526, i64 -2
  %414 = load i8, ptr %413, align 1, !tbaa !17
  %415 = zext i8 %414 to i64
  %416 = shl nuw nsw i64 %415, 8
  %417 = load i8, ptr %411, align 1, !tbaa !17
  %418 = zext i8 %417 to i64
  %419 = or disjoint i64 %416, %418
  %420 = getelementptr inbounds i8, ptr %412, i64 %419
  %421 = load i8, ptr %420, align 1, !tbaa !17
  store i8 0, ptr %420, align 1, !tbaa !17
  %422 = load i32, ptr %257, align 8, !tbaa !64
  %423 = lshr i32 %422, 11
  %.lobit399 = and i32 %423, 1
  %424 = call i32 @find_fixedlength(ptr noundef nonnull %.0334526, i32 noundef %.lobit399, i32 noundef 1, ptr noundef nonnull %15, ptr noundef null)
  store i8 %421, ptr %420, align 1, !tbaa !17
  %425 = icmp slt i32 %424, 0
  br i1 %425, label %.thread470, label %426

426:                                              ; preds = %410
  %427 = load i32, ptr %232, align 8, !tbaa !56
  %428 = icmp sgt i32 %424, %427
  br i1 %428, label %429, label %.thread467

429:                                              ; preds = %426
  store i32 %424, ptr %232, align 8, !tbaa !56
  br label %.thread467

.thread467:                                       ; preds = %426, %429
  %430 = lshr i32 %424, 8
  %431 = trunc i32 %430 to i8
  store i8 %431, ptr %401, align 1, !tbaa !17
  %432 = trunc i32 %424 to i8
  store i8 %432, ptr %405, align 1, !tbaa !17
  br label %437

.thread470:                                       ; preds = %410
  %433 = icmp eq i32 %424, -2
  %434 = icmp eq i32 %424, -4
  %435 = select i1 %434, i32 70, i32 25
  %436 = select i1 %433, i32 36, i32 %435
  store i32 %436, ptr %12, align 4, !tbaa !5
  br label %442

437:                                              ; preds = %.thread467, %.lr.ph528
  %438 = getelementptr inbounds i8, ptr %.0334526, i64 3
  %439 = call ptr @_pcre_find_bracket(ptr noundef nonnull %438, i32 noundef %.lobit, i32 noundef -1)
  %.not398 = icmp eq ptr %439, null
  br i1 %.not398, label %thread-pre-split, label %.lr.ph528, !llvm.loop !72

thread-pre-split:                                 ; preds = %437, %399
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  br label %440

440:                                              ; preds = %thread-pre-split, %395
  %441 = phi i32 [ %.pr, %thread-pre-split ], [ %396, %395 ]
  %.not400 = icmp eq i32 %441, 0
  br i1 %.not400, label %455, label %442

442:                                              ; preds = %.thread470, %440
  %443 = load ptr, ptr @pcre_free, align 8, !tbaa !9
  call void %443(ptr noundef nonnull %251) #6
  %.pre549.pre = load i32, ptr %12, align 4, !tbaa !5
  br label %444

444:                                              ; preds = %209, %442, %253, %242, %195, %190, %35
  %.pre549 = phi i32 [ %238, %209 ], [ %.pre549.pre, %442 ], [ 21, %253 ], [ 20, %242 ], [ 56, %195 ], [ 56, %190 ], [ 17, %35 ]
  %445 = load ptr, ptr %14, align 8, !tbaa !9
  %446 = ptrtoint ptr %445 to i64
  %447 = ptrtoint ptr %0 to i64
  %448 = sub i64 %446, %447
  %449 = trunc i64 %448 to i32
  store i32 %449, ptr %4, align 4, !tbaa !5
  br label %450

450:                                              ; preds = %444, %186, %181, %25
  %451 = phi i32 [ %.pre549, %444 ], [ 44, %186 ], [ 78, %181 ], [ 16, %25 ]
  %452 = call ptr @find_error_text(i32 noundef %451)
  store ptr %452, ptr %3, align 8, !tbaa !9
  br i1 %.not, label %.loopexit, label %453

453:                                              ; preds = %450
  %454 = load i32, ptr %12, align 4, !tbaa !5
  store i32 %454, ptr %2, align 4, !tbaa !5
  br label %.loopexit

455:                                              ; preds = %440
  %456 = load i32, ptr %257, align 8, !tbaa !64
  %457 = and i32 %456, 16
  %458 = icmp eq i32 %457, 0
  br i1 %458, label %459, label %490

459:                                              ; preds = %455
  %460 = call i32 @is_anchored(ptr noundef nonnull %279, i32 noundef 0, ptr noundef nonnull %15, i32 noundef 0)
  %.not401 = icmp eq i32 %460, 0
  br i1 %.not401, label %464, label %461

461:                                              ; preds = %459
  %462 = load i32, ptr %257, align 8, !tbaa !64
  %463 = or i32 %462, 16
  store i32 %463, ptr %257, align 8, !tbaa !64
  br label %490

464:                                              ; preds = %459
  %465 = load i32, ptr %8, align 4, !tbaa !5
  %466 = icmp slt i32 %465, 0
  br i1 %466, label %467, label %..thread473_crit_edge

..thread473_crit_edge:                            ; preds = %464
  %.pre543 = load i32, ptr %10, align 4, !tbaa !5
  br label %.thread473

467:                                              ; preds = %464
  %468 = call i32 @find_firstassertedchar(ptr noundef nonnull %279, ptr noundef nonnull %8, i32 noundef 0)
  store i32 %468, ptr %10, align 4, !tbaa !5
  %.pr472 = load i32, ptr %8, align 4, !tbaa !5
  %469 = icmp sgt i32 %.pr472, -1
  br i1 %469, label %.thread473, label %485

.thread473:                                       ; preds = %..thread473_crit_edge, %467
  %470 = phi i32 [ %468, %467 ], [ %.pre543, %..thread473_crit_edge ]
  %471 = phi i32 [ %.pr472, %467 ], [ %465, %..thread473_crit_edge ]
  %472 = trunc i32 %470 to i16
  %473 = and i16 %472, 255
  store i16 %473, ptr %262, align 8, !tbaa !47
  %474 = and i32 %471, 1
  %.not403 = icmp eq i32 %474, 0
  br i1 %.not403, label %.thread473._crit_edge, label %475

.thread473._crit_edge:                            ; preds = %.thread473
  %.pre544 = load i32, ptr %258, align 4, !tbaa !69
  br label %482

475:                                              ; preds = %.thread473
  %476 = load ptr, ptr %29, align 8, !tbaa !13
  %477 = zext nneg i16 %473 to i64
  %478 = getelementptr inbounds i8, ptr %476, i64 %477
  %479 = load i8, ptr %478, align 1, !tbaa !17
  %480 = trunc i32 %470 to i8
  %.not404 = icmp eq i8 %479, %480
  %.pre545 = load i32, ptr %258, align 4, !tbaa !69
  %481 = or i32 %.pre545, 32
  %spec.select = select i1 %.not404, i32 %.pre545, i32 %481
  br label %482

482:                                              ; preds = %475, %.thread473._crit_edge
  %483 = phi i32 [ %.pre544, %.thread473._crit_edge ], [ %spec.select, %475 ]
  %484 = or i32 %483, 16
  store i32 %484, ptr %258, align 4, !tbaa !69
  br label %490

485:                                              ; preds = %467
  %486 = call i32 @is_startline(ptr noundef nonnull %279, i32 noundef 0, ptr noundef nonnull %15, i32 noundef 0, i32 noundef 0)
  %.not402 = icmp eq i32 %486, 0
  br i1 %.not402, label %490, label %487

487:                                              ; preds = %485
  %488 = load i32, ptr %258, align 4, !tbaa !69
  %489 = or i32 %488, 256
  store i32 %489, ptr %258, align 4, !tbaa !69
  br label %490

490:                                              ; preds = %461, %485, %487, %482, %455
  %491 = load i32, ptr %9, align 4, !tbaa !5
  %492 = icmp sgt i32 %491, -1
  br i1 %492, label %493, label %.preheader

493:                                              ; preds = %490
  %494 = load i32, ptr %257, align 8, !tbaa !64
  %495 = and i32 %494, 16
  %496 = icmp ne i32 %495, 0
  %497 = and i32 %491, 2
  %.not405 = icmp eq i32 %497, 0
  %or.cond419 = and i1 %.not405, %496
  br i1 %or.cond419, label %.preheader, label %498

498:                                              ; preds = %493
  %499 = load i32, ptr %11, align 4, !tbaa !5
  %500 = trunc i32 %499 to i16
  %501 = and i16 %500, 255
  store i16 %501, ptr %263, align 2, !tbaa !48
  %502 = and i32 %491, 1
  %.not406 = icmp eq i32 %502, 0
  br i1 %.not406, label %._crit_edge546, label %503

._crit_edge546:                                   ; preds = %498
  %.pre547 = load i32, ptr %258, align 4, !tbaa !69
  br label %510

503:                                              ; preds = %498
  %504 = load ptr, ptr %29, align 8, !tbaa !13
  %505 = zext nneg i16 %501 to i64
  %506 = getelementptr inbounds i8, ptr %504, i64 %505
  %507 = load i8, ptr %506, align 1, !tbaa !17
  %508 = trunc i32 %499 to i8
  %.not407 = icmp eq i8 %507, %508
  %.pre548 = load i32, ptr %258, align 4, !tbaa !69
  %509 = or i32 %.pre548, 128
  %spec.select558 = select i1 %.not407, i32 %.pre548, i32 %509
  br label %510

510:                                              ; preds = %503, %._crit_edge546
  %511 = phi i32 [ %.pre547, %._crit_edge546 ], [ %spec.select558, %503 ]
  %512 = or i32 %511, 64
  store i32 %512, ptr %258, align 4, !tbaa !69
  br label %.preheader

.preheader:                                       ; preds = %493, %510, %490
  br label %513

513:                                              ; preds = %.preheader, %519
  %.0369 = phi ptr [ %528, %519 ], [ %279, %.preheader ]
  %514 = load ptr, ptr %13, align 8, !tbaa !9
  %515 = call i32 @could_be_empty_branch(ptr noundef nonnull %.0369, ptr noundef %514, i32 noundef %.lobit, ptr noundef nonnull %15, ptr noundef null)
  %.not408 = icmp eq i32 %515, 0
  br i1 %.not408, label %519, label %516

516:                                              ; preds = %513
  %517 = load i32, ptr %258, align 4, !tbaa !69
  %518 = or i32 %517, 32768
  store i32 %518, ptr %258, align 4, !tbaa !69
  br label %.loopexit

519:                                              ; preds = %513
  %520 = getelementptr inbounds i8, ptr %.0369, i64 1
  %521 = load i8, ptr %520, align 1, !tbaa !17
  %522 = zext i8 %521 to i64
  %523 = shl nuw nsw i64 %522, 8
  %524 = getelementptr inbounds i8, ptr %.0369, i64 2
  %525 = load i8, ptr %524, align 1, !tbaa !17
  %526 = zext i8 %525 to i64
  %527 = or disjoint i64 %523, %526
  %528 = getelementptr inbounds i8, ptr %.0369, i64 %527
  %529 = load i8, ptr %528, align 1, !tbaa !17
  %530 = icmp eq i8 %529, 119
  br i1 %530, label %513, label %.loopexit, !llvm.loop !73

.loopexit:                                        ; preds = %519, %516, %450, %453, %19, %20
  %.0 = phi ptr [ null, %20 ], [ null, %19 ], [ null, %453 ], [ null, %450 ], [ %251, %516 ], [ %251, %519 ]
  call void @llvm.lifetime.end.p0(i64 320, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  ret ptr %.0
}

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

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

declare i32 @_pcre_valid_utf(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"compile_data", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !7, i64 188}
!13 = !{!12, !10, i64 8}
!14 = !{!12, !10, i64 16}
!15 = !{!12, !10, i64 24}
!16 = !{!12, !6, i64 148}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!21, !21, i64 0}
!21 = !{!"short", !7, i64 0}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = !{!12, !6, i64 180}
!25 = !{!12, !6, i64 184}
!26 = !{!12, !6, i64 168}
!27 = !{!12, !6, i64 172}
!28 = !{!12, !10, i64 40}
!29 = !{!12, !10, i64 64}
!30 = !{!12, !6, i64 176}
!31 = !{!12, !10, i64 32}
!32 = !{!12, !10, i64 80}
!33 = !{!12, !10, i64 48}
!34 = !{!12, !10, i64 56}
!35 = !{!12, !6, i64 152}
!36 = !{!12, !6, i64 136}
!37 = !{!12, !6, i64 140}
!38 = !{!12, !6, i64 144}
!39 = !{!12, !10, i64 72}
!40 = !{!12, !6, i64 96}
!41 = !{!12, !6, i64 100}
!42 = !{!43, !6, i64 0}
!43 = !{!"real_pcre8_or_16", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !21, i64 24, !21, i64 26, !21, i64 28, !21, i64 30, !21, i64 32, !21, i64 34, !21, i64 36, !21, i64 38, !21, i64 40, !21, i64 42, !21, i64 44, !21, i64 46, !10, i64 48, !10, i64 56}
!44 = !{!43, !6, i64 4}
!45 = !{!43, !6, i64 16}
!46 = !{!43, !6, i64 20}
!47 = !{!43, !21, i64 24}
!48 = !{!43, !21, i64 26}
!49 = !{!43, !21, i64 34}
!50 = !{!43, !21, i64 36}
!51 = !{!43, !21, i64 38}
!52 = !{!43, !10, i64 48}
!53 = !{!43, !10, i64 56}
!54 = !{!12, !6, i64 112}
!55 = !{!12, !6, i64 116}
!56 = !{!12, !6, i64 120}
!57 = !{!12, !10, i64 88}
!58 = !{!59, !10, i64 0}
!59 = !{!"named_group", !10, i64 0, !6, i64 8, !6, i64 12}
!60 = !{!59, !6, i64 8}
!61 = !{!59, !6, i64 12}
!62 = distinct !{!62, !19}
!63 = !{!12, !6, i64 104}
!64 = !{!43, !6, i64 8}
!65 = !{!43, !21, i64 30}
!66 = !{!12, !6, i64 124}
!67 = !{!43, !21, i64 32}
!68 = !{!43, !21, i64 28}
!69 = !{!43, !6, i64 12}
!70 = !{!12, !6, i64 156}
!71 = !{!12, !6, i64 108}
!72 = distinct !{!72, !19}
!73 = distinct !{!73, !19}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass