; LLVM IR from chdb-io/chdb :: base/poco/Foundation/src (pcre_dfa_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.dfa_match_data = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, [4 x i8], 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

; Function Attrs: nounwind uwtable
define dso_local i32 @pcre_dfa_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, ptr noundef %8, i32 noundef %9) #0 {
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca %struct.dfa_match_data, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i8, align 1
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store i32 %3, ptr %15, align 4, !tbaa !9
  store i32 %4, ptr %16, align 4, !tbaa !9
  store i32 %5, ptr %17, align 4, !tbaa !9
  store ptr %6, ptr %18, align 8, !tbaa !5
  store i32 %7, ptr %19, align 4, !tbaa !9
  store ptr %8, ptr %20, align 8, !tbaa !5
  store i32 %9, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %52 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %52, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  store ptr %23, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  store ptr null, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #3
  store i8 0, ptr %36, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #3
  store i8 0, ptr %37, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #3
  store i8 0, ptr %38, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #3
  store i8 0, ptr %39, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  %53 = load i32, ptr %17, align 4, !tbaa !9
  %54 = and i32 %53, -502506897
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %57

56:                                               ; preds = %10
  store i32 -3, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

57:                                               ; preds = %10
  %58 = load ptr, ptr %22, align 8, !tbaa !5
  %59 = icmp eq ptr %58, null
  br i1 %59, label %72, label %60

60:                                               ; preds = %57
  %61 = load ptr, ptr %14, align 8, !tbaa !5
  %62 = icmp eq ptr %61, null
  br i1 %62, label %72, label %63

63:                                               ; preds = %60
  %64 = load ptr, ptr %20, align 8, !tbaa !5
  %65 = icmp eq ptr %64, null
  br i1 %65, label %72, label %66

66:                                               ; preds = %63
  %67 = load ptr, ptr %18, align 8, !tbaa !5
  %68 = icmp eq ptr %67, null
  br i1 %68, label %69, label %73

69:                                               ; preds = %66
  %70 = load i32, ptr %19, align 4, !tbaa !9
  %71 = icmp sgt i32 %70, 0
  br i1 %71, label %72, label %73

72:                                               ; preds = %69, %63, %60, %57
  store i32 -2, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

73:                                               ; preds = %69, %66
  %74 = load i32, ptr %19, align 4, !tbaa !9
  %75 = icmp slt i32 %74, 0
  br i1 %75, label %76, label %77

76:                                               ; preds = %73
  store i32 -15, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

77:                                               ; preds = %73
  %78 = load i32, ptr %21, align 4, !tbaa !9
  %79 = icmp slt i32 %78, 20
  br i1 %79, label %80, label %81

80:                                               ; preds = %77
  store i32 -19, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

81:                                               ; preds = %77
  %82 = load i32, ptr %15, align 4, !tbaa !9
  %83 = icmp slt i32 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %81
  store i32 -32, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

85:                                               ; preds = %81
  %86 = load i32, ptr %16, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %92, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr %16, align 4, !tbaa !9
  %90 = load i32, ptr %15, align 4, !tbaa !9
  %91 = icmp sgt i32 %89, %90
  br i1 %91, label %92, label %93

92:                                               ; preds = %88, %85
  store i32 -24, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

93:                                               ; preds = %88
  %94 = load ptr, ptr %22, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %94, i32 0, i32 0
  %96 = load i32, ptr %95, align 8, !tbaa !12
  %97 = zext i32 %96 to i64
  %98 = icmp ne i64 %97, 1346589253
  br i1 %98, label %99, label %107

99:                                               ; preds = %93
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %100, i32 0, i32 0
  %102 = load i32, ptr %101, align 8, !tbaa !12
  %103 = zext i32 %102 to i64
  %104 = icmp eq i64 %103, 1163019088
  %105 = zext i1 %104 to i64
  %106 = select i1 %104, i32 -29, i32 -4
  store i32 %106, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

107:                                              ; preds = %93
  %108 = load ptr, ptr %22, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %108, i32 0, i32 3
  %110 = load i32, ptr %109, align 4, !tbaa !15
  %111 = and i32 %110, 1
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %107
  store i32 -28, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

114:                                              ; preds = %107
  %115 = load i32, ptr %17, align 4, !tbaa !9
  %116 = and i32 %115, 131072
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %118, label %139

118:                                              ; preds = %114
  %119 = load ptr, ptr %20, align 8, !tbaa !5
  %120 = getelementptr inbounds i32, ptr %119, i64 0
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = and i32 %121, -2
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %137, label %124

124:                                              ; preds = %118
  %125 = load ptr, ptr %20, align 8, !tbaa !5
  %126 = getelementptr inbounds i32, ptr %125, i64 1
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = icmp slt i32 %127, 1
  br i1 %128, label %137, label %129

129:                                              ; preds = %124
  %130 = load ptr, ptr %20, align 8, !tbaa !5
  %131 = getelementptr inbounds i32, ptr %130, i64 1
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = load i32, ptr %21, align 4, !tbaa !9
  %134 = sub nsw i32 %133, 2
  %135 = sdiv i32 %134, 3
  %136 = icmp sgt i32 %132, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %129, %124, %118
  store i32 -30, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

138:                                              ; preds = %129
  br label %139

139:                                              ; preds = %138, %114
  %140 = load ptr, ptr %22, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %140, i32 0, i32 18
  %142 = load ptr, ptr %141, align 8, !tbaa !16
  %143 = load ptr, ptr %24, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.dfa_match_data, ptr %143, i32 0, i32 4
  store ptr %142, ptr %144, align 8, !tbaa !17
  %145 = load ptr, ptr %24, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.dfa_match_data, ptr %145, i32 0, i32 11
  store ptr null, ptr %146, align 8, !tbaa !19
  %147 = load ptr, ptr %13, align 8, !tbaa !5
  %148 = icmp ne ptr %147, null
  br i1 %148, label %149, label %194

149:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.pcre_extra, ptr %150, i32 0, i32 0
  %152 = load i64, ptr %151, align 8, !tbaa !20
  store i64 %152, ptr %42, align 8, !tbaa !23
  %153 = load i64, ptr %42, align 8, !tbaa !23
  %154 = and i64 %153, 1
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %156, label %160

156:                                              ; preds = %149
  %157 = load ptr, ptr %13, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.pcre_extra, ptr %157, i32 0, i32 1
  %159 = load ptr, ptr %158, align 8, !tbaa !24
  store ptr %159, ptr %31, align 8, !tbaa !5
  br label %160

160:                                              ; preds = %156, %149
  %161 = load i64, ptr %42, align 8, !tbaa !23
  %162 = and i64 %161, 2
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i32 -18, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %191

165:                                              ; preds = %160
  %166 = load i64, ptr %42, align 8, !tbaa !23
  %167 = and i64 %166, 16
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %170

169:                                              ; preds = %165
  store i32 -18, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %191

170:                                              ; preds = %165
  %171 = load i64, ptr %42, align 8, !tbaa !23
  %172 = and i64 %171, 4
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %174, label %180

174:                                              ; preds = %170
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.pcre_extra, ptr %175, i32 0, i32 3
  %177 = load ptr, ptr %176, align 8, !tbaa !25
  %178 = load ptr, ptr %24, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.dfa_match_data, ptr %178, i32 0, i32 11
  store ptr %177, ptr %179, align 8, !tbaa !19
  br label %180

180:                                              ; preds = %174, %170
  %181 = load i64, ptr %42, align 8, !tbaa !23
  %182 = and i64 %181, 8
  %183 = icmp ne i64 %182, 0
  br i1 %183, label %184, label %190

184:                                              ; preds = %180
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.pcre_extra, ptr %185, i32 0, i32 4
  %187 = load ptr, ptr %186, align 8, !tbaa !26
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.dfa_match_data, ptr %188, i32 0, i32 4
  store ptr %187, ptr %189, align 8, !tbaa !17
  br label %190

190:                                              ; preds = %184, %180
  store i32 0, ptr %41, align 4
  br label %191

191:                                              ; preds = %190, %169, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %192 = load i32, ptr %41, align 4
  switch i32 %192, label %1365 [
    i32 0, label %193
  ]

193:                                              ; preds = %191
  br label %194

194:                                              ; preds = %193, %139
  %195 = load ptr, ptr %14, align 8, !tbaa !5
  %196 = load i32, ptr %16, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i8, ptr %195, i64 %197
  store ptr %198, ptr %29, align 8, !tbaa !5
  %199 = load ptr, ptr %14, align 8, !tbaa !5
  %200 = load i32, ptr %15, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i8, ptr %199, i64 %201
  store ptr %202, ptr %30, align 8, !tbaa !5
  %203 = load ptr, ptr %29, align 8, !tbaa !5
  %204 = getelementptr inbounds i8, ptr %203, i64 -1
  store ptr %204, ptr %32, align 8, !tbaa !5
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %205, i32 0, i32 2
  %207 = load i32, ptr %206, align 8, !tbaa !27
  %208 = and i32 %207, 2048
  %209 = icmp ne i32 %208, 0
  %210 = zext i1 %209 to i32
  store i32 %210, ptr %25, align 4, !tbaa !9
  %211 = load i32, ptr %17, align 4, !tbaa !9
  %212 = and i32 %211, 131088
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %220, label %214

214:                                              ; preds = %194
  %215 = load ptr, ptr %22, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %215, i32 0, i32 2
  %217 = load i32, ptr %216, align 8, !tbaa !27
  %218 = and i32 %217, 16
  %219 = icmp ne i32 %218, 0
  br label %220

220:                                              ; preds = %214, %194
  %221 = phi i1 [ true, %194 ], [ %219, %214 ]
  %222 = zext i1 %221 to i32
  store i32 %222, ptr %26, align 4, !tbaa !9
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load ptr, ptr %22, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %224, i32 0, i32 11
  %226 = load i16, ptr %225, align 2, !tbaa !28
  %227 = zext i16 %226 to i32
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds i8, ptr %223, i64 %228
  %230 = load ptr, ptr %22, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %230, i32 0, i32 13
  %232 = load i16, ptr %231, align 2, !tbaa !29
  %233 = zext i16 %232 to i32
  %234 = load ptr, ptr %22, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %234, i32 0, i32 12
  %236 = load i16, ptr %235, align 4, !tbaa !30
  %237 = zext i16 %236 to i32
  %238 = mul nsw i32 %233, %237
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds i8, ptr %229, i64 %239
  %241 = load ptr, ptr %24, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.dfa_match_data, ptr %241, i32 0, i32 0
  store ptr %240, ptr %242, align 8, !tbaa !31
  %243 = load ptr, ptr %14, align 8, !tbaa !5
  %244 = load ptr, ptr %24, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.dfa_match_data, ptr %244, i32 0, i32 1
  store ptr %243, ptr %245, align 8, !tbaa !32
  %246 = load ptr, ptr %30, align 8, !tbaa !5
  %247 = load ptr, ptr %24, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.dfa_match_data, ptr %247, i32 0, i32 2
  store ptr %246, ptr %248, align 8, !tbaa !33
  %249 = load i32, ptr %16, align 4, !tbaa !9
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.dfa_match_data, ptr %250, i32 0, i32 5
  store i32 %249, ptr %251, align 8, !tbaa !34
  %252 = load i32, ptr %17, align 4, !tbaa !9
  %253 = load ptr, ptr %24, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.dfa_match_data, ptr %253, i32 0, i32 6
  store i32 %252, ptr %254, align 4, !tbaa !35
  %255 = load ptr, ptr %22, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %255, i32 0, i32 2
  %257 = load i32, ptr %256, align 8, !tbaa !27
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.dfa_match_data, ptr %258, i32 0, i32 7
  store i32 %257, ptr %259, align 8, !tbaa !36
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.dfa_match_data, ptr %260, i32 0, i32 6
  %262 = load i32, ptr %261, align 4, !tbaa !35
  %263 = and i32 %262, 25165824
  %264 = icmp eq i32 %263, 0
  br i1 %264, label %265, label %281

265:                                              ; preds = %220
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %266, i32 0, i32 2
  %268 = load i32, ptr %267, align 8, !tbaa !27
  %269 = and i32 %268, 25165824
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %271, label %280

271:                                              ; preds = %265
  %272 = load ptr, ptr %22, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %272, i32 0, i32 2
  %274 = load i32, ptr %273, align 8, !tbaa !27
  %275 = and i32 %274, 25165824
  %276 = load ptr, ptr %24, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.dfa_match_data, ptr %276, i32 0, i32 6
  %278 = load i32, ptr %277, align 4, !tbaa !35
  %279 = or i32 %278, %275
  store i32 %279, ptr %277, align 4, !tbaa !35
  br label %280

280:                                              ; preds = %271, %265
  br label %281

281:                                              ; preds = %280, %220
  %282 = load i32, ptr %17, align 4, !tbaa !9
  %283 = and i32 %282, 7340032
  %284 = icmp eq i32 %283, 0
  br i1 %284, label %285, label %289

285:                                              ; preds = %281
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %286, i32 0, i32 2
  %288 = load i32, ptr %287, align 8, !tbaa !27
  br label %291

289:                                              ; preds = %281
  %290 = load i32, ptr %17, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %289, %285
  %292 = phi i32 [ %288, %285 ], [ %290, %289 ]
  %293 = and i32 %292, 7340032
  switch i32 %293, label %300 [
    i32 0, label %294
    i32 1048576, label %295
    i32 2097152, label %296
    i32 3145728, label %297
    i32 4194304, label %298
    i32 5242880, label %299
  ]

294:                                              ; preds = %291
  store i32 10, ptr %40, align 4, !tbaa !9
  br label %301

295:                                              ; preds = %291
  store i32 13, ptr %40, align 4, !tbaa !9
  br label %301

296:                                              ; preds = %291
  store i32 10, ptr %40, align 4, !tbaa !9
  br label %301

297:                                              ; preds = %291
  store i32 3338, ptr %40, align 4, !tbaa !9
  br label %301

298:                                              ; preds = %291
  store i32 -1, ptr %40, align 4, !tbaa !9
  br label %301

299:                                              ; preds = %291
  store i32 -2, ptr %40, align 4, !tbaa !9
  br label %301

300:                                              ; preds = %291
  store i32 -23, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

301:                                              ; preds = %299, %298, %297, %296, %295, %294
  %302 = load i32, ptr %40, align 4, !tbaa !9
  %303 = icmp eq i32 %302, -2
  br i1 %303, label %304, label %307

304:                                              ; preds = %301
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.dfa_match_data, ptr %305, i32 0, i32 8
  store i32 2, ptr %306, align 4, !tbaa !37
  br label %344

307:                                              ; preds = %301
  %308 = load i32, ptr %40, align 4, !tbaa !9
  %309 = icmp slt i32 %308, 0
  br i1 %309, label %310, label %313

310:                                              ; preds = %307
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.dfa_match_data, ptr %311, i32 0, i32 8
  store i32 1, ptr %312, align 4, !tbaa !37
  br label %343

313:                                              ; preds = %307
  %314 = load ptr, ptr %24, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.dfa_match_data, ptr %314, i32 0, i32 8
  store i32 0, ptr %315, align 4, !tbaa !37
  %316 = load i32, ptr %40, align 4, !tbaa !9
  %317 = icmp sgt i32 %316, 255
  br i1 %317, label %318, label %334

318:                                              ; preds = %313
  %319 = load ptr, ptr %24, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.dfa_match_data, ptr %319, i32 0, i32 9
  store i32 2, ptr %320, align 8, !tbaa !38
  %321 = load i32, ptr %40, align 4, !tbaa !9
  %322 = ashr i32 %321, 8
  %323 = and i32 %322, 255
  %324 = trunc i32 %323 to i8
  %325 = load ptr, ptr %24, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.dfa_match_data, ptr %325, i32 0, i32 10
  %327 = getelementptr inbounds [4 x i8], ptr %326, i64 0, i64 0
  store i8 %324, ptr %327, align 4, !tbaa !11
  %328 = load i32, ptr %40, align 4, !tbaa !9
  %329 = and i32 %328, 255
  %330 = trunc i32 %329 to i8
  %331 = load ptr, ptr %24, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.dfa_match_data, ptr %331, i32 0, i32 10
  %333 = getelementptr inbounds [4 x i8], ptr %332, i64 0, i64 1
  store i8 %330, ptr %333, align 1, !tbaa !11
  br label %342

