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

; 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.match_data = type { i64, i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, ptr, [4 x i8], ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr }
%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 }
%struct.pcre_extra = type { i64, ptr, i64, ptr, ptr, i64, ptr, ptr }
%struct.pcre_study_data = type { i32, i32, [32 x i8], i32 }

@_pcre_default_tables = external constant [0 x i8], align 1
@pcre_malloc = external global ptr, align 8
@pcre_free = external global ptr, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @pcre_exec(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, ptr noundef %6, i32 noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca 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 i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca %struct.match_data, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i64, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca i8, align 1
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store i32 %3, ptr %13, align 4, !tbaa !9
  store i32 %4, ptr %14, align 4, !tbaa !9
  store i32 %5, ptr %15, align 4, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store i32 %7, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  store i32 0, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #4
  store i8 0, ptr %29, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #4
  store i8 0, ptr %30, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #4
  store i8 0, ptr %31, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #4
  store i8 0, ptr %32, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 280, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  store ptr %33, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  store ptr null, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = load i32, ptr %14, align 4, !tbaa !9
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i8, ptr %60, i64 %62
  store ptr %63, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  store ptr null, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  store ptr null, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %64 = load ptr, ptr %37, align 8, !tbaa !5
  %65 = getelementptr inbounds i8, ptr %64, i64 -1
  store ptr %65, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %66, ptr %43, align 8, !tbaa !5
  %67 = load ptr, ptr %43, align 8, !tbaa !5
  %68 = icmp eq ptr %67, null
  br i1 %68, label %69, label %83

69:                                               ; preds = %8
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = icmp eq ptr %70, null
  br i1 %71, label %72, label %83

72:                                               ; preds = %69
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = icmp eq ptr %73, null
  br i1 %74, label %75, label %83

75:                                               ; preds = %72
  %76 = load i32, ptr %13, align 4, !tbaa !9
  %77 = icmp eq i32 %76, -999
  br i1 %77, label %78, label %83

78:                                               ; preds = %75
  %79 = load i32, ptr %14, align 4, !tbaa !9
  %80 = icmp eq i32 %79, -999
  br i1 %80, label %81, label %83

81:                                               ; preds = %78
  %82 = call i32 @match(ptr noundef null, ptr noundef null, ptr noundef null, i32 noundef 0, ptr noundef null, ptr noundef null, i32 noundef 0)
  store i32 %82, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

83:                                               ; preds = %78, %75, %72, %69, %8
  %84 = load i32, ptr %15, align 4, !tbaa !9
  %85 = and i32 %84, -502310289
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %83
  store i32 -3, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

88:                                               ; preds = %83
  %89 = load ptr, ptr %43, align 8, !tbaa !5
  %90 = icmp eq ptr %89, null
  br i1 %90, label %100, label %91

91:                                               ; preds = %88
  %92 = load ptr, ptr %12, align 8, !tbaa !5
  %93 = icmp eq ptr %92, null
  br i1 %93, label %100, label %94

94:                                               ; preds = %91
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = icmp eq ptr %95, null
  br i1 %96, label %97, label %101

97:                                               ; preds = %94
  %98 = load i32, ptr %17, align 4, !tbaa !9
  %99 = icmp sgt i32 %98, 0
  br i1 %99, label %100, label %101

100:                                              ; preds = %97, %91, %88
  store i32 -2, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

101:                                              ; preds = %97, %94
  %102 = load i32, ptr %17, align 4, !tbaa !9
  %103 = icmp slt i32 %102, 0
  br i1 %103, label %104, label %105

104:                                              ; preds = %101
  store i32 -15, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

105:                                              ; preds = %101
  %106 = load i32, ptr %13, align 4, !tbaa !9
  %107 = icmp slt i32 %106, 0
  br i1 %107, label %108, label %109

108:                                              ; preds = %105
  store i32 -32, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

109:                                              ; preds = %105
  %110 = load i32, ptr %14, align 4, !tbaa !9
  %111 = icmp slt i32 %110, 0
  br i1 %111, label %116, label %112

112:                                              ; preds = %109
  %113 = load i32, ptr %14, align 4, !tbaa !9
  %114 = load i32, ptr %13, align 4, !tbaa !9
  %115 = icmp sgt i32 %113, %114
  br i1 %115, label %116, label %117

116:                                              ; preds = %112, %109
  store i32 -24, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

117:                                              ; preds = %112
  %118 = load ptr, ptr %43, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %118, i32 0, i32 0
  %120 = load i32, ptr %119, align 8, !tbaa !12
  %121 = zext i32 %120 to i64
  %122 = icmp ne i64 %121, 1346589253
  br i1 %122, label %123, label %131

123:                                              ; preds = %117
  %124 = load ptr, ptr %43, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %124, i32 0, i32 0
  %126 = load i32, ptr %125, align 8, !tbaa !12
  %127 = zext i32 %126 to i64
  %128 = icmp eq i64 %127, 1163019088
  %129 = zext i1 %128 to i64
  %130 = select i1 %128, i32 -29, i32 -4
  store i32 %130, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

131:                                              ; preds = %117
  %132 = load ptr, ptr %43, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %132, i32 0, i32 3
  %134 = load i32, ptr %133, align 4, !tbaa !15
  %135 = and i32 %134, 1
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %138

137:                                              ; preds = %131
  store i32 -28, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

138:                                              ; preds = %131
  %139 = load ptr, ptr %43, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %139, i32 0, i32 2
  %141 = load i32, ptr %140, align 8, !tbaa !16
  %142 = and i32 %141, 2048
  %143 = icmp ne i32 %142, 0
  %144 = zext i1 %143 to i32
  %145 = load ptr, ptr %34, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.match_data, ptr %145, i32 0, i32 19
  store i32 %144, ptr %146, align 8, !tbaa !17
  store i32 %144, ptr %26, align 4, !tbaa !9
  %147 = load i32, ptr %15, align 4, !tbaa !9
  %148 = and i32 %147, 134217728
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %138
  br label %157

151:                                              ; preds = %138
  %152 = load i32, ptr %15, align 4, !tbaa !9
  %153 = and i32 %152, 32768
  %154 = icmp ne i32 %153, 0
  %155 = zext i1 %154 to i64
  %156 = select i1 %154, i32 1, i32 0
  br label %157

157:                                              ; preds = %151, %150
  %158 = phi i32 [ 2, %150 ], [ %156, %151 ]
  %159 = load ptr, ptr %34, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.match_data, ptr %159, i32 0, i32 34
  store i32 %158, ptr %160, align 8, !tbaa !20
  %161 = load i32, ptr %26, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %216

163:                                              ; preds = %157
  %164 = load i32, ptr %15, align 4, !tbaa !9
  %165 = and i32 %164, 8192
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %216

167:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  %169 = load i32, ptr %13, align 4, !tbaa !9
  %170 = call i32 @_pcre_valid_utf(ptr noundef %168, i32 noundef %169, ptr noundef %45)
  store i32 %170, ptr %46, align 4, !tbaa !9
  %171 = load i32, ptr %46, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %195

173:                                              ; preds = %167
  %174 = load i32, ptr %17, align 4, !tbaa !9
  %175 = icmp sge i32 %174, 2
  br i1 %175, label %176, label %183

176:                                              ; preds = %173
  %177 = load i32, ptr %45, align 4, !tbaa !9
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  %179 = getelementptr inbounds i32, ptr %178, i64 0
  store i32 %177, ptr %179, align 4, !tbaa !9
  %180 = load i32, ptr %46, align 4, !tbaa !9
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = getelementptr inbounds i32, ptr %181, i64 1
  store i32 %180, ptr %182, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %176, %173
  %184 = load i32, ptr %46, align 4, !tbaa !9
  %185 = icmp sle i32 %184, 5
  br i1 %185, label %186, label %191

186:                                              ; preds = %183
  %187 = load ptr, ptr %34, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.match_data, ptr %187, i32 0, i32 34
  %189 = load i32, ptr %188, align 8, !tbaa !20
  %190 = icmp sgt i32 %189, 1
  br label %191

191:                                              ; preds = %186, %183
  %192 = phi i1 [ false, %183 ], [ %190, %186 ]
  %193 = zext i1 %192 to i64
  %194 = select i1 %192, i32 -25, i32 -10
  store i32 %194, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %213

195:                                              ; preds = %167
  %196 = load i32, ptr %14, align 4, !tbaa !9
  %197 = icmp sgt i32 %196, 0
  br i1 %197, label %198, label %212

198:                                              ; preds = %195
  %199 = load i32, ptr %14, align 4, !tbaa !9
  %200 = load i32, ptr %13, align 4, !tbaa !9
  %201 = icmp slt i32 %199, %200
  br i1 %201, label %202, label %212

202:                                              ; preds = %198
  %203 = load ptr, ptr %12, align 8, !tbaa !5
  %204 = load i32, ptr %14, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds i8, ptr %203, i64 %205
  %207 = load i8, ptr %206, align 1, !tbaa !11
  %208 = zext i8 %207 to i32
  %209 = and i32 %208, 192
  %210 = icmp eq i32 %209, 128
  br i1 %210, label %211, label %212

211:                                              ; preds = %202
  store i32 -11, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %213

212:                                              ; preds = %202, %198, %195
  store i32 0, ptr %44, align 4
  br label %213

213:                                              ; preds = %212, %211, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  %214 = load i32, ptr %44, align 4
  switch i32 %214, label %1867 [
    i32 0, label %215
  ]

215:                                              ; preds = %213
  br label %216

216:                                              ; preds = %215, %163, %157
  %217 = load ptr, ptr %43, align 8, !tbaa !5
  %218 = load ptr, ptr %43, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %218, i32 0, i32 11
  %220 = load i16, ptr %219, align 2, !tbaa !21
  %221 = zext i16 %220 to i32
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i8, ptr %217, i64 %222
  %224 = load ptr, ptr %34, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.match_data, ptr %224, i32 0, i32 12
  store ptr %223, ptr %225, align 8, !tbaa !22
  %226 = load ptr, ptr %43, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %226, i32 0, i32 13
  %228 = load i16, ptr %227, align 2, !tbaa !23
  %229 = zext i16 %228 to i32
  %230 = load ptr, ptr %34, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.match_data, ptr %230, i32 0, i32 8
  store i32 %229, ptr %231, align 8, !tbaa !24
  %232 = load ptr, ptr %43, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %232, i32 0, i32 12
  %234 = load i16, ptr %233, align 4, !tbaa !25
  %235 = zext i16 %234 to i32
  %236 = load ptr, ptr %34, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.match_data, ptr %236, i32 0, i32 9
  store i32 %235, ptr %237, align 4, !tbaa !26
  store ptr null, ptr %42, align 8, !tbaa !5
  %238 = load ptr, ptr %34, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.match_data, ptr %238, i32 0, i32 1
  store i64 10000000, ptr %239, align 8, !tbaa !27
  %240 = load ptr, ptr %34, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.match_data, ptr %240, i32 0, i32 2
  store i64 10000000, ptr %241, align 8, !tbaa !28
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.match_data, ptr %242, i32 0, i32 42
  store ptr null, ptr %243, align 8, !tbaa !29
  %244 = load ptr, ptr %43, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %244, i32 0, i32 18
  %246 = load ptr, ptr %245, align 8, !tbaa !30
  store ptr %246, ptr %35, align 8, !tbaa !5
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = icmp ne ptr %247, null
  br i1 %248, label %249, label %299

249:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  %250 = load ptr, ptr %11, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.pcre_extra, ptr %250, i32 0, i32 0
  %252 = load i64, ptr %251, align 8, !tbaa !31
  store i64 %252, ptr %47, align 8, !tbaa !33
  %253 = load i64, ptr %47, align 8, !tbaa !33
  %254 = and i64 %253, 1
  %255 = icmp ne i64 %254, 0
  br i1 %255, label %256, label %260

256:                                              ; preds = %249
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.pcre_extra, ptr %257, i32 0, i32 1
  %259 = load ptr, ptr %258, align 8, !tbaa !34
  store ptr %259, ptr %42, align 8, !tbaa !5
  br label %260

260:                                              ; preds = %256, %249
  %261 = load i64, ptr %47, align 8, !tbaa !33
  %262 = and i64 %261, 2
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %264, label %270

264:                                              ; preds = %260
  %265 = load ptr, ptr %11, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.pcre_extra, ptr %265, i32 0, i32 2
  %267 = load i64, ptr %266, align 8, !tbaa !35
  %268 = load ptr, ptr %34, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.match_data, ptr %268, i32 0, i32 1
  store i64 %267, ptr %269, align 8, !tbaa !27
  br label %270

270:                                              ; preds = %264, %260
  %271 = load i64, ptr %47, align 8, !tbaa !33
  %272 = and i64 %271, 16
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %274, label %280

274:                                              ; preds = %270
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.pcre_extra, ptr %275, i32 0, i32 5
  %277 = load i64, ptr %276, align 8, !tbaa !36
  %278 = load ptr, ptr %34, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.match_data, ptr %278, i32 0, i32 2
  store i64 %277, ptr %279, align 8, !tbaa !28
  br label %280

280:                                              ; preds = %274, %270
  %281 = load i64, ptr %47, align 8, !tbaa !33
  %282 = and i64 %281, 4
  %283 = icmp ne i64 %282, 0
  br i1 %283, label %284, label %290

284:                                              ; preds = %280
  %285 = load ptr, ptr %11, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.pcre_extra, ptr %285, i32 0, i32 3
  %287 = load ptr, ptr %286, align 8, !tbaa !37
  %288 = load ptr, ptr %34, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.match_data, ptr %288, i32 0, i32 42
  store ptr %287, ptr %289, align 8, !tbaa !29
  br label %290

290:                                              ; preds = %284, %280
  %291 = load i64, ptr %47, align 8, !tbaa !33
  %292 = and i64 %291, 8
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %294, label %298

294:                                              ; preds = %290
  %295 = load ptr, ptr %11, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.pcre_extra, ptr %295, i32 0, i32 4
  %297 = load ptr, ptr %296, align 8, !tbaa !38
  store ptr %297, ptr %35, align 8, !tbaa !5
  br label %298

298:                                              ; preds = %294, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  br label %299

299:                                              ; preds = %298, %216
  %300 = load ptr, ptr %43, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %300, i32 0, i32 3
  %302 = load i32, ptr %301, align 4, !tbaa !15
  %303 = and i32 %302, 8192
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %321

305:                                              ; preds = %299
  %306 = load ptr, ptr %43, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %306, i32 0, i32 4
  %308 = load i32, ptr %307, align 8, !tbaa !39
  %309 = zext i32 %308 to i64
  %310 = load ptr, ptr %34, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.match_data, ptr %310, i32 0, i32 1
  %312 = load i64, ptr %311, align 8, !tbaa !27
  %313 = icmp ult i64 %309, %312
  br i1 %313, label %314, label %321

314:                                              ; preds = %305
  %315 = load ptr, ptr %43, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %315, i32 0, i32 4
  %317 = load i32, ptr %316, align 8, !tbaa !39
  %318 = zext i32 %317 to i64
  %319 = load ptr, ptr %34, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.match_data, ptr %319, i32 0, i32 1
  store i64 %318, ptr %320, align 8, !tbaa !27
  br label %321

321:                                              ; preds = %314, %305, %299
  %322 = load ptr, ptr %43, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %322, i32 0, i32 3
  %324 = load i32, ptr %323, align 4, !tbaa !15
  %325 = and i32 %324, 16384
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %343

327:                                              ; preds = %321
  %328 = load ptr, ptr %43, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %328, i32 0, i32 5
  %330 = load i32, ptr %329, align 4, !tbaa !40
  %331 = zext i32 %330 to i64
  %332 = load ptr, ptr %34, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.match_data, ptr %332, i32 0, i32 2
  %334 = load i64, ptr %333, align 8, !tbaa !28
  %335 = icmp ult i64 %331, %334
  br i1 %335, label %336, label %343

336:                                              ; preds = %327
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %337, i32 0, i32 5
  %339 = load i32, ptr %338, align 4, !tbaa !40
  %340 = zext i32 %339 to i64
  %341 = load ptr, ptr %34, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.match_data, ptr %341, i32 0, i32 2
  store i64 %340, ptr %342, align 8, !tbaa !28
  br label %343

343:                                              ; preds = %336, %327, %321
  %344 = load ptr, ptr %35, align 8, !tbaa !5
  %345 = icmp eq ptr %344, null
  br i1 %345, label %346, label %347

346:                                              ; preds = %343
  store ptr @_pcre_default_tables, ptr %35, align 8, !tbaa !5
  br label %347

347:                                              ; preds = %346, %343
  %348 = load ptr, ptr %43, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %348, i32 0, i32 2
  %350 = load i32, ptr %349, align 8, !tbaa !16
  %351 = load i32, ptr %15, align 4, !tbaa !9
  %352 = or i32 %350, %351
  %353 = and i32 %352, 16
  %354 = icmp ne i32 %353, 0
  %355 = zext i1 %354 to i32
  store i32 %355, ptr %23, align 4, !tbaa !9
  %356 = load ptr, ptr %43, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %356, i32 0, i32 3
  %358 = load i32, ptr %357, align 4, !tbaa !15
  %359 = and i32 %358, 256
  %360 = icmp ne i32 %359, 0
  %361 = zext i1 %360 to i32
  store i32 %361, ptr %24, align 4, !tbaa !9
  %362 = load ptr, ptr %43, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %362, i32 0, i32 2
  %364 = load i32, ptr %363, align 8, !tbaa !16
  %365 = and i32 %364, 262144
  %366 = icmp ne i32 %365, 0
  %367 = zext i1 %366 to i32
  store i32 %367, ptr %25, align 4, !tbaa !9
  %368 = load ptr, ptr %43, align 8, !tbaa !5
  %369 = load ptr, ptr %43, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %369, i32 0, i32 11
  %371 = load i16, ptr %370, align 2, !tbaa !21
  %372 = zext i16 %371 to i32
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i8, ptr %368, i64 %373
  %375 = load ptr, ptr %43, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %375, i32 0, i32 13
  %377 = load i16, ptr %376, align 2, !tbaa !23
  %378 = zext i16 %377 to i32
  %379 = load ptr, ptr %43, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %379, i32 0, i32 12
  %381 = load i16, ptr %380, align 4, !tbaa !25
  %382 = zext i16 %381 to i32
  %383 = mul nsw i32 %378, %382
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i8, ptr %374, i64 %384
  %386 = load ptr, ptr %34, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.match_data, ptr %386, i32 0, i32 28
  store ptr %385, ptr %387, align 8, !tbaa !41
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  %389 = load ptr, ptr %34, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.match_data, ptr %389, i32 0, i32 29
  store ptr %388, ptr %390, align 8, !tbaa !42
  %391 = load i32, ptr %14, align 4, !tbaa !9
  %392 = load ptr, ptr %34, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.match_data, ptr %392, i32 0, i32 37
  store i32 %391, ptr %393, align 4, !tbaa !43
  %394 = load ptr, ptr %34, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.match_data, ptr %394, i32 0, i32 29
  %396 = load ptr, ptr %395, align 8, !tbaa !42
  %397 = load i32, ptr %13, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i8, ptr %396, i64 %398
  %400 = load ptr, ptr %34, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.match_data, ptr %400, i32 0, i32 30
  store ptr %399, ptr %401, align 8, !tbaa !44
  %402 = load ptr, ptr %34, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.match_data, ptr %402, i32 0, i32 30
  %404 = load ptr, ptr %403, align 8, !tbaa !44
  store ptr %404, ptr %38, align 8, !tbaa !5
  %405 = load ptr, ptr %43, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %405, i32 0, i32 2
  %407 = load i32, ptr %406, align 8, !tbaa !16
  %408 = and i32 %407, 32
  %409 = icmp ne i32 %408, 0
  %410 = zext i1 %409 to i32
  %411 = load ptr, ptr %34, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.match_data, ptr %411, i32 0, i32 22
  store i32 %410, ptr %412, align 4, !tbaa !45
  %413 = load ptr, ptr %43, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %413, i32 0, i32 2
  %415 = load i32, ptr %414, align 8, !tbaa !16
  %416 = and i32 %415, 536870912
  %417 = icmp ne i32 %416, 0
  %418 = zext i1 %417 to i32
  %419 = load ptr, ptr %34, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.match_data, ptr %419, i32 0, i32 21
  store i32 %418, ptr %420, align 8, !tbaa !46
  %421 = load ptr, ptr %43, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %421, i32 0, i32 2
  %423 = load i32, ptr %422, align 8, !tbaa !16
  %424 = and i32 %423, 33554432
  %425 = icmp ne i32 %424, 0
  %426 = zext i1 %425 to i32
  %427 = load ptr, ptr %34, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.match_data, ptr %427, i32 0, i32 20
  store i32 %426, ptr %428, align 4, !tbaa !47
  %429 = load ptr, ptr %34, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.match_data, ptr %429, i32 0, i32 11
  store i32 0, ptr %430, align 4, !tbaa !48
  %431 = load i32, ptr %15, align 4, !tbaa !9
  %432 = and i32 %431, 128
  %433 = icmp ne i32 %432, 0
  %434 = zext i1 %433 to i32
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.match_data, ptr %435, i32 0, i32 17
  store i32 %434, ptr %436, align 8, !tbaa !49
  %437 = load i32, ptr %15, align 4, !tbaa !9
  %438 = and i32 %437, 256
  %439 = icmp ne i32 %438, 0
  %440 = zext i1 %439 to i32
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.match_data, ptr %441, i32 0, i32 18
  store i32 %440, ptr %442, align 4, !tbaa !50
  %443 = load i32, ptr %15, align 4, !tbaa !9
  %444 = and i32 %443, 1024
  %445 = icmp ne i32 %444, 0
  %446 = zext i1 %445 to i32
  %447 = load ptr, ptr %34, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.match_data, ptr %447, i32 0, i32 23
  store i32 %446, ptr %448, align 8, !tbaa !51
  %449 = load i32, ptr %15, align 4, !tbaa !9
  %450 = and i32 %449, 268435456
  %451 = icmp ne i32 %450, 0
  %452 = zext i1 %451 to i32
  %453 = load ptr, ptr %34, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.match_data, ptr %453, i32 0, i32 24
  store i32 %452, ptr %454, align 4, !tbaa !52
  %455 = load ptr, ptr %34, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.match_data, ptr %455, i32 0, i32 25
  store i32 0, ptr %456, align 8, !tbaa !53
  %457 = load ptr, ptr %34, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.match_data, ptr %457, i32 0, i32 44
  store ptr null, ptr %458, align 8, !tbaa !54
  %459 = load ptr, ptr %34, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.match_data, ptr %459, i32 0, i32 43
  store ptr null, ptr %460, align 8, !tbaa !55
  %461 = load ptr, ptr %34, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.match_data, ptr %461, i32 0, i32 41
  store ptr null, ptr %462, align 8, !tbaa !56
  %463 = load ptr, ptr %43, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %463, i32 0, i32 3
  %465 = load i32, ptr %464, align 4, !tbaa !15
  %466 = and i32 %465, 4096
  %467 = icmp ne i32 %466, 0
  %468 = zext i1 %467 to i32
  %469 = load ptr, ptr %34, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.match_data, ptr %469, i32 0, i32 27
  store i32 %468, ptr %470, align 8, !tbaa !57
  %471 = load ptr, ptr %35, align 8, !tbaa !5
  %472 = getelementptr inbounds i8, ptr %471, i64 0
  %473 = load ptr, ptr %34, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.match_data, ptr %473, i32 0, i32 14
  store ptr %472, ptr %474, align 8, !tbaa !58
  %475 = load ptr, ptr %35, align 8, !tbaa !5
  %476 = getelementptr inbounds i8, ptr %475, i64 256
  %477 = load ptr, ptr %34, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.match_data, ptr %477, i32 0, i32 15
  store ptr %476, ptr %478, align 8, !tbaa !59
  %479 = load ptr, ptr %35, align 8, !tbaa !5
  %480 = getelementptr inbounds i8, ptr %479, i64 832
  %481 = load ptr, ptr %34, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.match_data, ptr %481, i32 0, i32 16
  store ptr %480, ptr %482, align 8, !tbaa !60
  %483 = load i32, ptr %15, align 4, !tbaa !9
  %484 = and i32 %483, 25165824
  switch i32 %484, label %510 [
    i32 0, label %485
    i32 8388608, label %504
    i32 16777216, label %507
  ]

485:                                              ; preds = %347
  %486 = load ptr, ptr %43, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %486, i32 0, i32 2
  %488 = load i32, ptr %487, align 8, !tbaa !16
  %489 = and i32 %488, 25165824
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %500

491:                                              ; preds = %485
  %492 = load ptr, ptr %43, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %492, i32 0, i32 2
  %494 = load i32, ptr %493, align 8, !tbaa !16
  %495 = and i32 %494, 8388608
  %496 = icmp ne i32 %495, 0
  %497 = zext i1 %496 to i32
  %498 = load ptr, ptr %34, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.match_data, ptr %498, i32 0, i32 26
  store i32 %497, ptr %499, align 4, !tbaa !61
  br label %503

500:                                              ; preds = %485
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.match_data, ptr %501, i32 0, i32 26
  store i32 0, ptr %502, align 4, !tbaa !61
  br label %503

503:                                              ; preds = %500, %491
  br label %511

504:                                              ; preds = %347
  %505 = load ptr, ptr %34, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.match_data, ptr %505, i32 0, i32 26
  store i32 1, ptr %506, align 4, !tbaa !61
  br label %511

507:                                              ; preds = %347
  %508 = load ptr, ptr %34, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.match_data, ptr %508, i32 0, i32 26
  store i32 0, ptr %509, align 4, !tbaa !61
  br label %511

510:                                              ; preds = %347
  store i32 -23, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

511:                                              ; preds = %507, %504, %503
  %512 = load i32, ptr %15, align 4, !tbaa !9
  %513 = and i32 %512, 7340032
  %514 = icmp eq i32 %513, 0
  br i1 %514, label %515, label %519

515:                                              ; preds = %511
  %516 = load ptr, ptr %43, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %516, i32 0, i32 2
  %518 = load i32, ptr %517, align 8, !tbaa !16
  br label %521

519:                                              ; preds = %511
  %520 = load i32, ptr %15, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %519, %515
  %522 = phi i32 [ %518, %515 ], [ %520, %519 ]
  %523 = and i32 %522, 7340032
  switch i32 %523, label %530 [
    i32 0, label %524
    i32 1048576, label %525
    i32 2097152, label %526
    i32 3145728, label %527
    i32 4194304, label %528
    i32 5242880, label %529
  ]

524:                                              ; preds = %521
  store i32 10, ptr %21, align 4, !tbaa !9
  br label %531

525:                                              ; preds = %521
  store i32 13, ptr %21, align 4, !tbaa !9
  br label %531

526:                                              ; preds = %521
  store i32 10, ptr %21, align 4, !tbaa !9
  br label %531

527:                                              ; preds = %521
  store i32 3338, ptr %21, align 4, !tbaa !9
  br label %531

528:                                              ; preds = %521
  store i32 -1, ptr %21, align 4, !tbaa !9
  br label %531

529:                                              ; preds = %521
  store i32 -2, ptr %21, align 4, !tbaa !9
  br label %531

530:                                              ; preds = %521
  store i32 -23, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

531:                                              ; preds = %529, %528, %527, %526, %525, %524
  %532 = load i32, ptr %21, align 4, !tbaa !9
  %533 = icmp eq i32 %532, -2
  br i1 %533, label %534, label %537

534:                                              ; preds = %531
  %535 = load ptr, ptr %34, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.match_data, ptr %535, i32 0, i32 6
  store i32 2, ptr %536, align 8, !tbaa !62
  br label %574

537:                                              ; preds = %531
  %538 = load i32, ptr %21, align 4, !tbaa !9
  %539 = icmp slt i32 %538, 0
  br i1 %539, label %540, label %543

540:                                              ; preds = %537
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.match_data, ptr %541, i32 0, i32 6
  store i32 1, ptr %542, align 8, !tbaa !62
  br label %573

543:                                              ; preds = %537
  %544 = load ptr, ptr %34, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.match_data, ptr %544, i32 0, i32 6
  store i32 0, ptr %545, align 8, !tbaa !62
  %546 = load i32, ptr %21, align 4, !tbaa !9
  %547 = icmp sgt i32 %546, 255
  br i1 %547, label %548, label %564

548:                                              ; preds = %543
  %549 = load ptr, ptr %34, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.match_data, ptr %549, i32 0, i32 7
  store i32 2, ptr %550, align 4, !tbaa !63
  %551 = load i32, ptr %21, align 4, !tbaa !9
  %552 = ashr i32 %551, 8
  %553 = and i32 %552, 255
  %554 = trunc i32 %553 to i8
  %555 = load ptr, ptr %34, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.match_data, ptr %555, i32 0, i32 13
  %557 = getelementptr inbounds [4 x i8], ptr %556, i64 0, i64 0
  store i8 %554, ptr %557, align 8, !tbaa !11
  %558 = load i32, ptr %21, align 4, !tbaa !9
  %559 = and i32 %558, 255
  %560 = trunc i32 %559 to i8
  %561 = load ptr, ptr %34, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.match_data, ptr %561, i32 0, i32 13
  %563 = getelementptr inbounds [4 x i8], ptr %562, i64 0, i64 1
  store i8 %560, ptr %563, align 1, !tbaa !11
  br label %572

564:                                              ; preds = %543
  %565 = load ptr, ptr %34, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.match_data, ptr %565, i32 0, i32 7
  store i32 1, ptr %566, align 4, !tbaa !63
  %567 = load i32, ptr %21, align 4, !tbaa !9
  %568 = trunc i32 %567 to i8
  %569 = load ptr, ptr %34, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.match_data, ptr %569, i32 0, i32 13
  %571 = getelementptr inbounds [4 x i8], ptr %570, i64 0, i64 0
  store i8 %568, ptr %571, align 8, !tbaa !11
  br label %572

572:                                              ; preds = %564, %548
  br label %573

573:                                              ; preds = %572, %540
  br label %574

574:                                              ; preds = %573, %534
  %575 = load ptr, ptr %34, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.match_data, ptr %575, i32 0, i32 34
  %577 = load i32, ptr %576, align 8, !tbaa !20
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %586

579:                                              ; preds = %574
  %580 = load ptr, ptr %43, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %580, i32 0, i32 3
  %582 = load i32, ptr %581, align 4, !tbaa !15
  %583 = and i32 %582, 512
  %584 = icmp ne i32 %583, 0
  br i1 %584, label %585, label %586

585:                                              ; preds = %579
  store i32 -13, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

586:                                              ; preds = %579, %574
  %587 = load i32, ptr %17, align 4, !tbaa !9
  %588 = load i32, ptr %17, align 4, !tbaa !9
  %589 = srem i32 %588, 3
  %590 = sub nsw i32 %587, %589
  store i32 %590, ptr %19, align 4, !tbaa !9
  %591 = load i32, ptr %19, align 4, !tbaa !9
  %592 = mul nsw i32 2, %591
  %593 = sdiv i32 %592, 3
  store i32 %593, ptr %20, align 4, !tbaa !9
  %594 = load ptr, ptr %43, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %594, i32 0, i32 10
  %596 = load i16, ptr %595, align 8, !tbaa !64
  %597 = zext i16 %596 to i32
  %598 = icmp sgt i32 %597, 0
  br i1 %598, label %599, label %627

599:                                              ; preds = %586
  %600 = load ptr, ptr %43, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %600, i32 0, i32 10
  %602 = load i16, ptr %601, align 8, !tbaa !64
  %603 = zext i16 %602 to i32
  %604 = load i32, ptr %19, align 4, !tbaa !9
  %605 = sdiv i32 %604, 3
  %606 = icmp sge i32 %603, %605
  br i1 %606, label %607, label %627

607:                                              ; preds = %599
  %608 = load ptr, ptr %43, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %608, i32 0, i32 10
  %610 = load i16, ptr %609, align 8, !tbaa !64
  %611 = zext i16 %610 to i32
  %612 = mul nsw i32 %611, 3
  %613 = add nsw i32 %612, 3
  store i32 %613, ptr %19, align 4, !tbaa !9
  %614 = load ptr, ptr @pcre_malloc, align 8, !tbaa !5
  %615 = load i32, ptr %19, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = mul i64 %616, 4
  %618 = call ptr %614(i64 noundef %617)
  %619 = load ptr, ptr %34, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.match_data, ptr %619, i32 0, i32 3
  store ptr %618, ptr %620, align 8, !tbaa !65
  %621 = load ptr, ptr %34, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.match_data, ptr %621, i32 0, i32 3
  %623 = load ptr, ptr %622, align 8, !tbaa !65
  %624 = icmp eq ptr %623, null
  br i1 %624, label %625, label %626

625:                                              ; preds = %607
  store i32 -6, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

626:                                              ; preds = %607
  store i32 1, ptr %22, align 4, !tbaa !9
  br label %631

627:                                              ; preds = %599, %586
  %628 = load ptr, ptr %16, align 8, !tbaa !5
  %629 = load ptr, ptr %34, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.match_data, ptr %629, i32 0, i32 3
  store ptr %628, ptr %630, align 8, !tbaa !65
  br label %631

631:                                              ; preds = %627, %626
  %632 = load i32, ptr %19, align 4, !tbaa !9
  %633 = load ptr, ptr %34, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.match_data, ptr %633, i32 0, i32 4
  store i32 %632, ptr %634, align 8, !tbaa !66
  %635 = load i32, ptr %19, align 4, !tbaa !9
  %636 = mul nsw i32 2, %635
  %637 = sdiv i32 %636, 3
  %638 = load ptr, ptr %34, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.match_data, ptr %638, i32 0, i32 5
  store i32 %637, ptr %639, align 4, !tbaa !67
  %640 = load ptr, ptr %34, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.match_data, ptr %640, i32 0, i32 36
  store i32 0, ptr %641, align 8, !tbaa !68
  %642 = load ptr, ptr %34, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.match_data, ptr %642, i32 0, i32 3
  %644 = load ptr, ptr %643, align 8, !tbaa !65
  %645 = icmp ne ptr %644, null
  br i1 %645, label %646, label %697

646:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  %647 = load ptr, ptr %34, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.match_data, ptr %647, i32 0, i32 3
  %649 = load ptr, ptr %648, align 8, !tbaa !65
  %650 = load i32, ptr %19, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds i32, ptr %649, i64 %651
  store ptr %652, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  %653 = load ptr, ptr %48, align 8, !tbaa !5
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %654, i32 0, i32 9
  %656 = load i16, ptr %655, align 2, !tbaa !69
  %657 = zext i16 %656 to i32
  %658 = sext i32 %657 to i64
  %659 = sub i64 0, %658
  %660 = getelementptr inbounds i32, ptr %653, i64 %659
  store ptr %660, ptr %49, align 8, !tbaa !5
  %661 = load ptr, ptr %49, align 8, !tbaa !5
  %662 = load ptr, ptr %34, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.match_data, ptr %662, i32 0, i32 3
  %664 = load ptr, ptr %663, align 8, !tbaa !65
  %665 = getelementptr inbounds i32, ptr %664, i64 2
  %666 = icmp ult ptr %661, %665
  br i1 %666, label %667, label %672

667:                                              ; preds = %646
  %668 = load ptr, ptr %34, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.match_data, ptr %668, i32 0, i32 3
  %670 = load ptr, ptr %669, align 8, !tbaa !65
  %671 = getelementptr inbounds i32, ptr %670, i64 2
  store ptr %671, ptr %49, align 8, !tbaa !5
  br label %672

672:                                              ; preds = %667, %646
  br label %673

673:                                              ; preds = %678, %672
  %674 = load ptr, ptr %48, align 8, !tbaa !5
  %675 = getelementptr inbounds i32, ptr %674, i32 -1
  store ptr %675, ptr %48, align 8, !tbaa !5
  %676 = load ptr, ptr %49, align 8, !tbaa !5
  %677 = icmp uge ptr %675, %676
  br i1 %677, label %678, label %680

678:                                              ; preds = %673
  %679 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %679, align 4, !tbaa !9
  br label %673, !llvm.loop !70

680:                                              ; preds = %673
  %681 = load i32, ptr %17, align 4, !tbaa !9
  %682 = icmp sgt i32 %681, 0
  br i1 %682, label %683, label %688

683:                                              ; preds = %680
  %684 = load ptr, ptr %34, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.match_data, ptr %684, i32 0, i32 3
  %686 = load ptr, ptr %685, align 8, !tbaa !65
  %687 = getelementptr inbounds i32, ptr %686, i64 0
  store i32 -1, ptr %687, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %683, %680
  %689 = load i32, ptr %17, align 4, !tbaa !9
  %690 = icmp sgt i32 %689, 1
  br i1 %690, label %691, label %696

691:                                              ; preds = %688
  %692 = load ptr, ptr %34, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.match_data, ptr %692, i32 0, i32 3
  %694 = load ptr, ptr %693, align 8, !tbaa !65
  %695 = getelementptr inbounds i32, ptr %694, i64 1
  store i32 -1, ptr %695, align 4, !tbaa !9
  br label %696

696:                                              ; preds = %691, %688
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  br label %697

697:                                              ; preds = %696, %631
  %698 = load i32, ptr %23, align 4, !tbaa !9
  %699 = icmp ne i32 %698, 0
  br i1 %699, label %743, label %700

700:                                              ; preds = %697
  %701 = load ptr, ptr %43, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %701, i32 0, i32 3
  %703 = load i32, ptr %702, align 4, !tbaa !15
  %704 = and i32 %703, 16
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %706, label %725

706:                                              ; preds = %700
  store i32 1, ptr %27, align 4, !tbaa !9
  %707 = load ptr, ptr %43, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %707, i32 0, i32 6
  %709 = load i16, ptr %708, align 8, !tbaa !72
  %710 = trunc i16 %709 to i8
  store i8 %710, ptr %30, align 1, !tbaa !11
  store i8 %710, ptr %29, align 1, !tbaa !11
  %711 = load ptr, ptr %43, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %711, i32 0, i32 3
  %713 = load i32, ptr %712, align 4, !tbaa !15
  %714 = and i32 %713, 32
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %716, label %724

716:                                              ; preds = %706
  %717 = load ptr, ptr %34, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.match_data, ptr %717, i32 0, i32 15
  %719 = load ptr, ptr %718, align 8, !tbaa !59
  %720 = load i8, ptr %29, align 1, !tbaa !11
  %721 = zext i8 %720 to i64
  %722 = getelementptr inbounds i8, ptr %719, i64 %721
  %723 = load i8, ptr %722, align 1, !tbaa !11
  store i8 %723, ptr %30, align 1, !tbaa !11
  br label %724

724:                                              ; preds = %716, %706
  br label %742

725:                                              ; preds = %700
  %726 = load i32, ptr %24, align 4, !tbaa !9
  %727 = icmp ne i32 %726, 0
  br i1 %727, label %741, label %728

728:                                              ; preds = %725
  %729 = load ptr, ptr %42, align 8, !tbaa !5
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %741

731:                                              ; preds = %728
  %732 = load ptr, ptr %42, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.pcre_study_data, ptr %732, i32 0, i32 1
  %734 = load i32, ptr %733, align 4, !tbaa !73
  %735 = and i32 %734, 1
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %741

737:                                              ; preds = %731
  %738 = load ptr, ptr %42, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.pcre_study_data, ptr %738, i32 0, i32 2
  %740 = getelementptr inbounds [32 x i8], ptr %739, i64 0, i64 0
  store ptr %740, ptr %36, align 8, !tbaa !5
  br label %741

741:                                              ; preds = %737, %731, %728, %725
  br label %742

742:                                              ; preds = %741, %724
  br label %743

743:                                              ; preds = %742, %697
  %744 = load ptr, ptr %43, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %744, i32 0, i32 3
  %746 = load i32, ptr %745, align 4, !tbaa !15
  %747 = and i32 %746, 64
  %748 = icmp ne i32 %747, 0
  br i1 %748, label %749, label %768

749:                                              ; preds = %743
  store i32 1, ptr %28, align 4, !tbaa !9
  %750 = load ptr, ptr %43, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %750, i32 0, i32 7
  %752 = load i16, ptr %751, align 2, !tbaa !75
  %753 = trunc i16 %752 to i8
  store i8 %753, ptr %32, align 1, !tbaa !11
  store i8 %753, ptr %31, align 1, !tbaa !11
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %754, i32 0, i32 3
  %756 = load i32, ptr %755, align 4, !tbaa !15
  %757 = and i32 %756, 128
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %767

759:                                              ; preds = %749
  %760 = load ptr, ptr %34, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.match_data, ptr %760, i32 0, i32 15
  %762 = load ptr, ptr %761, align 8, !tbaa !59
  %763 = load i8, ptr %31, align 1, !tbaa !11
  %764 = zext i8 %763 to i64
  %765 = getelementptr inbounds i8, ptr %762, i64 %764
  %766 = load i8, ptr %765, align 1, !tbaa !11
  store i8 %766, ptr %32, align 1, !tbaa !11
  br label %767

767:                                              ; preds = %759, %749
  br label %768

768:                                              ; preds = %767, %743
  br label %769

769:                                              ; preds = %1643, %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  %770 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %770, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  %771 = load i32, ptr %25, align 4, !tbaa !9
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %969

773:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  %774 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %774, ptr %52, align 8, !tbaa !5
  %775 = load i32, ptr %26, align 4, !tbaa !9
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %777, label %880

777:                                              ; preds = %773
  br label %778

778:                                              ; preds = %878, %777
  %779 = load ptr, ptr %52, align 8, !tbaa !5
  %780 = load ptr, ptr %34, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.match_data, ptr %780, i32 0, i32 30
  %782 = load ptr, ptr %781, align 8, !tbaa !44
  %783 = icmp ult ptr %779, %782
  br i1 %783, label %784, label %858

784:                                              ; preds = %778
  %785 = load ptr, ptr %34, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.match_data, ptr %785, i32 0, i32 6
  %787 = load i32, ptr %786, align 8, !tbaa !62
  %788 = icmp ne i32 %787, 0
  br i1 %788, label %789, label %811

789:                                              ; preds = %784
  %790 = load ptr, ptr %52, align 8, !tbaa !5
  %791 = load ptr, ptr %34, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.match_data, ptr %791, i32 0, i32 30
  %793 = load ptr, ptr %792, align 8, !tbaa !44
  %794 = icmp ult ptr %790, %793
  br i1 %794, label %795, label %808

795:                                              ; preds = %789
  %796 = load ptr, ptr %52, align 8, !tbaa !5
  %797 = load ptr, ptr %34, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.match_data, ptr %797, i32 0, i32 6
  %799 = load i32, ptr %798, align 8, !tbaa !62
  %800 = load ptr, ptr %34, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.match_data, ptr %800, i32 0, i32 30
  %802 = load ptr, ptr %801, align 8, !tbaa !44
  %803 = load ptr, ptr %34, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.match_data, ptr %803, i32 0, i32 7
  %805 = load i32, ptr %26, align 4, !tbaa !9
  %806 = call i32 @_pcre_is_newline(ptr noundef %796, i32 noundef %799, ptr noundef %802, ptr noundef %804, i32 noundef %805)
  %807 = icmp ne i32 %806, 0
  br label %808

808:                                              ; preds = %795, %789
  %809 = phi i1 [ false, %789 ], [ %807, %795 ]
  %810 = zext i1 %809 to i32
  br label %854

811:                                              ; preds = %784
  %812 = load ptr, ptr %52, align 8, !tbaa !5
  %813 = load ptr, ptr %34, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.match_data, ptr %813, i32 0, i32 30
  %815 = load ptr, ptr %814, align 8, !tbaa !44
  %816 = load ptr, ptr %34, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.match_data, ptr %816, i32 0, i32 7
  %818 = load i32, ptr %817, align 4, !tbaa !63
  %819 = sext i32 %818 to i64
  %820 = sub i64 0, %819
  %821 = getelementptr inbounds i8, ptr %815, i64 %820
  %822 = icmp ule ptr %812, %821
  br i1 %822, label %823, label %851

823:                                              ; preds = %811
  %824 = load ptr, ptr %52, align 8, !tbaa !5
  %825 = load i8, ptr %824, align 1, !tbaa !11
  %826 = zext i8 %825 to i32
  %827 = load ptr, ptr %34, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.match_data, ptr %827, i32 0, i32 13
  %829 = getelementptr inbounds [4 x i8], ptr %828, i64 0, i64 0
  %830 = load i8, ptr %829, align 8, !tbaa !11
  %831 = zext i8 %830 to i32
  %832 = icmp eq i32 %826, %831
  br i1 %832, label %833, label %851

833:                                              ; preds = %823
  %834 = load ptr, ptr %34, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.match_data, ptr %834, i32 0, i32 7
  %836 = load i32, ptr %835, align 4, !tbaa !63
  %837 = icmp eq i32 %836, 1
  br i1 %837, label %849, label %838

838:                                              ; preds = %833
  %839 = load ptr, ptr %52, align 8, !tbaa !5
  %840 = getelementptr inbounds i8, ptr %839, i64 1
  %841 = load i8, ptr %840, align 1, !tbaa !11
  %842 = zext i8 %841 to i32
  %843 = load ptr, ptr %34, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.match_data, ptr %843, i32 0, i32 13
  %845 = getelementptr inbounds [4 x i8], ptr %844, i64 0, i64 1
  %846 = load i8, ptr %845, align 1, !tbaa !11
  %847 = zext i8 %846 to i32
  %848 = icmp eq i32 %842, %847
  br label %849

849:                                              ; preds = %838, %833
  %850 = phi i1 [ true, %833 ], [ %848, %838 ]
  br label %851

851:                                              ; preds = %849, %823, %811
  %852 = phi i1 [ false, %823 ], [ false, %811 ], [ %850, %849 ]
  %853 = zext i1 %852 to i32
  br label %854

854:                                              ; preds = %851, %808
  %855 = phi i32 [ %810, %808 ], [ %853, %851 ]
  %856 = icmp ne i32 %855, 0
  %857 = xor i1 %856, true
  br label %858

858:                                              ; preds = %854, %778
  %859 = phi i1 [ false, %778 ], [ %857, %854 ]
  br i1 %859, label %860, label %879

860:                                              ; preds = %858
  %861 = load ptr, ptr %52, align 8, !tbaa !5
  %862 = getelementptr inbounds i8, ptr %861, i32 1
  store ptr %862, ptr %52, align 8, !tbaa !5
  br label %863

863:                                              ; preds = %875, %860
  %864 = load ptr, ptr %52, align 8, !tbaa !5
  %865 = load ptr, ptr %38, align 8, !tbaa !5
  %866 = icmp ult ptr %864, %865
  br i1 %866, label %867, label %873

867:                                              ; preds = %863
  %868 = load ptr, ptr %52, align 8, !tbaa !5
  %869 = load i8, ptr %868, align 1, !tbaa !11
  %870 = zext i8 %869 to i32
  %871 = and i32 %870, 192
  %872 = icmp eq i32 %871, 128
  br label %873

873:                                              ; preds = %867, %863
  %874 = phi i1 [ false, %863 ], [ %872, %867 ]
  br i1 %874, label %875, label %878

875:                                              ; preds = %873
  %876 = load ptr, ptr %52, align 8, !tbaa !5
  %877 = getelementptr inbounds i8, ptr %876, i32 1
  store ptr %877, ptr %52, align 8, !tbaa !5
  br label %863, !llvm.loop !76

878:                                              ; preds = %873
  br label %778, !llvm.loop !77

879:                                              ; preds = %858
  br label %967

880:                                              ; preds = %773
  br label %881

881:                                              ; preds = %963, %880
  %882 = load ptr, ptr %52, align 8, !tbaa !5
  %883 = load ptr, ptr %34, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.match_data, ptr %883, i32 0, i32 30
  %885 = load ptr, ptr %884, align 8, !tbaa !44
  %886 = icmp ult ptr %882, %885
  br i1 %886, label %887, label %961

887:                                              ; preds = %881
  %888 = load ptr, ptr %34, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.match_data, ptr %888, i32 0, i32 6
  %890 = load i32, ptr %889, align 8, !tbaa !62
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %914

892:                                              ; preds = %887
  %893 = load ptr, ptr %52, align 8, !tbaa !5
  %894 = load ptr, ptr %34, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.match_data, ptr %894, i32 0, i32 30
  %896 = load ptr, ptr %895, align 8, !tbaa !44
  %897 = icmp ult ptr %893, %896
  br i1 %897, label %898, label %911

898:                                              ; preds = %892
  %899 = load ptr, ptr %52, align 8, !tbaa !5
  %900 = load ptr, ptr %34, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.match_data, ptr %900, i32 0, i32 6
  %902 = load i32, ptr %901, align 8, !tbaa !62
  %903 = load ptr, ptr %34, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.match_data, ptr %903, i32 0, i32 30
  %905 = load ptr, ptr %904, align 8, !tbaa !44
  %906 = load ptr, ptr %34, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.match_data, ptr %906, i32 0, i32 7
  %908 = load i32, ptr %26, align 4, !tbaa !9
  %909 = call i32 @_pcre_is_newline(ptr noundef %899, i32 noundef %902, ptr noundef %905, ptr noundef %907, i32 noundef %908)
  %910 = icmp ne i32 %909, 0
  br label %911

911:                                              ; preds = %898, %892
  %912 = phi i1 [ false, %892 ], [ %910, %898 ]
  %913 = zext i1 %912 to i32
  br label %957

914:                                              ; preds = %887
  %915 = load ptr, ptr %52, align 8, !tbaa !5
  %916 = load ptr, ptr %34, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.match_data, ptr %916, i32 0, i32 30
  %918 = load ptr, ptr %917, align 8, !tbaa !44
  %919 = load ptr, ptr %34, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.match_data, ptr %919, i32 0, i32 7
  %921 = load i32, ptr %920, align 4, !tbaa !63
  %922 = sext i32 %921 to i64
  %923 = sub i64 0, %922
  %924 = getelementptr inbounds i8, ptr %918, i64 %923
  %925 = icmp ule ptr %915, %924
  br i1 %925, label %926, label %954

926:                                              ; preds = %914
  %927 = load ptr, ptr %52, align 8, !tbaa !5
  %928 = load i8, ptr %927, align 1, !tbaa !11
  %929 = zext i8 %928 to i32
  %930 = load ptr, ptr %34, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.match_data, ptr %930, i32 0, i32 13
  %932 = getelementptr inbounds [4 x i8], ptr %931, i64 0, i64 0
  %933 = load i8, ptr %932, align 8, !tbaa !11
  %934 = zext i8 %933 to i32
  %935 = icmp eq i32 %929, %934
  br i1 %935, label %936, label %954

936:                                              ; preds = %926
  %937 = load ptr, ptr %34, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.match_data, ptr %937, i32 0, i32 7
  %939 = load i32, ptr %938, align 4, !tbaa !63
  %940 = icmp eq i32 %939, 1
  br i1 %940, label %952, label %941

941:                                              ; preds = %936
  %942 = load ptr, ptr %52, align 8, !tbaa !5
  %943 = getelementptr inbounds i8, ptr %942, i64 1
  %944 = load i8, ptr %943, align 1, !tbaa !11
  %945 = zext i8 %944 to i32
  %946 = load ptr, ptr %34, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.match_data, ptr %946, i32 0, i32 13
  %948 = getelementptr inbounds [4 x i8], ptr %947, i64 0, i64 1
  %949 = load i8, ptr %948, align 1, !tbaa !11
  %950 = zext i8 %949 to i32
  %951 = icmp eq i32 %945, %950
  br label %952

952:                                              ; preds = %941, %936
  %953 = phi i1 [ true, %936 ], [ %951, %941 ]
  br label %954

954:                                              ; preds = %952, %926, %914
  %955 = phi i1 [ false, %926 ], [ false, %914 ], [ %953, %952 ]
  %956 = zext i1 %955 to i32
  br label %957

957:                                              ; preds = %954, %911
  %958 = phi i32 [ %913, %911 ], [ %956, %954 ]
  %959 = icmp ne i32 %958, 0
  %960 = xor i1 %959, true
  br label %961

961:                                              ; preds = %957, %881
  %962 = phi i1 [ false, %881 ], [ %960, %957 ]
  br i1 %962, label %963, label %966

963:                                              ; preds = %961
  %964 = load ptr, ptr %52, align 8, !tbaa !5
  %965 = getelementptr inbounds i8, ptr %964, i32 1
  store ptr %965, ptr %52, align 8, !tbaa !5
  br label %881, !llvm.loop !78

966:                                              ; preds = %961
  br label %967

967:                                              ; preds = %966, %879
  %968 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %968, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  br label %969

969:                                              ; preds = %967, %769
  %970 = load i32, ptr %15, align 4, !tbaa !9
  %971 = load ptr, ptr %43, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %971, i32 0, i32 2
  %973 = load i32, ptr %972, align 8, !tbaa !16
  %974 = or i32 %970, %973
  %975 = and i32 %974, 67108864
  %976 = icmp eq i32 %975, 0
  br i1 %976, label %977, label %1317

977:                                              ; preds = %969
  %978 = load i32, ptr %27, align 4, !tbaa !9
  %979 = icmp ne i32 %978, 0
  br i1 %979, label %980, label %1029

980:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #4
  %981 = load i8, ptr %29, align 1, !tbaa !11
  %982 = zext i8 %981 to i32
  %983 = load i8, ptr %30, align 1, !tbaa !11
  %984 = zext i8 %983 to i32
  %985 = icmp ne i32 %982, %984
  br i1 %985, label %986, label %1010

986:                                              ; preds = %980
  br label %987

987:                                              ; preds = %1006, %986
  %988 = load ptr, ptr %37, align 8, !tbaa !5
  %989 = load ptr, ptr %38, align 8, !tbaa !5
  %990 = icmp ult ptr %988, %989
  br i1 %990, label %991, label %1004

991:                                              ; preds = %987
  %992 = load ptr, ptr %37, align 8, !tbaa !5
  %993 = load i8, ptr %992, align 1, !tbaa !11
  store i8 %993, ptr %53, align 1, !tbaa !11
  %994 = zext i8 %993 to i32
  %995 = load i8, ptr %29, align 1, !tbaa !11
  %996 = zext i8 %995 to i32
  %997 = icmp ne i32 %994, %996
  br i1 %997, label %998, label %1004

998:                                              ; preds = %991
  %999 = load i8, ptr %53, align 1, !tbaa !11
  %1000 = zext i8 %999 to i32
  %1001 = load i8, ptr %30, align 1, !tbaa !11
  %1002 = zext i8 %1001 to i32
  %1003 = icmp ne i32 %1000, %1002
  br label %1004

1004:                                             ; preds = %998, %991, %987
  %1005 = phi i1 [ false, %991 ], [ false, %987 ], [ %1003, %998 ]
  br i1 %1005, label %1006, label %1009

1006:                                             ; preds = %1004
  %1007 = load ptr, ptr %37, align 8, !tbaa !5
  %1008 = getelementptr inbounds i8, ptr %1007, i32 1
  store ptr %1008, ptr %37, align 8, !tbaa !5
  br label %987, !llvm.loop !79

1009:                                             ; preds = %1004
  br label %1028

1010:                                             ; preds = %980
  br label %1011

1011:                                             ; preds = %1024, %1010
  %1012 = load ptr, ptr %37, align 8, !tbaa !5
  %1013 = load ptr, ptr %38, align 8, !tbaa !5
  %1014 = icmp ult ptr %1012, %1013
  br i1 %1014, label %1015, label %1022

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr %37, align 8, !tbaa !5
  %1017 = load i8, ptr %1016, align 1, !tbaa !11
  %1018 = zext i8 %1017 to i32
  %1019 = load i8, ptr %29, align 1, !tbaa !11
  %1020 = zext i8 %1019 to i32
  %1021 = icmp ne i32 %1018, %1020
  br label %1022

1022:                                             ; preds = %1015, %1011
  %1023 = phi i1 [ false, %1011 ], [ %1021, %1015 ]
  br i1 %1023, label %1024, label %1027

1024:                                             ; preds = %1022
  %1025 = load ptr, ptr %37, align 8, !tbaa !5
  %1026 = getelementptr inbounds i8, ptr %1025, i32 1
  store ptr %1026, ptr %37, align 8, !tbaa !5
  br label %1011, !llvm.loop !80

1027:                                             ; preds = %1022
  br label %1028

1028:                                             ; preds = %1027, %1009
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #4
  br label %1316

1029:                                             ; preds = %977
  %1030 = load i32, ptr %24, align 4, !tbaa !9
  %1031 = icmp ne i32 %1030, 0
  br i1 %1031, label %1032, label %1282

1032:                                             ; preds = %1029
  %1033 = load ptr, ptr %37, align 8, !tbaa !5
  %1034 = load ptr, ptr %34, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.match_data, ptr %1034, i32 0, i32 29
  %1036 = load ptr, ptr %1035, align 8, !tbaa !42
  %1037 = load i32, ptr %14, align 4, !tbaa !9
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds i8, ptr %1036, i64 %1038
  %1040 = icmp ugt ptr %1033, %1039
  br i1 %1040, label %1041, label %1281

1041:                                             ; preds = %1032
  %1042 = load i32, ptr %26, align 4, !tbaa !9
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1044, label %1156

1044:                                             ; preds = %1041
  br label %1045

1045:                                             ; preds = %1154, %1044
  %1046 = load ptr, ptr %37, align 8, !tbaa !5
  %1047 = load ptr, ptr %38, align 8, !tbaa !5
  %1048 = icmp ult ptr %1046, %1047
  br i1 %1048, label %1049, label %1134

1049:                                             ; preds = %1045
  %1050 = load ptr, ptr %34, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.match_data, ptr %1050, i32 0, i32 6
  %1052 = load i32, ptr %1051, align 8, !tbaa !62
  %1053 = icmp ne i32 %1052, 0
  br i1 %1053, label %1054, label %1076

1054:                                             ; preds = %1049
  %1055 = load ptr, ptr %37, align 8, !tbaa !5
  %1056 = load ptr, ptr %34, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.match_data, ptr %1056, i32 0, i32 29
  %1058 = load ptr, ptr %1057, align 8, !tbaa !42
  %1059 = icmp ugt ptr %1055, %1058
  br i1 %1059, label %1060, label %1073

1060:                                             ; preds = %1054
  %1061 = load ptr, ptr %37, align 8, !tbaa !5
  %1062 = load ptr, ptr %34, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.match_data, ptr %1062, i32 0, i32 6
  %1064 = load i32, ptr %1063, align 8, !tbaa !62
  %1065 = load ptr, ptr %34, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.match_data, ptr %1065, i32 0, i32 29
  %1067 = load ptr, ptr %1066, align 8, !tbaa !42
  %1068 = load ptr, ptr %34, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.match_data, ptr %1068, i32 0, i32 7
  %1070 = load i32, ptr %26, align 4, !tbaa !9
  %1071 = call i32 @_pcre_was_newline(ptr noundef %1061, i32 noundef %1064, ptr noundef %1067, ptr noundef %1069, i32 noundef %1070)
  %1072 = icmp ne i32 %1071, 0
  br label %1073

1073:                                             ; preds = %1060, %1054
  %1074 = phi i1 [ false, %1054 ], [ %1072, %1060 ]
  %1075 = zext i1 %1074 to i32
  br label %1130

1076:                                             ; preds = %1049
  %1077 = load ptr, ptr %37, align 8, !tbaa !5
  %1078 = load ptr, ptr %34, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.match_data, ptr %1078, i32 0, i32 29
  %1080 = load ptr, ptr %1079, align 8, !tbaa !42
  %1081 = load ptr, ptr %34, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.match_data, ptr %1081, i32 0, i32 7
  %1083 = load i32, ptr %1082, align 4, !tbaa !63
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds i8, ptr %1080, i64 %1084
  %1086 = icmp uge ptr %1077, %1085
  br i1 %1086, label %1087, label %1127

1087:                                             ; preds = %1076
  %1088 = load ptr, ptr %37, align 8, !tbaa !5
  %1089 = load ptr, ptr %34, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.match_data, ptr %1089, i32 0, i32 7
  %1091 = load i32, ptr %1090, align 4, !tbaa !63
  %1092 = sext i32 %1091 to i64
  %1093 = sub i64 0, %1092
  %1094 = getelementptr inbounds i8, ptr %1088, i64 %1093
  %1095 = load i8, ptr %1094, align 1, !tbaa !11
  %1096 = zext i8 %1095 to i32
  %1097 = load ptr, ptr %34, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.match_data, ptr %1097, i32 0, i32 13
  %1099 = getelementptr inbounds [4 x i8], ptr %1098, i64 0, i64 0
  %1100 = load i8, ptr %1099, align 8, !tbaa !11
  %1101 = zext i8 %1100 to i32
  %1102 = icmp eq i32 %1096, %1101
  br i1 %1102, label %1103, label %1127

1103:                                             ; preds = %1087
  %1104 = load ptr, ptr %34, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.match_data, ptr %1104, i32 0, i32 7
  %1106 = load i32, ptr %1105, align 4, !tbaa !63
  %1107 = icmp eq i32 %1106, 1
  br i1 %1107, label %1125, label %1108

1108:                                             ; preds = %1103
  %1109 = load ptr, ptr %37, align 8, !tbaa !5
  %1110 = load ptr, ptr %34, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.match_data, ptr %1110, i32 0, i32 7
  %1112 = load i32, ptr %1111, align 4, !tbaa !63
  %1113 = sext i32 %1112 to i64
  %1114 = sub i64 0, %1113
  %1115 = getelementptr inbounds i8, ptr %1109, i64 %1114
  %1116 = getelementptr inbounds i8, ptr %1115, i64 1
  %1117 = load i8, ptr %1116, align 1, !tbaa !11
  %1118 = zext i8 %1117 to i32
  %1119 = load ptr, ptr %34, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.match_data, ptr %1119, i32 0, i32 13
  %1121 = getelementptr inbounds [4 x i8], ptr %1120, i64 0, i64 1
  %1122 = load i8, ptr %1121, align 1, !tbaa !11
  %1123 = zext i8 %1122 to i32
  %1124 = icmp eq i32 %1118, %1123
  br label %1125

1125:                                             ; preds = %1108, %1103
  %1126 = phi i1 [ true, %1103 ], [ %1124, %1108 ]
  br label %1127

1127:                                             ; preds = %1125, %1087, %1076
  %1128 = phi i1 [ false, %1087 ], [ false, %1076 ], [ %1126, %1125 ]
  %1129 = zext i1 %1128 to i32
  br label %1130

1130:                                             ; preds = %1127, %1073
  %1131 = phi i32 [ %1075, %1073 ], [ %1129, %1127 ]
  %1132 = icmp ne i32 %1131, 0
  %1133 = xor i1 %1132, true
  br label %1134

1134:                                             ; preds = %1130, %1045
  %1135 = phi i1 [ false, %1045 ], [ %1133, %1130 ]
  br i1 %1135, label %1136, label %1155

1136:                                             ; preds = %1134
  %1137 = load ptr, ptr %37, align 8, !tbaa !5
  %1138 = getelementptr inbounds i8, ptr %1137, i32 1
  store ptr %1138, ptr %37, align 8, !tbaa !5
  br label %1139

1139:                                             ; preds = %1151, %1136
  %1140 = load ptr, ptr %37, align 8, !tbaa !5
  %1141 = load ptr, ptr %38, align 8, !tbaa !5
  %1142 = icmp ult ptr %1140, %1141
  br i1 %1142, label %1143, label %1149

1143:                                             ; preds = %1139
  %1144 = load ptr, ptr %37, align 8, !tbaa !5
  %1145 = load i8, ptr %1144, align 1, !tbaa !11
  %1146 = zext i8 %1145 to i32
  %1147 = and i32 %1146, 192
  %1148 = icmp eq i32 %1147, 128
  br label %1149

1149:                                             ; preds = %1143, %1139
  %1150 = phi i1 [ false, %1139 ], [ %1148, %1143 ]
  br i1 %1150, label %1151, label %1154

1151:                                             ; preds = %1149
  %1152 = load ptr, ptr %37, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i32 1
  store ptr %1153, ptr %37, align 8, !tbaa !5
  br label %1139, !llvm.loop !81

1154:                                             ; preds = %1149
  br label %1045, !llvm.loop !82

1155:                                             ; preds = %1134
  br label %1252

1156:                                             ; preds = %1041
  br label %1157

1157:                                             ; preds = %1248, %1156
  %1158 = load ptr, ptr %37, align 8, !tbaa !5
  %1159 = load ptr, ptr %38, align 8, !tbaa !5
  %1160 = icmp ult ptr %1158, %1159
  br i1 %1160, label %1161, label %1246

1161:                                             ; preds = %1157
  %1162 = load ptr, ptr %34, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.match_data, ptr %1162, i32 0, i32 6
  %1164 = load i32, ptr %1163, align 8, !tbaa !62
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1188

1166:                                             ; preds = %1161
  %1167 = load ptr, ptr %37, align 8, !tbaa !5
  %1168 = load ptr, ptr %34, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.match_data, ptr %1168, i32 0, i32 29
  %1170 = load ptr, ptr %1169, align 8, !tbaa !42
  %1171 = icmp ugt ptr %1167, %1170
  br i1 %1171, label %1172, label %1185

1172:                                             ; preds = %1166
  %1173 = load ptr, ptr %37, align 8, !tbaa !5
  %1174 = load ptr, ptr %34, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.match_data, ptr %1174, i32 0, i32 6
  %1176 = load i32, ptr %1175, align 8, !tbaa !62
  %1177 = load ptr, ptr %34, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.match_data, ptr %1177, i32 0, i32 29
  %1179 = load ptr, ptr %1178, align 8, !tbaa !42
  %1180 = load ptr, ptr %34, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.match_data, ptr %1180, i32 0, i32 7
  %1182 = load i32, ptr %26, align 4, !tbaa !9
  %1183 = call i32 @_pcre_was_newline(ptr noundef %1173, i32 noundef %1176, ptr noundef %1179, ptr noundef %1181, i32 noundef %1182)
  %1184 = icmp ne i32 %1183, 0
  br label %1185

1185:                                             ; preds = %1172, %1166
  %1186 = phi i1 [ false, %1166 ], [ %1184, %1172 ]
  %1187 = zext i1 %1186 to i32
  br label %1242

1188:                                             ; preds = %1161
  %1189 = load ptr, ptr %37, align 8, !tbaa !5
  %1190 = load ptr, ptr %34, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.match_data, ptr %1190, i32 0, i32 29
  %1192 = load ptr, ptr %1191, align 8, !tbaa !42
  %1193 = load ptr, ptr %34, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.match_data, ptr %1193, i32 0, i32 7
  %1195 = load i32, ptr %1194, align 4, !tbaa !63
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds i8, ptr %1192, i64 %1196
  %1198 = icmp uge ptr %1189, %1197
  br i1 %1198, label %1199, label %1239

1199:                                             ; preds = %1188
  %1200 = load ptr, ptr %37, align 8, !tbaa !5
  %1201 = load ptr, ptr %34, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.match_data, ptr %1201, i32 0, i32 7
  %1203 = load i32, ptr %1202, align 4, !tbaa !63
  %1204 = sext i32 %1203 to i64
  %1205 = sub i64 0, %1204
  %1206 = getelementptr inbounds i8, ptr %1200, i64 %1205
  %1207 = load i8, ptr %1206, align 1, !tbaa !11
  %1208 = zext i8 %1207 to i32
  %1209 = load ptr, ptr %34, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.match_data, ptr %1209, i32 0, i32 13
  %1211 = getelementptr inbounds [4 x i8], ptr %1210, i64 0, i64 0
  %1212 = load i8, ptr %1211, align 8, !tbaa !11
  %1213 = zext i8 %1212 to i32
  %1214 = icmp eq i32 %1208, %1213
  br i1 %1214, label %1215, label %1239

1215:                                             ; preds = %1199
  %1216 = load ptr, ptr %34, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.match_data, ptr %1216, i32 0, i32 7
  %1218 = load i32, ptr %1217, align 4, !tbaa !63
  %1219 = icmp eq i32 %1218, 1
  br i1 %1219, label %1237, label %1220

1220:                                             ; preds = %1215
  %1221 = load ptr, ptr %37, align 8, !tbaa !5
  %1222 = load ptr, ptr %34, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.match_data, ptr %1222, i32 0, i32 7
  %1224 = load i32, ptr %1223, align 4, !tbaa !63
  %1225 = sext i32 %1224 to i64
  %1226 = sub i64 0, %1225
  %1227 = getelementptr inbounds i8, ptr %1221, i64 %1226
  %1228 = getelementptr inbounds i8, ptr %1227, i64 1
  %1229 = load i8, ptr %1228, align 1, !tbaa !11
  %1230 = zext i8 %1229 to i32
  %1231 = load ptr, ptr %34, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.match_data, ptr %1231, i32 0, i32 13
  %1233 = getelementptr inbounds [4 x i8], ptr %1232, i64 0, i64 1
  %1234 = load i8, ptr %1233, align 1, !tbaa !11
  %1235 = zext i8 %1234 to i32
  %1236 = icmp eq i32 %1230, %1235
  br label %1237

1237:                                             ; preds = %1220, %1215
  %1238 = phi i1 [ true, %1215 ], [ %1236, %1220 ]
  br label %1239

1239:                                             ; preds = %1237, %1199, %1188
  %1240 = phi i1 [ false, %1199 ], [ false, %1188 ], [ %1238, %1237 ]
  %1241 = zext i1 %1240 to i32
  br label %1242

1242:                                             ; preds = %1239, %1185
  %1243 = phi i32 [ %1187, %1185 ], [ %1241, %1239 ]
  %1244 = icmp ne i32 %1243, 0
  %1245 = xor i1 %1244, true
  br label %1246

1246:                                             ; preds = %1242, %1157
  %1247 = phi i1 [ false, %1157 ], [ %1245, %1242 ]
  br i1 %1247, label %1248, label %1251

1248:                                             ; preds = %1246
  %1249 = load ptr, ptr %37, align 8, !tbaa !5
  %1250 = getelementptr inbounds i8, ptr %1249, i32 1
  store ptr %1250, ptr %37, align 8, !tbaa !5
  br label %1157, !llvm.loop !83

1251:                                             ; preds = %1246
  br label %1252

1252:                                             ; preds = %1251, %1155
  %1253 = load ptr, ptr %37, align 8, !tbaa !5
  %1254 = getelementptr inbounds i8, ptr %1253, i64 -1
  %1255 = load i8, ptr %1254, align 1, !tbaa !11
  %1256 = zext i8 %1255 to i32
  %1257 = icmp eq i32 %1256, 13
  br i1 %1257, label %1258, label %1280

1258:                                             ; preds = %1252
  %1259 = load ptr, ptr %34, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.match_data, ptr %1259, i32 0, i32 6
  %1261 = load i32, ptr %1260, align 8, !tbaa !62
  %1262 = icmp eq i32 %1261, 1
  br i1 %1262, label %1268, label %1263

1263:                                             ; preds = %1258
  %1264 = load ptr, ptr %34, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.match_data, ptr %1264, i32 0, i32 6
  %1266 = load i32, ptr %1265, align 8, !tbaa !62
  %1267 = icmp eq i32 %1266, 2
  br i1 %1267, label %1268, label %1280

1268:                                             ; preds = %1263, %1258
  %1269 = load ptr, ptr %37, align 8, !tbaa !5
  %1270 = load ptr, ptr %38, align 8, !tbaa !5
  %1271 = icmp ult ptr %1269, %1270
  br i1 %1271, label %1272, label %1280

1272:                                             ; preds = %1268
  %1273 = load ptr, ptr %37, align 8, !tbaa !5
  %1274 = load i8, ptr %1273, align 1, !tbaa !11
  %1275 = zext i8 %1274 to i32
  %1276 = icmp eq i32 %1275, 10
  br i1 %1276, label %1277, label %1280

1277:                                             ; preds = %1272
  %1278 = load ptr, ptr %37, align 8, !tbaa !5
  %1279 = getelementptr inbounds i8, ptr %1278, i32 1
  store ptr %1279, ptr %37, align 8, !tbaa !5
  br label %1280

1280:                                             ; preds = %1277, %1272, %1268, %1263, %1252
  br label %1281

1281:                                             ; preds = %1280, %1032
  br label %1315

1282:                                             ; preds = %1029
  %1283 = load ptr, ptr %36, align 8, !tbaa !5
  %1284 = icmp ne ptr %1283, null
  br i1 %1284, label %1285, label %1314

1285:                                             ; preds = %1282
  br label %1286

1286:                                             ; preds = %1312, %1285
  %1287 = load ptr, ptr %37, align 8, !tbaa !5
  %1288 = load ptr, ptr %38, align 8, !tbaa !5
  %1289 = icmp ult ptr %1287, %1288
  br i1 %1289, label %1290, label %1313

1290:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  %1291 = load ptr, ptr %37, align 8, !tbaa !5
  %1292 = load i8, ptr %1291, align 1, !tbaa !11
  %1293 = zext i8 %1292 to i32
  store i32 %1293, ptr %54, align 4, !tbaa !9
  %1294 = load ptr, ptr %36, align 8, !tbaa !5
  %1295 = load i32, ptr %54, align 4, !tbaa !9
  %1296 = udiv i32 %1295, 8
  %1297 = zext i32 %1296 to i64
  %1298 = getelementptr inbounds i8, ptr %1294, i64 %1297
  %1299 = load i8, ptr %1298, align 1, !tbaa !11
  %1300 = zext i8 %1299 to i32
  %1301 = load i32, ptr %54, align 4, !tbaa !9
  %1302 = and i32 %1301, 7
  %1303 = shl i32 1, %1302
  %1304 = and i32 %1300, %1303
  %1305 = icmp ne i32 %1304, 0
  br i1 %1305, label %1306, label %1307

1306:                                             ; preds = %1290
  store i32 25, ptr %44, align 4
  br label %1310

1307:                                             ; preds = %1290
  %1308 = load ptr, ptr %37, align 8, !tbaa !5
  %1309 = getelementptr inbounds i8, ptr %1308, i32 1
  store ptr %1309, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %44, align 4
  br label %1310

1310:                                             ; preds = %1307, %1306
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  %1311 = load i32, ptr %44, align 4
  switch i32 %1311, label %1869 [
    i32 0, label %1312
    i32 25, label %1313
  ]

1312:                                             ; preds = %1310
  br label %1286, !llvm.loop !84

1313:                                             ; preds = %1310, %1286
  br label %1314

1314:                                             ; preds = %1313, %1282
  br label %1315

1315:                                             ; preds = %1314, %1281
  br label %1316

1316:                                             ; preds = %1315, %1028
  br label %1317

1317:                                             ; preds = %1316, %969
  %1318 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %1318, ptr %38, align 8, !tbaa !5
  %1319 = load i32, ptr %15, align 4, !tbaa !9
  %1320 = load ptr, ptr %43, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1320, i32 0, i32 2
  %1322 = load i32, ptr %1321, align 8, !tbaa !16
  %1323 = or i32 %1319, %1322
  %1324 = and i32 %1323, 67108864
  %1325 = icmp eq i32 %1324, 0
  br i1 %1325, label %1326, label %1436

1326:                                             ; preds = %1317
  %1327 = load ptr, ptr %34, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.match_data, ptr %1327, i32 0, i32 34
  %1329 = load i32, ptr %1328, align 8, !tbaa !20
  %1330 = icmp ne i32 %1329, 0
  br i1 %1330, label %1436, label %1331

1331:                                             ; preds = %1326
  %1332 = load ptr, ptr %42, align 8, !tbaa !5
  %1333 = icmp ne ptr %1332, null
  br i1 %1333, label %1334, label %1352

1334:                                             ; preds = %1331
  %1335 = load ptr, ptr %42, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.pcre_study_data, ptr %1335, i32 0, i32 1
  %1337 = load i32, ptr %1336, align 4, !tbaa !73
  %1338 = and i32 %1337, 2
  %1339 = icmp ne i32 %1338, 0
  br i1 %1339, label %1340, label %1352

1340:                                             ; preds = %1334
  %1341 = load ptr, ptr %38, align 8, !tbaa !5
  %1342 = load ptr, ptr %37, align 8, !tbaa !5
  %1343 = ptrtoint ptr %1341 to i64
  %1344 = ptrtoint ptr %1342 to i64
  %1345 = sub i64 %1343, %1344
  %1346 = trunc i64 %1345 to i32
  %1347 = load ptr, ptr %42, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.pcre_study_data, ptr %1347, i32 0, i32 3
  %1349 = load i32, ptr %1348, align 4, !tbaa !85
  %1350 = icmp ult i32 %1346, %1349
  br i1 %1350, label %1351, label %1352

1351:                                             ; preds = %1340
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 6, ptr %44, align 4
  br label %1641

1352:                                             ; preds = %1340, %1334, %1331
  %1353 = load i32, ptr %28, align 4, !tbaa !9
  %1354 = icmp ne i32 %1353, 0
  br i1 %1354, label %1355, label %1435

1355:                                             ; preds = %1352
  %1356 = load ptr, ptr %38, align 8, !tbaa !5
  %1357 = load ptr, ptr %37, align 8, !tbaa !5
  %1358 = ptrtoint ptr %1356 to i64
  %1359 = ptrtoint ptr %1357 to i64
  %1360 = sub i64 %1358, %1359
  %1361 = icmp slt i64 %1360, 1000
  br i1 %1361, label %1362, label %1435

1362:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  %1363 = load ptr, ptr %37, align 8, !tbaa !5
  %1364 = load i32, ptr %27, align 4, !tbaa !9
  %1365 = icmp ne i32 %1364, 0
  %1366 = zext i1 %1365 to i64
  %1367 = select i1 %1365, i32 1, i32 0
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds i8, ptr %1363, i64 %1368
  store ptr %1369, ptr %55, align 8, !tbaa !5
  %1370 = load ptr, ptr %55, align 8, !tbaa !5
  %1371 = load ptr, ptr %41, align 8, !tbaa !5
  %1372 = icmp ugt ptr %1370, %1371
  br i1 %1372, label %1373, label %1431

1373:                                             ; preds = %1362
  %1374 = load i8, ptr %31, align 1, !tbaa !11
  %1375 = zext i8 %1374 to i32
  %1376 = load i8, ptr %32, align 1, !tbaa !11
  %1377 = zext i8 %1376 to i32
  %1378 = icmp ne i32 %1375, %1377
  br i1 %1378, label %1379, label %1406

1379:                                             ; preds = %1373
  br label %1380

1380:                                             ; preds = %1404, %1379
  %1381 = load ptr, ptr %55, align 8, !tbaa !5
  %1382 = load ptr, ptr %38, align 8, !tbaa !5
  %1383 = icmp ult ptr %1381, %1382
  br i1 %1383, label %1384, label %1405

1384:                                             ; preds = %1380
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %1385 = load ptr, ptr %55, align 8, !tbaa !5
  %1386 = getelementptr inbounds i8, ptr %1385, i32 1
  store ptr %1386, ptr %55, align 8, !tbaa !5
  %1387 = load i8, ptr %1385, align 1, !tbaa !11
  %1388 = zext i8 %1387 to i32
  store i32 %1388, ptr %56, align 4, !tbaa !9
  %1389 = load i32, ptr %56, align 4, !tbaa !9
  %1390 = load i8, ptr %31, align 1, !tbaa !11
  %1391 = zext i8 %1390 to i32
  %1392 = icmp eq i32 %1389, %1391
  br i1 %1392, label %1398, label %1393

1393:                                             ; preds = %1384
  %1394 = load i32, ptr %56, align 4, !tbaa !9
  %1395 = load i8, ptr %32, align 1, !tbaa !11
  %1396 = zext i8 %1395 to i32
  %1397 = icmp eq i32 %1394, %1396
  br i1 %1397, label %1398, label %1401

1398:                                             ; preds = %1393, %1384
  %1399 = load ptr, ptr %55, align 8, !tbaa !5
  %1400 = getelementptr inbounds i8, ptr %1399, i32 -1
  store ptr %1400, ptr %55, align 8, !tbaa !5
  store i32 27, ptr %44, align 4
  br label %1402

1401:                                             ; preds = %1393
  store i32 0, ptr %44, align 4
  br label %1402

1402:                                             ; preds = %1401, %1398
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  %1403 = load i32, ptr %44, align 4
  switch i32 %1403, label %1869 [
    i32 0, label %1404
    i32 27, label %1405
  ]

1404:                                             ; preds = %1402
  br label %1380, !llvm.loop !86

1405:                                             ; preds = %1402, %1380
  br label %1424

1406:                                             ; preds = %1373
  br label %1407

1407:                                             ; preds = %1422, %1406
  %1408 = load ptr, ptr %55, align 8, !tbaa !5
  %1409 = load ptr, ptr %38, align 8, !tbaa !5
  %1410 = icmp ult ptr %1408, %1409
  br i1 %1410, label %1411, label %1423

1411:                                             ; preds = %1407
  %1412 = load ptr, ptr %55, align 8, !tbaa !5
  %1413 = getelementptr inbounds i8, ptr %1412, i32 1
  store ptr %1413, ptr %55, align 8, !tbaa !5
  %1414 = load i8, ptr %1412, align 1, !tbaa !11
  %1415 = zext i8 %1414 to i32
  %1416 = load i8, ptr %31, align 1, !tbaa !11
  %1417 = zext i8 %1416 to i32
  %1418 = icmp eq i32 %1415, %1417
  br i1 %1418, label %1419, label %1422

1419:                                             ; preds = %1411
  %1420 = load ptr, ptr %55, align 8, !tbaa !5
  %1421 = getelementptr inbounds i8, ptr %1420, i32 -1
  store ptr %1421, ptr %55, align 8, !tbaa !5
  br label %1423

1422:                                             ; preds = %1411
  br label %1407, !llvm.loop !87

1423:                                             ; preds = %1419, %1407
  br label %1424

1424:                                             ; preds = %1423, %1405
  %1425 = load ptr, ptr %55, align 8, !tbaa !5
  %1426 = load ptr, ptr %38, align 8, !tbaa !5
  %1427 = icmp uge ptr %1425, %1426
  br i1 %1427, label %1428, label %1429

1428:                                             ; preds = %1424
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 6, ptr %44, align 4
  br label %1432

1429:                                             ; preds = %1424
  %1430 = load ptr, ptr %55, align 8, !tbaa !5
  store ptr %1430, ptr %41, align 8, !tbaa !5
  br label %1431

1431:                                             ; preds = %1429, %1362
  store i32 0, ptr %44, align 4
  br label %1432

1432:                                             ; preds = %1431, %1428
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  %1433 = load i32, ptr %44, align 4
  switch i32 %1433, label %1641 [
    i32 0, label %1434
  ]

1434:                                             ; preds = %1432
  br label %1435

1435:                                             ; preds = %1434, %1355, %1352
  br label %1436

1436:                                             ; preds = %1435, %1326, %1317
  %1437 = load ptr, ptr %37, align 8, !tbaa !5
  %1438 = load ptr, ptr %34, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.match_data, ptr %1438, i32 0, i32 31
  store ptr %1437, ptr %1439, align 8, !tbaa !88
  %1440 = load ptr, ptr %37, align 8, !tbaa !5
  %1441 = load ptr, ptr %34, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.match_data, ptr %1441, i32 0, i32 33
  store ptr %1440, ptr %1442, align 8, !tbaa !89
  %1443 = load ptr, ptr %34, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.match_data, ptr %1443, i32 0, i32 0
  store i64 0, ptr %1444, align 8, !tbaa !90
  %1445 = load ptr, ptr %34, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.match_data, ptr %1445, i32 0, i32 38
  store i32 0, ptr %1446, align 8, !tbaa !91
  %1447 = load ptr, ptr %34, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.match_data, ptr %1447, i32 0, i32 35
  store i32 0, ptr %1448, align 4, !tbaa !92
  %1449 = load ptr, ptr %34, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.match_data, ptr %1449, i32 0, i32 10
  store i32 0, ptr %1450, align 8, !tbaa !93
  %1451 = load ptr, ptr %37, align 8, !tbaa !5
  %1452 = load ptr, ptr %34, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.match_data, ptr %1452, i32 0, i32 28
  %1454 = load ptr, ptr %1453, align 8, !tbaa !41
  %1455 = load ptr, ptr %37, align 8, !tbaa !5
  %1456 = load ptr, ptr %34, align 8, !tbaa !5
  %1457 = call i32 @match(ptr noundef %1451, ptr noundef %1454, ptr noundef %1455, i32 noundef 2, ptr noundef %1456, ptr noundef null, i32 noundef 0)
  store i32 %1457, ptr %18, align 4, !tbaa !9
  %1458 = load ptr, ptr %34, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.match_data, ptr %1458, i32 0, i32 25
  %1460 = load i32, ptr %1459, align 8, !tbaa !53
  %1461 = icmp ne i32 %1460, 0
  br i1 %1461, label %1462, label %1470

1462:                                             ; preds = %1436
  %1463 = load ptr, ptr %39, align 8, !tbaa !5
  %1464 = icmp eq ptr %1463, null
  br i1 %1464, label %1465, label %1470

1465:                                             ; preds = %1462
  %1466 = load ptr, ptr %34, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.match_data, ptr %1466, i32 0, i32 33
  %1468 = load ptr, ptr %1467, align 8, !tbaa !89
  store ptr %1468, ptr %39, align 8, !tbaa !5
  %1469 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1469, ptr %40, align 8, !tbaa !5
  br label %1470

1470:                                             ; preds = %1465, %1462, %1436
  %1471 = load i32, ptr %18, align 4, !tbaa !9
  switch i32 %1471, label %1516 [
    i32 -993, label %1472
    i32 -994, label %1479
    i32 0, label %1490
    i32 -995, label %1490
    i32 -992, label %1490
    i32 -996, label %1515
  ]

1472:                                             ; preds = %1470
  %1473 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1473, ptr %51, align 8, !tbaa !5
  %1474 = load ptr, ptr %34, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.match_data, ptr %1474, i32 0, i32 10
  %1476 = load i32, ptr %1475, align 8, !tbaa !93
  %1477 = load ptr, ptr %34, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.match_data, ptr %1477, i32 0, i32 11
  store i32 %1476, ptr %1478, align 4, !tbaa !48
  br label %1517

1479:                                             ; preds = %1470
  %1480 = load ptr, ptr %34, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.match_data, ptr %1480, i32 0, i32 31
  %1482 = load ptr, ptr %1481, align 8, !tbaa !88
  %1483 = load ptr, ptr %37, align 8, !tbaa !5
  %1484 = icmp ugt ptr %1482, %1483
  br i1 %1484, label %1485, label %1489

1485:                                             ; preds = %1479
  %1486 = load ptr, ptr %34, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.match_data, ptr %1486, i32 0, i32 31
  %1488 = load ptr, ptr %1487, align 8, !tbaa !88
  store ptr %1488, ptr %51, align 8, !tbaa !5
  br label %1517

1489:                                             ; preds = %1479
  br label %1490

1490:                                             ; preds = %1489, %1470, %1470, %1470
  %1491 = load ptr, ptr %34, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.match_data, ptr %1491, i32 0, i32 11
  store i32 0, ptr %1492, align 4, !tbaa !48
  %1493 = load ptr, ptr %37, align 8, !tbaa !5
  %1494 = getelementptr inbounds i8, ptr %1493, i64 1
  store ptr %1494, ptr %51, align 8, !tbaa !5
  %1495 = load i32, ptr %26, align 4, !tbaa !9
  %1496 = icmp ne i32 %1495, 0
  br i1 %1496, label %1497, label %1514

1497:                                             ; preds = %1490
  br label %1498

1498:                                             ; preds = %1510, %1497
  %1499 = load ptr, ptr %51, align 8, !tbaa !5
  %1500 = load ptr, ptr %38, align 8, !tbaa !5
  %1501 = icmp ult ptr %1499, %1500
  br i1 %1501, label %1502, label %1508

1502:                                             ; preds = %1498
  %1503 = load ptr, ptr %51, align 8, !tbaa !5
  %1504 = load i8, ptr %1503, align 1, !tbaa !11
  %1505 = zext i8 %1504 to i32
  %1506 = and i32 %1505, 192
  %1507 = icmp eq i32 %1506, 128
  br label %1508

1508:                                             ; preds = %1502, %1498
  %1509 = phi i1 [ false, %1498 ], [ %1507, %1502 ]
  br i1 %1509, label %1510, label %1513

1510:                                             ; preds = %1508
  %1511 = load ptr, ptr %51, align 8, !tbaa !5
  %1512 = getelementptr inbounds i8, ptr %1511, i32 1
  store ptr %1512, ptr %51, align 8, !tbaa !5
  br label %1498, !llvm.loop !94

1513:                                             ; preds = %1508
  br label %1514

1514:                                             ; preds = %1513, %1490
  br label %1517

1515:                                             ; preds = %1470
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 33, ptr %44, align 4
  br label %1641

1516:                                             ; preds = %1470
  store i32 33, ptr %44, align 4
  br label %1641

1517:                                             ; preds = %1514, %1485, %1472
  store i32 0, ptr %18, align 4, !tbaa !9
  %1518 = load i32, ptr %25, align 4, !tbaa !9
  %1519 = icmp ne i32 %1518, 0
  br i1 %1519, label %1520, label %1583

1520:                                             ; preds = %1517
  %1521 = load ptr, ptr %34, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.match_data, ptr %1521, i32 0, i32 6
  %1523 = load i32, ptr %1522, align 8, !tbaa !62
  %1524 = icmp ne i32 %1523, 0
  br i1 %1524, label %1525, label %1544

1525:                                             ; preds = %1520
  %1526 = load ptr, ptr %37, align 8, !tbaa !5
  %1527 = load ptr, ptr %34, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.match_data, ptr %1527, i32 0, i32 30
  %1529 = load ptr, ptr %1528, align 8, !tbaa !44
  %1530 = icmp ult ptr %1526, %1529
  br i1 %1530, label %1531, label %1583

1531:                                             ; preds = %1525
  %1532 = load ptr, ptr %37, align 8, !tbaa !5
  %1533 = load ptr, ptr %34, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.match_data, ptr %1533, i32 0, i32 6
  %1535 = load i32, ptr %1534, align 8, !tbaa !62
  %1536 = load ptr, ptr %34, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.match_data, ptr %1536, i32 0, i32 30
  %1538 = load ptr, ptr %1537, align 8, !tbaa !44
  %1539 = load ptr, ptr %34, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.match_data, ptr %1539, i32 0, i32 7
  %1541 = load i32, ptr %26, align 4, !tbaa !9
  %1542 = call i32 @_pcre_is_newline(ptr noundef %1532, i32 noundef %1535, ptr noundef %1538, ptr noundef %1540, i32 noundef %1541)
  %1543 = icmp ne i32 %1542, 0
  br i1 %1543, label %1582, label %1583

1544:                                             ; preds = %1520
  %1545 = load ptr, ptr %37, align 8, !tbaa !5
  %1546 = load ptr, ptr %34, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.match_data, ptr %1546, i32 0, i32 30
  %1548 = load ptr, ptr %1547, align 8, !tbaa !44
  %1549 = load ptr, ptr %34, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.match_data, ptr %1549, i32 0, i32 7
  %1551 = load i32, ptr %1550, align 4, !tbaa !63
  %1552 = sext i32 %1551 to i64
  %1553 = sub i64 0, %1552
  %1554 = getelementptr inbounds i8, ptr %1548, i64 %1553
  %1555 = icmp ule ptr %1545, %1554
  br i1 %1555, label %1556, label %1583

1556:                                             ; preds = %1544
  %1557 = load ptr, ptr %37, align 8, !tbaa !5
  %1558 = load i8, ptr %1557, align 1, !tbaa !11
  %1559 = zext i8 %1558 to i32
  %1560 = load ptr, ptr %34, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.match_data, ptr %1560, i32 0, i32 13
  %1562 = getelementptr inbounds [4 x i8], ptr %1561, i64 0, i64 0
  %1563 = load i8, ptr %1562, align 8, !tbaa !11
  %1564 = zext i8 %1563 to i32
  %1565 = icmp eq i32 %1559, %1564
  br i1 %1565, label %1566, label %1583

1566:                                             ; preds = %1556
  %1567 = load ptr, ptr %34, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.match_data, ptr %1567, i32 0, i32 7
  %1569 = load i32, ptr %1568, align 4, !tbaa !63
  %1570 = icmp eq i32 %1569, 1
  br i1 %1570, label %1582, label %1571

1571:                                             ; preds = %1566
  %1572 = load ptr, ptr %37, align 8, !tbaa !5
  %1573 = getelementptr inbounds i8, ptr %1572, i64 1
  %1574 = load i8, ptr %1573, align 1, !tbaa !11
  %1575 = zext i8 %1574 to i32
  %1576 = load ptr, ptr %34, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.match_data, ptr %1576, i32 0, i32 13
  %1578 = getelementptr inbounds [4 x i8], ptr %1577, i64 0, i64 1
  %1579 = load i8, ptr %1578, align 1, !tbaa !11
  %1580 = zext i8 %1579 to i32
  %1581 = icmp eq i32 %1575, %1580
  br i1 %1581, label %1582, label %1583

1582:                                             ; preds = %1571, %1566, %1531
  store i32 6, ptr %44, align 4
  br label %1641

1583:                                             ; preds = %1571, %1556, %1544, %1531, %1525, %1517
  %1584 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %1584, ptr %37, align 8, !tbaa !5
  %1585 = load i32, ptr %23, align 4, !tbaa !9
  %1586 = icmp ne i32 %1585, 0
  br i1 %1586, label %1591, label %1587

1587:                                             ; preds = %1583
  %1588 = load ptr, ptr %37, align 8, !tbaa !5
  %1589 = load ptr, ptr %38, align 8, !tbaa !5
  %1590 = icmp ugt ptr %1588, %1589
  br i1 %1590, label %1591, label %1592

1591:                                             ; preds = %1587, %1583
  store i32 6, ptr %44, align 4
  br label %1641

1592:                                             ; preds = %1587
  %1593 = load ptr, ptr %37, align 8, !tbaa !5
  %1594 = load ptr, ptr %12, align 8, !tbaa !5
  %1595 = load i32, ptr %14, align 4, !tbaa !9
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds i8, ptr %1594, i64 %1596
  %1598 = icmp ugt ptr %1593, %1597
  br i1 %1598, label %1599, label %1638

1599:                                             ; preds = %1592
  %1600 = load ptr, ptr %37, align 8, !tbaa !5
  %1601 = getelementptr inbounds i8, ptr %1600, i64 -1
  %1602 = load i8, ptr %1601, align 1, !tbaa !11
  %1603 = zext i8 %1602 to i32
  %1604 = icmp eq i32 %1603, 13
  br i1 %1604, label %1605, label %1638

1605:                                             ; preds = %1599
  %1606 = load ptr, ptr %37, align 8, !tbaa !5
  %1607 = load ptr, ptr %38, align 8, !tbaa !5
  %1608 = icmp ult ptr %1606, %1607
  br i1 %1608, label %1609, label %1638

1609:                                             ; preds = %1605
  %1610 = load ptr, ptr %37, align 8, !tbaa !5
  %1611 = load i8, ptr %1610, align 1, !tbaa !11
  %1612 = zext i8 %1611 to i32
  %1613 = icmp eq i32 %1612, 10
  br i1 %1613, label %1614, label %1638

1614:                                             ; preds = %1609
  %1615 = load ptr, ptr %43, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1615, i32 0, i32 3
  %1617 = load i32, ptr %1616, align 4, !tbaa !15
  %1618 = and i32 %1617, 2048
  %1619 = icmp eq i32 %1618, 0
  br i1 %1619, label %1620, label %1638

1620:                                             ; preds = %1614
  %1621 = load ptr, ptr %34, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.match_data, ptr %1621, i32 0, i32 6
  %1623 = load i32, ptr %1622, align 8, !tbaa !62
  %1624 = icmp eq i32 %1623, 1
  br i1 %1624, label %1635, label %1625

1625:                                             ; preds = %1620
  %1626 = load ptr, ptr %34, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.match_data, ptr %1626, i32 0, i32 6
  %1628 = load i32, ptr %1627, align 8, !tbaa !62
  %1629 = icmp eq i32 %1628, 2
  br i1 %1629, label %1635, label %1630

1630:                                             ; preds = %1625
  %1631 = load ptr, ptr %34, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.match_data, ptr %1631, i32 0, i32 7
  %1633 = load i32, ptr %1632, align 4, !tbaa !63
  %1634 = icmp eq i32 %1633, 2
  br i1 %1634, label %1635, label %1638

1635:                                             ; preds = %1630, %1625, %1620
  %1636 = load ptr, ptr %37, align 8, !tbaa !5
  %1637 = getelementptr inbounds i8, ptr %1636, i32 1
  store ptr %1637, ptr %37, align 8, !tbaa !5
  br label %1638

1638:                                             ; preds = %1635, %1630, %1614, %1609, %1605, %1599, %1592
  %1639 = load ptr, ptr %34, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.match_data, ptr %1639, i32 0, i32 43
  store ptr null, ptr %1640, align 8, !tbaa !55
  store i32 0, ptr %44, align 4
  br label %1641

1641:                                             ; preds = %1638, %1591, %1582, %1516, %1515, %1432, %1351
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  %1642 = load i32, ptr %44, align 4
  switch i32 %1642, label %1867 [
    i32 0, label %1643
    i32 6, label %1644
    i32 33, label %1645
  ]

1643:                                             ; preds = %1641
  br label %769

1644:                                             ; preds = %1641
  br label %1645

1645:                                             ; preds = %1644, %1641
  %1646 = load i32, ptr %18, align 4, !tbaa !9
  %1647 = icmp eq i32 %1646, 1
  br i1 %1647, label %1651, label %1648

1648:                                             ; preds = %1645
  %1649 = load i32, ptr %18, align 4, !tbaa !9
  %1650 = icmp eq i32 %1649, -999
  br i1 %1650, label %1651, label %1794

1651:                                             ; preds = %1648, %1645
  %1652 = load i32, ptr %22, align 4, !tbaa !9
  %1653 = icmp ne i32 %1652, 0
  br i1 %1653, label %1654, label %1684

1654:                                             ; preds = %1651
  %1655 = load i32, ptr %20, align 4, !tbaa !9
  %1656 = icmp sge i32 %1655, 4
  br i1 %1656, label %1657, label %1668

1657:                                             ; preds = %1654
  %1658 = load ptr, ptr %16, align 8, !tbaa !5
  %1659 = getelementptr inbounds i32, ptr %1658, i64 2
  %1660 = load ptr, ptr %34, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.match_data, ptr %1660, i32 0, i32 3
  %1662 = load ptr, ptr %1661, align 8, !tbaa !65
  %1663 = getelementptr inbounds i32, ptr %1662, i64 2
  %1664 = load i32, ptr %20, align 4, !tbaa !9
  %1665 = sub nsw i32 %1664, 2
  %1666 = sext i32 %1665 to i64
  %1667 = mul i64 %1666, 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1659, ptr align 4 %1663, i64 %1667, i1 false)
  br label %1668