334:                                              ; preds = %313
  %335 = load ptr, ptr %24, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.dfa_match_data, ptr %335, i32 0, i32 9
  store i32 1, ptr %336, align 8, !tbaa !38
  %337 = load i32, ptr %40, align 4, !tbaa !9
  %338 = trunc i32 %337 to i8
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.dfa_match_data, ptr %339, i32 0, i32 10
  %341 = getelementptr inbounds [4 x i8], ptr %340, i64 0, i64 0
  store i8 %338, ptr %341, align 4, !tbaa !11
  br label %342

342:                                              ; preds = %334, %318
  br label %343

343:                                              ; preds = %342, %310
  br label %344

344:                                              ; preds = %343, %304
  %345 = load i32, ptr %25, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %399

347:                                              ; preds = %344
  %348 = load i32, ptr %17, align 4, !tbaa !9
  %349 = and i32 %348, 8192
  %350 = icmp eq i32 %349, 0
  br i1 %350, label %351, label %399

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = load i32, ptr %15, align 4, !tbaa !9
  %354 = call i32 @_pcre_valid_utf(ptr noundef %352, i32 noundef %353, ptr noundef %43)
  store i32 %354, ptr %44, align 4, !tbaa !9
  %355 = load i32, ptr %44, align 4, !tbaa !9
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %357, label %378

357:                                              ; preds = %351
  %358 = load i32, ptr %19, align 4, !tbaa !9
  %359 = icmp sge i32 %358, 2
  br i1 %359, label %360, label %367

360:                                              ; preds = %357
  %361 = load i32, ptr %43, align 4, !tbaa !9
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = getelementptr inbounds i32, ptr %362, i64 0
  store i32 %361, ptr %363, align 4, !tbaa !9
  %364 = load i32, ptr %44, align 4, !tbaa !9
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = getelementptr inbounds i32, ptr %365, i64 1
  store i32 %364, ptr %366, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %360, %357
  %368 = load i32, ptr %44, align 4, !tbaa !9
  %369 = icmp sle i32 %368, 5
  br i1 %369, label %370, label %374

370:                                              ; preds = %367
  %371 = load i32, ptr %17, align 4, !tbaa !9
  %372 = and i32 %371, 134217728
  %373 = icmp ne i32 %372, 0
  br label %374

374:                                              ; preds = %370, %367
  %375 = phi i1 [ false, %367 ], [ %373, %370 ]
  %376 = zext i1 %375 to i64
  %377 = select i1 %375, i32 -25, i32 -10
  store i32 %377, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %396

378:                                              ; preds = %351
  %379 = load i32, ptr %16, align 4, !tbaa !9
  %380 = icmp sgt i32 %379, 0
  br i1 %380, label %381, label %395

381:                                              ; preds = %378
  %382 = load i32, ptr %16, align 4, !tbaa !9
  %383 = load i32, ptr %15, align 4, !tbaa !9
  %384 = icmp slt i32 %382, %383
  br i1 %384, label %385, label %395

385:                                              ; preds = %381
  %386 = load ptr, ptr %14, align 8, !tbaa !5
  %387 = load i32, ptr %16, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i8, ptr %386, i64 %388
  %390 = load i8, ptr %389, align 1, !tbaa !11
  %391 = zext i8 %390 to i32
  %392 = and i32 %391, 192
  %393 = icmp eq i32 %392, 128
  br i1 %393, label %394, label %395

394:                                              ; preds = %385
  store i32 -11, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %396

395:                                              ; preds = %385, %381, %378
  store i32 0, ptr %41, align 4
  br label %396

396:                                              ; preds = %395, %394, %374
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  %397 = load i32, ptr %41, align 4
  switch i32 %397, label %1365 [
    i32 0, label %398
  ]

398:                                              ; preds = %396
  br label %399

399:                                              ; preds = %398, %347, %344
  %400 = load ptr, ptr %24, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.dfa_match_data, ptr %400, i32 0, i32 4
  %402 = load ptr, ptr %401, align 8, !tbaa !17
  %403 = icmp eq ptr %402, null
  br i1 %403, label %404, label %407

404:                                              ; preds = %399
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.dfa_match_data, ptr %405, i32 0, i32 4
  store ptr @_pcre_default_tables, ptr %406, align 8, !tbaa !17
  br label %407

407:                                              ; preds = %404, %399
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %408, i32 0, i32 3
  %410 = load i32, ptr %409, align 4, !tbaa !15
  %411 = and i32 %410, 256
  %412 = icmp ne i32 %411, 0
  %413 = zext i1 %412 to i32
  store i32 %413, ptr %27, align 4, !tbaa !9
  %414 = load ptr, ptr %22, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %414, i32 0, i32 2
  %416 = load i32, ptr %415, align 8, !tbaa !27
  %417 = and i32 %416, 262144
  %418 = icmp ne i32 %417, 0
  %419 = zext i1 %418 to i32
  store i32 %419, ptr %28, align 4, !tbaa !9
  %420 = load i32, ptr %26, align 4, !tbaa !9
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %466, label %422

422:                                              ; preds = %407
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %423, i32 0, i32 3
  %425 = load i32, ptr %424, align 4, !tbaa !15
  %426 = and i32 %425, 16
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %448

428:                                              ; preds = %422
  store i32 1, ptr %34, align 4, !tbaa !9
  %429 = load ptr, ptr %22, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %429, i32 0, i32 6
  %431 = load i16, ptr %430, align 8, !tbaa !39
  %432 = trunc i16 %431 to i8
  store i8 %432, ptr %37, align 1, !tbaa !11
  store i8 %432, ptr %36, align 1, !tbaa !11
  %433 = load ptr, ptr %22, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %433, i32 0, i32 3
  %435 = load i32, ptr %434, align 4, !tbaa !15
  %436 = and i32 %435, 32
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %447

438:                                              ; preds = %428
  %439 = load ptr, ptr %24, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.dfa_match_data, ptr %439, i32 0, i32 4
  %441 = load ptr, ptr %440, align 8, !tbaa !17
  %442 = getelementptr inbounds i8, ptr %441, i64 256
  %443 = load i8, ptr %36, align 1, !tbaa !11
  %444 = zext i8 %443 to i64
  %445 = getelementptr inbounds i8, ptr %442, i64 %444
  %446 = load i8, ptr %445, align 1, !tbaa !11
  store i8 %446, ptr %37, align 1, !tbaa !11
  br label %447

447:                                              ; preds = %438, %428
  br label %465

448:                                              ; preds = %422
  %449 = load i32, ptr %27, align 4, !tbaa !9
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %464, label %451

451:                                              ; preds = %448
  %452 = load ptr, ptr %31, align 8, !tbaa !5
  %453 = icmp ne ptr %452, null
  br i1 %453, label %454, label %464

454:                                              ; preds = %451
  %455 = load ptr, ptr %31, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.pcre_study_data, ptr %455, i32 0, i32 1
  %457 = load i32, ptr %456, align 4, !tbaa !40
  %458 = and i32 %457, 1
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %464

460:                                              ; preds = %454
  %461 = load ptr, ptr %31, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.pcre_study_data, ptr %461, i32 0, i32 2
  %463 = getelementptr inbounds [32 x i8], ptr %462, i64 0, i64 0
  store ptr %463, ptr %33, align 8, !tbaa !5
  br label %464

464:                                              ; preds = %460, %454, %451, %448
  br label %465

465:                                              ; preds = %464, %447
  br label %466

466:                                              ; preds = %465, %407
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %467, i32 0, i32 3
  %469 = load i32, ptr %468, align 4, !tbaa !15
  %470 = and i32 %469, 64
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %492

472:                                              ; preds = %466
  store i32 1, ptr %35, align 4, !tbaa !9
  %473 = load ptr, ptr %22, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %473, i32 0, i32 7
  %475 = load i16, ptr %474, align 2, !tbaa !42
  %476 = trunc i16 %475 to i8
  store i8 %476, ptr %39, align 1, !tbaa !11
  store i8 %476, ptr %38, align 1, !tbaa !11
  %477 = load ptr, ptr %22, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %477, i32 0, i32 3
  %479 = load i32, ptr %478, align 4, !tbaa !15
  %480 = and i32 %479, 128
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %491

482:                                              ; preds = %472
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.dfa_match_data, ptr %483, i32 0, i32 4
  %485 = load ptr, ptr %484, align 8, !tbaa !17
  %486 = getelementptr inbounds i8, ptr %485, i64 256
  %487 = load i8, ptr %38, align 1, !tbaa !11
  %488 = zext i8 %487 to i64
  %489 = getelementptr inbounds i8, ptr %486, i64 %488
  %490 = load i8, ptr %489, align 1, !tbaa !11
  store i8 %490, ptr %39, align 1, !tbaa !11
  br label %491

491:                                              ; preds = %482, %472
  br label %492

492:                                              ; preds = %491, %466
  br label %493

493:                                              ; preds = %1363, %492
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  %494 = load i32, ptr %17, align 4, !tbaa !9
  %495 = and i32 %494, 131072
  %496 = icmp eq i32 %495, 0
  br i1 %496, label %497, label %1167

497:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %498, ptr %46, align 8, !tbaa !5
  %499 = load i32, ptr %28, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %697

501:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  %502 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %502, ptr %47, align 8, !tbaa !5
  %503 = load i32, ptr %25, align 4, !tbaa !9
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %608

505:                                              ; preds = %501
  br label %506

506:                                              ; preds = %606, %505
  %507 = load ptr, ptr %47, align 8, !tbaa !5
  %508 = load ptr, ptr %24, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.dfa_match_data, ptr %508, i32 0, i32 2
  %510 = load ptr, ptr %509, align 8, !tbaa !33
  %511 = icmp ult ptr %507, %510
  br i1 %511, label %512, label %586

512:                                              ; preds = %506
  %513 = load ptr, ptr %24, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.dfa_match_data, ptr %513, i32 0, i32 8
  %515 = load i32, ptr %514, align 4, !tbaa !37
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %539

517:                                              ; preds = %512
  %518 = load ptr, ptr %47, align 8, !tbaa !5
  %519 = load ptr, ptr %24, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.dfa_match_data, ptr %519, i32 0, i32 2
  %521 = load ptr, ptr %520, align 8, !tbaa !33
  %522 = icmp ult ptr %518, %521
  br i1 %522, label %523, label %536

523:                                              ; preds = %517
  %524 = load ptr, ptr %47, align 8, !tbaa !5
  %525 = load ptr, ptr %24, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.dfa_match_data, ptr %525, i32 0, i32 8
  %527 = load i32, ptr %526, align 4, !tbaa !37
  %528 = load ptr, ptr %24, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.dfa_match_data, ptr %528, i32 0, i32 2
  %530 = load ptr, ptr %529, align 8, !tbaa !33
  %531 = load ptr, ptr %24, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.dfa_match_data, ptr %531, i32 0, i32 9
  %533 = load i32, ptr %25, align 4, !tbaa !9
  %534 = call i32 @_pcre_is_newline(ptr noundef %524, i32 noundef %527, ptr noundef %530, ptr noundef %532, i32 noundef %533)
  %535 = icmp ne i32 %534, 0
  br label %536

536:                                              ; preds = %523, %517
  %537 = phi i1 [ false, %517 ], [ %535, %523 ]
  %538 = zext i1 %537 to i32
  br label %582

539:                                              ; preds = %512
  %540 = load ptr, ptr %47, align 8, !tbaa !5
  %541 = load ptr, ptr %24, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.dfa_match_data, ptr %541, i32 0, i32 2
  %543 = load ptr, ptr %542, align 8, !tbaa !33
  %544 = load ptr, ptr %24, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.dfa_match_data, ptr %544, i32 0, i32 9
  %546 = load i32, ptr %545, align 8, !tbaa !38
  %547 = sext i32 %546 to i64
  %548 = sub i64 0, %547
  %549 = getelementptr inbounds i8, ptr %543, i64 %548
  %550 = icmp ule ptr %540, %549
  br i1 %550, label %551, label %579

551:                                              ; preds = %539
  %552 = load ptr, ptr %47, align 8, !tbaa !5
  %553 = load i8, ptr %552, align 1, !tbaa !11
  %554 = zext i8 %553 to i32
  %555 = load ptr, ptr %24, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.dfa_match_data, ptr %555, i32 0, i32 10
  %557 = getelementptr inbounds [4 x i8], ptr %556, i64 0, i64 0
  %558 = load i8, ptr %557, align 4, !tbaa !11
  %559 = zext i8 %558 to i32
  %560 = icmp eq i32 %554, %559
  br i1 %560, label %561, label %579

561:                                              ; preds = %551
  %562 = load ptr, ptr %24, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.dfa_match_data, ptr %562, i32 0, i32 9
  %564 = load i32, ptr %563, align 8, !tbaa !38
  %565 = icmp eq i32 %564, 1
  br i1 %565, label %577, label %566

566:                                              ; preds = %561
  %567 = load ptr, ptr %47, align 8, !tbaa !5
  %568 = getelementptr inbounds i8, ptr %567, i64 1
  %569 = load i8, ptr %568, align 1, !tbaa !11
  %570 = zext i8 %569 to i32
  %571 = load ptr, ptr %24, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.dfa_match_data, ptr %571, i32 0, i32 10
  %573 = getelementptr inbounds [4 x i8], ptr %572, i64 0, i64 1
  %574 = load i8, ptr %573, align 1, !tbaa !11
  %575 = zext i8 %574 to i32
  %576 = icmp eq i32 %570, %575
  br label %577

577:                                              ; preds = %566, %561
  %578 = phi i1 [ true, %561 ], [ %576, %566 ]
  br label %579

579:                                              ; preds = %577, %551, %539
  %580 = phi i1 [ false, %551 ], [ false, %539 ], [ %578, %577 ]
  %581 = zext i1 %580 to i32
  br label %582

582:                                              ; preds = %579, %536
  %583 = phi i32 [ %538, %536 ], [ %581, %579 ]
  %584 = icmp ne i32 %583, 0
  %585 = xor i1 %584, true
  br label %586

586:                                              ; preds = %582, %506
  %587 = phi i1 [ false, %506 ], [ %585, %582 ]
  br i1 %587, label %588, label %607

588:                                              ; preds = %586
  %589 = load ptr, ptr %47, align 8, !tbaa !5
  %590 = getelementptr inbounds i8, ptr %589, i32 1
  store ptr %590, ptr %47, align 8, !tbaa !5
  br label %591

591:                                              ; preds = %603, %588
  %592 = load ptr, ptr %47, align 8, !tbaa !5
  %593 = load ptr, ptr %30, align 8, !tbaa !5
  %594 = icmp ult ptr %592, %593
  br i1 %594, label %595, label %601

595:                                              ; preds = %591
  %596 = load ptr, ptr %47, align 8, !tbaa !5
  %597 = load i8, ptr %596, align 1, !tbaa !11
  %598 = zext i8 %597 to i32
  %599 = and i32 %598, 192
  %600 = icmp eq i32 %599, 128
  br label %601

601:                                              ; preds = %595, %591
  %602 = phi i1 [ false, %591 ], [ %600, %595 ]
  br i1 %602, label %603, label %606

603:                                              ; preds = %601
  %604 = load ptr, ptr %47, align 8, !tbaa !5
  %605 = getelementptr inbounds i8, ptr %604, i32 1
  store ptr %605, ptr %47, align 8, !tbaa !5
  br label %591, !llvm.loop !43

606:                                              ; preds = %601
  br label %506, !llvm.loop !45

607:                                              ; preds = %586
  br label %695

608:                                              ; preds = %501
  br label %609

609:                                              ; preds = %691, %608
  %610 = load ptr, ptr %47, align 8, !tbaa !5
  %611 = load ptr, ptr %24, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.dfa_match_data, ptr %611, i32 0, i32 2
  %613 = load ptr, ptr %612, align 8, !tbaa !33
  %614 = icmp ult ptr %610, %613
  br i1 %614, label %615, label %689

615:                                              ; preds = %609
  %616 = load ptr, ptr %24, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.dfa_match_data, ptr %616, i32 0, i32 8
  %618 = load i32, ptr %617, align 4, !tbaa !37
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %642

620:                                              ; preds = %615
  %621 = load ptr, ptr %47, align 8, !tbaa !5
  %622 = load ptr, ptr %24, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.dfa_match_data, ptr %622, i32 0, i32 2
  %624 = load ptr, ptr %623, align 8, !tbaa !33
  %625 = icmp ult ptr %621, %624
  br i1 %625, label %626, label %639