1668:                                             ; preds = %1657, %1654
  %1669 = load ptr, ptr %34, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.match_data, ptr %1669, i32 0, i32 35
  %1671 = load i32, ptr %1670, align 4, !tbaa !92
  %1672 = load i32, ptr %20, align 4, !tbaa !9
  %1673 = icmp sgt i32 %1671, %1672
  br i1 %1673, label %1674, label %1679

1674:                                             ; preds = %1668
  %1675 = load ptr, ptr %34, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.match_data, ptr %1675, i32 0, i32 36
  %1677 = load i32, ptr %1676, align 8, !tbaa !68
  %1678 = or i32 %1677, 65536
  store i32 %1678, ptr %1676, align 8, !tbaa !68
  br label %1679

1679:                                             ; preds = %1674, %1668
  %1680 = load ptr, ptr @pcre_free, align 8, !tbaa !5
  %1681 = load ptr, ptr %34, align 8, !tbaa !5
  %1682 = getelementptr inbounds %struct.match_data, ptr %1681, i32 0, i32 3
  %1683 = load ptr, ptr %1682, align 8, !tbaa !65
  call void %1680(ptr noundef %1683)
  br label %1684

1684:                                             ; preds = %1679, %1651
  %1685 = load ptr, ptr %34, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.match_data, ptr %1685, i32 0, i32 36
  %1687 = load i32, ptr %1686, align 8, !tbaa !68
  %1688 = and i32 %1687, 65536
  %1689 = icmp ne i32 %1688, 0
  br i1 %1689, label %1690, label %1697