626:                                              ; preds = %620
  %627 = load ptr, ptr %47, align 8, !tbaa !5
  %628 = load ptr, ptr %24, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.dfa_match_data, ptr %628, i32 0, i32 8
  %630 = load i32, ptr %629, align 4, !tbaa !37
  %631 = load ptr, ptr %24, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.dfa_match_data, ptr %631, i32 0, i32 2
  %633 = load ptr, ptr %632, align 8, !tbaa !33
  %634 = load ptr, ptr %24, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.dfa_match_data, ptr %634, i32 0, i32 9
  %636 = load i32, ptr %25, align 4, !tbaa !9
  %637 = call i32 @_pcre_is_newline(ptr noundef %627, i32 noundef %630, ptr noundef %633, ptr noundef %635, i32 noundef %636)
  %638 = icmp ne i32 %637, 0
  br label %639

639:                                              ; preds = %626, %620
  %640 = phi i1 [ false, %620 ], [ %638, %626 ]
  %641 = zext i1 %640 to i32
  br label %685

642:                                              ; preds = %615
  %643 = load ptr, ptr %47, align 8, !tbaa !5
  %644 = load ptr, ptr %24, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.dfa_match_data, ptr %644, i32 0, i32 2
  %646 = load ptr, ptr %645, align 8, !tbaa !33
  %647 = load ptr, ptr %24, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.dfa_match_data, ptr %647, i32 0, i32 9
  %649 = load i32, ptr %648, align 8, !tbaa !38
  %650 = sext i32 %649 to i64
  %651 = sub i64 0, %650
  %652 = getelementptr inbounds i8, ptr %646, i64 %651
  %653 = icmp ule ptr %643, %652
  br i1 %653, label %654, label %682

654:                                              ; preds = %642
  %655 = load ptr, ptr %47, align 8, !tbaa !5
  %656 = load i8, ptr %655, align 1, !tbaa !11
  %657 = zext i8 %656 to i32
  %658 = load ptr, ptr %24, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.dfa_match_data, ptr %658, i32 0, i32 10
  %660 = getelementptr inbounds [4 x i8], ptr %659, i64 0, i64 0
  %661 = load i8, ptr %660, align 4, !tbaa !11
  %662 = zext i8 %661 to i32
  %663 = icmp eq i32 %657, %662
  br i1 %663, label %664, label %682

664:                                              ; preds = %654
  %665 = load ptr, ptr %24, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.dfa_match_data, ptr %665, i32 0, i32 9
  %667 = load i32, ptr %666, align 8, !tbaa !38
  %668 = icmp eq i32 %667, 1
  br i1 %668, label %680, label %669

669:                                              ; preds = %664
  %670 = load ptr, ptr %47, align 8, !tbaa !5
  %671 = getelementptr inbounds i8, ptr %670, i64 1
  %672 = load i8, ptr %671, align 1, !tbaa !11
  %673 = zext i8 %672 to i32
  %674 = load ptr, ptr %24, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.dfa_match_data, ptr %674, i32 0, i32 10
  %676 = getelementptr inbounds [4 x i8], ptr %675, i64 0, i64 1
  %677 = load i8, ptr %676, align 1, !tbaa !11
  %678 = zext i8 %677 to i32
  %679 = icmp eq i32 %673, %678
  br label %680

680:                                              ; preds = %669, %664
  %681 = phi i1 [ true, %664 ], [ %679, %669 ]
  br label %682

682:                                              ; preds = %680, %654, %642
  %683 = phi i1 [ false, %654 ], [ false, %642 ], [ %681, %680 ]
  %684 = zext i1 %683 to i32
  br label %685

685:                                              ; preds = %682, %639
  %686 = phi i32 [ %641, %639 ], [ %684, %682 ]
  %687 = icmp ne i32 %686, 0
  %688 = xor i1 %687, true
  br label %689

689:                                              ; preds = %685, %609
  %690 = phi i1 [ false, %609 ], [ %688, %685 ]
  br i1 %690, label %691, label %694

691:                                              ; preds = %689
  %692 = load ptr, ptr %47, align 8, !tbaa !5
  %693 = getelementptr inbounds i8, ptr %692, i32 1
  store ptr %693, ptr %47, align 8, !tbaa !5
  br label %609, !llvm.loop !46

694:                                              ; preds = %689
  br label %695

695:                                              ; preds = %694, %607
  %696 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %696, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  br label %697

697:                                              ; preds = %695, %497
  %698 = load i32, ptr %17, align 4, !tbaa !9
  %699 = load ptr, ptr %22, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %699, i32 0, i32 2
  %701 = load i32, ptr %700, align 8, !tbaa !27
  %702 = or i32 %698, %701
  %703 = and i32 %702, 67108864
  %704 = icmp eq i32 %703, 0
  br i1 %704, label %705, label %1045

705:                                              ; preds = %697
  %706 = load i32, ptr %34, align 4, !tbaa !9
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %708, label %757

708:                                              ; preds = %705
  %709 = load i8, ptr %36, align 1, !tbaa !11
  %710 = zext i8 %709 to i32
  %711 = load i8, ptr %37, align 1, !tbaa !11
  %712 = zext i8 %711 to i32
  %713 = icmp ne i32 %710, %712
  br i1 %713, label %714, label %738

714:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #3
  br label %715

715:                                              ; preds = %734, %714
  %716 = load ptr, ptr %29, align 8, !tbaa !5
  %717 = load ptr, ptr %30, align 8, !tbaa !5
  %718 = icmp ult ptr %716, %717
  br i1 %718, label %719, label %732

719:                                              ; preds = %715
  %720 = load ptr, ptr %29, align 8, !tbaa !5
  %721 = load i8, ptr %720, align 1, !tbaa !11
  store i8 %721, ptr %48, align 1, !tbaa !11
  %722 = zext i8 %721 to i32
  %723 = load i8, ptr %36, align 1, !tbaa !11
  %724 = zext i8 %723 to i32
  %725 = icmp ne i32 %722, %724
  br i1 %725, label %726, label %732

726:                                              ; preds = %719
  %727 = load i8, ptr %48, align 1, !tbaa !11
  %728 = zext i8 %727 to i32
  %729 = load i8, ptr %37, align 1, !tbaa !11
  %730 = zext i8 %729 to i32
  %731 = icmp ne i32 %728, %730
  br label %732

732:                                              ; preds = %726, %719, %715
  %733 = phi i1 [ false, %719 ], [ false, %715 ], [ %731, %726 ]
  br i1 %733, label %734, label %737

734:                                              ; preds = %732
  %735 = load ptr, ptr %29, align 8, !tbaa !5
  %736 = getelementptr inbounds i8, ptr %735, i32 1
  store ptr %736, ptr %29, align 8, !tbaa !5
  br label %715, !llvm.loop !47

737:                                              ; preds = %732
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #3
  br label %756

738:                                              ; preds = %708
  br label %739

739:                                              ; preds = %752, %738
  %740 = load ptr, ptr %29, align 8, !tbaa !5
  %741 = load ptr, ptr %30, align 8, !tbaa !5
  %742 = icmp ult ptr %740, %741
  br i1 %742, label %743, label %750

743:                                              ; preds = %739
  %744 = load ptr, ptr %29, align 8, !tbaa !5
  %745 = load i8, ptr %744, align 1, !tbaa !11
  %746 = zext i8 %745 to i32
  %747 = load i8, ptr %36, align 1, !tbaa !11
  %748 = zext i8 %747 to i32
  %749 = icmp ne i32 %746, %748
  br label %750

750:                                              ; preds = %743, %739
  %751 = phi i1 [ false, %739 ], [ %749, %743 ]
  br i1 %751, label %752, label %755

752:                                              ; preds = %750
  %753 = load ptr, ptr %29, align 8, !tbaa !5
  %754 = getelementptr inbounds i8, ptr %753, i32 1
  store ptr %754, ptr %29, align 8, !tbaa !5
  br label %739, !llvm.loop !48

755:                                              ; preds = %750
  br label %756

756:                                              ; preds = %755, %737
  br label %1044

757:                                              ; preds = %705
  %758 = load i32, ptr %27, align 4, !tbaa !9
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %760, label %1010

760:                                              ; preds = %757
  %761 = load ptr, ptr %29, align 8, !tbaa !5
  %762 = load ptr, ptr %24, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.dfa_match_data, ptr %762, i32 0, i32 1
  %764 = load ptr, ptr %763, align 8, !tbaa !32
  %765 = load i32, ptr %16, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i8, ptr %764, i64 %766
  %768 = icmp ugt ptr %761, %767
  br i1 %768, label %769, label %1009

769:                                              ; preds = %760
  %770 = load i32, ptr %25, align 4, !tbaa !9
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %884

772:                                              ; preds = %769
  br label %773

773:                                              ; preds = %882, %772
  %774 = load ptr, ptr %29, align 8, !tbaa !5
  %775 = load ptr, ptr %30, align 8, !tbaa !5
  %776 = icmp ult ptr %774, %775
  br i1 %776, label %777, label %862

777:                                              ; preds = %773
  %778 = load ptr, ptr %24, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.dfa_match_data, ptr %778, i32 0, i32 8
  %780 = load i32, ptr %779, align 4, !tbaa !37
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %804

782:                                              ; preds = %777
  %783 = load ptr, ptr %29, align 8, !tbaa !5
  %784 = load ptr, ptr %24, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.dfa_match_data, ptr %784, i32 0, i32 1
  %786 = load ptr, ptr %785, align 8, !tbaa !32
  %787 = icmp ugt ptr %783, %786
  br i1 %787, label %788, label %801

788:                                              ; preds = %782
  %789 = load ptr, ptr %29, align 8, !tbaa !5
  %790 = load ptr, ptr %24, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.dfa_match_data, ptr %790, i32 0, i32 8
  %792 = load i32, ptr %791, align 4, !tbaa !37
  %793 = load ptr, ptr %24, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.dfa_match_data, ptr %793, i32 0, i32 1
  %795 = load ptr, ptr %794, align 8, !tbaa !32
  %796 = load ptr, ptr %24, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.dfa_match_data, ptr %796, i32 0, i32 9
  %798 = load i32, ptr %25, align 4, !tbaa !9
  %799 = call i32 @_pcre_was_newline(ptr noundef %789, i32 noundef %792, ptr noundef %795, ptr noundef %797, i32 noundef %798)
  %800 = icmp ne i32 %799, 0
  br label %801

801:                                              ; preds = %788, %782
  %802 = phi i1 [ false, %782 ], [ %800, %788 ]
  %803 = zext i1 %802 to i32
  br label %858

804:                                              ; preds = %777
  %805 = load ptr, ptr %29, align 8, !tbaa !5
  %806 = load ptr, ptr %24, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.dfa_match_data, ptr %806, i32 0, i32 1
  %808 = load ptr, ptr %807, align 8, !tbaa !32
  %809 = load ptr, ptr %24, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.dfa_match_data, ptr %809, i32 0, i32 9
  %811 = load i32, ptr %810, align 8, !tbaa !38
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i8, ptr %808, i64 %812
  %814 = icmp uge ptr %805, %813
  br i1 %814, label %815, label %855

815:                                              ; preds = %804
  %816 = load ptr, ptr %29, align 8, !tbaa !5
  %817 = load ptr, ptr %24, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.dfa_match_data, ptr %817, i32 0, i32 9
  %819 = load i32, ptr %818, align 8, !tbaa !38
  %820 = sext i32 %819 to i64
  %821 = sub i64 0, %820
  %822 = getelementptr inbounds i8, ptr %816, i64 %821
  %823 = load i8, ptr %822, align 1, !tbaa !11
  %824 = zext i8 %823 to i32
  %825 = load ptr, ptr %24, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.dfa_match_data, ptr %825, i32 0, i32 10
  %827 = getelementptr inbounds [4 x i8], ptr %826, i64 0, i64 0
  %828 = load i8, ptr %827, align 4, !tbaa !11
  %829 = zext i8 %828 to i32
  %830 = icmp eq i32 %824, %829
  br i1 %830, label %831, label %855

831:                                              ; preds = %815
  %832 = load ptr, ptr %24, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.dfa_match_data, ptr %832, i32 0, i32 9
  %834 = load i32, ptr %833, align 8, !tbaa !38
  %835 = icmp eq i32 %834, 1
  br i1 %835, label %853, label %836

836:                                              ; preds = %831
  %837 = load ptr, ptr %29, align 8, !tbaa !5
  %838 = load ptr, ptr %24, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.dfa_match_data, ptr %838, i32 0, i32 9
  %840 = load i32, ptr %839, align 8, !tbaa !38
  %841 = sext i32 %840 to i64
  %842 = sub i64 0, %841
  %843 = getelementptr inbounds i8, ptr %837, i64 %842
  %844 = getelementptr inbounds i8, ptr %843, i64 1
  %845 = load i8, ptr %844, align 1, !tbaa !11
  %846 = zext i8 %845 to i32
  %847 = load ptr, ptr %24, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.dfa_match_data, ptr %847, i32 0, i32 10
  %849 = getelementptr inbounds [4 x i8], ptr %848, i64 0, i64 1
  %850 = load i8, ptr %849, align 1, !tbaa !11
  %851 = zext i8 %850 to i32
  %852 = icmp eq i32 %846, %851
  br label %853

853:                                              ; preds = %836, %831
  %854 = phi i1 [ true, %831 ], [ %852, %836 ]
  br label %855

855:                                              ; preds = %853, %815, %804
  %856 = phi i1 [ false, %815 ], [ false, %804 ], [ %854, %853 ]
  %857 = zext i1 %856 to i32
  br label %858

858:                                              ; preds = %855, %801
  %859 = phi i32 [ %803, %801 ], [ %857, %855 ]
  %860 = icmp ne i32 %859, 0
  %861 = xor i1 %860, true
  br label %862

862:                                              ; preds = %858, %773
  %863 = phi i1 [ false, %773 ], [ %861, %858 ]
  br i1 %863, label %864, label %883

864:                                              ; preds = %862
  %865 = load ptr, ptr %29, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i32 1
  store ptr %866, ptr %29, align 8, !tbaa !5
  br label %867

867:                                              ; preds = %879, %864
  %868 = load ptr, ptr %29, align 8, !tbaa !5
  %869 = load ptr, ptr %30, align 8, !tbaa !5
  %870 = icmp ult ptr %868, %869
  br i1 %870, label %871, label %877

871:                                              ; preds = %867
  %872 = load ptr, ptr %29, align 8, !tbaa !5
  %873 = load i8, ptr %872, align 1, !tbaa !11
  %874 = zext i8 %873 to i32
  %875 = and i32 %874, 192
  %876 = icmp eq i32 %875, 128
  br label %877

877:                                              ; preds = %871, %867
  %878 = phi i1 [ false, %867 ], [ %876, %871 ]
  br i1 %878, label %879, label %882

879:                                              ; preds = %877
  %880 = load ptr, ptr %29, align 8, !tbaa !5
  %881 = getelementptr inbounds i8, ptr %880, i32 1
  store ptr %881, ptr %29, align 8, !tbaa !5
  br label %867, !llvm.loop !49

882:                                              ; preds = %877
  br label %773, !llvm.loop !50

883:                                              ; preds = %862
  br label %980

884:                                              ; preds = %769
  br label %885

885:                                              ; preds = %976, %884
  %886 = load ptr, ptr %29, align 8, !tbaa !5
  %887 = load ptr, ptr %30, align 8, !tbaa !5
  %888 = icmp ult ptr %886, %887
  br i1 %888, label %889, label %974

889:                                              ; preds = %885
  %890 = load ptr, ptr %24, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.dfa_match_data, ptr %890, i32 0, i32 8
  %892 = load i32, ptr %891, align 4, !tbaa !37
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %894, label %916

894:                                              ; preds = %889
  %895 = load ptr, ptr %29, align 8, !tbaa !5
  %896 = load ptr, ptr %24, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.dfa_match_data, ptr %896, i32 0, i32 1
  %898 = load ptr, ptr %897, align 8, !tbaa !32
  %899 = icmp ugt ptr %895, %898
  br i1 %899, label %900, label %913