1690:                                             ; preds = %1684
  %1691 = load ptr, ptr %34, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.match_data, ptr %1691, i32 0, i32 35
  %1693 = load i32, ptr %1692, align 4, !tbaa !92
  %1694 = load i32, ptr %20, align 4, !tbaa !9
  %1695 = icmp sge i32 %1693, %1694
  br i1 %1695, label %1696, label %1697

1696:                                             ; preds = %1690
  br label %1702

1697:                                             ; preds = %1690, %1684
  %1698 = load ptr, ptr %34, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.match_data, ptr %1698, i32 0, i32 35
  %1700 = load i32, ptr %1699, align 4, !tbaa !92
  %1701 = sdiv i32 %1700, 2
  br label %1702

1702:                                             ; preds = %1697, %1696
  %1703 = phi i32 [ 0, %1696 ], [ %1701, %1697 ]
  store i32 %1703, ptr %18, align 4, !tbaa !9
  %1704 = load ptr, ptr %34, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.match_data, ptr %1704, i32 0, i32 35
  %1706 = load i32, ptr %1705, align 4, !tbaa !92
  %1707 = sdiv i32 %1706, 2
  %1708 = load ptr, ptr %43, align 8, !tbaa !5
  %1709 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1708, i32 0, i32 9
  %1710 = load i16, ptr %1709, align 2, !tbaa !69
  %1711 = zext i16 %1710 to i32
  %1712 = icmp sle i32 %1707, %1711
  br i1 %1712, label %1713, label %1747