900:                                              ; preds = %894
  %901 = load ptr, ptr %29, align 8, !tbaa !5
  %902 = load ptr, ptr %24, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.dfa_match_data, ptr %902, i32 0, i32 8
  %904 = load i32, ptr %903, align 4, !tbaa !37
  %905 = load ptr, ptr %24, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.dfa_match_data, ptr %905, i32 0, i32 1
  %907 = load ptr, ptr %906, align 8, !tbaa !32
  %908 = load ptr, ptr %24, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.dfa_match_data, ptr %908, i32 0, i32 9
  %910 = load i32, ptr %25, align 4, !tbaa !9
  %911 = call i32 @_pcre_was_newline(ptr noundef %901, i32 noundef %904, ptr noundef %907, ptr noundef %909, i32 noundef %910)
  %912 = icmp ne i32 %911, 0
  br label %913

913:                                              ; preds = %900, %894
  %914 = phi i1 [ false, %894 ], [ %912, %900 ]
  %915 = zext i1 %914 to i32
  br label %970

916:                                              ; preds = %889
  %917 = load ptr, ptr %29, align 8, !tbaa !5
  %918 = load ptr, ptr %24, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.dfa_match_data, ptr %918, i32 0, i32 1
  %920 = load ptr, ptr %919, align 8, !tbaa !32
  %921 = load ptr, ptr %24, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.dfa_match_data, ptr %921, i32 0, i32 9
  %923 = load i32, ptr %922, align 8, !tbaa !38
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds i8, ptr %920, i64 %924
  %926 = icmp uge ptr %917, %925
  br i1 %926, label %927, label %967

927:                                              ; preds = %916
  %928 = load ptr, ptr %29, align 8, !tbaa !5
  %929 = load ptr, ptr %24, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.dfa_match_data, ptr %929, i32 0, i32 9
  %931 = load i32, ptr %930, align 8, !tbaa !38
  %932 = sext i32 %931 to i64
  %933 = sub i64 0, %932
  %934 = getelementptr inbounds i8, ptr %928, i64 %933
  %935 = load i8, ptr %934, align 1, !tbaa !11
  %936 = zext i8 %935 to i32
  %937 = load ptr, ptr %24, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.dfa_match_data, ptr %937, i32 0, i32 10
  %939 = getelementptr inbounds [4 x i8], ptr %938, i64 0, i64 0
  %940 = load i8, ptr %939, align 4, !tbaa !11
  %941 = zext i8 %940 to i32
  %942 = icmp eq i32 %936, %941
  br i1 %942, label %943, label %967

943:                                              ; preds = %927
  %944 = load ptr, ptr %24, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.dfa_match_data, ptr %944, i32 0, i32 9
  %946 = load i32, ptr %945, align 8, !tbaa !38
  %947 = icmp eq i32 %946, 1
  br i1 %947, label %965, label %948

948:                                              ; preds = %943
  %949 = load ptr, ptr %29, align 8, !tbaa !5
  %950 = load ptr, ptr %24, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.dfa_match_data, ptr %950, i32 0, i32 9
  %952 = load i32, ptr %951, align 8, !tbaa !38
  %953 = sext i32 %952 to i64
  %954 = sub i64 0, %953
  %955 = getelementptr inbounds i8, ptr %949, i64 %954
  %956 = getelementptr inbounds i8, ptr %955, i64 1
  %957 = load i8, ptr %956, align 1, !tbaa !11
  %958 = zext i8 %957 to i32
  %959 = load ptr, ptr %24, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.dfa_match_data, ptr %959, i32 0, i32 10
  %961 = getelementptr inbounds [4 x i8], ptr %960, i64 0, i64 1
  %962 = load i8, ptr %961, align 1, !tbaa !11
  %963 = zext i8 %962 to i32
  %964 = icmp eq i32 %958, %963
  br label %965

965:                                              ; preds = %948, %943
  %966 = phi i1 [ true, %943 ], [ %964, %948 ]
  br label %967

967:                                              ; preds = %965, %927, %916
  %968 = phi i1 [ false, %927 ], [ false, %916 ], [ %966, %965 ]
  %969 = zext i1 %968 to i32
  br label %970

970:                                              ; preds = %967, %913
  %971 = phi i32 [ %915, %913 ], [ %969, %967 ]
  %972 = icmp ne i32 %971, 0
  %973 = xor i1 %972, true
  br label %974

974:                                              ; preds = %970, %885
  %975 = phi i1 [ false, %885 ], [ %973, %970 ]
  br i1 %975, label %976, label %979

976:                                              ; preds = %974
  %977 = load ptr, ptr %29, align 8, !tbaa !5
  %978 = getelementptr inbounds i8, ptr %977, i32 1
  store ptr %978, ptr %29, align 8, !tbaa !5
  br label %885, !llvm.loop !51

979:                                              ; preds = %974
  br label %980

980:                                              ; preds = %979, %883
  %981 = load ptr, ptr %29, align 8, !tbaa !5
  %982 = getelementptr inbounds i8, ptr %981, i64 -1
  %983 = load i8, ptr %982, align 1, !tbaa !11
  %984 = zext i8 %983 to i32
  %985 = icmp eq i32 %984, 13
  br i1 %985, label %986, label %1008

986:                                              ; preds = %980
  %987 = load ptr, ptr %24, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.dfa_match_data, ptr %987, i32 0, i32 8
  %989 = load i32, ptr %988, align 4, !tbaa !37
  %990 = icmp eq i32 %989, 1
  br i1 %990, label %996, label %991

991:                                              ; preds = %986
  %992 = load ptr, ptr %24, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.dfa_match_data, ptr %992, i32 0, i32 8
  %994 = load i32, ptr %993, align 4, !tbaa !37
  %995 = icmp eq i32 %994, 2
  br i1 %995, label %996, label %1008

996:                                              ; preds = %991, %986
  %997 = load ptr, ptr %29, align 8, !tbaa !5
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  %999 = icmp ult ptr %997, %998
  br i1 %999, label %1000, label %1008

1000:                                             ; preds = %996
  %1001 = load ptr, ptr %29, align 8, !tbaa !5
  %1002 = load i8, ptr %1001, align 1, !tbaa !11
  %1003 = zext i8 %1002 to i32
  %1004 = icmp eq i32 %1003, 10
  br i1 %1004, label %1005, label %1008

1005:                                             ; preds = %1000
  %1006 = load ptr, ptr %29, align 8, !tbaa !5
  %1007 = getelementptr inbounds i8, ptr %1006, i32 1
  store ptr %1007, ptr %29, align 8, !tbaa !5
  br label %1008

1008:                                             ; preds = %1005, %1000, %996, %991, %980
  br label %1009

1009:                                             ; preds = %1008, %760
  br label %1043

1010:                                             ; preds = %757
  %1011 = load ptr, ptr %33, align 8, !tbaa !5
  %1012 = icmp ne ptr %1011, null
  br i1 %1012, label %1013, label %1042

1013:                                             ; preds = %1010
  br label %1014

1014:                                             ; preds = %1040, %1013
  %1015 = load ptr, ptr %29, align 8, !tbaa !5
  %1016 = load ptr, ptr %30, align 8, !tbaa !5
  %1017 = icmp ult ptr %1015, %1016
  br i1 %1017, label %1018, label %1041

1018:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  %1019 = load ptr, ptr %29, align 8, !tbaa !5
  %1020 = load i8, ptr %1019, align 1, !tbaa !11
  %1021 = zext i8 %1020 to i32
  store i32 %1021, ptr %49, align 4, !tbaa !9
  %1022 = load ptr, ptr %33, align 8, !tbaa !5
  %1023 = load i32, ptr %49, align 4, !tbaa !9
  %1024 = udiv i32 %1023, 8
  %1025 = zext i32 %1024 to i64
  %1026 = getelementptr inbounds i8, ptr %1022, i64 %1025
  %1027 = load i8, ptr %1026, align 1, !tbaa !11
  %1028 = zext i8 %1027 to i32
  %1029 = load i32, ptr %49, align 4, !tbaa !9
  %1030 = and i32 %1029, 7
  %1031 = shl i32 1, %1030
  %1032 = and i32 %1028, %1031
  %1033 = icmp ne i32 %1032, 0
  br i1 %1033, label %1034, label %1035

1034:                                             ; preds = %1018
  store i32 22, ptr %41, align 4
  br label %1038

1035:                                             ; preds = %1018
  %1036 = load ptr, ptr %29, align 8, !tbaa !5
  %1037 = getelementptr inbounds i8, ptr %1036, i32 1
  store ptr %1037, ptr %29, align 8, !tbaa !5
  store i32 0, ptr %41, align 4
  br label %1038

1038:                                             ; preds = %1035, %1034
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  %1039 = load i32, ptr %41, align 4
  switch i32 %1039, label %1367 [
    i32 0, label %1040
    i32 22, label %1041
  ]

1040:                                             ; preds = %1038
  br label %1014, !llvm.loop !52

1041:                                             ; preds = %1038, %1014
  br label %1042

1042:                                             ; preds = %1041, %1010
  br label %1043

1043:                                             ; preds = %1042, %1009
  br label %1044

1044:                                             ; preds = %1043, %756
  br label %1045

1045:                                             ; preds = %1044, %697
  %1046 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %1046, ptr %30, align 8, !tbaa !5
  %1047 = load i32, ptr %17, align 4, !tbaa !9
  %1048 = load ptr, ptr %22, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1048, i32 0, i32 2
  %1050 = load i32, ptr %1049, align 8, !tbaa !27
  %1051 = or i32 %1047, %1050
  %1052 = and i32 %1051, 67108864
  %1053 = icmp eq i32 %1052, 0
  br i1 %1053, label %1054, label %1163

1054:                                             ; preds = %1045
  %1055 = load i32, ptr %17, align 4, !tbaa !9
  %1056 = and i32 %1055, 134250496
  %1057 = icmp eq i32 %1056, 0
  br i1 %1057, label %1058, label %1163

1058:                                             ; preds = %1054
  %1059 = load ptr, ptr %31, align 8, !tbaa !5
  %1060 = icmp ne ptr %1059, null
  br i1 %1060, label %1061, label %1079

1061:                                             ; preds = %1058
  %1062 = load ptr, ptr %31, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.pcre_study_data, ptr %1062, i32 0, i32 1
  %1064 = load i32, ptr %1063, align 4, !tbaa !40
  %1065 = and i32 %1064, 2
  %1066 = icmp ne i32 %1065, 0
  br i1 %1066, label %1067, label %1079

1067:                                             ; preds = %1061
  %1068 = load ptr, ptr %30, align 8, !tbaa !5
  %1069 = load ptr, ptr %29, align 8, !tbaa !5
  %1070 = ptrtoint ptr %1068 to i64
  %1071 = ptrtoint ptr %1069 to i64
  %1072 = sub i64 %1070, %1071
  %1073 = trunc i64 %1072 to i32
  %1074 = load ptr, ptr %31, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.pcre_study_data, ptr %1074, i32 0, i32 3
  %1076 = load i32, ptr %1075, align 4, !tbaa !53
  %1077 = icmp ult i32 %1073, %1076
  br i1 %1077, label %1078, label %1079

1078:                                             ; preds = %1067
  store i32 -1, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1164

1079:                                             ; preds = %1067, %1061, %1058
  %1080 = load i32, ptr %35, align 4, !tbaa !9
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1162

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr %30, align 8, !tbaa !5
  %1084 = load ptr, ptr %29, align 8, !tbaa !5
  %1085 = ptrtoint ptr %1083 to i64
  %1086 = ptrtoint ptr %1084 to i64
  %1087 = sub i64 %1085, %1086
  %1088 = icmp slt i64 %1087, 1000
  br i1 %1088, label %1089, label %1162

1089:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  %1090 = load ptr, ptr %29, align 8, !tbaa !5
  %1091 = load i32, ptr %34, align 4, !tbaa !9
  %1092 = icmp ne i32 %1091, 0
  %1093 = zext i1 %1092 to i64
  %1094 = select i1 %1092, i32 1, i32 0
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds i8, ptr %1090, i64 %1095
  store ptr %1096, ptr %50, align 8, !tbaa !5
  %1097 = load ptr, ptr %50, align 8, !tbaa !5
  %1098 = load ptr, ptr %32, align 8, !tbaa !5
  %1099 = icmp ugt ptr %1097, %1098
  br i1 %1099, label %1100, label %1158

1100:                                             ; preds = %1089
  %1101 = load i8, ptr %38, align 1, !tbaa !11
  %1102 = zext i8 %1101 to i32
  %1103 = load i8, ptr %39, align 1, !tbaa !11
  %1104 = zext i8 %1103 to i32
  %1105 = icmp ne i32 %1102, %1104
  br i1 %1105, label %1106, label %1133

1106:                                             ; preds = %1100
  br label %1107

1107:                                             ; preds = %1131, %1106
  %1108 = load ptr, ptr %50, align 8, !tbaa !5
  %1109 = load ptr, ptr %30, align 8, !tbaa !5
  %1110 = icmp ult ptr %1108, %1109
  br i1 %1110, label %1111, label %1132

1111:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %1112 = load ptr, ptr %50, align 8, !tbaa !5
  %1113 = getelementptr inbounds i8, ptr %1112, i32 1
  store ptr %1113, ptr %50, align 8, !tbaa !5
  %1114 = load i8, ptr %1112, align 1, !tbaa !11
  %1115 = zext i8 %1114 to i32
  store i32 %1115, ptr %51, align 4, !tbaa !9
  %1116 = load i32, ptr %51, align 4, !tbaa !9
  %1117 = load i8, ptr %38, align 1, !tbaa !11
  %1118 = zext i8 %1117 to i32
  %1119 = icmp eq i32 %1116, %1118
  br i1 %1119, label %1125, label %1120

1120:                                             ; preds = %1111
  %1121 = load i32, ptr %51, align 4, !tbaa !9
  %1122 = load i8, ptr %39, align 1, !tbaa !11
  %1123 = zext i8 %1122 to i32
  %1124 = icmp eq i32 %1121, %1123
  br i1 %1124, label %1125, label %1128

1125:                                             ; preds = %1120, %1111
  %1126 = load ptr, ptr %50, align 8, !tbaa !5
  %1127 = getelementptr inbounds i8, ptr %1126, i32 -1
  store ptr %1127, ptr %50, align 8, !tbaa !5
  store i32 24, ptr %41, align 4
  br label %1129

1128:                                             ; preds = %1120
  store i32 0, ptr %41, align 4
  br label %1129

1129:                                             ; preds = %1128, %1125
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  %1130 = load i32, ptr %41, align 4
  switch i32 %1130, label %1367 [
    i32 0, label %1131
    i32 24, label %1132
  ]

1131:                                             ; preds = %1129
  br label %1107, !llvm.loop !54

1132:                                             ; preds = %1129, %1107
  br label %1151

1133:                                             ; preds = %1100
  br label %1134

1134:                                             ; preds = %1149, %1133
  %1135 = load ptr, ptr %50, align 8, !tbaa !5
  %1136 = load ptr, ptr %30, align 8, !tbaa !5
  %1137 = icmp ult ptr %1135, %1136
  br i1 %1137, label %1138, label %1150

1138:                                             ; preds = %1134
  %1139 = load ptr, ptr %50, align 8, !tbaa !5
  %1140 = getelementptr inbounds i8, ptr %1139, i32 1
  store ptr %1140, ptr %50, align 8, !tbaa !5
  %1141 = load i8, ptr %1139, align 1, !tbaa !11
  %1142 = zext i8 %1141 to i32
  %1143 = load i8, ptr %38, align 1, !tbaa !11
  %1144 = zext i8 %1143 to i32
  %1145 = icmp eq i32 %1142, %1144
  br i1 %1145, label %1146, label %1149

1146:                                             ; preds = %1138
  %1147 = load ptr, ptr %50, align 8, !tbaa !5
  %1148 = getelementptr inbounds i8, ptr %1147, i32 -1
  store ptr %1148, ptr %50, align 8, !tbaa !5
  br label %1150

1149:                                             ; preds = %1138
  br label %1134, !llvm.loop !55

1150:                                             ; preds = %1146, %1134
  br label %1151

1151:                                             ; preds = %1150, %1132
  %1152 = load ptr, ptr %50, align 8, !tbaa !5
  %1153 = load ptr, ptr %30, align 8, !tbaa !5
  %1154 = icmp uge ptr %1152, %1153
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1151
  store i32 3, ptr %41, align 4
  br label %1159