1713:                                             ; preds = %1702
  %1714 = load ptr, ptr %16, align 8, !tbaa !5
  %1715 = icmp ne ptr %1714, null
  br i1 %1715, label %1716, label %1747

1716:                                             ; preds = %1713
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  %1717 = load ptr, ptr %43, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1717, i32 0, i32 9
  %1719 = load i16, ptr %1718, align 2, !tbaa !69
  %1720 = zext i16 %1719 to i32
  %1721 = mul nsw i32 %1720, 2
  %1722 = add nsw i32 2, %1721
  store i32 %1722, ptr %59, align 4, !tbaa !9
  %1723 = load i32, ptr %59, align 4, !tbaa !9
  %1724 = load i32, ptr %17, align 4, !tbaa !9
  %1725 = icmp sgt i32 %1723, %1724
  br i1 %1725, label %1726, label %1728

1726:                                             ; preds = %1716
  %1727 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %1727, ptr %59, align 4, !tbaa !9
  br label %1728

1728:                                             ; preds = %1726, %1716
  %1729 = load ptr, ptr %16, align 8, !tbaa !5
  %1730 = load ptr, ptr %34, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.match_data, ptr %1730, i32 0, i32 35
  %1732 = load i32, ptr %1731, align 4, !tbaa !92
  %1733 = sext i32 %1732 to i64
  %1734 = getelementptr inbounds i32, ptr %1729, i64 %1733
  store ptr %1734, ptr %57, align 8, !tbaa !5
  %1735 = load ptr, ptr %16, align 8, !tbaa !5
  %1736 = load i32, ptr %59, align 4, !tbaa !9
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds i32, ptr %1735, i64 %1737
  store ptr %1738, ptr %58, align 8, !tbaa !5
  br label %1739

1739:                                             ; preds = %1743, %1728
  %1740 = load ptr, ptr %57, align 8, !tbaa !5
  %1741 = load ptr, ptr %58, align 8, !tbaa !5
  %1742 = icmp ult ptr %1740, %1741
  br i1 %1742, label %1743, label %1746

1743:                                             ; preds = %1739
  %1744 = load ptr, ptr %57, align 8, !tbaa !5
  %1745 = getelementptr inbounds i32, ptr %1744, i32 1
  store ptr %1745, ptr %57, align 8, !tbaa !5
  store i32 -1, ptr %1744, align 4, !tbaa !9
  br label %1739, !llvm.loop !95

1746:                                             ; preds = %1739
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  br label %1747

1747:                                             ; preds = %1746, %1713, %1702
  %1748 = load i32, ptr %17, align 4, !tbaa !9
  %1749 = icmp slt i32 %1748, 2
  br i1 %1749, label %1750, label %1751

1750:                                             ; preds = %1747
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1776

1751:                                             ; preds = %1747
  %1752 = load ptr, ptr %34, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.match_data, ptr %1752, i32 0, i32 31
  %1754 = load ptr, ptr %1753, align 8, !tbaa !88
  %1755 = load ptr, ptr %34, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.match_data, ptr %1755, i32 0, i32 29
  %1757 = load ptr, ptr %1756, align 8, !tbaa !42
  %1758 = ptrtoint ptr %1754 to i64
  %1759 = ptrtoint ptr %1757 to i64
  %1760 = sub i64 %1758, %1759
  %1761 = trunc i64 %1760 to i32
  %1762 = load ptr, ptr %16, align 8, !tbaa !5
  %1763 = getelementptr inbounds i32, ptr %1762, i64 0
  store i32 %1761, ptr %1763, align 4, !tbaa !9
  %1764 = load ptr, ptr %34, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.match_data, ptr %1764, i32 0, i32 32
  %1766 = load ptr, ptr %1765, align 8, !tbaa !96
  %1767 = load ptr, ptr %34, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.match_data, ptr %1767, i32 0, i32 29
  %1769 = load ptr, ptr %1768, align 8, !tbaa !42
  %1770 = ptrtoint ptr %1766 to i64
  %1771 = ptrtoint ptr %1769 to i64
  %1772 = sub i64 %1770, %1771
  %1773 = trunc i64 %1772 to i32
  %1774 = load ptr, ptr %16, align 8, !tbaa !5
  %1775 = getelementptr inbounds i32, ptr %1774, i64 1
  store i32 %1773, ptr %1775, align 4, !tbaa !9
  br label %1776

1776:                                             ; preds = %1751, %1750
  %1777 = load ptr, ptr %11, align 8, !tbaa !5
  %1778 = icmp ne ptr %1777, null
  br i1 %1778, label %1779, label %1792

1779:                                             ; preds = %1776
  %1780 = load ptr, ptr %11, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.pcre_extra, ptr %1780, i32 0, i32 0
  %1782 = load i64, ptr %1781, align 8, !tbaa !31
  %1783 = and i64 %1782, 32
  %1784 = icmp ne i64 %1783, 0
  br i1 %1784, label %1785, label %1792

1785:                                             ; preds = %1779
  %1786 = load ptr, ptr %34, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.match_data, ptr %1786, i32 0, i32 43
  %1788 = load ptr, ptr %1787, align 8, !tbaa !55
  %1789 = load ptr, ptr %11, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.pcre_extra, ptr %1789, i32 0, i32 6
  %1791 = load ptr, ptr %1790, align 8, !tbaa !97
  store ptr %1788, ptr %1791, align 8, !tbaa !5
  br label %1792

1792:                                             ; preds = %1785, %1779, %1776
  %1793 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %1793, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

1794:                                             ; preds = %1648
  %1795 = load i32, ptr %22, align 4, !tbaa !9
  %1796 = icmp ne i32 %1795, 0
  br i1 %1796, label %1797, label %1802

1797:                                             ; preds = %1794
  %1798 = load ptr, ptr @pcre_free, align 8, !tbaa !5
  %1799 = load ptr, ptr %34, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.match_data, ptr %1799, i32 0, i32 3
  %1801 = load ptr, ptr %1800, align 8, !tbaa !65
  call void %1798(ptr noundef %1801)
  br label %1802

1802:                                             ; preds = %1797, %1794
  %1803 = load i32, ptr %18, align 4, !tbaa !9
  %1804 = icmp ne i32 %1803, 0
  br i1 %1804, label %1805, label %1810

1805:                                             ; preds = %1802
  %1806 = load i32, ptr %18, align 4, !tbaa !9
  %1807 = icmp ne i32 %1806, -12
  br i1 %1807, label %1808, label %1810

1808:                                             ; preds = %1805
  %1809 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %1809, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

1810:                                             ; preds = %1805, %1802
  %1811 = load ptr, ptr %40, align 8, !tbaa !5
  %1812 = icmp ne ptr %1811, null
  br i1 %1812, label %1813, label %1848

1813:                                             ; preds = %1810
  %1814 = load ptr, ptr %34, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.match_data, ptr %1814, i32 0, i32 43
  store ptr null, ptr %1815, align 8, !tbaa !55
  %1816 = load i32, ptr %17, align 4, !tbaa !9
  %1817 = icmp sgt i32 %1816, 1
  br i1 %1817, label %1818, label %1847

1818:                                             ; preds = %1813
  %1819 = load ptr, ptr %39, align 8, !tbaa !5
  %1820 = load ptr, ptr %12, align 8, !tbaa !5
  %1821 = ptrtoint ptr %1819 to i64
  %1822 = ptrtoint ptr %1820 to i64
  %1823 = sub i64 %1821, %1822
  %1824 = trunc i64 %1823 to i32
  %1825 = load ptr, ptr %16, align 8, !tbaa !5
  %1826 = getelementptr inbounds i32, ptr %1825, i64 0
  store i32 %1824, ptr %1826, align 4, !tbaa !9
  %1827 = load ptr, ptr %38, align 8, !tbaa !5
  %1828 = load ptr, ptr %12, align 8, !tbaa !5
  %1829 = ptrtoint ptr %1827 to i64
  %1830 = ptrtoint ptr %1828 to i64
  %1831 = sub i64 %1829, %1830
  %1832 = trunc i64 %1831 to i32
  %1833 = load ptr, ptr %16, align 8, !tbaa !5
  %1834 = getelementptr inbounds i32, ptr %1833, i64 1
  store i32 %1832, ptr %1834, align 4, !tbaa !9
  %1835 = load i32, ptr %17, align 4, !tbaa !9
  %1836 = icmp sgt i32 %1835, 2
  br i1 %1836, label %1837, label %1846

1837:                                             ; preds = %1818
  %1838 = load ptr, ptr %40, align 8, !tbaa !5
  %1839 = load ptr, ptr %12, align 8, !tbaa !5
  %1840 = ptrtoint ptr %1838 to i64
  %1841 = ptrtoint ptr %1839 to i64
  %1842 = sub i64 %1840, %1841
  %1843 = trunc i64 %1842 to i32
  %1844 = load ptr, ptr %16, align 8, !tbaa !5
  %1845 = getelementptr inbounds i32, ptr %1844, i64 2
  store i32 %1843, ptr %1845, align 4, !tbaa !9
  br label %1846

1846:                                             ; preds = %1837, %1818
  br label %1847

1847:                                             ; preds = %1846, %1813
  store i32 -12, ptr %18, align 4, !tbaa !9
  br label %1849

1848:                                             ; preds = %1810
  store i32 -1, ptr %18, align 4, !tbaa !9
  br label %1849

1849:                                             ; preds = %1848, %1847
  %1850 = load ptr, ptr %11, align 8, !tbaa !5
  %1851 = icmp ne ptr %1850, null
  br i1 %1851, label %1852, label %1865

1852:                                             ; preds = %1849
  %1853 = load ptr, ptr %11, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.pcre_extra, ptr %1853, i32 0, i32 0
  %1855 = load i64, ptr %1854, align 8, !tbaa !31
  %1856 = and i64 %1855, 32
  %1857 = icmp ne i64 %1856, 0
  br i1 %1857, label %1858, label %1865

1858:                                             ; preds = %1852
  %1859 = load ptr, ptr %34, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.match_data, ptr %1859, i32 0, i32 44
  %1861 = load ptr, ptr %1860, align 8, !tbaa !54
  %1862 = load ptr, ptr %11, align 8, !tbaa !5
  %1863 = getelementptr inbounds %struct.pcre_extra, ptr %1862, i32 0, i32 6
  %1864 = load ptr, ptr %1863, align 8, !tbaa !97
  store ptr %1861, ptr %1864, align 8, !tbaa !5
  br label %1865

1865:                                             ; preds = %1858, %1852, %1849
  %1866 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %1866, ptr %9, align 4
  store i32 1, ptr %44, align 4
  br label %1867

1867:                                             ; preds = %1865, %1808, %1792, %1641, %625, %585, %530, %510, %213, %137, %123, %116, %108, %104, %100, %87, %81
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 280, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  %1868 = load i32, ptr %9, align 4
  ret i32 %1868