1156:                                             ; preds = %1151
  %1157 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %1157, ptr %32, align 8, !tbaa !5
  br label %1158

1158:                                             ; preds = %1156, %1089
  store i32 0, ptr %41, align 4
  br label %1159

1159:                                             ; preds = %1158, %1155
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %1160 = load i32, ptr %41, align 4
  switch i32 %1160, label %1164 [
    i32 0, label %1161
  ]

1161:                                             ; preds = %1159
  br label %1162

1162:                                             ; preds = %1161, %1082, %1079
  br label %1163

1163:                                             ; preds = %1162, %1054, %1045
  store i32 0, ptr %41, align 4
  br label %1164

1164:                                             ; preds = %1163, %1159, %1078
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  %1165 = load i32, ptr %41, align 4
  switch i32 %1165, label %1361 [
    i32 0, label %1166
  ]

1166:                                             ; preds = %1164
  br label %1167

1167:                                             ; preds = %1166, %493
  %1168 = load ptr, ptr %29, align 8, !tbaa !5
  %1169 = load ptr, ptr %24, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.dfa_match_data, ptr %1169, i32 0, i32 3
  store ptr %1168, ptr %1170, align 8, !tbaa !56
  %1171 = load ptr, ptr %24, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.dfa_match_data, ptr %1171, i32 0, i32 12
  store ptr null, ptr %1172, align 8, !tbaa !57
  %1173 = load ptr, ptr %24, align 8, !tbaa !5
  %1174 = load ptr, ptr %24, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.dfa_match_data, ptr %1174, i32 0, i32 0
  %1176 = load ptr, ptr %1175, align 8, !tbaa !31
  %1177 = load ptr, ptr %29, align 8, !tbaa !5
  %1178 = load i32, ptr %16, align 4, !tbaa !9
  %1179 = load ptr, ptr %18, align 8, !tbaa !5
  %1180 = load i32, ptr %19, align 4, !tbaa !9
  %1181 = load ptr, ptr %20, align 8, !tbaa !5
  %1182 = load i32, ptr %21, align 4, !tbaa !9
  %1183 = call i32 @internal_dfa_exec(ptr noundef %1173, ptr noundef %1176, ptr noundef %1177, i32 noundef %1178, ptr noundef %1179, i32 noundef %1180, ptr noundef %1181, i32 noundef %1182, i32 noundef 0)
  store i32 %1183, ptr %45, align 4, !tbaa !9
  %1184 = load i32, ptr %45, align 4, !tbaa !9
  %1185 = icmp ne i32 %1184, -1
  br i1 %1185, label %1189, label %1186

1186:                                             ; preds = %1167
  %1187 = load i32, ptr %26, align 4, !tbaa !9
  %1188 = icmp ne i32 %1187, 0
  br i1 %1188, label %1189, label %1228

1189:                                             ; preds = %1186, %1167
  %1190 = load i32, ptr %45, align 4, !tbaa !9
  %1191 = icmp eq i32 %1190, -12
  br i1 %1191, label %1192, label %1226

1192:                                             ; preds = %1189
  %1193 = load i32, ptr %19, align 4, !tbaa !9
  %1194 = icmp sge i32 %1193, 2
  br i1 %1194, label %1195, label %1226

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr %24, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.dfa_match_data, ptr %1196, i32 0, i32 3
  %1198 = load ptr, ptr %1197, align 8, !tbaa !56
  %1199 = load ptr, ptr %14, align 8, !tbaa !5
  %1200 = ptrtoint ptr %1198 to i64
  %1201 = ptrtoint ptr %1199 to i64
  %1202 = sub i64 %1200, %1201
  %1203 = trunc i64 %1202 to i32
  %1204 = load ptr, ptr %18, align 8, !tbaa !5
  %1205 = getelementptr inbounds i32, ptr %1204, i64 0
  store i32 %1203, ptr %1205, align 4, !tbaa !9
  %1206 = load ptr, ptr %30, align 8, !tbaa !5
  %1207 = load ptr, ptr %14, align 8, !tbaa !5
  %1208 = ptrtoint ptr %1206 to i64
  %1209 = ptrtoint ptr %1207 to i64
  %1210 = sub i64 %1208, %1209
  %1211 = trunc i64 %1210 to i32
  %1212 = load ptr, ptr %18, align 8, !tbaa !5
  %1213 = getelementptr inbounds i32, ptr %1212, i64 1
  store i32 %1211, ptr %1213, align 4, !tbaa !9
  %1214 = load i32, ptr %19, align 4, !tbaa !9
  %1215 = icmp sgt i32 %1214, 2
  br i1 %1215, label %1216, label %1225

1216:                                             ; preds = %1195
  %1217 = load ptr, ptr %29, align 8, !tbaa !5
  %1218 = load ptr, ptr %14, align 8, !tbaa !5
  %1219 = ptrtoint ptr %1217 to i64
  %1220 = ptrtoint ptr %1218 to i64
  %1221 = sub i64 %1219, %1220
  %1222 = trunc i64 %1221 to i32
  %1223 = load ptr, ptr %18, align 8, !tbaa !5
  %1224 = getelementptr inbounds i32, ptr %1223, i64 2
  store i32 %1222, ptr %1224, align 4, !tbaa !9
  br label %1225

1225:                                             ; preds = %1216, %1195
  br label %1226

1226:                                             ; preds = %1225, %1192, %1189
  %1227 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1227, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1361

1228:                                             ; preds = %1186
  %1229 = load i32, ptr %28, align 4, !tbaa !9
  %1230 = icmp ne i32 %1229, 0
  br i1 %1230, label %1231, label %1294

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %24, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.dfa_match_data, ptr %1232, i32 0, i32 8
  %1234 = load i32, ptr %1233, align 4, !tbaa !37
  %1235 = icmp ne i32 %1234, 0
  br i1 %1235, label %1236, label %1255

1236:                                             ; preds = %1231
  %1237 = load ptr, ptr %29, align 8, !tbaa !5
  %1238 = load ptr, ptr %24, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.dfa_match_data, ptr %1238, i32 0, i32 2
  %1240 = load ptr, ptr %1239, align 8, !tbaa !33
  %1241 = icmp ult ptr %1237, %1240
  br i1 %1241, label %1242, label %1294

1242:                                             ; preds = %1236
  %1243 = load ptr, ptr %29, align 8, !tbaa !5
  %1244 = load ptr, ptr %24, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.dfa_match_data, ptr %1244, i32 0, i32 8
  %1246 = load i32, ptr %1245, align 4, !tbaa !37
  %1247 = load ptr, ptr %24, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.dfa_match_data, ptr %1247, i32 0, i32 2
  %1249 = load ptr, ptr %1248, align 8, !tbaa !33
  %1250 = load ptr, ptr %24, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.dfa_match_data, ptr %1250, i32 0, i32 9
  %1252 = load i32, ptr %25, align 4, !tbaa !9
  %1253 = call i32 @_pcre_is_newline(ptr noundef %1243, i32 noundef %1246, ptr noundef %1249, ptr noundef %1251, i32 noundef %1252)
  %1254 = icmp ne i32 %1253, 0
  br i1 %1254, label %1293, label %1294

1255:                                             ; preds = %1231
  %1256 = load ptr, ptr %29, align 8, !tbaa !5
  %1257 = load ptr, ptr %24, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.dfa_match_data, ptr %1257, i32 0, i32 2
  %1259 = load ptr, ptr %1258, align 8, !tbaa !33
  %1260 = load ptr, ptr %24, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.dfa_match_data, ptr %1260, i32 0, i32 9
  %1262 = load i32, ptr %1261, align 8, !tbaa !38
  %1263 = sext i32 %1262 to i64
  %1264 = sub i64 0, %1263
  %1265 = getelementptr inbounds i8, ptr %1259, i64 %1264
  %1266 = icmp ule ptr %1256, %1265
  br i1 %1266, label %1267, label %1294

1267:                                             ; preds = %1255
  %1268 = load ptr, ptr %29, align 8, !tbaa !5
  %1269 = load i8, ptr %1268, align 1, !tbaa !11
  %1270 = zext i8 %1269 to i32
  %1271 = load ptr, ptr %24, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.dfa_match_data, ptr %1271, i32 0, i32 10
  %1273 = getelementptr inbounds [4 x i8], ptr %1272, i64 0, i64 0
  %1274 = load i8, ptr %1273, align 4, !tbaa !11
  %1275 = zext i8 %1274 to i32
  %1276 = icmp eq i32 %1270, %1275
  br i1 %1276, label %1277, label %1294

1277:                                             ; preds = %1267
  %1278 = load ptr, ptr %24, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.dfa_match_data, ptr %1278, i32 0, i32 9
  %1280 = load i32, ptr %1279, align 8, !tbaa !38
  %1281 = icmp eq i32 %1280, 1
  br i1 %1281, label %1293, label %1282

1282:                                             ; preds = %1277
  %1283 = load ptr, ptr %29, align 8, !tbaa !5
  %1284 = getelementptr inbounds i8, ptr %1283, i64 1
  %1285 = load i8, ptr %1284, align 1, !tbaa !11
  %1286 = zext i8 %1285 to i32
  %1287 = load ptr, ptr %24, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.dfa_match_data, ptr %1287, i32 0, i32 10
  %1289 = getelementptr inbounds [4 x i8], ptr %1288, i64 0, i64 1
  %1290 = load i8, ptr %1289, align 1, !tbaa !11
  %1291 = zext i8 %1290 to i32
  %1292 = icmp eq i32 %1286, %1291
  br i1 %1292, label %1293, label %1294

1293:                                             ; preds = %1282, %1277, %1242
  store i32 3, ptr %41, align 4
  br label %1361

1294:                                             ; preds = %1282, %1267, %1255, %1242, %1236, %1228
  %1295 = load ptr, ptr %29, align 8, !tbaa !5
  %1296 = getelementptr inbounds i8, ptr %1295, i32 1
  store ptr %1296, ptr %29, align 8, !tbaa !5
  %1297 = load i32, ptr %25, align 4, !tbaa !9
  %1298 = icmp ne i32 %1297, 0
  br i1 %1298, label %1299, label %1316

1299:                                             ; preds = %1294
  br label %1300

1300:                                             ; preds = %1312, %1299
  %1301 = load ptr, ptr %29, align 8, !tbaa !5
  %1302 = load ptr, ptr %30, align 8, !tbaa !5
  %1303 = icmp ult ptr %1301, %1302
  br i1 %1303, label %1304, label %1310

1304:                                             ; preds = %1300
  %1305 = load ptr, ptr %29, align 8, !tbaa !5
  %1306 = load i8, ptr %1305, align 1, !tbaa !11
  %1307 = zext i8 %1306 to i32
  %1308 = and i32 %1307, 192
  %1309 = icmp eq i32 %1308, 128
  br label %1310

1310:                                             ; preds = %1304, %1300
  %1311 = phi i1 [ false, %1300 ], [ %1309, %1304 ]
  br i1 %1311, label %1312, label %1315

1312:                                             ; preds = %1310
  %1313 = load ptr, ptr %29, align 8, !tbaa !5
  %1314 = getelementptr inbounds i8, ptr %1313, i32 1
  store ptr %1314, ptr %29, align 8, !tbaa !5
  br label %1300, !llvm.loop !58

1315:                                             ; preds = %1310
  br label %1316

1316:                                             ; preds = %1315, %1294
  %1317 = load ptr, ptr %29, align 8, !tbaa !5
  %1318 = load ptr, ptr %30, align 8, !tbaa !5
  %1319 = icmp ugt ptr %1317, %1318
  br i1 %1319, label %1320, label %1321

1320:                                             ; preds = %1316
  store i32 3, ptr %41, align 4
  br label %1361

1321:                                             ; preds = %1316
  %1322 = load ptr, ptr %29, align 8, !tbaa !5
  %1323 = getelementptr inbounds i8, ptr %1322, i64 -1
  %1324 = load i8, ptr %1323, align 1, !tbaa !11
  %1325 = zext i8 %1324 to i32
  %1326 = icmp eq i32 %1325, 13
  br i1 %1326, label %1327, label %1360

1327:                                             ; preds = %1321
  %1328 = load ptr, ptr %29, align 8, !tbaa !5
  %1329 = load ptr, ptr %30, align 8, !tbaa !5
  %1330 = icmp ult ptr %1328, %1329
  br i1 %1330, label %1331, label %1360

1331:                                             ; preds = %1327
  %1332 = load ptr, ptr %29, align 8, !tbaa !5
  %1333 = load i8, ptr %1332, align 1, !tbaa !11
  %1334 = zext i8 %1333 to i32
  %1335 = icmp eq i32 %1334, 10
  br i1 %1335, label %1336, label %1360

1336:                                             ; preds = %1331
  %1337 = load ptr, ptr %22, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %1337, i32 0, i32 3
  %1339 = load i32, ptr %1338, align 4, !tbaa !15
  %1340 = and i32 %1339, 2048
  %1341 = icmp eq i32 %1340, 0
  br i1 %1341, label %1342, label %1360

1342:                                             ; preds = %1336
  %1343 = load ptr, ptr %24, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.dfa_match_data, ptr %1343, i32 0, i32 8
  %1345 = load i32, ptr %1344, align 4, !tbaa !37
  %1346 = icmp eq i32 %1345, 1
  br i1 %1346, label %1357, label %1347

1347:                                             ; preds = %1342
  %1348 = load ptr, ptr %24, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.dfa_match_data, ptr %1348, i32 0, i32 8
  %1350 = load i32, ptr %1349, align 4, !tbaa !37
  %1351 = icmp eq i32 %1350, 2
  br i1 %1351, label %1357, label %1352

1352:                                             ; preds = %1347
  %1353 = load ptr, ptr %24, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.dfa_match_data, ptr %1353, i32 0, i32 9
  %1355 = load i32, ptr %1354, align 8, !tbaa !38
  %1356 = icmp eq i32 %1355, 2
  br i1 %1356, label %1357, label %1360

1357:                                             ; preds = %1352, %1347, %1342
  %1358 = load ptr, ptr %29, align 8, !tbaa !5
  %1359 = getelementptr inbounds i8, ptr %1358, i32 1
  store ptr %1359, ptr %29, align 8, !tbaa !5
  br label %1360

1360:                                             ; preds = %1357, %1352, %1336, %1331, %1327, %1321
  store i32 0, ptr %41, align 4
  br label %1361

1361:                                             ; preds = %1360, %1320, %1293, %1226, %1164
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  %1362 = load i32, ptr %41, align 4
  switch i32 %1362, label %1365 [
    i32 0, label %1363
    i32 3, label %1364
  ]

1363:                                             ; preds = %1361
  br label %493

1364:                                             ; preds = %1361
  store i32 -1, ptr %11, align 4
  store i32 1, ptr %41, align 4
  br label %1365

1365:                                             ; preds = %1364, %1361, %396, %300, %191, %137, %113, %99, %92, %84, %80, %76, %72, %56
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 80, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  %1366 = load i32, ptr %11, align 4
  ret i32 %1366

1367:                                             ; preds = %1129, %1038
  unreachable
}

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

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

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

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: nounwind uwtable
declare hidden i32 @internal_dfa_exec(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #0

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

!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, !6, i64 48}
!17 = !{!18, !6, i64 32}
!18 = !{!"dfa_match_data", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !7, i64 60, !6, i64 64, !6, i64 72}
!19 = !{!18, !6, i64 64}
!20 = !{!21, !22, i64 0}
!21 = !{!"pcre_extra", !22, i64 0, !6, i64 8, !22, i64 16, !6, i64 24, !6, i64 32, !22, i64 40, !6, i64 48, !6, i64 56}
!22 = !{!"long", !7, i64 0}
!23 = !{!22, !22, i64 0}
!24 = !{!21, !6, i64 8}
!25 = !{!21, !6, i64 24}
!26 = !{!21, !6, i64 32}
!27 = !{!13, !10, i64 8}
!28 = !{!13, !14, i64 34}
!29 = !{!13, !14, i64 38}
!30 = !{!13, !14, i64 36}
!31 = !{!18, !6, i64 0}
!32 = !{!18, !6, i64 8}
!33 = !{!18, !6, i64 16}
!34 = !{!18, !10, i64 40}
!35 = !{!18, !10, i64 44}
!36 = !{!18, !10, i64 48}
!37 = !{!18, !10, i64 52}
!38 = !{!18, !10, i64 56}
!39 = !{!13, !14, i64 24}
!40 = !{!41, !10, i64 4}
!41 = !{!"pcre_study_data", !10, i64 0, !10, i64 4, !7, i64 8, !10, i64 40}
!42 = !{!13, !14, i64 26}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !44}
!48 = distinct !{!48, !44}
!49 = distinct !{!49, !44}
!50 = distinct !{!50, !44}
!51 = distinct !{!51, !44}
!52 = distinct !{!52, !44}
!53 = !{!41, !10, i64 40}
!54 = distinct !{!54, !44}
!55 = distinct !{!55, !44}
!56 = !{!18, !6, i64 24}
!57 = !{!18, !6, i64 72}
!58 = distinct !{!58, !44}


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