1869:                                             ; preds = %1402, %1310
  unreachable
}

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 0}
!13 = !{!"real_pcre8_or_16", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 26, !14, i64 28, !14, i64 30, !14, i64 32, !14, i64 34, !14, i64 36, !14, i64 38, !14, i64 40, !14, i64 42, !14, i64 44, !14, i64 46, !6, i64 48, !6, i64 56}
!14 = !{!"short", !7, i64 0}
!15 = !{!13, !10, i64 12}
!16 = !{!13, !10, i64 8}
!17 = !{!18, !10, i64 112}
!18 = !{!"match_data", !19, i64 0, !19, i64 8, !19, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !6, i64 64, !7, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !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, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !6, i64 224, !10, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272}
!19 = !{!"long", !7, i64 0}
!20 = !{!18, !10, i64 200}
!21 = !{!13, !14, i64 34}
!22 = !{!18, !6, i64 64}
!23 = !{!13, !14, i64 38}
!24 = !{!18, !10, i64 48}
!25 = !{!13, !14, i64 36}
!26 = !{!18, !10, i64 52}
!27 = !{!18, !19, i64 8}
!28 = !{!18, !19, i64 16}
!29 = !{!18, !6, i64 248}
!30 = !{!13, !6, i64 48}
!31 = !{!32, !19, i64 0}
!32 = !{!"pcre_extra", !19, i64 0, !6, i64 8, !19, i64 16, !6, i64 24, !6, i64 32, !19, i64 40, !6, i64 48, !6, i64 56}
!33 = !{!19, !19, i64 0}
!34 = !{!32, !6, i64 8}
!35 = !{!32, !19, i64 16}
!36 = !{!32, !19, i64 40}
!37 = !{!32, !6, i64 24}
!38 = !{!32, !6, i64 32}
!39 = !{!13, !10, i64 16}
!40 = !{!13, !10, i64 20}
!41 = !{!18, !6, i64 152}
!42 = !{!18, !6, i64 160}
!43 = !{!18, !10, i64 212}
!44 = !{!18, !6, i64 168}
!45 = !{!18, !10, i64 124}
!46 = !{!18, !10, i64 120}
!47 = !{!18, !10, i64 116}
!48 = !{!18, !10, i64 60}
!49 = !{!18, !10, i64 104}
!50 = !{!18, !10, i64 108}
!51 = !{!18, !10, i64 128}
!52 = !{!18, !10, i64 132}
!53 = !{!18, !10, i64 136}
!54 = !{!18, !6, i64 264}
!55 = !{!18, !6, i64 256}
!56 = !{!18, !6, i64 240}
!57 = !{!18, !10, i64 144}
!58 = !{!18, !6, i64 80}
!59 = !{!18, !6, i64 88}
!60 = !{!18, !6, i64 96}
!61 = !{!18, !10, i64 140}
!62 = !{!18, !10, i64 40}
!63 = !{!18, !10, i64 44}
!64 = !{!13, !14, i64 32}
!65 = !{!18, !6, i64 24}
!66 = !{!18, !10, i64 32}
!67 = !{!18, !10, i64 36}
!68 = !{!18, !10, i64 208}
!69 = !{!13, !14, i64 30}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.mustprogress"}
!72 = !{!13, !14, i64 24}
!73 = !{!74, !10, i64 4}
!74 = !{!"pcre_study_data", !10, i64 0, !10, i64 4, !7, i64 8, !10, i64 40}
!75 = !{!13, !14, i64 26}
!76 = distinct !{!76, !71}
!77 = distinct !{!77, !71}
!78 = distinct !{!78, !71}
!79 = distinct !{!79, !71}
!80 = distinct !{!80, !71}
!81 = distinct !{!81, !71}
!82 = distinct !{!82, !71}
!83 = distinct !{!83, !71}
!84 = distinct !{!84, !71}
!85 = !{!74, !10, i64 40}
!86 = distinct !{!86, !71}
!87 = distinct !{!87, !71}
!88 = !{!18, !6, i64 176}
!89 = !{!18, !6, i64 192}
!90 = !{!18, !19, i64 0}
!91 = !{!18, !10, i64 216}
!92 = !{!18, !10, i64 204}
!93 = !{!18, !10, i64 56}
!94 = distinct !{!94, !71}
!95 = distinct !{!95, !71}
!96 = !{!18, !6, i64 184}
!97 = !{!32, !6, i64 48}


; 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.match_data = type { i64, i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, ptr, [4 x i8], ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr }

@_pcre_default_tables = external constant [0 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
define dso_local i32 @pcre_exec(ptr noundef %0, ptr noundef readonly %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, ptr noundef %6, i32 noundef %7) local_unnamed_addr #0 {
  %9 = ptrtoint ptr %6 to i64
  %10 = alloca %struct.match_data, align 8
  %11 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %10) #6
  %12 = sext i32 %4 to i64
  %13 = getelementptr inbounds i8, ptr %2, i64 %12
  %14 = getelementptr inbounds i8, ptr %13, i64 -1
  %15 = icmp eq ptr %0, null
  %16 = icmp eq ptr %1, null
  %17 = icmp eq ptr %2, null
  %18 = icmp eq i32 %3, -999
  %19 = icmp eq i32 %4, -999
  %20 = and i1 %18, %19
  %21 = and i1 %16, %20
  %22 = and i1 %15, %21
  %or.cond8 = and i1 %17, %22
  br i1 %or.cond8, label %23, label %25

23:                                               ; preds = %8
  %24 = tail call i32 @match(ptr noundef null, ptr noundef null, ptr noundef null, i32 noundef 0, ptr noundef null, ptr noundef null, i32 noundef 0)
  br label %652

25:                                               ; preds = %8
  %26 = and i32 %5, -502310289
  %.not = icmp eq i32 %26, 0
  br i1 %.not, label %27, label %652

27:                                               ; preds = %25
  %or.cond10 = or i1 %15, %17
  br i1 %or.cond10, label %652, label %28

28:                                               ; preds = %27
  %29 = icmp eq ptr %6, null
  %30 = icmp sgt i32 %7, 0
  %or.cond12 = and i1 %29, %30
  br i1 %or.cond12, label %652, label %31

31:                                               ; preds = %28
  %32 = icmp slt i32 %7, 0
  br i1 %32, label %652, label %33

33:                                               ; preds = %31
  %34 = icmp slt i32 %3, 0
  br i1 %34, label %652, label %35

35:                                               ; preds = %33
  %or.cond = icmp ugt i32 %4, %3
  br i1 %or.cond, label %652, label %36

36:                                               ; preds = %35
  %37 = load i32, ptr %0, align 8, !tbaa !5
  %.not624 = icmp eq i32 %37, 1346589253
  br i1 %.not624, label %41, label %38

38:                                               ; preds = %36
  %39 = icmp eq i32 %37, 1163019088
  %40 = select i1 %39, i32 -29, i32 -4
  br label %652

41:                                               ; preds = %36
  %42 = getelementptr inbounds i8, ptr %0, i64 12
  %43 = load i32, ptr %42, align 4, !tbaa !12
  %44 = and i32 %43, 1
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %652, label %46

46:                                               ; preds = %41
  %47 = getelementptr inbounds i8, ptr %0, i64 8
  %48 = load i32, ptr %47, align 8, !tbaa !13
  %49 = and i32 %48, 2048
  %.not625 = icmp ne i32 %49, 0
  %.lobit = lshr exact i32 %49, 11
  %50 = getelementptr inbounds i8, ptr %10, i64 112
  store i32 %.lobit, ptr %50, align 8, !tbaa !14
  %51 = and i32 %5, 134217728
  %.not626 = icmp eq i32 %51, 0
  %52 = lshr i32 %5, 15
  %.lobit628 = and i32 %52, 1
  %53 = select i1 %.not626, i32 %.lobit628, i32 2
  %54 = getelementptr inbounds i8, ptr %10, i64 200
  store i32 %53, ptr %54, align 8, !tbaa !17
  %55 = and i32 %5, 8192
  %56 = icmp eq i32 %55, 0
  %or.cond704 = and i1 %56, %.not625
  br i1 %or.cond704, label %57, label %77

57:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  %58 = call i32 @_pcre_valid_utf(ptr noundef nonnull %2, i32 noundef %3, ptr noundef nonnull %11) #6
  %.not629 = icmp eq i32 %58, 0
  br i1 %.not629, label %70, label %59

59:                                               ; preds = %57
  %60 = icmp ugt i32 %7, 1
  br i1 %60, label %61, label %64

61:                                               ; preds = %59
  %62 = load i32, ptr %11, align 4, !tbaa !18
  store i32 %62, ptr %6, align 4, !tbaa !18
  %63 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %58, ptr %63, align 4, !tbaa !18
  br label %64

64:                                               ; preds = %61, %59
  %65 = icmp slt i32 %58, 6
  %66 = load i32, ptr %54, align 8
  %67 = icmp sgt i32 %66, 1
  %68 = select i1 %65, i1 %67, i1 false
  %69 = select i1 %68, i32 -25, i32 -10
  br label %.thread

70:                                               ; preds = %57
  %.not630 = icmp ne i32 %4, 0
  %71 = icmp ult i32 %4, %3
  %or.cond705 = and i1 %.not630, %71
  br i1 %or.cond705, label %72, label %76

72:                                               ; preds = %70
  %73 = load i8, ptr %13, align 1, !tbaa !19
  %74 = and i8 %73, -64
  %75 = icmp eq i8 %74, -128
  br i1 %75, label %.thread, label %76

.thread:                                          ; preds = %64, %72
  %.0532.ph = phi i32 [ -11, %72 ], [ %69, %64 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %652

76:                                               ; preds = %70, %72
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %77

77:                                               ; preds = %76, %46
  %78 = getelementptr inbounds i8, ptr %0, i64 34
  %79 = load i16, ptr %78, align 2, !tbaa !20
  %80 = zext i16 %79 to i64
  %81 = getelementptr inbounds i8, ptr %0, i64 %80
  %82 = getelementptr inbounds i8, ptr %10, i64 64
  store ptr %81, ptr %82, align 8, !tbaa !21
  %83 = getelementptr inbounds i8, ptr %0, i64 38
  %84 = load i16, ptr %83, align 2, !tbaa !22
  %85 = zext i16 %84 to i32
  %86 = getelementptr inbounds i8, ptr %10, i64 48
  store i32 %85, ptr %86, align 8, !tbaa !23
  %87 = getelementptr inbounds i8, ptr %0, i64 36
  %88 = load i16, ptr %87, align 4, !tbaa !24
  %89 = zext i16 %88 to i32
  %90 = getelementptr inbounds i8, ptr %10, i64 52
  store i32 %89, ptr %90, align 4, !tbaa !25
  %91 = getelementptr inbounds i8, ptr %10, i64 8
  store i64 10000000, ptr %91, align 8, !tbaa !26
  %92 = getelementptr inbounds i8, ptr %10, i64 16
  store i64 10000000, ptr %92, align 8, !tbaa !27
  %93 = getelementptr inbounds i8, ptr %10, i64 248
  store ptr null, ptr %93, align 8, !tbaa !28
  %94 = getelementptr inbounds i8, ptr %0, i64 48
  %95 = load ptr, ptr %94, align 8, !tbaa !29
  br i1 %16, label %124, label %96

96:                                               ; preds = %77
  %97 = load i64, ptr %1, align 8, !tbaa !30
  %98 = and i64 %97, 1
  %.not632 = icmp eq i64 %98, 0
  br i1 %.not632, label %102, label %99

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %1, i64 8
  %101 = load ptr, ptr %100, align 8, !tbaa !32
  br label %102

102:                                              ; preds = %99, %96
  %.0560 = phi ptr [ %101, %99 ], [ null, %96 ]
  %103 = and i64 %97, 2
  %.not633 = icmp eq i64 %103, 0
  br i1 %.not633, label %107, label %104

104:                                              ; preds = %102
  %105 = getelementptr inbounds i8, ptr %1, i64 16
  %106 = load i64, ptr %105, align 8, !tbaa !33
  store i64 %106, ptr %91, align 8, !tbaa !26
  br label %107

107:                                              ; preds = %104, %102
  %108 = phi i64 [ %106, %104 ], [ 10000000, %102 ]
  %109 = and i64 %97, 16
  %.not634 = icmp eq i64 %109, 0
  br i1 %.not634, label %113, label %110

110:                                              ; preds = %107
  %111 = getelementptr inbounds i8, ptr %1, i64 40
  %112 = load i64, ptr %111, align 8, !tbaa !34
  store i64 %112, ptr %92, align 8, !tbaa !27
  br label %113

113:                                              ; preds = %110, %107
  %114 = phi i64 [ %112, %110 ], [ 10000000, %107 ]
  %115 = and i64 %97, 4
  %.not635 = icmp eq i64 %115, 0
  br i1 %.not635, label %119, label %116

116:                                              ; preds = %113
  %117 = getelementptr inbounds i8, ptr %1, i64 24
  %118 = load ptr, ptr %117, align 8, !tbaa !35
  store ptr %118, ptr %93, align 8, !tbaa !28
  br label %119

119:                                              ; preds = %116, %113
  %120 = and i64 %97, 8
  %.not636 = icmp eq i64 %120, 0
  br i1 %.not636, label %124, label %121

121:                                              ; preds = %119
  %122 = getelementptr inbounds i8, ptr %1, i64 32
  %123 = load ptr, ptr %122, align 8, !tbaa !36
  br label %124

124:                                              ; preds = %119, %121, %77
  %125 = phi i64 [ 10000000, %77 ], [ %114, %121 ], [ %114, %119 ]
  %126 = phi i64 [ 10000000, %77 ], [ %108, %121 ], [ %108, %119 ]
  %.1582 = phi ptr [ %95, %77 ], [ %123, %121 ], [ %95, %119 ]
  %.1561 = phi ptr [ null, %77 ], [ %.0560, %121 ], [ %.0560, %119 ]
  %127 = load i32, ptr %42, align 4, !tbaa !12
  %128 = and i32 %127, 8192
  %.not637 = icmp eq i32 %128, 0
  br i1 %.not637, label %135, label %129

129:                                              ; preds = %124
  %130 = getelementptr inbounds i8, ptr %0, i64 16
  %131 = load i32, ptr %130, align 8, !tbaa !37
  %132 = zext i32 %131 to i64
  %133 = icmp ugt i64 %126, %132
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  store i64 %132, ptr %91, align 8, !tbaa !26
  br label %135

135:                                              ; preds = %134, %129, %124
  %136 = and i32 %127, 16384
  %.not638 = icmp eq i32 %136, 0
  br i1 %.not638, label %143, label %137

137:                                              ; preds = %135
  %138 = getelementptr inbounds i8, ptr %0, i64 20
  %139 = load i32, ptr %138, align 4, !tbaa !38
  %140 = zext i32 %139 to i64
  %141 = icmp ugt i64 %125, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %137
  store i64 %140, ptr %92, align 8, !tbaa !27
  br label %143

143:                                              ; preds = %142, %137, %135
  %144 = icmp eq ptr %.1582, null
  %spec.store.select = select i1 %144, ptr @_pcre_default_tables, ptr %.1582
  %145 = load i32, ptr %47, align 8, !tbaa !13
  %146 = or i32 %145, %5
  %147 = and i32 %146, 16
  %.not639 = icmp ne i32 %147, 0
  %148 = and i32 %127, 256
  %.not641 = icmp eq i32 %148, 0
  %149 = and i32 %145, 262144
  %.not642 = icmp eq i32 %149, 0
  %150 = zext i16 %84 to i64
  %151 = zext i16 %88 to i64
  %152 = mul nuw nsw i64 %151, %150
  %153 = getelementptr inbounds i8, ptr %81, i64 %152
  %154 = getelementptr inbounds i8, ptr %10, i64 152
  store ptr %153, ptr %154, align 8, !tbaa !39
  %155 = getelementptr inbounds i8, ptr %10, i64 160
  store ptr %2, ptr %155, align 8, !tbaa !40
  %156 = getelementptr inbounds i8, ptr %10, i64 212
  store i32 %4, ptr %156, align 4, !tbaa !41
  %157 = zext nneg i32 %3 to i64
  %158 = getelementptr inbounds i8, ptr %2, i64 %157
  %159 = getelementptr inbounds i8, ptr %10, i64 168
  store ptr %158, ptr %159, align 8, !tbaa !42
  %160 = lshr i32 %145, 5
  %.lobit643 = and i32 %160, 1
  %161 = getelementptr inbounds i8, ptr %10, i64 124
  store i32 %.lobit643, ptr %161, align 4, !tbaa !43
  %162 = lshr i32 %145, 29
  %.lobit644 = and i32 %162, 1
  %163 = getelementptr inbounds i8, ptr %10, i64 120
  store i32 %.lobit644, ptr %163, align 8, !tbaa !44
  %164 = lshr i32 %145, 25
  %.lobit645 = and i32 %164, 1
  %165 = getelementptr inbounds i8, ptr %10, i64 116
  store i32 %.lobit645, ptr %165, align 4, !tbaa !45
  %166 = getelementptr inbounds i8, ptr %10, i64 60
  store i32 0, ptr %166, align 4, !tbaa !46
  %167 = lshr i32 %5, 7
  %.lobit646 = and i32 %167, 1
  %168 = getelementptr inbounds i8, ptr %10, i64 104
  store i32 %.lobit646, ptr %168, align 8, !tbaa !47
  %169 = lshr i32 %5, 8
  %.lobit647 = and i32 %169, 1
  %170 = getelementptr inbounds i8, ptr %10, i64 108
  store i32 %.lobit647, ptr %170, align 4, !tbaa !48
  %171 = lshr i32 %5, 10
  %.lobit648 = and i32 %171, 1
  %172 = getelementptr inbounds i8, ptr %10, i64 128
  store i32 %.lobit648, ptr %172, align 8, !tbaa !49
  %173 = icmp ugt i32 %5, 268435455
  %174 = zext i1 %173 to i32
  %175 = getelementptr inbounds i8, ptr %10, i64 132
  store i32 %174, ptr %175, align 4, !tbaa !50
  %176 = getelementptr inbounds i8, ptr %10, i64 136
  store i32 0, ptr %176, align 8, !tbaa !51
  %177 = getelementptr inbounds i8, ptr %10, i64 264
  %178 = getelementptr inbounds i8, ptr %10, i64 256
  %179 = getelementptr inbounds i8, ptr %10, i64 240
  store ptr null, ptr %179, align 8, !tbaa !52
  %180 = lshr i32 %127, 12
  %.lobit649 = and i32 %180, 1
  %181 = getelementptr inbounds i8, ptr %10, i64 144
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %178, i8 0, i64 16, i1 false)
  store i32 %.lobit649, ptr %181, align 8, !tbaa !53
  %182 = getelementptr inbounds i8, ptr %10, i64 80
  store ptr %spec.store.select, ptr %182, align 8, !tbaa !54
  %183 = getelementptr inbounds i8, ptr %spec.store.select, i64 256
  %184 = getelementptr inbounds i8, ptr %10, i64 88
  store ptr %183, ptr %184, align 8, !tbaa !55
  %185 = getelementptr inbounds i8, ptr %spec.store.select, i64 832
  %186 = getelementptr inbounds i8, ptr %10, i64 96
  store ptr %185, ptr %186, align 8, !tbaa !56
  %187 = lshr i32 %5, 23
  %188 = and i32 %187, 3
  switch i32 %188, label %default.unreachable [
    i32 0, label %189
    i32 1, label %194
    i32 2, label %193
    i32 3, label %652
  ]

189:                                              ; preds = %143
  %190 = and i32 %145, 25165824
  %.not650 = icmp eq i32 %190, 0
  br i1 %.not650, label %194, label %191

191:                                              ; preds = %189
  %192 = lshr i32 %145, 23
  %.lobit651 = and i32 %192, 1
  br label %194

193:                                              ; preds = %143
  br label %194

default.unreachable:                              ; preds = %143
  unreachable

194:                                              ; preds = %143, %189, %191, %193
  %.lobit651.sink = phi i32 [ %.lobit651, %191 ], [ 0, %193 ], [ 0, %189 ], [ %188, %143 ]
  %195 = getelementptr inbounds i8, ptr %10, i64 140
  store i32 %.lobit651.sink, ptr %195, align 4, !tbaa !57
  %196 = and i32 %5, 7340032
  %197 = icmp eq i32 %196, 0
  %spec.select789 = select i1 %197, i32 %145, i32 %5
  %198 = lshr i32 %spec.select789, 20
  %199 = and i32 %198, 7
  switch i32 %199, label %652 [
    i32 0, label %210
    i32 1, label %200
    i32 2, label %210
    i32 3, label %205
    i32 4, label %203
    i32 5, label %201
  ]

200:                                              ; preds = %194
  br label %210

201:                                              ; preds = %194
  %202 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 2, ptr %202, align 8, !tbaa !58
  br label %214

203:                                              ; preds = %194
  %204 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 1, ptr %204, align 8, !tbaa !58
  br label %214

205:                                              ; preds = %194
  %206 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 0, ptr %206, align 8, !tbaa !58
  %207 = getelementptr inbounds i8, ptr %10, i64 44
  store i32 2, ptr %207, align 4, !tbaa !59
  %208 = getelementptr inbounds i8, ptr %10, i64 72
  store i8 13, ptr %208, align 8, !tbaa !19
  %209 = getelementptr inbounds i8, ptr %10, i64 73
  store i8 10, ptr %209, align 1, !tbaa !19
  br label %214

210:                                              ; preds = %200, %194, %194
  %.0542.ph.ph.ph = phi i8 [ 10, %194 ], [ 10, %194 ], [ 13, %200 ]
  %211 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 0, ptr %211, align 8, !tbaa !58
  %212 = getelementptr inbounds i8, ptr %10, i64 44
  store i32 1, ptr %212, align 4, !tbaa !59
  %213 = getelementptr inbounds i8, ptr %10, i64 72
  store i8 %.0542.ph.ph.ph, ptr %213, align 8, !tbaa !19
  br label %214

214:                                              ; preds = %203, %210, %205, %201
  %215 = load i32, ptr %54, align 8, !tbaa !17
  %.not652 = icmp eq i32 %215, 0
  %216 = and i32 %127, 512
  %.not653 = icmp eq i32 %216, 0
  %or.cond790 = or i1 %.not653, %.not652
  br i1 %or.cond790, label %217, label %652

217:                                              ; preds = %214
  %218 = urem i32 %7, 3
  %219 = sub nuw nsw i32 %7, %218
  %220 = shl nuw nsw i32 %219, 1
  %221 = udiv i32 %220, 3
  %222 = getelementptr inbounds i8, ptr %0, i64 32
  %223 = load i16, ptr %222, align 8, !tbaa !60
  %224 = zext i16 %223 to i32
  %.not654 = icmp eq i16 %223, 0
  %225 = udiv i32 %7, 3
  %.not655 = icmp ugt i32 %225, %224
  %or.cond706 = or i1 %.not654, %.not655
  br i1 %or.cond706, label %239, label %226

226:                                              ; preds = %217
  %227 = mul nuw nsw i32 %224, 3
  %228 = add nuw nsw i32 %227, 3
  %229 = load ptr, ptr @pcre_malloc, align 8, !tbaa !61
  %230 = shl nuw nsw i32 %228, 2
  %231 = zext nneg i32 %230 to i64
  %232 = call ptr %229(i64 noundef %231) #6
  %233 = getelementptr inbounds i8, ptr %10, i64 24
  store ptr %232, ptr %233, align 8, !tbaa !62
  %234 = icmp eq ptr %232, null
  br i1 %234, label %652, label %.thread889

.thread889:                                       ; preds = %226
  %.pre886 = shl nuw nsw i32 %228, 1
  %.pre887 = udiv i32 %.pre886, 3
  %235 = getelementptr inbounds i8, ptr %10, i64 32
  store i32 %228, ptr %235, align 8, !tbaa !63
  %236 = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %.pre887, ptr %236, align 4, !tbaa !64
  %237 = getelementptr inbounds i8, ptr %10, i64 208
  store i32 0, ptr %237, align 8, !tbaa !65
  %238 = getelementptr inbounds i8, ptr %10, i64 24
  br label %245