@_pcre_default_tables = external constant [0 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @pcre_dfa_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, ptr noundef %8, i32 noundef %9) local_unnamed_addr #0 {
  %11 = alloca %struct.dfa_match_data, align 8
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #3
  %13 = and i32 %5, -502506897
  %.not = icmp eq i32 %13, 0
  br i1 %.not, label %14, label %.critedge503

14:                                               ; preds = %10
  %15 = icmp eq ptr %0, null
  %16 = icmp eq ptr %2, null
  %or.cond = or i1 %15, %16
  %17 = icmp eq ptr %8, null
  %or.cond6 = or i1 %or.cond, %17
  br i1 %or.cond6, label %.critedge503, label %18

18:                                               ; preds = %14
  %19 = icmp eq ptr %6, null
  %20 = icmp sgt i32 %7, 0
  %or.cond8 = and i1 %19, %20
  br i1 %or.cond8, label %.critedge503, label %21

21:                                               ; preds = %18
  %22 = icmp slt i32 %7, 0
  br i1 %22, label %.critedge503, label %23

23:                                               ; preds = %21
  %24 = icmp slt i32 %9, 20
  br i1 %24, label %.critedge503, label %25

25:                                               ; preds = %23
  %26 = icmp slt i32 %3, 0
  br i1 %26, label %.critedge503, label %27

27:                                               ; preds = %25
  %or.cond501 = icmp ugt i32 %4, %3
  br i1 %or.cond501, label %.critedge503, label %28

28:                                               ; preds = %27
  %29 = load i32, ptr %0, align 8, !tbaa !5
  %.not451 = icmp eq i32 %29, 1346589253
  br i1 %.not451, label %33, label %30

30:                                               ; preds = %28
  %31 = icmp eq i32 %29, 1163019088
  %32 = select i1 %31, i32 -29, i32 -4
  br label %.critedge503

33:                                               ; preds = %28
  %34 = getelementptr inbounds i8, ptr %0, i64 12
  %35 = load i32, ptr %34, align 4, !tbaa !12
  %36 = and i32 %35, 1
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %.critedge503, label %38

38:                                               ; preds = %33
  %39 = and i32 %5, 131072
  %.not452 = icmp eq i32 %39, 0
  br i1 %.not452, label %50, label %40

40:                                               ; preds = %38
  %41 = load i32, ptr %8, align 4, !tbaa !13
  %.not453 = icmp ult i32 %41, 2
  br i1 %.not453, label %42, label %.critedge503

42:                                               ; preds = %40
  %43 = getelementptr inbounds i8, ptr %8, i64 4
  %44 = load i32, ptr %43, align 4, !tbaa !13
  %45 = icmp slt i32 %44, 1
  br i1 %45, label %.critedge503, label %46

46:                                               ; preds = %42
  %47 = add nsw i32 %9, -2
  %48 = udiv i32 %47, 3
  %49 = icmp ugt i32 %44, %48
  br i1 %49, label %.critedge503, label %50

50:                                               ; preds = %46, %38
  %51 = getelementptr inbounds i8, ptr %0, i64 48
  %52 = load ptr, ptr %51, align 8, !tbaa !14
  %53 = getelementptr inbounds i8, ptr %11, i64 32
  store ptr %52, ptr %53, align 8, !tbaa !15
  %54 = getelementptr inbounds i8, ptr %11, i64 64
  store ptr null, ptr %54, align 8, !tbaa !17
  %.not454 = icmp eq ptr %1, null
  br i1 %.not454, label %73, label %55

55:                                               ; preds = %50
  %56 = load i64, ptr %1, align 8, !tbaa !18
  %57 = and i64 %56, 1
  %.not455 = icmp eq i64 %57, 0
  br i1 %.not455, label %61, label %58

58:                                               ; preds = %55
  %59 = getelementptr inbounds i8, ptr %1, i64 8
  %60 = load ptr, ptr %59, align 8, !tbaa !21
  br label %61

61:                                               ; preds = %58, %55
  %.0398 = phi ptr [ %60, %58 ], [ null, %55 ]
  %62 = and i64 %56, 18
  %or.cond531 = icmp eq i64 %62, 0
  br i1 %or.cond531, label %63, label %.critedge503

63:                                               ; preds = %61
  %64 = and i64 %56, 4
  %.not458 = icmp eq i64 %64, 0
  br i1 %.not458, label %68, label %65

65:                                               ; preds = %63
  %66 = getelementptr inbounds i8, ptr %1, i64 24
  %67 = load ptr, ptr %66, align 8, !tbaa !22
  store ptr %67, ptr %54, align 8, !tbaa !17
  br label %68

68:                                               ; preds = %65, %63
  %69 = and i64 %56, 8
  %.not459 = icmp eq i64 %69, 0
  br i1 %.not459, label %73, label %70

70:                                               ; preds = %68
  %71 = getelementptr inbounds i8, ptr %1, i64 32
  %72 = load ptr, ptr %71, align 8, !tbaa !23
  store ptr %72, ptr %53, align 8, !tbaa !15
  br label %73

73:                                               ; preds = %70, %68, %50
  %74 = phi ptr [ %52, %50 ], [ %52, %68 ], [ %72, %70 ]
  %.1399 = phi ptr [ null, %50 ], [ %.0398, %68 ], [ %.0398, %70 ]
  %75 = zext nneg i32 %4 to i64
  %76 = getelementptr inbounds i8, ptr %2, i64 %75
  %77 = zext nneg i32 %3 to i64
  %78 = getelementptr inbounds i8, ptr %2, i64 %77
  %79 = getelementptr inbounds i8, ptr %76, i64 -1
  %80 = getelementptr inbounds i8, ptr %0, i64 8
  %81 = load i32, ptr %80, align 8, !tbaa !24
  %82 = and i32 %81, 2048
  %.not460 = icmp ne i32 %82, 0
  %.lobit = lshr exact i32 %82, 11
  %83 = and i32 %5, 131088
  %.not461 = icmp ne i32 %83, 0
  %84 = and i32 %81, 16
  %85 = icmp ne i32 %84, 0
  %86 = select i1 %.not461, i1 true, i1 %85
  %87 = getelementptr inbounds i8, ptr %0, i64 34
  %88 = load i16, ptr %87, align 2, !tbaa !25
  %89 = zext i16 %88 to i64
  %90 = getelementptr inbounds i8, ptr %0, i64 %89
  %91 = getelementptr inbounds i8, ptr %0, i64 38
  %92 = load i16, ptr %91, align 2, !tbaa !26
  %93 = zext i16 %92 to i64
  %94 = getelementptr inbounds i8, ptr %0, i64 36
  %95 = load i16, ptr %94, align 4, !tbaa !27
  %96 = zext i16 %95 to i64
  %97 = mul nuw nsw i64 %96, %93
  %98 = getelementptr inbounds i8, ptr %90, i64 %97
  store ptr %98, ptr %11, align 8, !tbaa !28
  %99 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %2, ptr %99, align 8, !tbaa !29
  %100 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %78, ptr %100, align 8, !tbaa !30
  %101 = getelementptr inbounds i8, ptr %11, i64 40
  store i32 %4, ptr %101, align 8, !tbaa !31
  %102 = getelementptr inbounds i8, ptr %11, i64 44
  store i32 %5, ptr %102, align 4, !tbaa !32
  %103 = getelementptr inbounds i8, ptr %11, i64 48
  store i32 %81, ptr %103, align 8, !tbaa !33
  %104 = and i32 %5, 25165824
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %110

106:                                              ; preds = %73
  %107 = and i32 %81, 25165824
  %.not462 = icmp eq i32 %107, 0
  br i1 %.not462, label %110, label %108

108:                                              ; preds = %106
  %109 = or disjoint i32 %107, %5
  store i32 %109, ptr %102, align 4, !tbaa !32
  br label %110

110:                                              ; preds = %106, %108, %73
  %111 = and i32 %5, 7340032
  %112 = icmp eq i32 %111, 0
  %spec.select584 = select i1 %112, i32 %81, i32 %5
  %113 = lshr i32 %spec.select584, 20
  %114 = and i32 %113, 7
  switch i32 %114, label %.critedge503 [
    i32 0, label %125
    i32 1, label %115
    i32 2, label %125
    i32 3, label %120
    i32 4, label %118
    i32 5, label %116
  ]

115:                                              ; preds = %110
  br label %125

116:                                              ; preds = %110
  %117 = getelementptr inbounds i8, ptr %11, i64 52
  store i32 2, ptr %117, align 4, !tbaa !34
  br label %129

118:                                              ; preds = %110
  %119 = getelementptr inbounds i8, ptr %11, i64 52
  store i32 1, ptr %119, align 4, !tbaa !34
  br label %129

120:                                              ; preds = %110
  %121 = getelementptr inbounds i8, ptr %11, i64 52
  store i32 0, ptr %121, align 4, !tbaa !34
  %122 = getelementptr inbounds i8, ptr %11, i64 56
  store i32 2, ptr %122, align 8, !tbaa !35
  %123 = getelementptr inbounds i8, ptr %11, i64 60
  store i8 13, ptr %123, align 4, !tbaa !36
  %124 = getelementptr inbounds i8, ptr %11, i64 61
  store i8 10, ptr %124, align 1, !tbaa !36
  br label %129

125:                                              ; preds = %115, %110, %110
  %.0416.ph.ph.ph = phi i8 [ 10, %110 ], [ 10, %110 ], [ 13, %115 ]
  %126 = getelementptr inbounds i8, ptr %11, i64 52
  store i32 0, ptr %126, align 4, !tbaa !34
  %127 = getelementptr inbounds i8, ptr %11, i64 56
  store i32 1, ptr %127, align 8, !tbaa !35
  %128 = getelementptr inbounds i8, ptr %11, i64 60
  store i8 %.0416.ph.ph.ph, ptr %128, align 4, !tbaa !36
  br label %129

129:                                              ; preds = %118, %125, %120, %116
  %130 = and i32 %5, 8192
  %131 = icmp eq i32 %130, 0
  %or.cond505 = and i1 %131, %.not460
  br i1 %or.cond505, label %132, label %152

132:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #3
  %133 = call i32 @_pcre_valid_utf(ptr noundef nonnull %2, i32 noundef %3, ptr noundef nonnull %12) #3
  %.not463 = icmp eq i32 %133, 0
  br i1 %.not463, label %145, label %134

134:                                              ; preds = %132
  %135 = icmp ugt i32 %7, 1
  br i1 %135, label %136, label %139

136:                                              ; preds = %134
  %137 = load i32, ptr %12, align 4, !tbaa !13
  store i32 %137, ptr %6, align 4, !tbaa !13
  %138 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %133, ptr %138, align 4, !tbaa !13
  br label %139

139:                                              ; preds = %136, %134
  %140 = icmp slt i32 %133, 6
  %141 = and i32 %5, 134217728
  %142 = icmp ne i32 %141, 0
  %143 = and i1 %142, %140
  %144 = select i1 %143, i32 -25, i32 -10
  br label %.thread556

145:                                              ; preds = %132
  %.not464 = icmp ne i32 %4, 0
  %146 = icmp ult i32 %4, %3
  %or.cond506 = and i1 %.not464, %146
  br i1 %or.cond506, label %147, label %151

147:                                              ; preds = %145
  %148 = load i8, ptr %76, align 1, !tbaa !36
  %149 = and i8 %148, -64
  %150 = icmp eq i8 %149, -128
  br i1 %150, label %.thread556, label %151