239:                                              ; preds = %217
  %240 = getelementptr inbounds i8, ptr %10, i64 24
  store ptr %6, ptr %240, align 8, !tbaa !62
  %241 = getelementptr inbounds i8, ptr %10, i64 32
  store i32 %219, ptr %241, align 8, !tbaa !63
  %242 = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %221, ptr %242, align 4, !tbaa !64
  %243 = getelementptr inbounds i8, ptr %10, i64 208
  store i32 0, ptr %243, align 8, !tbaa !65
  %244 = getelementptr inbounds i8, ptr %10, i64 24
  %.not656 = icmp eq ptr %6, null
  br i1 %.not656, label %.thread763, label %245

245:                                              ; preds = %.thread889, %239
  %246 = phi ptr [ %238, %.thread889 ], [ %244, %239 ]
  %247 = phi ptr [ %237, %.thread889 ], [ %243, %239 ]
  %.0541893 = phi i32 [ %228, %.thread889 ], [ %219, %239 ]
  %248 = phi ptr [ %232, %.thread889 ], [ %6, %239 ]
  %249 = zext nneg i32 %.0541893 to i64
  %.idx = shl nuw nsw i64 %249, 2
  %.ptr = getelementptr inbounds i8, ptr %248, i64 %.idx
  %250 = getelementptr inbounds i8, ptr %0, i64 30
  %251 = load i16, ptr %250, align 2, !tbaa !66
  %252 = zext i16 %251 to i64
  %.idx659 = sub nsw i64 %249, %252
  %.add = shl nsw i64 %.idx659, 2
  %253 = icmp slt i64 %.idx659, 2
  %spec.select.v = select i1 %253, i64 8, i64 %.add
  %spec.select = getelementptr inbounds i8, ptr %248, i64 %spec.select.v
  %254 = getelementptr inbounds i8, ptr %.ptr, i64 -4
  %.not660814 = icmp ult ptr %254, %spec.select
  br i1 %.not660814, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %245, %.lr.ph
  %255 = phi ptr [ %256, %.lr.ph ], [ %254, %245 ]
  store i32 -1, ptr %255, align 4, !tbaa !18
  %256 = getelementptr inbounds i8, ptr %255, i64 -4
  %.not660 = icmp ult ptr %256, %spec.select
  br i1 %.not660, label %._crit_edge, label %.lr.ph, !llvm.loop !67

._crit_edge:                                      ; preds = %.lr.ph, %245
  br i1 %30, label %257, label %.thread763

257:                                              ; preds = %._crit_edge
  store i32 -1, ptr %248, align 4, !tbaa !18
  %.not791 = icmp eq i32 %7, 1
  br i1 %.not791, label %.thread763, label %258

258:                                              ; preds = %257
  %259 = getelementptr inbounds i8, ptr %248, i64 4
  store i32 -1, ptr %259, align 4, !tbaa !18
  br label %.thread763

.thread763:                                       ; preds = %._crit_edge, %257, %258, %239
  %260 = phi ptr [ %246, %._crit_edge ], [ %246, %257 ], [ %246, %258 ], [ %244, %239 ]
  %261 = phi ptr [ %247, %._crit_edge ], [ %247, %257 ], [ %247, %258 ], [ %243, %239 ]
  %.pre = load i32, ptr %42, align 4, !tbaa !12
  br i1 %.not639, label %281, label %262

262:                                              ; preds = %.thread763
  %263 = and i32 %.pre, 16
  %.not661 = icmp eq i32 %263, 0
  br i1 %.not661, label %274, label %264

264:                                              ; preds = %262
  %265 = getelementptr inbounds i8, ptr %0, i64 24
  %266 = load i16, ptr %265, align 8, !tbaa !69
  %267 = trunc i16 %266 to i8
  %268 = and i32 %.pre, 32
  %.not663 = icmp eq i32 %268, 0
  br i1 %.not663, label %281, label %269

269:                                              ; preds = %264
  %270 = load ptr, ptr %184, align 8, !tbaa !55
  %.mask = and i16 %266, 255
  %271 = zext nneg i16 %.mask to i64
  %272 = getelementptr inbounds i8, ptr %270, i64 %271
  %273 = load i8, ptr %272, align 1, !tbaa !19
  br label %281

274:                                              ; preds = %262
  %275 = icmp ne ptr %.1561, null
  %or.cond14 = select i1 %.not641, i1 %275, i1 false
  br i1 %or.cond14, label %276, label %281

276:                                              ; preds = %274
  %277 = getelementptr inbounds i8, ptr %.1561, i64 4
  %278 = load i32, ptr %277, align 4, !tbaa !70
  %279 = and i32 %278, 1
  %.not662 = icmp eq i32 %279, 0
  %280 = getelementptr inbounds i8, ptr %.1561, i64 8
  %spec.select707 = select i1 %.not662, ptr null, ptr %280
  br label %281

281:                                              ; preds = %276, %269, %264, %274, %.thread763
  %.0583 = phi i8 [ 0, %.thread763 ], [ %273, %269 ], [ %267, %264 ], [ 0, %274 ], [ 0, %276 ]
  %.0580 = phi ptr [ null, %.thread763 ], [ null, %269 ], [ null, %264 ], [ null, %274 ], [ %spec.select707, %276 ]
  %.0559 = phi i8 [ 0, %.thread763 ], [ %267, %269 ], [ %267, %264 ], [ 0, %274 ], [ 0, %276 ]
  %.not672 = phi i1 [ true, %.thread763 ], [ false, %269 ], [ false, %264 ], [ true, %274 ], [ true, %276 ]
  %282 = and i32 %.pre, 64
  %.not664 = icmp ne i32 %282, 0
  br i1 %.not664, label %283, label %293

283:                                              ; preds = %281
  %284 = getelementptr inbounds i8, ptr %0, i64 26
  %285 = load i16, ptr %284, align 2, !tbaa !72
  %286 = trunc i16 %285 to i8
  %287 = and i32 %.pre, 128
  %.not665 = icmp eq i32 %287, 0
  br i1 %.not665, label %293, label %288

288:                                              ; preds = %283
  %289 = load ptr, ptr %184, align 8, !tbaa !55
  %.mask666 = and i16 %285, 255
  %290 = zext nneg i16 %.mask666 to i64
  %291 = getelementptr inbounds i8, ptr %289, i64 %290
  %292 = load i8, ptr %291, align 1, !tbaa !19
  br label %293

293:                                              ; preds = %283, %288, %281
  %.0585 = phi i8 [ %286, %288 ], [ %286, %283 ], [ 0, %281 ]
  %.0584 = phi i8 [ %292, %288 ], [ %286, %283 ], [ 0, %281 ]
  %294 = getelementptr inbounds i8, ptr %10, i64 44
  %295 = getelementptr inbounds i8, ptr %10, i64 40
  %296 = getelementptr inbounds i8, ptr %10, i64 72
  %297 = getelementptr inbounds i8, ptr %10, i64 73
  %.not681 = icmp eq i8 %.0559, %.0583
  %.not673 = icmp eq ptr %.0580, null
  %.not686 = icmp eq ptr %.1561, null
  %298 = getelementptr inbounds i8, ptr %.1561, i64 4
  %299 = ptrtoint ptr %158 to i64
  %300 = getelementptr inbounds i8, ptr %.1561, i64 40
  %not..not672 = xor i1 %.not672, true
  %301 = zext i1 %not..not672 to i64
  %.not690 = icmp eq i8 %.0585, %.0584
  %302 = getelementptr inbounds i8, ptr %10, i64 176
  %303 = getelementptr inbounds i8, ptr %10, i64 192
  %304 = getelementptr inbounds i8, ptr %10, i64 216
  %305 = getelementptr inbounds i8, ptr %10, i64 204
  %306 = getelementptr inbounds i8, ptr %10, i64 56
  br label %307

307:                                              ; preds = %556, %293
  %.0575 = phi ptr [ %13, %293 ], [ %.11, %556 ]
  %.0570 = phi ptr [ null, %293 ], [ %spec.select730, %556 ]
  %.0567 = phi ptr [ null, %293 ], [ %spec.select731, %556 ]
  %.0562 = phi ptr [ %14, %293 ], [ %.3565, %556 ]
  %.0575881 = ptrtoint ptr %.0575 to i64
  br i1 %.not642, label %.critedge, label %308

308:                                              ; preds = %307
  %309 = load ptr, ptr %159, align 8, !tbaa !42
  %310 = icmp ult ptr %.0575, %309
  br i1 %.not625, label %.preheader808, label %.preheader809

.preheader809:                                    ; preds = %308
  br i1 %310, label %.lr.ph816, label %.critedge

.preheader808:                                    ; preds = %308
  br i1 %310, label %.lr.ph824, label %.critedge

.lr.ph824:                                        ; preds = %.preheader808, %.critedge16
  %311 = phi ptr [ %336, %.critedge16 ], [ %309, %.preheader808 ]
  %.0543823 = phi ptr [ %.1544, %.critedge16 ], [ %.0575, %.preheader808 ]
  %312 = load i32, ptr %295, align 8, !tbaa !58
  %.not669 = icmp eq i32 %312, 0
  br i1 %.not669, label %315, label %313

313:                                              ; preds = %.lr.ph824
  %314 = call i32 @_pcre_is_newline(ptr noundef %.0543823, i32 noundef %312, ptr noundef nonnull %311, ptr noundef nonnull %294, i32 noundef %.lobit) #6
  %.not792 = icmp eq i32 %314, 0
  br i1 %.not792, label %.critedge709.preheader, label %.critedge

315:                                              ; preds = %.lr.ph824
  %316 = load i32, ptr %294, align 4, !tbaa !59
  %317 = sext i32 %316 to i64
  %318 = sub nsw i64 0, %317
  %319 = getelementptr inbounds i8, ptr %311, i64 %318
  %.not670 = icmp ugt ptr %.0543823, %319
  br i1 %.not670, label %.critedge709.preheader, label %320

320:                                              ; preds = %315
  %321 = load i8, ptr %.0543823, align 1, !tbaa !19
  %322 = load i8, ptr %296, align 8, !tbaa !19
  %323 = icmp eq i8 %321, %322
  br i1 %323, label %324, label %.critedge709.preheader

324:                                              ; preds = %320
  %325 = icmp eq i32 %316, 1
  br i1 %325, label %.critedge, label %326

326:                                              ; preds = %324
  %327 = getelementptr inbounds i8, ptr %.0543823, i64 1
  %328 = load i8, ptr %327, align 1, !tbaa !19
  %329 = load i8, ptr %297, align 1, !tbaa !19
  %330 = icmp eq i8 %328, %329
  br i1 %330, label %.critedge, label %.critedge709.preheader

.critedge709.preheader:                           ; preds = %313, %320, %315, %326
  br label %.critedge709

.critedge709:                                     ; preds = %.critedge709.preheader, %332
  %.0543.pn = phi ptr [ %.1544, %332 ], [ %.0543823, %.critedge709.preheader ]
  %.1544 = getelementptr inbounds i8, ptr %.0543.pn, i64 1
  %331 = icmp ult ptr %.1544, %158
  br i1 %331, label %332, label %.critedge16

332:                                              ; preds = %.critedge709
  %333 = load i8, ptr %.1544, align 1, !tbaa !19
  %334 = and i8 %333, -64
  %335 = icmp eq i8 %334, -128
  br i1 %335, label %.critedge709, label %.critedge16, !llvm.loop !73

.critedge16:                                      ; preds = %.critedge709, %332
  %336 = load ptr, ptr %159, align 8, !tbaa !42
  %337 = icmp ult ptr %.1544, %336
  br i1 %337, label %.lr.ph824, label %.critedge, !llvm.loop !74

.lr.ph816:                                        ; preds = %.preheader809, %.critedge712
  %338 = phi ptr [ %358, %.critedge712 ], [ %309, %.preheader809 ]
  %.2545815 = phi ptr [ %359, %.critedge712 ], [ %.0575, %.preheader809 ]
  %339 = load i32, ptr %295, align 8, !tbaa !58
  %.not667 = icmp eq i32 %339, 0
  br i1 %.not667, label %342, label %340

340:                                              ; preds = %.lr.ph816
  %341 = call i32 @_pcre_is_newline(ptr noundef %.2545815, i32 noundef %339, ptr noundef nonnull %338, ptr noundef nonnull %294, i32 noundef %.lobit) #6
  %.not793 = icmp eq i32 %341, 0
  br i1 %.not793, label %..critedge712_crit_edge, label %.critedge

..critedge712_crit_edge:                          ; preds = %340
  %.pre884 = load ptr, ptr %159, align 8, !tbaa !42
  br label %.critedge712

342:                                              ; preds = %.lr.ph816
  %343 = load i32, ptr %294, align 4, !tbaa !59
  %344 = sext i32 %343 to i64
  %345 = sub nsw i64 0, %344
  %346 = getelementptr inbounds i8, ptr %338, i64 %345
  %.not668 = icmp ugt ptr %.2545815, %346
  br i1 %.not668, label %.critedge712, label %347

347:                                              ; preds = %342
  %348 = load i8, ptr %.2545815, align 1, !tbaa !19
  %349 = load i8, ptr %296, align 8, !tbaa !19
  %350 = icmp eq i8 %348, %349
  br i1 %350, label %351, label %.critedge712

351:                                              ; preds = %347
  %352 = icmp eq i32 %343, 1
  br i1 %352, label %.critedge, label %353

353:                                              ; preds = %351
  %354 = getelementptr inbounds i8, ptr %.2545815, i64 1
  %355 = load i8, ptr %354, align 1, !tbaa !19
  %356 = load i8, ptr %297, align 1, !tbaa !19
  %357 = icmp eq i8 %355, %356
  br i1 %357, label %.critedge, label %.critedge712

.critedge712:                                     ; preds = %..critedge712_crit_edge, %347, %342, %353
  %358 = phi ptr [ %.pre884, %..critedge712_crit_edge ], [ %338, %347 ], [ %338, %342 ], [ %338, %353 ]
  %359 = getelementptr inbounds i8, ptr %.2545815, i64 1
  %360 = icmp ult ptr %359, %358
  br i1 %360, label %.lr.ph816, label %.critedge, !llvm.loop !75

.critedge:                                        ; preds = %351, %353, %.critedge712, %340, %324, %326, %.critedge16, %313, %.preheader809, %.preheader808, %307
  %.1574 = phi ptr [ %158, %307 ], [ %.0575, %.preheader808 ], [ %.0575, %.preheader809 ], [ %.0543823, %324 ], [ %.0543823, %326 ], [ %.1544, %.critedge16 ], [ %.0543823, %313 ], [ %.2545815, %351 ], [ %.2545815, %353 ], [ %359, %.critedge712 ], [ %.2545815, %340 ]
  %.1574880 = ptrtoint ptr %.1574 to i64
  %361 = load i32, ptr %47, align 8, !tbaa !13
  %362 = or i32 %361, %5
  %363 = and i32 %362, 67108864
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %.critedge20

365:                                              ; preds = %.critedge
  br i1 %.not672, label %376, label %366

366:                                              ; preds = %365
  %367 = icmp ult ptr %.0575, %.1574
  br i1 %.not681, label %.preheader804, label %.preheader806

.preheader806:                                    ; preds = %366
  br i1 %367, label %.lr.ph833.preheader, label %.critedge20

.lr.ph833.preheader:                              ; preds = %.preheader806
  %368 = sub i64 %.1574880, %.0575881
  %scevgep = getelementptr i8, ptr %.0575, i64 %368
  br label %.lr.ph833

.preheader804:                                    ; preds = %366
  br i1 %367, label %.lr.ph838.preheader, label %.critedge20

.lr.ph838.preheader:                              ; preds = %.preheader804
  %369 = sub i64 %.1574880, %.0575881
  %scevgep882 = getelementptr i8, ptr %.0575, i64 %369
  br label %.lr.ph838

.lr.ph833:                                        ; preds = %.lr.ph833.preheader, %371
  %.1576832 = phi ptr [ %372, %371 ], [ %.0575, %.lr.ph833.preheader ]
  %370 = load i8, ptr %.1576832, align 1, !tbaa !19
  %.not683 = icmp eq i8 %370, %.0559
  %.not684 = icmp eq i8 %370, %.0583
  %or.cond715 = select i1 %.not683, i1 true, i1 %.not684
  br i1 %or.cond715, label %.critedge20, label %371

371:                                              ; preds = %.lr.ph833
  %372 = getelementptr inbounds i8, ptr %.1576832, i64 1
  %exitcond.not = icmp eq ptr %372, %scevgep
  br i1 %exitcond.not, label %.critedge20, label %.lr.ph833, !llvm.loop !76

.lr.ph838:                                        ; preds = %.lr.ph838.preheader, %374
  %.2577837 = phi ptr [ %375, %374 ], [ %.0575, %.lr.ph838.preheader ]
  %373 = load i8, ptr %.2577837, align 1, !tbaa !19
  %.not682 = icmp eq i8 %373, %.0583
  br i1 %.not682, label %.critedge20, label %374

374:                                              ; preds = %.lr.ph838
  %375 = getelementptr inbounds i8, ptr %.2577837, i64 1
  %exitcond883.not = icmp eq ptr %375, %scevgep882
  br i1 %exitcond883.not, label %.critedge20, label %.lr.ph838, !llvm.loop !77

376:                                              ; preds = %365
  br i1 %.not641, label %445, label %377

377:                                              ; preds = %376
  %378 = load ptr, ptr %155, align 8, !tbaa !40
  %379 = getelementptr inbounds i8, ptr %378, i64 %12
  %380 = icmp ugt ptr %.0575, %379
  br i1 %380, label %381, label %.critedge20

381:                                              ; preds = %377
  %382 = icmp ult ptr %.0575, %.1574
  br i1 %.not625, label %.preheader801, label %.preheader802

.preheader802:                                    ; preds = %381
  br i1 %382, label %.lr.ph843, label %.critedge24

.preheader801:                                    ; preds = %381
  br i1 %382, label %.lr.ph852, label %.critedge24

.lr.ph852.loopexit:                               ; preds = %407
  br label %.lr.ph852, !llvm.loop !78

.lr.ph852:                                        ; preds = %.preheader801, %.lr.ph852.loopexit
  %.4579851 = phi ptr [ %.5, %.lr.ph852.loopexit ], [ %.0575, %.preheader801 ]
  %383 = load i32, ptr %295, align 8, !tbaa !58
  %.not678 = icmp eq i32 %383, 0
  %384 = load ptr, ptr %155, align 8, !tbaa !40
  br i1 %.not678, label %389, label %385

385:                                              ; preds = %.lr.ph852
  %386 = icmp ugt ptr %.4579851, %384
  br i1 %386, label %387, label %.critedge717.preheader

387:                                              ; preds = %385
  %388 = call i32 @_pcre_was_newline(ptr noundef nonnull %.4579851, i32 noundef %383, ptr noundef %384, ptr noundef nonnull %294, i32 noundef %.lobit) #6
  %.not794 = icmp eq i32 %388, 0
  br i1 %.not794, label %.critedge717.preheader, label %.critedge24

389:                                              ; preds = %.lr.ph852
  %390 = load i32, ptr %294, align 4, !tbaa !59
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds i8, ptr %384, i64 %391
  %.not679 = icmp ult ptr %.4579851, %392
  br i1 %.not679, label %.critedge717.preheader, label %393

393:                                              ; preds = %389
  %394 = sub nsw i64 0, %391
  %395 = getelementptr inbounds i8, ptr %.4579851, i64 %394
  %396 = load i8, ptr %395, align 1, !tbaa !19
  %397 = load i8, ptr %296, align 8, !tbaa !19
  %398 = icmp eq i8 %396, %397
  br i1 %398, label %399, label %.critedge717.preheader

399:                                              ; preds = %393
  %400 = icmp eq i32 %390, 1
  br i1 %400, label %.critedge24, label %401

401:                                              ; preds = %399
  %402 = getelementptr inbounds i8, ptr %395, i64 1
  %403 = load i8, ptr %402, align 1, !tbaa !19
  %404 = load i8, ptr %297, align 1, !tbaa !19
  %405 = icmp eq i8 %403, %404
  br i1 %405, label %.critedge24, label %.critedge717.preheader

.critedge717.preheader:                           ; preds = %387, %385, %393, %389, %401
  br label %.critedge717

.critedge717:                                     ; preds = %.critedge717.preheader, %407
  %.4579.pn = phi ptr [ %.5, %407 ], [ %.4579851, %.critedge717.preheader ]
  %.5 = getelementptr inbounds i8, ptr %.4579.pn, i64 1
  %406 = icmp ult ptr %.5, %.1574
  br i1 %406, label %407, label %.critedge24

407:                                              ; preds = %.critedge717
  %408 = load i8, ptr %.5, align 1, !tbaa !19
  %409 = and i8 %408, -64
  %410 = icmp eq i8 %409, -128
  br i1 %410, label %.critedge717, label %.lr.ph852.loopexit, !llvm.loop !78

.lr.ph843:                                        ; preds = %.preheader802, %.critedge720
  %.6842 = phi ptr [ %434, %.critedge720 ], [ %.0575, %.preheader802 ]
  %411 = load i32, ptr %295, align 8, !tbaa !58
  %.not675 = icmp eq i32 %411, 0
  %412 = load ptr, ptr %155, align 8, !tbaa !40
  br i1 %.not675, label %417, label %413

413:                                              ; preds = %.lr.ph843
  %414 = icmp ugt ptr %.6842, %412
  br i1 %414, label %415, label %.critedge720

415:                                              ; preds = %413
  %416 = call i32 @_pcre_was_newline(ptr noundef nonnull %.6842, i32 noundef %411, ptr noundef %412, ptr noundef nonnull %294, i32 noundef %.lobit) #6
  %.not795 = icmp eq i32 %416, 0
  br i1 %.not795, label %.critedge720, label %.critedge24

417:                                              ; preds = %.lr.ph843
  %418 = load i32, ptr %294, align 4, !tbaa !59
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i8, ptr %412, i64 %419
  %.not676 = icmp ult ptr %.6842, %420
  br i1 %.not676, label %.critedge720, label %421

421:                                              ; preds = %417
  %422 = sub nsw i64 0, %419
  %423 = getelementptr inbounds i8, ptr %.6842, i64 %422
  %424 = load i8, ptr %423, align 1, !tbaa !19
  %425 = load i8, ptr %296, align 8, !tbaa !19
  %426 = icmp eq i8 %424, %425
  br i1 %426, label %427, label %.critedge720

427:                                              ; preds = %421
  %428 = icmp eq i32 %418, 1
  br i1 %428, label %.critedge24, label %429

429:                                              ; preds = %427
  %430 = getelementptr inbounds i8, ptr %423, i64 1
  %431 = load i8, ptr %430, align 1, !tbaa !19
  %432 = load i8, ptr %297, align 1, !tbaa !19
  %433 = icmp eq i8 %431, %432
  br i1 %433, label %.critedge24, label %.critedge720

.critedge720:                                     ; preds = %415, %413, %421, %417, %429
  %434 = getelementptr inbounds i8, ptr %.6842, i64 1
  %435 = icmp ult ptr %434, %.1574
  br i1 %435, label %.lr.ph843, label %.critedge24, !llvm.loop !79