.thread556:                                       ; preds = %139, %147
  %.2.ph = phi i32 [ -11, %147 ], [ %144, %139 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  br label %.critedge503

151:                                              ; preds = %145, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  %.pre = load ptr, ptr %53, align 8, !tbaa !15
  br label %152

152:                                              ; preds = %151, %129
  %153 = phi ptr [ %.pre, %151 ], [ %74, %129 ]
  %154 = icmp eq ptr %153, null
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store ptr @_pcre_default_tables, ptr %53, align 8, !tbaa !15
  br label %156

156:                                              ; preds = %155, %152
  %157 = phi ptr [ @_pcre_default_tables, %155 ], [ %153, %152 ]
  %158 = load i32, ptr %34, align 4, !tbaa !12
  %159 = and i32 %158, 256
  %.not466 = icmp eq i32 %159, 0
  %160 = load i32, ptr %80, align 8, !tbaa !24
  %161 = and i32 %160, 262144
  %.not467 = icmp eq i32 %161, 0
  br i1 %86, label %181, label %162

162:                                              ; preds = %156
  %163 = and i32 %158, 16
  %.not468 = icmp eq i32 %163, 0
  br i1 %.not468, label %174, label %164

164:                                              ; preds = %162
  %165 = getelementptr inbounds i8, ptr %0, i64 24
  %166 = load i16, ptr %165, align 8, !tbaa !37
  %167 = trunc i16 %166 to i8
  %168 = and i32 %158, 32
  %.not470 = icmp eq i32 %168, 0
  br i1 %.not470, label %181, label %169

169:                                              ; preds = %164
  %170 = getelementptr inbounds i8, ptr %157, i64 256
  %.mask = and i16 %166, 255
  %171 = zext nneg i16 %.mask to i64
  %172 = getelementptr inbounds i8, ptr %170, i64 %171
  %173 = load i8, ptr %172, align 1, !tbaa !36
  br label %181

174:                                              ; preds = %162
  %175 = icmp ne ptr %.1399, null
  %or.cond10 = select i1 %.not466, i1 %175, i1 false
  br i1 %or.cond10, label %176, label %181

176:                                              ; preds = %174
  %177 = getelementptr inbounds i8, ptr %.1399, i64 4
  %178 = load i32, ptr %177, align 4, !tbaa !38
  %179 = and i32 %178, 1
  %.not469 = icmp eq i32 %179, 0
  %180 = getelementptr inbounds i8, ptr %.1399, i64 8
  %spec.select = select i1 %.not469, ptr null, ptr %180
  br label %181

181:                                              ; preds = %176, %169, %164, %174, %156
  %.0420 = phi i8 [ 0, %156 ], [ %167, %169 ], [ %167, %164 ], [ 0, %174 ], [ 0, %176 ]
  %.0419 = phi i8 [ 0, %156 ], [ %173, %169 ], [ %167, %164 ], [ 0, %174 ], [ 0, %176 ]
  %.not479 = phi i1 [ true, %156 ], [ false, %169 ], [ false, %164 ], [ true, %174 ], [ true, %176 ]
  %.0407 = phi ptr [ null, %156 ], [ null, %169 ], [ null, %164 ], [ null, %174 ], [ %spec.select, %176 ]
  %182 = and i32 %158, 64
  %.not471 = icmp ne i32 %182, 0
  br i1 %.not471, label %183, label %193

183:                                              ; preds = %181
  %184 = getelementptr inbounds i8, ptr %0, i64 26
  %185 = load i16, ptr %184, align 2, !tbaa !40
  %186 = trunc i16 %185 to i8
  %187 = and i32 %158, 128
  %.not472 = icmp eq i32 %187, 0
  br i1 %.not472, label %193, label %188

188:                                              ; preds = %183
  %189 = getelementptr inbounds i8, ptr %157, i64 256
  %.mask473 = and i16 %185, 255
  %190 = zext nneg i16 %.mask473 to i64
  %191 = getelementptr inbounds i8, ptr %189, i64 %190
  %192 = load i8, ptr %191, align 1, !tbaa !36
  br label %193

193:                                              ; preds = %183, %188, %181
  %.0418 = phi i8 [ %186, %188 ], [ %186, %183 ], [ 0, %181 ]
  %.0417 = phi i8 [ %192, %188 ], [ %186, %183 ], [ 0, %181 ]
  %194 = getelementptr inbounds i8, ptr %11, i64 56
  %195 = getelementptr inbounds i8, ptr %11, i64 52
  %196 = getelementptr inbounds i8, ptr %11, i64 60
  %197 = getelementptr inbounds i8, ptr %11, i64 61
  %.not488 = icmp eq i8 %.0420, %.0419
  %.not480 = icmp eq ptr %.0407, null
  %198 = and i32 %5, 134250496
  %.not492 = icmp eq ptr %.1399, null
  %199 = getelementptr inbounds i8, ptr %.1399, i64 4
  %200 = ptrtoint ptr %78 to i64
  %201 = getelementptr inbounds i8, ptr %.1399, i64 40
  %not..not479 = xor i1 %.not479, true
  %202 = zext i1 %not..not479 to i64
  %.not496 = icmp eq i8 %.0418, %.0417
  %203 = getelementptr inbounds i8, ptr %11, i64 24
  %204 = getelementptr inbounds i8, ptr %11, i64 72
  br label %205

205:                                              ; preds = %.backedge, %193
  %.0400 = phi ptr [ %79, %193 ], [ %.5405, %.backedge ]
  %.0381 = phi ptr [ %76, %193 ], [ %.0381.be, %.backedge ]
  %.0381663 = ptrtoint ptr %.0381 to i64
  br i1 %.not452, label %206, label %.thread567

206:                                              ; preds = %205
  br i1 %.not467, label %.critedge, label %207

207:                                              ; preds = %206
  %208 = load ptr, ptr %100, align 8, !tbaa !30
  %209 = icmp ult ptr %.0381, %208
  br i1 %.not460, label %.preheader600, label %.preheader601

.preheader601:                                    ; preds = %207
  br i1 %209, label %.lr.ph, label %.critedge

.preheader600:                                    ; preds = %207
  br i1 %209, label %.lr.ph612, label %.critedge

.lr.ph612:                                        ; preds = %.preheader600, %.critedge12
  %210 = phi ptr [ %235, %.critedge12 ], [ %208, %.preheader600 ]
  %.0394611 = phi ptr [ %.1395, %.critedge12 ], [ %.0381, %.preheader600 ]
  %211 = load i32, ptr %195, align 4, !tbaa !34
  %.not476 = icmp eq i32 %211, 0
  br i1 %.not476, label %214, label %212

212:                                              ; preds = %.lr.ph612
  %213 = call i32 @_pcre_is_newline(ptr noundef %.0394611, i32 noundef %211, ptr noundef nonnull %210, ptr noundef nonnull %194, i32 noundef %.lobit) #3
  %.not585 = icmp eq i32 %213, 0
  br i1 %.not585, label %.critedge508.preheader, label %.critedge

214:                                              ; preds = %.lr.ph612
  %215 = load i32, ptr %194, align 8, !tbaa !35
  %216 = sext i32 %215 to i64
  %217 = sub nsw i64 0, %216
  %218 = getelementptr inbounds i8, ptr %210, i64 %217
  %.not477 = icmp ugt ptr %.0394611, %218
  br i1 %.not477, label %.critedge508.preheader, label %219

219:                                              ; preds = %214
  %220 = load i8, ptr %.0394611, align 1, !tbaa !36
  %221 = load i8, ptr %196, align 4, !tbaa !36
  %222 = icmp eq i8 %220, %221
  br i1 %222, label %223, label %.critedge508.preheader

223:                                              ; preds = %219
  %224 = icmp eq i32 %215, 1
  br i1 %224, label %.critedge, label %225

225:                                              ; preds = %223
  %226 = getelementptr inbounds i8, ptr %.0394611, i64 1
  %227 = load i8, ptr %226, align 1, !tbaa !36
  %228 = load i8, ptr %197, align 1, !tbaa !36
  %229 = icmp eq i8 %227, %228
  br i1 %229, label %.critedge, label %.critedge508.preheader

.critedge508.preheader:                           ; preds = %212, %219, %214, %225
  br label %.critedge508

.critedge508:                                     ; preds = %.critedge508.preheader, %231
  %.0394.pn = phi ptr [ %.1395, %231 ], [ %.0394611, %.critedge508.preheader ]
  %.1395 = getelementptr inbounds i8, ptr %.0394.pn, i64 1
  %230 = icmp ult ptr %.1395, %78
  br i1 %230, label %231, label %.critedge12

231:                                              ; preds = %.critedge508
  %232 = load i8, ptr %.1395, align 1, !tbaa !36
  %233 = and i8 %232, -64
  %234 = icmp eq i8 %233, -128
  br i1 %234, label %.critedge508, label %.critedge12, !llvm.loop !41

.critedge12:                                      ; preds = %.critedge508, %231
  %235 = load ptr, ptr %100, align 8, !tbaa !30
  %236 = icmp ult ptr %.1395, %235
  br i1 %236, label %.lr.ph612, label %.critedge, !llvm.loop !43

.lr.ph:                                           ; preds = %.preheader601, %.critedge511
  %237 = phi ptr [ %257, %.critedge511 ], [ %208, %.preheader601 ]
  %.2396604 = phi ptr [ %258, %.critedge511 ], [ %.0381, %.preheader601 ]
  %238 = load i32, ptr %195, align 4, !tbaa !34
  %.not474 = icmp eq i32 %238, 0
  br i1 %.not474, label %241, label %239

239:                                              ; preds = %.lr.ph
  %240 = call i32 @_pcre_is_newline(ptr noundef %.2396604, i32 noundef %238, ptr noundef nonnull %237, ptr noundef nonnull %194, i32 noundef %.lobit) #3
  %.not586 = icmp eq i32 %240, 0
  br i1 %.not586, label %..critedge511_crit_edge, label %.critedge

..critedge511_crit_edge:                          ; preds = %239
  %.pre666 = load ptr, ptr %100, align 8, !tbaa !30
  br label %.critedge511

241:                                              ; preds = %.lr.ph
  %242 = load i32, ptr %194, align 8, !tbaa !35
  %243 = sext i32 %242 to i64
  %244 = sub nsw i64 0, %243
  %245 = getelementptr inbounds i8, ptr %237, i64 %244
  %.not475 = icmp ugt ptr %.2396604, %245
  br i1 %.not475, label %.critedge511, label %246

246:                                              ; preds = %241
  %247 = load i8, ptr %.2396604, align 1, !tbaa !36
  %248 = load i8, ptr %196, align 4, !tbaa !36
  %249 = icmp eq i8 %247, %248
  br i1 %249, label %250, label %.critedge511

250:                                              ; preds = %246
  %251 = icmp eq i32 %242, 1
  br i1 %251, label %.critedge, label %252

252:                                              ; preds = %250
  %253 = getelementptr inbounds i8, ptr %.2396604, i64 1
  %254 = load i8, ptr %253, align 1, !tbaa !36
  %255 = load i8, ptr %197, align 1, !tbaa !36
  %256 = icmp eq i8 %254, %255
  br i1 %256, label %.critedge, label %.critedge511

.critedge511:                                     ; preds = %..critedge511_crit_edge, %246, %241, %252
  %257 = phi ptr [ %.pre666, %..critedge511_crit_edge ], [ %237, %246 ], [ %237, %241 ], [ %237, %252 ]
  %258 = getelementptr inbounds i8, ptr %.2396604, i64 1
  %259 = icmp ult ptr %258, %257
  br i1 %259, label %.lr.ph, label %.critedge, !llvm.loop !44

.critedge:                                        ; preds = %250, %252, %.critedge511, %239, %223, %225, %.critedge12, %212, %.preheader601, %.preheader600, %206
  %.1391 = phi ptr [ %78, %206 ], [ %.0381, %.preheader600 ], [ %.0381, %.preheader601 ], [ %.0394611, %223 ], [ %.0394611, %225 ], [ %.1395, %.critedge12 ], [ %.0394611, %212 ], [ %.2396604, %250 ], [ %.2396604, %252 ], [ %258, %.critedge511 ], [ %.2396604, %239 ]
  %.1391662 = ptrtoint ptr %.1391 to i64
  %260 = load i32, ptr %80, align 8, !tbaa !24
  %261 = or i32 %260, %5
  %262 = and i32 %261, 67108864
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %.critedge18

264:                                              ; preds = %.critedge
  br i1 %.not479, label %275, label %265

265:                                              ; preds = %264
  %266 = icmp ult ptr %.0381, %.1391
  br i1 %.not488, label %.preheader596, label %.preheader598

.preheader598:                                    ; preds = %265
  br i1 %266, label %.lr.ph621.preheader, label %.critedge18

.lr.ph621.preheader:                              ; preds = %.preheader598
  %267 = sub i64 %.1391662, %.0381663
  %scevgep = getelementptr i8, ptr %.0381, i64 %267
  br label %.lr.ph621

.preheader596:                                    ; preds = %265
  br i1 %266, label %.lr.ph626.preheader, label %.critedge18

.lr.ph626.preheader:                              ; preds = %.preheader596
  %268 = sub i64 %.1391662, %.0381663
  %scevgep664 = getelementptr i8, ptr %.0381, i64 %268
  br label %.lr.ph626

.lr.ph621:                                        ; preds = %.lr.ph621.preheader, %270
  %.1382620 = phi ptr [ %271, %270 ], [ %.0381, %.lr.ph621.preheader ]
  %269 = load i8, ptr %.1382620, align 1, !tbaa !36
  %.not490 = icmp eq i8 %269, %.0420
  %.not491 = icmp eq i8 %269, %.0419
  %or.cond514 = select i1 %.not490, i1 true, i1 %.not491
  br i1 %or.cond514, label %.critedge18, label %270

270:                                              ; preds = %.lr.ph621
  %271 = getelementptr inbounds i8, ptr %.1382620, i64 1
  %exitcond.not = icmp eq ptr %271, %scevgep
  br i1 %exitcond.not, label %.critedge18, label %.lr.ph621, !llvm.loop !45

.lr.ph626:                                        ; preds = %.lr.ph626.preheader, %273
  %.2383625 = phi ptr [ %274, %273 ], [ %.0381, %.lr.ph626.preheader ]
  %272 = load i8, ptr %.2383625, align 1, !tbaa !36
  %.not489 = icmp eq i8 %272, %.0420
  br i1 %.not489, label %.critedge18, label %273

273:                                              ; preds = %.lr.ph626
  %274 = getelementptr inbounds i8, ptr %.2383625, i64 1
  %exitcond665.not = icmp eq ptr %274, %scevgep664
  br i1 %exitcond665.not, label %.critedge18, label %.lr.ph626, !llvm.loop !46

275:                                              ; preds = %264
  br i1 %.not466, label %344, label %276

276:                                              ; preds = %275
  %277 = load ptr, ptr %99, align 8, !tbaa !29
  %278 = getelementptr inbounds i8, ptr %277, i64 %75
  %279 = icmp ugt ptr %.0381, %278
  br i1 %279, label %280, label %.critedge18

280:                                              ; preds = %276
  %281 = icmp ult ptr %.0381, %.1391
  br i1 %.not460, label %.preheader593, label %.preheader594

.preheader594:                                    ; preds = %280
  br i1 %281, label %.lr.ph631, label %.critedge20

.preheader593:                                    ; preds = %280
  br i1 %281, label %.lr.ph640, label %.critedge20

.lr.ph640.loopexit:                               ; preds = %306
  br label %.lr.ph640, !llvm.loop !47

.lr.ph640:                                        ; preds = %.preheader593, %.lr.ph640.loopexit
  %.3384639 = phi ptr [ %.4385, %.lr.ph640.loopexit ], [ %.0381, %.preheader593 ]
  %282 = load i32, ptr %195, align 4, !tbaa !34
  %.not485 = icmp eq i32 %282, 0
  %283 = load ptr, ptr %99, align 8, !tbaa !29
  br i1 %.not485, label %288, label %284

284:                                              ; preds = %.lr.ph640
  %285 = icmp ugt ptr %.3384639, %283
  br i1 %285, label %286, label %.critedge516.preheader

286:                                              ; preds = %284
  %287 = call i32 @_pcre_was_newline(ptr noundef nonnull %.3384639, i32 noundef %282, ptr noundef %283, ptr noundef nonnull %194, i32 noundef %.lobit) #3
  %.not587 = icmp eq i32 %287, 0
  br i1 %.not587, label %.critedge516.preheader, label %.critedge20

288:                                              ; preds = %.lr.ph640
  %289 = load i32, ptr %194, align 8, !tbaa !35
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i8, ptr %283, i64 %290
  %.not486 = icmp ult ptr %.3384639, %291
  br i1 %.not486, label %.critedge516.preheader, label %292

292:                                              ; preds = %288
  %293 = sub nsw i64 0, %290
  %294 = getelementptr inbounds i8, ptr %.3384639, i64 %293
  %295 = load i8, ptr %294, align 1, !tbaa !36
  %296 = load i8, ptr %196, align 4, !tbaa !36
  %297 = icmp eq i8 %295, %296
  br i1 %297, label %298, label %.critedge516.preheader

298:                                              ; preds = %292
  %299 = icmp eq i32 %289, 1
  br i1 %299, label %.critedge20, label %300

300:                                              ; preds = %298
  %301 = getelementptr inbounds i8, ptr %294, i64 1
  %302 = load i8, ptr %301, align 1, !tbaa !36
  %303 = load i8, ptr %197, align 1, !tbaa !36
  %304 = icmp eq i8 %302, %303
  br i1 %304, label %.critedge20, label %.critedge516.preheader

.critedge516.preheader:                           ; preds = %286, %284, %292, %288, %300
  br label %.critedge516

.critedge516:                                     ; preds = %.critedge516.preheader, %306
  %.3384.pn = phi ptr [ %.4385, %306 ], [ %.3384639, %.critedge516.preheader ]
  %.4385 = getelementptr inbounds i8, ptr %.3384.pn, i64 1
  %305 = icmp ult ptr %.4385, %.1391
  br i1 %305, label %306, label %.critedge20

306:                                              ; preds = %.critedge516
  %307 = load i8, ptr %.4385, align 1, !tbaa !36
  %308 = and i8 %307, -64
  %309 = icmp eq i8 %308, -128
  br i1 %309, label %.critedge516, label %.lr.ph640.loopexit, !llvm.loop !47

.lr.ph631:                                        ; preds = %.preheader594, %.critedge519
  %.5386630 = phi ptr [ %333, %.critedge519 ], [ %.0381, %.preheader594 ]
  %310 = load i32, ptr %195, align 4, !tbaa !34
  %.not482 = icmp eq i32 %310, 0
  %311 = load ptr, ptr %99, align 8, !tbaa !29
  br i1 %.not482, label %316, label %312

312:                                              ; preds = %.lr.ph631
  %313 = icmp ugt ptr %.5386630, %311
  br i1 %313, label %314, label %.critedge519

314:                                              ; preds = %312
  %315 = call i32 @_pcre_was_newline(ptr noundef nonnull %.5386630, i32 noundef %310, ptr noundef %311, ptr noundef nonnull %194, i32 noundef %.lobit) #3
  %.not588 = icmp eq i32 %315, 0
  br i1 %.not588, label %.critedge519, label %.critedge20

316:                                              ; preds = %.lr.ph631
  %317 = load i32, ptr %194, align 8, !tbaa !35
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i8, ptr %311, i64 %318
  %.not483 = icmp ult ptr %.5386630, %319
  br i1 %.not483, label %.critedge519, label %320

320:                                              ; preds = %316
  %321 = sub nsw i64 0, %318
  %322 = getelementptr inbounds i8, ptr %.5386630, i64 %321
  %323 = load i8, ptr %322, align 1, !tbaa !36
  %324 = load i8, ptr %196, align 4, !tbaa !36
  %325 = icmp eq i8 %323, %324
  br i1 %325, label %326, label %.critedge519

326:                                              ; preds = %320
  %327 = icmp eq i32 %317, 1
  br i1 %327, label %.critedge20, label %328

328:                                              ; preds = %326
  %329 = getelementptr inbounds i8, ptr %322, i64 1
  %330 = load i8, ptr %329, align 1, !tbaa !36
  %331 = load i8, ptr %197, align 1, !tbaa !36
  %332 = icmp eq i8 %330, %331
  br i1 %332, label %.critedge20, label %.critedge519

.critedge519:                                     ; preds = %314, %312, %320, %316, %328
  %333 = getelementptr inbounds i8, ptr %.5386630, i64 1
  %334 = icmp ult ptr %333, %.1391
  br i1 %334, label %.lr.ph631, label %.critedge20, !llvm.loop !48

.critedge20:                                      ; preds = %.critedge519, %328, %326, %314, %300, %298, %286, %.critedge516, %.preheader594, %.preheader593
  %.6387 = phi ptr [ %.0381, %.preheader593 ], [ %.0381, %.preheader594 ], [ %.4385, %.critedge516 ], [ %.3384639, %286 ], [ %.3384639, %298 ], [ %.3384639, %300 ], [ %333, %.critedge519 ], [ %.5386630, %328 ], [ %.5386630, %326 ], [ %.5386630, %314 ]
  %335 = getelementptr inbounds i8, ptr %.6387, i64 -1
  %336 = load i8, ptr %335, align 1, !tbaa !36
  %337 = icmp eq i8 %336, 13
  br i1 %337, label %338, label %.critedge18

338:                                              ; preds = %.critedge20
  %339 = load i32, ptr %195, align 4, !tbaa !34
  %.off = add i32 %339, -1
  %switch = icmp ult i32 %.off, 2
  %340 = icmp ult ptr %.6387, %.1391
  %or.cond532 = select i1 %switch, i1 %340, i1 false
  br i1 %or.cond532, label %341, label %.critedge18

341:                                              ; preds = %338
  %342 = load i8, ptr %.6387, align 1, !tbaa !36
  %343 = icmp eq i8 %342, 10
  %spec.select522.idx = zext i1 %343 to i64
  %spec.select522 = getelementptr inbounds i8, ptr %.6387, i64 %spec.select522.idx
  br label %.critedge18

344:                                              ; preds = %275
  br i1 %.not480, label %.critedge18, label %.preheader592

.preheader592:                                    ; preds = %344, %346
  %.7388 = phi ptr [ %357, %346 ], [ %.0381, %344 ]
  %345 = icmp ult ptr %.7388, %.1391
  br i1 %345, label %346, label %.critedge18

346:                                              ; preds = %.preheader592
  %347 = load i8, ptr %.7388, align 1, !tbaa !36
  %348 = zext i8 %347 to i32
  %349 = lshr i32 %348, 3
  %350 = zext nneg i32 %349 to i64
  %351 = getelementptr inbounds i8, ptr %.0407, i64 %350
  %352 = load i8, ptr %351, align 1, !tbaa !36
  %353 = zext i8 %352 to i32
  %354 = and i32 %348, 7
  %355 = shl nuw nsw i32 1, %354
  %356 = and i32 %355, %353
  %.not481 = icmp eq i32 %356, 0
  %357 = getelementptr inbounds i8, ptr %.7388, i64 1
  br i1 %.not481, label %.preheader592, label %.critedge18

.critedge18:                                      ; preds = %.lr.ph621, %270, %273, %.lr.ph626, %346, %.preheader592, %.preheader598, %.preheader596, %341, %338, %344, %276, %.critedge20, %.critedge
  %.9 = phi ptr [ %.6387, %.critedge20 ], [ %.0381, %276 ], [ %.0381, %344 ], [ %.0381, %.critedge ], [ %.6387, %338 ], [ %spec.select522, %341 ], [ %.0381, %.preheader596 ], [ %.0381, %.preheader598 ], [ %.7388, %.preheader592 ], [ %.7388, %346 ], [ %scevgep664, %273 ], [ %.2383625, %.lr.ph626 ], [ %.1382620, %.lr.ph621 ], [ %scevgep, %270 ]
  %358 = load i32, ptr %80, align 8, !tbaa !24
  %359 = or i32 %358, %5
  %360 = and i32 %359, 67108864
  %361 = or disjoint i32 %360, %198
  %or.cond524 = icmp eq i32 %361, 0
  br i1 %or.cond524, label %362, label %.thread567

362:                                              ; preds = %.critedge18
  br i1 %.not492, label %372, label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %199, align 4, !tbaa !38
  %365 = and i32 %364, 2
  %.not493 = icmp eq i32 %365, 0
  br i1 %.not493, label %372, label %366

366:                                              ; preds = %363
  %367 = ptrtoint ptr %.9 to i64
  %368 = sub i64 %200, %367
  %369 = trunc i64 %368 to i32
  %370 = load i32, ptr %201, align 4, !tbaa !49
  %371 = icmp ugt i32 %370, %369
  br i1 %371, label %.critedge503, label %372

372:                                              ; preds = %366, %363, %362
  %373 = ptrtoint ptr %.9 to i64
  %374 = sub i64 %200, %373
  %375 = icmp slt i64 %374, 1000
  %or.cond528 = select i1 %.not471, i1 %375, i1 false
  br i1 %or.cond528, label %376, label %.thread567

376:                                              ; preds = %372
  %377 = getelementptr inbounds i8, ptr %.9, i64 %202
  %378 = icmp ugt ptr %377, %.0400
  br i1 %378, label %379, label %.thread567

379:                                              ; preds = %376
  br i1 %.not496, label %.preheader589, label %.preheader590

.preheader590:                                    ; preds = %379, %381
  %.0377 = phi ptr [ %382, %381 ], [ %377, %379 ]
  %380 = icmp ult ptr %.0377, %78
  br i1 %380, label %381, label %.loopexit

381:                                              ; preds = %.preheader590
  %382 = getelementptr inbounds i8, ptr %.0377, i64 1
  %383 = load i8, ptr %.0377, align 1, !tbaa !36
  %384 = icmp eq i8 %383, %.0418
  %385 = icmp eq i8 %383, %.0417
  %or.cond529 = select i1 %384, i1 true, i1 %385
  br i1 %or.cond529, label %.loopexit, label %.preheader590

.preheader589:                                    ; preds = %379, %387
  %.2379 = phi ptr [ %388, %387 ], [ %377, %379 ]
  %386 = icmp ult ptr %.2379, %78
  br i1 %386, label %387, label %.loopexit

387:                                              ; preds = %.preheader589
  %388 = getelementptr inbounds i8, ptr %.2379, i64 1
  %389 = load i8, ptr %.2379, align 1, !tbaa !36
  %390 = icmp eq i8 %389, %.0418
  br i1 %390, label %.loopexit, label %.preheader589, !llvm.loop !50

.loopexit:                                        ; preds = %381, %.preheader590, %387, %.preheader589
  %.3380 = phi ptr [ %.2379, %.preheader589 ], [ %.2379, %387 ], [ %.0377, %.preheader590 ], [ %.0377, %381 ]
  %.not497 = icmp ult ptr %.3380, %78
  br i1 %.not497, label %.thread567, label %.critedge503

.thread567:                                       ; preds = %.loopexit, %376, %.critedge18, %372, %205
  %.5405 = phi ptr [ %.0400, %205 ], [ %.0400, %376 ], [ %.0400, %.critedge18 ], [ %.0400, %372 ], [ %.3380, %.loopexit ]
  %.10 = phi ptr [ %.0381, %205 ], [ %.9, %376 ], [ %.9, %.critedge18 ], [ %.9, %372 ], [ %.9, %.loopexit ]
  store ptr %.10, ptr %203, align 8, !tbaa !51
  store ptr null, ptr %204, align 8, !tbaa !52
  %391 = load ptr, ptr %11, align 8, !tbaa !28
  %392 = call i32 @internal_dfa_exec(ptr noundef nonnull %11, ptr noundef %391, ptr noundef %.10, i32 noundef %4, ptr noundef %6, i32 noundef %7, ptr noundef %8, i32 noundef %9, i32 noundef 0)
  %393 = icmp ne i32 %392, -1
  %or.cond26 = select i1 %393, i1 true, i1 %86
  br i1 %or.cond26, label %394, label %410

394:                                              ; preds = %.thread567
  %395 = icmp eq i32 %392, -12
  %396 = icmp sgt i32 %7, 1
  %or.cond28 = and i1 %396, %395
  br i1 %or.cond28, label %397, label %.critedge503

397:                                              ; preds = %394
  %398 = load ptr, ptr %203, align 8, !tbaa !51
  %399 = ptrtoint ptr %398 to i64
  %400 = ptrtoint ptr %2 to i64
  %401 = sub i64 %399, %400
  %402 = trunc i64 %401 to i32
  store i32 %402, ptr %6, align 4, !tbaa !13
  %403 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %3, ptr %403, align 4, !tbaa !13
  %404 = icmp ugt i32 %7, 2
  br i1 %404, label %405, label %.critedge503

405:                                              ; preds = %397
  %406 = ptrtoint ptr %.10 to i64
  %407 = sub i64 %406, %400
  %408 = trunc i64 %407 to i32
  %409 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %408, ptr %409, align 4, !tbaa !13
  br label %.critedge503

410:                                              ; preds = %.thread567
  br i1 %.not467, label %434, label %411

411:                                              ; preds = %410
  %412 = load i32, ptr %195, align 4, !tbaa !34
  %.not498 = icmp eq i32 %412, 0
  %413 = load ptr, ptr %100, align 8, !tbaa !30
  br i1 %.not498, label %418, label %414

414:                                              ; preds = %411
  %415 = icmp ult ptr %.10, %413
  br i1 %415, label %416, label %434

416:                                              ; preds = %414
  %417 = call i32 @_pcre_is_newline(ptr noundef %.10, i32 noundef %412, ptr noundef nonnull %413, ptr noundef nonnull %194, i32 noundef %.lobit) #3
  %.not500 = icmp eq i32 %417, 0
  br i1 %.not500, label %434, label %.critedge503

418:                                              ; preds = %411
  %419 = load i32, ptr %194, align 8, !tbaa !35
  %420 = sext i32 %419 to i64
  %421 = sub nsw i64 0, %420
  %422 = getelementptr inbounds i8, ptr %413, i64 %421
  %.not499 = icmp ugt ptr %.10, %422
  br i1 %.not499, label %434, label %423

423:                                              ; preds = %418
  %424 = load i8, ptr %.10, align 1, !tbaa !36
  %425 = load i8, ptr %196, align 4, !tbaa !36
  %426 = icmp eq i8 %424, %425
  br i1 %426, label %427, label %434

427:                                              ; preds = %423
  %428 = icmp eq i32 %419, 1
  br i1 %428, label %.critedge503, label %429

429:                                              ; preds = %427
  %430 = getelementptr inbounds i8, ptr %.10, i64 1
  %431 = load i8, ptr %430, align 1, !tbaa !36
  %432 = load i8, ptr %197, align 1, !tbaa !36
  %433 = icmp eq i8 %431, %432
  br i1 %433, label %.critedge503, label %434

434:                                              ; preds = %429, %423, %418, %416, %414, %410
  %435 = getelementptr inbounds i8, ptr %.10, i64 1
  %436 = icmp ult ptr %435, %78
  %or.cond653 = select i1 %.not460, i1 %436, i1 false
  br i1 %or.cond653, label %.lr.ph649, label %.critedge30

.lr.ph649:                                        ; preds = %434, %440
  %.11648 = phi ptr [ %441, %440 ], [ %435, %434 ]
  %437 = load i8, ptr %.11648, align 1, !tbaa !36
  %438 = and i8 %437, -64
  %439 = icmp eq i8 %438, -128
  br i1 %439, label %440, label %.critedge30

440:                                              ; preds = %.lr.ph649
  %441 = getelementptr inbounds i8, ptr %.11648, i64 1
  %442 = icmp ult ptr %441, %78
  br i1 %442, label %.lr.ph649, label %.critedge30, !llvm.loop !53

.critedge30:                                      ; preds = %440, %.lr.ph649, %434
  %.12 = phi ptr [ %435, %434 ], [ %441, %440 ], [ %.11648, %.lr.ph649 ]
  %443 = icmp ugt ptr %.12, %78
  br i1 %443, label %.critedge503, label %444

444:                                              ; preds = %.critedge30
  %445 = getelementptr inbounds i8, ptr %.12, i64 -1
  %446 = load i8, ptr %445, align 1, !tbaa !36
  %447 = icmp eq i8 %446, 13
  %448 = icmp ult ptr %.12, %78
  %or.cond530 = select i1 %447, i1 %448, i1 false
  br i1 %or.cond530, label %449, label %.backedge

449:                                              ; preds = %444
  %450 = load i8, ptr %.12, align 1, !tbaa !36
  %451 = icmp eq i8 %450, 10
  br i1 %451, label %452, label %.backedge

452:                                              ; preds = %449
  %453 = load i32, ptr %34, align 4, !tbaa !12
  %454 = and i32 %453, 2048
  %455 = icmp eq i32 %454, 0
  br i1 %455, label %456, label %.backedge

456:                                              ; preds = %452
  %457 = load i32, ptr %195, align 4, !tbaa !34
  %.off534 = add i32 %457, -1
  %switch535 = icmp ult i32 %.off534, 2
  %458 = load i32, ptr %194, align 8
  %459 = icmp eq i32 %458, 2
  %or.cond538 = select i1 %switch535, i1 true, i1 %459
  %spec.select539.idx = zext i1 %or.cond538 to i64
  %spec.select539 = getelementptr inbounds i8, ptr %.12, i64 %spec.select539.idx
  br label %.backedge

.backedge:                                        ; preds = %456, %444, %449, %452
  %.0381.be = phi ptr [ %spec.select539, %456 ], [ %.12, %444 ], [ %.12, %449 ], [ %.12, %452 ]
  br label %205

.critedge503:                                     ; preds = %366, %.loopexit, %.critedge30, %416, %427, %429, %394, %405, %397, %.thread556, %61, %110, %40, %42, %46, %33, %27, %25, %23, %21, %14, %18, %10, %30
  %.8 = phi i32 [ %32, %30 ], [ -3, %10 ], [ -2, %18 ], [ -2, %14 ], [ -15, %21 ], [ -19, %23 ], [ -32, %25 ], [ -24, %27 ], [ -28, %33 ], [ -30, %46 ], [ -30, %42 ], [ -30, %40 ], [ -23, %110 ], [ -18, %61 ], [ %.2.ph, %.thread556 ], [ %392, %394 ], [ -12, %405 ], [ -12, %397 ], [ -1, %429 ], [ -1, %427 ], [ -1, %416 ], [ -1, %.critedge30 ], [ -1, %.loopexit ], [ -1, %366 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #3
  ret i32 %.8
}

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

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

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

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: nounwind uwtable
declare hidden i32 @internal_dfa_exec(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

!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 = !{!7, !7, i64 0}
!14 = !{!6, !11, i64 48}
!15 = !{!16, !11, i64 32}
!16 = !{!"dfa_match_data", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !8, i64 60, !11, i64 64, !11, i64 72}
!17 = !{!16, !11, i64 64}
!18 = !{!19, !20, i64 0}
!19 = !{!"pcre_extra", !20, i64 0, !11, i64 8, !20, i64 16, !11, i64 24, !11, i64 32, !20, i64 40, !11, i64 48, !11, i64 56}
!20 = !{!"long", !8, i64 0}
!21 = !{!19, !11, i64 8}
!22 = !{!19, !11, i64 24}
!23 = !{!19, !11, i64 32}
!24 = !{!6, !7, i64 8}
!25 = !{!6, !10, i64 34}
!26 = !{!6, !10, i64 38}
!27 = !{!6, !10, i64 36}
!28 = !{!16, !11, i64 0}
!29 = !{!16, !11, i64 8}
!30 = !{!16, !11, i64 16}
!31 = !{!16, !7, i64 40}
!32 = !{!16, !7, i64 44}
!33 = !{!16, !7, i64 48}
!34 = !{!16, !7, i64 52}
!35 = !{!16, !7, i64 56}
!36 = !{!8, !8, i64 0}
!37 = !{!6, !10, i64 24}
!38 = !{!39, !7, i64 4}
!39 = !{!"pcre_study_data", !7, i64 0, !7, i64 4, !8, i64 8, !7, i64 40}
!40 = !{!6, !10, i64 26}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = distinct !{!44, !42}
!45 = distinct !{!45, !42}
!46 = distinct !{!46, !42}
!47 = distinct !{!47, !42}
!48 = distinct !{!48, !42}
!49 = !{!39, !7, i64 40}
!50 = distinct !{!50, !42}
!51 = !{!16, !11, i64 24}
!52 = !{!16, !11, i64 72}
!53 = distinct !{!53, !42}


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