.critedge24:                                      ; preds = %.critedge720, %429, %427, %415, %401, %399, %387, %.critedge717, %.preheader802, %.preheader801
  %.7 = phi ptr [ %.0575, %.preheader801 ], [ %.0575, %.preheader802 ], [ %.5, %.critedge717 ], [ %.4579851, %387 ], [ %.4579851, %399 ], [ %.4579851, %401 ], [ %434, %.critedge720 ], [ %.6842, %429 ], [ %.6842, %427 ], [ %.6842, %415 ]
  %436 = getelementptr inbounds i8, ptr %.7, i64 -1
  %437 = load i8, ptr %436, align 1, !tbaa !19
  %438 = icmp eq i8 %437, 13
  br i1 %438, label %439, label %.critedge20

439:                                              ; preds = %.critedge24
  %440 = load i32, ptr %295, align 8, !tbaa !58
  %.off = add i32 %440, -1
  %switch = icmp ult i32 %.off, 2
  %441 = icmp ult ptr %.7, %.1574
  %or.cond737 = select i1 %switch, i1 %441, i1 false
  br i1 %or.cond737, label %442, label %.critedge20

442:                                              ; preds = %439
  %443 = load i8, ptr %.7, align 1, !tbaa !19
  %444 = icmp eq i8 %443, 10
  %spec.select723.idx = zext i1 %444 to i64
  %spec.select723 = getelementptr inbounds i8, ptr %.7, i64 %spec.select723.idx
  br label %.critedge20

445:                                              ; preds = %376
  br i1 %.not673, label %.critedge20, label %.preheader800

.preheader800:                                    ; preds = %445, %447
  %.8 = phi ptr [ %458, %447 ], [ %.0575, %445 ]
  %446 = icmp ult ptr %.8, %.1574
  br i1 %446, label %447, label %.critedge20

447:                                              ; preds = %.preheader800
  %448 = load i8, ptr %.8, align 1, !tbaa !19
  %449 = zext i8 %448 to i32
  %450 = lshr i32 %449, 3
  %451 = zext nneg i32 %450 to i64
  %452 = getelementptr inbounds i8, ptr %.0580, i64 %451
  %453 = load i8, ptr %452, align 1, !tbaa !19
  %454 = zext i8 %453 to i32
  %455 = and i32 %449, 7
  %456 = shl nuw nsw i32 1, %455
  %457 = and i32 %456, %454
  %.not674 = icmp eq i32 %457, 0
  %458 = getelementptr inbounds i8, ptr %.8, i64 1
  br i1 %.not674, label %.preheader800, label %.critedge20

.critedge20:                                      ; preds = %371, %.lr.ph833, %.lr.ph838, %374, %447, %.preheader800, %.preheader806, %.preheader804, %442, %439, %445, %377, %.critedge24, %.critedge
  %.10 = phi ptr [ %.7, %.critedge24 ], [ %.0575, %377 ], [ %.0575, %445 ], [ %.0575, %.critedge ], [ %.7, %439 ], [ %spec.select723, %442 ], [ %.0575, %.preheader804 ], [ %.0575, %.preheader806 ], [ %.8, %.preheader800 ], [ %.8, %447 ], [ %.2577837, %.lr.ph838 ], [ %scevgep882, %374 ], [ %scevgep, %371 ], [ %.1576832, %.lr.ph833 ]
  %459 = load i32, ptr %47, align 8, !tbaa !13
  %460 = or i32 %459, %5
  %461 = and i32 %460, 67108864
  %462 = icmp eq i32 %461, 0
  %463 = load i32, ptr %54, align 8
  %.not685 = icmp eq i32 %463, 0
  %or.cond724 = select i1 %462, i1 %.not685, i1 false
  br i1 %or.cond724, label %464, label %.thread765

464:                                              ; preds = %.critedge20
  br i1 %.not686, label %474, label %465

465:                                              ; preds = %464
  %466 = load i32, ptr %298, align 4, !tbaa !70
  %467 = and i32 %466, 2
  %.not687 = icmp eq i32 %467, 0
  br i1 %.not687, label %474, label %468

468:                                              ; preds = %465
  %469 = ptrtoint ptr %.10 to i64
  %470 = sub i64 %299, %469
  %471 = trunc i64 %470 to i32
  %472 = load i32, ptr %300, align 4, !tbaa !80
  %473 = icmp ugt i32 %472, %471
  br i1 %473, label %.thread782, label %474

474:                                              ; preds = %468, %465, %464
  %475 = ptrtoint ptr %.10 to i64
  %476 = sub i64 %299, %475
  %477 = icmp slt i64 %476, 1000
  %or.cond728 = select i1 %.not664, i1 %477, i1 false
  br i1 %or.cond728, label %478, label %.thread765

478:                                              ; preds = %474
  %479 = getelementptr inbounds i8, ptr %.10, i64 %301
  %480 = icmp ugt ptr %479, %.0562
  br i1 %480, label %481, label %.thread765

481:                                              ; preds = %478
  br i1 %.not690, label %.preheader796, label %.preheader798

.preheader798:                                    ; preds = %481, %483
  %.0537 = phi ptr [ %484, %483 ], [ %479, %481 ]
  %482 = icmp ult ptr %.0537, %158
  br i1 %482, label %483, label %.loopexit797

483:                                              ; preds = %.preheader798
  %484 = getelementptr inbounds i8, ptr %.0537, i64 1
  %485 = load i8, ptr %.0537, align 1, !tbaa !19
  %486 = icmp eq i8 %485, %.0585
  %487 = icmp eq i8 %485, %.0584
  %or.cond729 = select i1 %486, i1 true, i1 %487
  br i1 %or.cond729, label %.loopexit797, label %.preheader798

.preheader796:                                    ; preds = %481, %489
  %.2539 = phi ptr [ %490, %489 ], [ %479, %481 ]
  %488 = icmp ult ptr %.2539, %158
  br i1 %488, label %489, label %.loopexit797

489:                                              ; preds = %.preheader796
  %490 = getelementptr inbounds i8, ptr %.2539, i64 1
  %491 = load i8, ptr %.2539, align 1, !tbaa !19
  %492 = icmp eq i8 %491, %.0585
  br i1 %492, label %.loopexit797, label %.preheader796, !llvm.loop !81

.loopexit797:                                     ; preds = %483, %.preheader798, %489, %.preheader796
  %.3540 = phi ptr [ %.2539, %.preheader796 ], [ %.2539, %489 ], [ %.0537, %.preheader798 ], [ %.0537, %483 ]
  %.not691 = icmp ult ptr %.3540, %158
  br i1 %.not691, label %.thread765, label %.thread782

.thread765:                                       ; preds = %.loopexit797, %478, %474, %.critedge20
  %.3565 = phi ptr [ %.0562, %474 ], [ %.0562, %.critedge20 ], [ %.0562, %478 ], [ %.3540, %.loopexit797 ]
  store ptr %.10, ptr %302, align 8, !tbaa !82
  store ptr %.10, ptr %303, align 8, !tbaa !83
  store i64 0, ptr %10, align 8, !tbaa !84
  store i32 0, ptr %304, align 8, !tbaa !85
  store i32 0, ptr %305, align 4, !tbaa !86
  store i32 0, ptr %306, align 8, !tbaa !87
  %493 = load ptr, ptr %154, align 8, !tbaa !39
  %494 = call i32 @match(ptr noundef %.10, ptr noundef %493, ptr noundef %.10, i32 noundef 2, ptr noundef nonnull %10, ptr noundef null, i32 noundef 0)
  %495 = load i32, ptr %176, align 8, !tbaa !51
  %496 = icmp ne i32 %495, 0
  %497 = icmp eq ptr %.0570, null
  %or.cond30 = select i1 %496, i1 %497, i1 false
  %498 = load ptr, ptr %303, align 8
  %spec.select730 = select i1 %or.cond30, ptr %498, ptr %.0570
  %spec.select731 = select i1 %or.cond30, ptr %.10, ptr %.0567
  switch i32 %494, label %.thread782 [
    i32 -993, label %499
    i32 -994, label %501
    i32 0, label %504
    i32 -995, label %504
    i32 -992, label %504
    i32 -996, label %.thread782.loopexit
    i32 -999, label %557
    i32 1, label %557
  ]

499:                                              ; preds = %.thread765
  %500 = load i32, ptr %306, align 8, !tbaa !87
  store i32 %500, ptr %166, align 4, !tbaa !46
  br label %.critedge32

501:                                              ; preds = %.thread765
  %502 = load ptr, ptr %302, align 8, !tbaa !82
  %503 = icmp ugt ptr %502, %.10
  br i1 %503, label %.critedge32, label %504

504:                                              ; preds = %.thread765, %.thread765, %.thread765, %501
  store i32 0, ptr %166, align 4, !tbaa !46
  %505 = getelementptr inbounds i8, ptr %.10, i64 1
  %506 = icmp ult ptr %505, %158
  %or.cond868 = select i1 %.not625, i1 %506, i1 false
  br i1 %or.cond868, label %.lr.ph861, label %.critedge32

.lr.ph861:                                        ; preds = %504, %510
  %.0547860 = phi ptr [ %511, %510 ], [ %505, %504 ]
  %507 = load i8, ptr %.0547860, align 1, !tbaa !19
  %508 = and i8 %507, -64
  %509 = icmp eq i8 %508, -128
  br i1 %509, label %510, label %.critedge32

510:                                              ; preds = %.lr.ph861
  %511 = getelementptr inbounds i8, ptr %.0547860, i64 1
  %512 = icmp ult ptr %511, %158
  br i1 %512, label %.lr.ph861, label %.critedge32, !llvm.loop !88

.critedge32:                                      ; preds = %.lr.ph861, %510, %501, %504, %499
  %.1548 = phi ptr [ %505, %504 ], [ %.10, %499 ], [ %502, %501 ], [ %.0547860, %.lr.ph861 ], [ %511, %510 ]
  br i1 %.not642, label %536, label %513

513:                                              ; preds = %.critedge32
  %514 = load i32, ptr %295, align 8, !tbaa !58
  %.not692 = icmp eq i32 %514, 0
  %515 = load ptr, ptr %159, align 8, !tbaa !42
  br i1 %.not692, label %520, label %516

516:                                              ; preds = %513
  %517 = icmp ult ptr %.10, %515
  br i1 %517, label %518, label %536

518:                                              ; preds = %516
  %519 = call i32 @_pcre_is_newline(ptr noundef %.10, i32 noundef %514, ptr noundef nonnull %515, ptr noundef nonnull %294, i32 noundef %.lobit) #6
  %.not694 = icmp eq i32 %519, 0
  br i1 %.not694, label %536, label %.thread782

520:                                              ; preds = %513
  %521 = load i32, ptr %294, align 4, !tbaa !59
  %522 = sext i32 %521 to i64
  %523 = sub nsw i64 0, %522
  %524 = getelementptr inbounds i8, ptr %515, i64 %523
  %.not693 = icmp ugt ptr %.10, %524
  br i1 %.not693, label %536, label %525

525:                                              ; preds = %520
  %526 = load i8, ptr %.10, align 1, !tbaa !19
  %527 = load i8, ptr %296, align 8, !tbaa !19
  %528 = icmp eq i8 %526, %527
  br i1 %528, label %529, label %536

529:                                              ; preds = %525
  %530 = icmp eq i32 %521, 1
  br i1 %530, label %.thread782, label %531

531:                                              ; preds = %529
  %532 = getelementptr inbounds i8, ptr %.10, i64 1
  %533 = load i8, ptr %532, align 1, !tbaa !19
  %534 = load i8, ptr %297, align 1, !tbaa !19
  %535 = icmp eq i8 %533, %534
  br i1 %535, label %.thread782, label %536

536:                                              ; preds = %531, %525, %520, %518, %516, %.critedge32
  %537 = icmp ugt ptr %.1548, %158
  %or.cond732 = select i1 %.not639, i1 true, i1 %537
  br i1 %or.cond732, label %.thread782, label %538

538:                                              ; preds = %536
  %539 = icmp ugt ptr %.1548, %13
  br i1 %539, label %540, label %556

540:                                              ; preds = %538
  %541 = getelementptr inbounds i8, ptr %.1548, i64 -1
  %542 = load i8, ptr %541, align 1, !tbaa !19
  %543 = icmp eq i8 %542, 13
  %544 = icmp ult ptr %.1548, %158
  %or.cond733 = select i1 %543, i1 %544, i1 false
  br i1 %or.cond733, label %545, label %556

545:                                              ; preds = %540
  %546 = load i8, ptr %.1548, align 1, !tbaa !19
  %547 = icmp eq i8 %546, 10
  br i1 %547, label %548, label %556

548:                                              ; preds = %545
  %549 = load i32, ptr %42, align 4, !tbaa !12
  %550 = and i32 %549, 2048
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %556

552:                                              ; preds = %548
  %553 = load i32, ptr %295, align 8, !tbaa !58
  %.off738 = add i32 %553, -1
  %switch739 = icmp ult i32 %.off738, 2
  %554 = load i32, ptr %294, align 4
  %555 = icmp eq i32 %554, 2
  %or.cond742 = select i1 %switch739, i1 true, i1 %555
  %spec.select743.idx = zext i1 %or.cond742 to i64
  %spec.select743 = getelementptr inbounds i8, ptr %.1548, i64 %spec.select743.idx
  br label %556

556:                                              ; preds = %538, %540, %545, %548, %552
  %.11 = phi ptr [ %.1548, %548 ], [ %.1548, %545 ], [ %.1548, %540 ], [ %.1548, %538 ], [ %spec.select743, %552 ]
  store ptr null, ptr %178, align 8, !tbaa !89
  br label %307

557:                                              ; preds = %.thread765, %.thread765
  br i1 %or.cond706, label %576, label %558

558:                                              ; preds = %557
  %559 = icmp ugt i32 %219, 5
  br i1 %559, label %560, label %567

560:                                              ; preds = %558
  %561 = getelementptr inbounds i8, ptr %6, i64 8
  %562 = load ptr, ptr %260, align 8, !tbaa !62
  %563 = getelementptr inbounds i8, ptr %562, i64 8
  %564 = add nsw i32 %221, -2
  %565 = zext nneg i32 %564 to i64
  %566 = shl nuw nsw i64 %565, 2
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %561, ptr nonnull align 4 %563, i64 %566, i1 false)
  br label %567

567:                                              ; preds = %560, %558
  %568 = load i32, ptr %305, align 4, !tbaa !86
  %569 = icmp sgt i32 %568, %221
  br i1 %569, label %570, label %573

570:                                              ; preds = %567
  %571 = load i32, ptr %261, align 8, !tbaa !65
  %572 = or i32 %571, 65536
  store i32 %572, ptr %261, align 8, !tbaa !65
  br label %573

573:                                              ; preds = %570, %567
  %574 = load ptr, ptr @pcre_free, align 8, !tbaa !61
  %575 = load ptr, ptr %260, align 8, !tbaa !62
  call void %574(ptr noundef %575) #6
  br label %576

576:                                              ; preds = %573, %557
  %577 = load i32, ptr %261, align 8, !tbaa !65
  %578 = and i32 %577, 65536
  %.not700 = icmp eq i32 %578, 0
  %579 = load i32, ptr %305, align 4
  %.not701 = icmp slt i32 %579, %221
  %or.cond735 = select i1 %.not700, i1 true, i1 %.not701
  %580 = sdiv i32 %579, 2
  %581 = select i1 %or.cond735, i32 %580, i32 0
  %582 = getelementptr inbounds i8, ptr %0, i64 30
  %583 = load i16, ptr %582, align 2, !tbaa !66
  %584 = zext i16 %583 to i32
  %585 = icmp sle i32 %580, %584
  %586 = icmp ne ptr %6, null
  %or.cond36 = and i1 %586, %585
  br i1 %or.cond36, label %587, label %.loopexit

587:                                              ; preds = %576
  %588 = shl nuw nsw i32 %584, 1
  %589 = add nuw nsw i32 %588, 2
  %spec.select736 = call i32 @llvm.smin.i32(i32 %589, i32 %7)
  %590 = icmp slt i32 %579, %spec.select736
  br i1 %590, label %.lr.ph867.preheader, label %.loopexit

.lr.ph867.preheader:                              ; preds = %587
  %591 = sext i32 %579 to i64
  %592 = getelementptr i32, ptr %6, i64 %591
  %593 = shl nsw i64 %591, 2
  %594 = add i64 %593, %9
  %595 = add i64 %594, 4
  %596 = shl nuw nsw i32 %spec.select736, 2
  %597 = zext nneg i32 %596 to i64
  %598 = add i64 %9, %597
  %umax = call i64 @llvm.umax.i64(i64 %595, i64 %598)
  %599 = xor i64 %9, -1
  %600 = add i64 %umax, %599
  %601 = sub i64 %600, %593
  %602 = and i64 %601, -4
  %603 = add i64 %602, 4
  call void @llvm.memset.p0.i64(ptr align 4 %592, i8 -1, i64 %603, i1 false), !tbaa !18
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph867.preheader, %587, %576
  %604 = icmp slt i32 %7, 2
  br i1 %604, label %618, label %605

605:                                              ; preds = %.loopexit
  %606 = load ptr, ptr %302, align 8, !tbaa !82
  %607 = load ptr, ptr %155, align 8, !tbaa !40
  %608 = ptrtoint ptr %606 to i64
  %609 = ptrtoint ptr %607 to i64
  %610 = sub i64 %608, %609
  %611 = trunc i64 %610 to i32
  store i32 %611, ptr %6, align 4, !tbaa !18
  %612 = getelementptr inbounds i8, ptr %10, i64 184
  %613 = load ptr, ptr %612, align 8, !tbaa !90
  %614 = ptrtoint ptr %613 to i64
  %615 = sub i64 %614, %609
  %616 = trunc i64 %615 to i32
  %617 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %616, ptr %617, align 4, !tbaa !18
  br label %618

618:                                              ; preds = %.loopexit, %605
  %.3 = phi i32 [ %581, %605 ], [ 0, %.loopexit ]
  br i1 %16, label %652, label %619

619:                                              ; preds = %618
  %620 = load i64, ptr %1, align 8, !tbaa !30
  %621 = and i64 %620, 32
  %.not702 = icmp eq i64 %621, 0
  br i1 %.not702, label %652, label %622

622:                                              ; preds = %619
  %623 = load ptr, ptr %178, align 8, !tbaa !89
  %624 = getelementptr inbounds i8, ptr %1, i64 48
  %625 = load ptr, ptr %624, align 8, !tbaa !91
  store ptr %623, ptr %625, align 8, !tbaa !61
  br label %652

.thread782.loopexit:                              ; preds = %.thread765
  br label %.thread782

.thread782:                                       ; preds = %468, %531, %529, %518, %536, %.loopexit797, %.thread765, %.thread782.loopexit
  %.2536.ph788 = phi i32 [ %494, %.thread765 ], [ 0, %.loopexit797 ], [ 0, %536 ], [ 0, %518 ], [ 0, %529 ], [ 0, %531 ], [ 0, %468 ], [ 0, %.thread782.loopexit ]
  %.2569.ph787 = phi ptr [ %spec.select731, %.thread765 ], [ %.0567, %.loopexit797 ], [ %spec.select731, %536 ], [ %spec.select731, %518 ], [ %spec.select731, %529 ], [ %spec.select731, %531 ], [ %.0567, %468 ], [ %spec.select731, %.thread782.loopexit ]
  %.2572.ph786 = phi ptr [ %spec.select730, %.thread765 ], [ %.0570, %.loopexit797 ], [ %spec.select730, %536 ], [ %spec.select730, %518 ], [ %spec.select730, %529 ], [ %spec.select730, %531 ], [ %.0570, %468 ], [ %spec.select730, %.thread782.loopexit ]
  br i1 %or.cond706, label %629, label %626

626:                                              ; preds = %.thread782
  %627 = load ptr, ptr @pcre_free, align 8, !tbaa !61
  %628 = load ptr, ptr %260, align 8, !tbaa !62
  call void %627(ptr noundef %628) #6
  br label %629

629:                                              ; preds = %626, %.thread782
  switch i32 %.2536.ph788, label %652 [
    i32 -12, label %630
    i32 0, label %630
  ]

630:                                              ; preds = %629, %629
  %.not696 = icmp eq ptr %.2569.ph787, null
  br i1 %.not696, label %644, label %631

631:                                              ; preds = %630
  %632 = icmp sgt i32 %7, 1
  br i1 %632, label %633, label %644

633:                                              ; preds = %631
  %634 = ptrtoint ptr %.2572.ph786 to i64
  %635 = ptrtoint ptr %2 to i64
  %636 = sub i64 %634, %635
  %637 = trunc i64 %636 to i32
  store i32 %637, ptr %6, align 4, !tbaa !18
  %638 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %3, ptr %638, align 4, !tbaa !18
  %.not697 = icmp eq i32 %7, 2
  br i1 %.not697, label %644, label %639

639:                                              ; preds = %633
  %640 = ptrtoint ptr %.2569.ph787 to i64
  %641 = sub i64 %640, %635
  %642 = trunc i64 %641 to i32
  %643 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %642, ptr %643, align 4, !tbaa !18
  br label %644

644:                                              ; preds = %630, %631, %639, %633
  %.4 = phi i32 [ -12, %633 ], [ -12, %639 ], [ -12, %631 ], [ -1, %630 ]
  br i1 %16, label %652, label %645

645:                                              ; preds = %644
  %646 = load i64, ptr %1, align 8, !tbaa !30
  %647 = and i64 %646, 32
  %.not698 = icmp eq i64 %647, 0
  br i1 %.not698, label %652, label %648

648:                                              ; preds = %645
  %649 = load ptr, ptr %177, align 8, !tbaa !92
  %650 = getelementptr inbounds i8, ptr %1, i64 48
  %651 = load ptr, ptr %650, align 8, !tbaa !91
  store ptr %649, ptr %651, align 8, !tbaa !61
  br label %652

652:                                              ; preds = %214, %.thread, %644, %645, %648, %629, %618, %619, %622, %226, %194, %143, %41, %35, %33, %31, %27, %28, %25, %38, %23
  %.2 = phi i32 [ %24, %23 ], [ %40, %38 ], [ -3, %25 ], [ -2, %28 ], [ -2, %27 ], [ -15, %31 ], [ -32, %33 ], [ -24, %35 ], [ -28, %41 ], [ -23, %143 ], [ -23, %194 ], [ -6, %226 ], [ %.3, %622 ], [ %.3, %619 ], [ %.3, %618 ], [ %.2536.ph788, %629 ], [ %.4, %648 ], [ %.4, %645 ], [ %.4, %644 ], [ %.0532.ph, %.thread ], [ -13, %214 ]
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %10) #6
  ret i32 %.2
}

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

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

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

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

declare i32 @_pcre_is_newline(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @_pcre_was_newline(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #4

; 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 = { "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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

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


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