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

; 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.pcre_extra = type { i64, ptr, i64, ptr, ptr, i64, 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_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_fullinfo(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #2
  %13 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %13, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #2
  store ptr null, ptr %11, align 8, !tbaa !5
  %14 = load ptr, ptr %10, align 8, !tbaa !5
  %15 = icmp eq ptr %14, null
  br i1 %15, label %19, label %16

16:                                               ; preds = %4
  %17 = load ptr, ptr %9, align 8, !tbaa !5
  %18 = icmp eq ptr %17, null
  br i1 %18, label %19, label %20

19:                                               ; preds = %16, %4
  store i32 -2, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

20:                                               ; preds = %16
  %21 = load ptr, ptr %7, align 8, !tbaa !5
  %22 = icmp ne ptr %21, null
  br i1 %22, label %23, label %33

23:                                               ; preds = %20
  %24 = load ptr, ptr %7, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.pcre_extra, ptr %24, i32 0, i32 0
  %26 = load i64, ptr %25, align 8, !tbaa !11
  %27 = and i64 %26, 1
  %28 = icmp ne i64 %27, 0
  br i1 %28, label %29, label %33

29:                                               ; preds = %23
  %30 = load ptr, ptr %7, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.pcre_extra, ptr %30, i32 0, i32 1
  %32 = load ptr, ptr %31, align 8, !tbaa !14
  store ptr %32, ptr %11, align 8, !tbaa !5
  br label %33

33:                                               ; preds = %29, %23, %20
  %34 = load ptr, ptr %10, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %34, i32 0, i32 0
  %36 = load i32, ptr %35, align 8, !tbaa !15
  %37 = zext i32 %36 to i64
  %38 = icmp ne i64 %37, 1346589253
  br i1 %38, label %39, label %47

39:                                               ; preds = %33
  %40 = load ptr, ptr %10, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %40, i32 0, i32 0
  %42 = load i32, ptr %41, align 8, !tbaa !15
  %43 = zext i32 %42 to i64
  %44 = icmp eq i64 %43, 1163019088
  %45 = zext i1 %44 to i64
  %46 = select i1 %44, i32 -29, i32 -4
  store i32 %46, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

47:                                               ; preds = %33
  %48 = load ptr, ptr %10, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %48, i32 0, i32 3
  %50 = load i32, ptr %49, align 4, !tbaa !18
  %51 = and i32 %50, 1
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %54

53:                                               ; preds = %47
  store i32 -28, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

54:                                               ; preds = %47
  %55 = load i32, ptr %8, align 4, !tbaa !9
  switch i32 %55, label %327 [
    i32 0, label %56
    i32 1, label %63
    i32 10, label %69
    i32 17, label %81
    i32 2, label %83
    i32 3, label %89
    i32 4, label %95
    i32 19, label %117
    i32 20, label %132
    i32 5, label %150
    i32 15, label %169
    i32 16, label %186
    i32 6, label %204
    i32 21, label %219
    i32 22, label %234
    i32 7, label %242
    i32 8, label %248
    i32 9, label %254
    i32 11, label %263
    i32 12, label %265
    i32 13, label %273
    i32 14, label %281
    i32 18, label %289
    i32 23, label %295
    i32 24, label %307
    i32 25, label %319
  ]

56:                                               ; preds = %54
  %57 = load ptr, ptr %10, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %57, i32 0, i32 2
  %59 = load i32, ptr %58, align 8, !tbaa !19
  %60 = and i32 %59, 671054463
  %61 = zext i32 %60 to i64
  %62 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 %61, ptr %62, align 8, !tbaa !20
  br label %328

63:                                               ; preds = %54
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %64, i32 0, i32 1
  %66 = load i32, ptr %65, align 4, !tbaa !21
  %67 = zext i32 %66 to i64
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 %67, ptr %68, align 8, !tbaa !20
  br label %328

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

72:                                               ; preds = %69
  br label %77

73:                                               ; preds = %69
  %74 = load ptr, ptr %11, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.pcre_study_data, ptr %74, i32 0, i32 0
  %76 = load i32, ptr %75, align 4, !tbaa !22
  br label %77

77:                                               ; preds = %73, %72
  %78 = phi i32 [ 0, %72 ], [ %76, %73 ]
  %79 = zext i32 %78 to i64
  %80 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 %79, ptr %80, align 8, !tbaa !20
  br label %328

81:                                               ; preds = %54
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 0, ptr %82, align 8, !tbaa !20
  br label %328

83:                                               ; preds = %54
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %84, i32 0, i32 9
  %86 = load i16, ptr %85, align 2, !tbaa !24
  %87 = zext i16 %86 to i32
  %88 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %87, ptr %88, align 4, !tbaa !9
  br label %328

89:                                               ; preds = %54
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %90, i32 0, i32 10
  %92 = load i16, ptr %91, align 8, !tbaa !25
  %93 = zext i16 %92 to i32
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %93, ptr %94, align 4, !tbaa !9
  br label %328

95:                                               ; preds = %54
  %96 = load ptr, ptr %10, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %96, i32 0, i32 3
  %98 = load i32, ptr %97, align 4, !tbaa !18
  %99 = and i32 %98, 16
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %106

101:                                              ; preds = %95
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %102, i32 0, i32 6
  %104 = load i16, ptr %103, align 8, !tbaa !26
  %105 = zext i16 %104 to i32
  br label %114

106:                                              ; preds = %95
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %107, i32 0, i32 3
  %109 = load i32, ptr %108, align 4, !tbaa !18
  %110 = and i32 %109, 256
  %111 = icmp ne i32 %110, 0
  %112 = zext i1 %111 to i64
  %113 = select i1 %111, i32 -1, i32 -2
  br label %114

114:                                              ; preds = %106, %101
  %115 = phi i32 [ %105, %101 ], [ %113, %106 ]
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %115, ptr %116, align 4, !tbaa !9
  br label %328

117:                                              ; preds = %54
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %118, i32 0, i32 3
  %120 = load i32, ptr %119, align 4, !tbaa !18
  %121 = and i32 %120, 16
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %123, label %128

123:                                              ; preds = %117
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %124, i32 0, i32 6
  %126 = load i16, ptr %125, align 8, !tbaa !26
  %127 = zext i16 %126 to i32
  br label %129

128:                                              ; preds = %117
  br label %129

129:                                              ; preds = %128, %123
  %130 = phi i32 [ %127, %123 ], [ 0, %128 ]
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %130, ptr %131, align 4, !tbaa !9
  br label %328

132:                                              ; preds = %54
  %133 = load ptr, ptr %10, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %133, i32 0, i32 3
  %135 = load i32, ptr %134, align 4, !tbaa !18
  %136 = and i32 %135, 16
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %132
  br label %147

139:                                              ; preds = %132
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %140, i32 0, i32 3
  %142 = load i32, ptr %141, align 4, !tbaa !18
  %143 = and i32 %142, 256
  %144 = icmp ne i32 %143, 0
  %145 = zext i1 %144 to i64
  %146 = select i1 %144, i32 2, i32 0
  br label %147

147:                                              ; preds = %139, %138
  %148 = phi i32 [ 1, %138 ], [ %146, %139 ]
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %148, ptr %149, align 4, !tbaa !9
  br label %328

150:                                              ; preds = %54
  %151 = load ptr, ptr %11, align 8, !tbaa !5
  %152 = icmp ne ptr %151, null
  br i1 %152, label %153, label %165

153:                                              ; preds = %150
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.pcre_study_data, ptr %154, i32 0, i32 1
  %156 = load i32, ptr %155, align 4, !tbaa !27
  %157 = and i32 %156, 1
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %165

159:                                              ; preds = %153
  %160 = load ptr, ptr %7, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.pcre_extra, ptr %160, i32 0, i32 1
  %162 = load ptr, ptr %161, align 8, !tbaa !14
  %163 = getelementptr inbounds %struct.pcre_study_data, ptr %162, i32 0, i32 2
  %164 = getelementptr inbounds [32 x i8], ptr %163, i64 0, i64 0
  br label %166

165:                                              ; preds = %153, %150
  br label %166

166:                                              ; preds = %165, %159
  %167 = phi ptr [ %164, %159 ], [ null, %165 ]
  %168 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %167, ptr %168, align 8, !tbaa !5
  br label %328

169:                                              ; preds = %54
  %170 = load ptr, ptr %11, align 8, !tbaa !5
  %171 = icmp ne ptr %170, null
  br i1 %171, label %172, label %182

172:                                              ; preds = %169
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.pcre_study_data, ptr %173, i32 0, i32 1
  %175 = load i32, ptr %174, align 4, !tbaa !27
  %176 = and i32 %175, 2
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %182

178:                                              ; preds = %172
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.pcre_study_data, ptr %179, i32 0, i32 3
  %181 = load i32, ptr %180, align 4, !tbaa !28
  br label %183

182:                                              ; preds = %172, %169
  br label %183

183:                                              ; preds = %182, %178
  %184 = phi i32 [ %181, %178 ], [ -1, %182 ]
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %184, ptr %185, align 4, !tbaa !9
  br label %328

186:                                              ; preds = %54
  %187 = load ptr, ptr %7, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %189, label %200

189:                                              ; preds = %186
  %190 = load ptr, ptr %7, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.pcre_extra, ptr %190, i32 0, i32 0
  %192 = load i64, ptr %191, align 8, !tbaa !11
  %193 = and i64 %192, 64
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %200

195:                                              ; preds = %189
  %196 = load ptr, ptr %7, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.pcre_extra, ptr %196, i32 0, i32 7
  %198 = load ptr, ptr %197, align 8, !tbaa !29
  %199 = icmp ne ptr %198, null
  br label %200

200:                                              ; preds = %195, %189, %186
  %201 = phi i1 [ false, %189 ], [ false, %186 ], [ %199, %195 ]
  %202 = zext i1 %201 to i32
  %203 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %202, ptr %203, align 4, !tbaa !9
  br label %328

204:                                              ; preds = %54
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %205, i32 0, i32 3
  %207 = load i32, ptr %206, align 4, !tbaa !18
  %208 = and i32 %207, 64
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %215

210:                                              ; preds = %204
  %211 = load ptr, ptr %10, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %211, i32 0, i32 7
  %213 = load i16, ptr %212, align 2, !tbaa !30
  %214 = zext i16 %213 to i32
  br label %216

215:                                              ; preds = %204
  br label %216

216:                                              ; preds = %215, %210
  %217 = phi i32 [ %214, %210 ], [ -1, %215 ]
  %218 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %217, ptr %218, align 4, !tbaa !9
  br label %328

219:                                              ; preds = %54
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %220, i32 0, i32 3
  %222 = load i32, ptr %221, align 4, !tbaa !18
  %223 = and i32 %222, 64
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %230

225:                                              ; preds = %219
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %226, i32 0, i32 7
  %228 = load i16, ptr %227, align 2, !tbaa !30
  %229 = zext i16 %228 to i32
  br label %231

230:                                              ; preds = %219
  br label %231

231:                                              ; preds = %230, %225
  %232 = phi i32 [ %229, %225 ], [ 0, %230 ]
  %233 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %232, ptr %233, align 4, !tbaa !9
  br label %328

234:                                              ; preds = %54
  %235 = load ptr, ptr %10, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %235, i32 0, i32 3
  %237 = load i32, ptr %236, align 4, !tbaa !18
  %238 = and i32 %237, 64
  %239 = icmp ne i32 %238, 0
  %240 = zext i1 %239 to i32
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %240, ptr %241, align 4, !tbaa !9
  br label %328

242:                                              ; preds = %54
  %243 = load ptr, ptr %10, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %243, i32 0, i32 12
  %245 = load i16, ptr %244, align 4, !tbaa !31
  %246 = zext i16 %245 to i32
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %246, ptr %247, align 4, !tbaa !9
  br label %328

248:                                              ; preds = %54
  %249 = load ptr, ptr %10, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %249, i32 0, i32 13
  %251 = load i16, ptr %250, align 2, !tbaa !32
  %252 = zext i16 %251 to i32
  %253 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %252, ptr %253, align 4, !tbaa !9
  br label %328

254:                                              ; preds = %54
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %256, i32 0, i32 11
  %258 = load i16, ptr %257, align 2, !tbaa !33
  %259 = zext i16 %258 to i32
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i8, ptr %255, i64 %260
  %262 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %261, ptr %262, align 8, !tbaa !5
  br label %328

263:                                              ; preds = %54
  %264 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr @_pcre_default_tables, ptr %264, align 8, !tbaa !5
  br label %328

265:                                              ; preds = %54
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %266, i32 0, i32 3
  %268 = load i32, ptr %267, align 4, !tbaa !18
  %269 = and i32 %268, 512
  %270 = icmp eq i32 %269, 0
  %271 = zext i1 %270 to i32
  %272 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %271, ptr %272, align 4, !tbaa !9
  br label %328

273:                                              ; preds = %54
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %274, i32 0, i32 3
  %276 = load i32, ptr %275, align 4, !tbaa !18
  %277 = and i32 %276, 1024
  %278 = icmp ne i32 %277, 0
  %279 = zext i1 %278 to i32
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %279, ptr %280, align 4, !tbaa !9
  br label %328

281:                                              ; preds = %54
  %282 = load ptr, ptr %10, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %282, i32 0, i32 3
  %284 = load i32, ptr %283, align 4, !tbaa !18
  %285 = and i32 %284, 2048
  %286 = icmp ne i32 %285, 0
  %287 = zext i1 %286 to i32
  %288 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %287, ptr %288, align 4, !tbaa !9
  br label %328

289:                                              ; preds = %54
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %290, i32 0, i32 8
  %292 = load i16, ptr %291, align 4, !tbaa !34
  %293 = zext i16 %292 to i32
  %294 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %293, ptr %294, align 4, !tbaa !9
  br label %328

295:                                              ; preds = %54
  %296 = load ptr, ptr %10, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %296, i32 0, i32 3
  %298 = load i32, ptr %297, align 4, !tbaa !18
  %299 = and i32 %298, 8192
  %300 = icmp eq i32 %299, 0
  br i1 %300, label %301, label %302

301:                                              ; preds = %295
  store i32 -33, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

302:                                              ; preds = %295
  %303 = load ptr, ptr %10, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %303, i32 0, i32 4
  %305 = load i32, ptr %304, align 8, !tbaa !35
  %306 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %305, ptr %306, align 4, !tbaa !9
  br label %328

307:                                              ; preds = %54
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %308, i32 0, i32 3
  %310 = load i32, ptr %309, align 4, !tbaa !18
  %311 = and i32 %310, 16384
  %312 = icmp eq i32 %311, 0
  br i1 %312, label %313, label %314

313:                                              ; preds = %307
  store i32 -33, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

314:                                              ; preds = %307
  %315 = load ptr, ptr %10, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %315, i32 0, i32 5
  %317 = load i32, ptr %316, align 4, !tbaa !36
  %318 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %317, ptr %318, align 4, !tbaa !9
  br label %328

319:                                              ; preds = %54
  %320 = load ptr, ptr %10, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.real_pcre8_or_16, ptr %320, i32 0, i32 3
  %322 = load i32, ptr %321, align 4, !tbaa !18
  %323 = and i32 %322, 32768
  %324 = icmp ne i32 %323, 0
  %325 = zext i1 %324 to i32
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %325, ptr %326, align 4, !tbaa !9
  br label %328

327:                                              ; preds = %54
  store i32 -3, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

328:                                              ; preds = %319, %314, %302, %289, %281, %273, %265, %263, %254, %248, %242, %234, %231, %216, %200, %183, %166, %147, %129, %114, %89, %83, %81, %77, %63, %56
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %329

329:                                              ; preds = %328, %327, %313, %301, %53, %39, %19
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #2
  %330 = load i32, ptr %5, align 4
  ret i32 %330
}

; 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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"pcre_extra", !13, i64 0, !6, i64 8, !13, i64 16, !6, i64 24, !6, i64 32, !13, i64 40, !6, i64 48, !6, i64 56}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 8}
!15 = !{!16, !10, i64 0}
!16 = !{!"real_pcre8_or_16", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !17, i64 24, !17, i64 26, !17, i64 28, !17, i64 30, !17, i64 32, !17, i64 34, !17, i64 36, !17, i64 38, !17, i64 40, !17, i64 42, !17, i64 44, !17, i64 46, !6, i64 48, !6, i64 56}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !10, i64 12}
!19 = !{!16, !10, i64 8}
!20 = !{!13, !13, i64 0}
!21 = !{!16, !10, i64 4}
!22 = !{!23, !10, i64 0}
!23 = !{!"pcre_study_data", !10, i64 0, !10, i64 4, !7, i64 8, !10, i64 40}
!24 = !{!16, !17, i64 30}
!25 = !{!16, !17, i64 32}
!26 = !{!16, !17, i64 24}
!27 = !{!23, !10, i64 4}
!28 = !{!23, !10, i64 40}
!29 = !{!12, !6, i64 56}
!30 = !{!16, !17, i64 26}
!31 = !{!16, !17, i64 36}
!32 = !{!16, !17, i64 38}
!33 = !{!16, !17, i64 34}
!34 = !{!16, !17, i64 28}
!35 = !{!16, !10, i64 16}
!36 = !{!16, !10, i64 20}


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

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

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable
define dso_local range(i32 -33, 1) i32 @pcre_fullinfo(ptr noundef %0, ptr noundef readonly %1, i32 noundef %2, ptr noundef writeonly %3) local_unnamed_addr #0 {
  %5 = icmp eq ptr %0, null
  %6 = icmp eq ptr %3, null
  %or.cond = or i1 %5, %6
  br i1 %or.cond, label %163, label %7

7:                                                ; preds = %4
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %14, label %8

8:                                                ; preds = %7
  %9 = load i64, ptr %1, align 8, !tbaa !5
  %10 = and i64 %9, 1
  %.not82 = icmp eq i64 %10, 0
  br i1 %.not82, label %14, label %11

11:                                               ; preds = %8
  %12 = getelementptr inbounds i8, ptr %1, i64 8
  %13 = load ptr, ptr %12, align 8, !tbaa !11
  br label %14

14:                                               ; preds = %11, %8, %7
  %.0 = phi ptr [ %13, %11 ], [ null, %8 ], [ null, %7 ]
  %15 = load i32, ptr %0, align 8, !tbaa !12
  %.not83 = icmp eq i32 %15, 1346589253
  br i1 %.not83, label %19, label %16

16:                                               ; preds = %14
  %17 = icmp eq i32 %15, 1163019088
  %18 = select i1 %17, i32 -29, i32 -4
  br label %163

19:                                               ; preds = %14
  %20 = getelementptr inbounds i8, ptr %0, i64 12
  %21 = load i32, ptr %20, align 4, !tbaa !16
  %22 = and i32 %21, 1
  %23 = icmp eq i32 %22, 0
  br i1 %23, label %163, label %24

24:                                               ; preds = %19
  switch i32 %2, label %163 [
    i32 0, label %25
    i32 1, label %30
    i32 10, label %34
    i32 17, label %41
    i32 2, label %42
    i32 3, label %46
    i32 4, label %50
    i32 19, label %61
    i32 20, label %69
    i32 5, label %74
    i32 15, label %85
    i32 16, label %95
    i32 6, label %106
    i32 21, label %114
    i32 22, label %122
    i32 7, label %124
    i32 8, label %128
    i32 9, label %132
    i32 11, label %137
    i32 12, label %138
    i32 13, label %141
    i32 14, label %143
    i32 18, label %145
    i32 23, label %149
    i32 24, label %155
    i32 25, label %161
  ]

25:                                               ; preds = %24
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  %27 = load i32, ptr %26, align 8, !tbaa !17
  %28 = and i32 %27, 671054463
  %29 = zext nneg i32 %28 to i64
  store i64 %29, ptr %3, align 8, !tbaa !18
  br label %163

30:                                               ; preds = %24
  %31 = getelementptr inbounds i8, ptr %0, i64 4
  %32 = load i32, ptr %31, align 4, !tbaa !19
  %33 = zext i32 %32 to i64
  store i64 %33, ptr %3, align 8, !tbaa !18
  br label %163

34:                                               ; preds = %24
  %35 = icmp eq ptr %.0, null
  br i1 %35, label %39, label %36

36:                                               ; preds = %34
  %37 = load i32, ptr %.0, align 4, !tbaa !20
  %38 = zext i32 %37 to i64
  br label %39

39:                                               ; preds = %34, %36
  %40 = phi i64 [ %38, %36 ], [ 0, %34 ]
  store i64 %40, ptr %3, align 8, !tbaa !18
  br label %163

41:                                               ; preds = %24
  store i64 0, ptr %3, align 8, !tbaa !18
  br label %163

42:                                               ; preds = %24
  %43 = getelementptr inbounds i8, ptr %0, i64 30
  %44 = load i16, ptr %43, align 2, !tbaa !22
  %45 = zext i16 %44 to i32
  store i32 %45, ptr %3, align 4, !tbaa !23
  br label %163

46:                                               ; preds = %24
  %47 = getelementptr inbounds i8, ptr %0, i64 32
  %48 = load i16, ptr %47, align 8, !tbaa !24
  %49 = zext i16 %48 to i32
  store i32 %49, ptr %3, align 4, !tbaa !23
  br label %163

50:                                               ; preds = %24
  %51 = and i32 %21, 16
  %.not98 = icmp eq i32 %51, 0
  br i1 %.not98, label %56, label %52

52:                                               ; preds = %50
  %53 = getelementptr inbounds i8, ptr %0, i64 24
  %54 = load i16, ptr %53, align 8, !tbaa !25
  %55 = zext i16 %54 to i32
  br label %59

56:                                               ; preds = %50
  %57 = and i32 %21, 256
  %.not99 = icmp eq i32 %57, 0
  %58 = select i1 %.not99, i32 -2, i32 -1
  br label %59

59:                                               ; preds = %56, %52
  %60 = phi i32 [ %55, %52 ], [ %58, %56 ]
  store i32 %60, ptr %3, align 4, !tbaa !23
  br label %163

61:                                               ; preds = %24
  %62 = and i32 %21, 16
  %.not97 = icmp eq i32 %62, 0
  br i1 %.not97, label %67, label %63

63:                                               ; preds = %61
  %64 = getelementptr inbounds i8, ptr %0, i64 24
  %65 = load i16, ptr %64, align 8, !tbaa !25
  %66 = zext i16 %65 to i32
  br label %67

67:                                               ; preds = %61, %63
  %68 = phi i32 [ %66, %63 ], [ 0, %61 ]
  store i32 %68, ptr %3, align 4, !tbaa !23
  br label %163

69:                                               ; preds = %24
  %70 = and i32 %21, 16
  %.not95 = icmp eq i32 %70, 0
  %71 = lshr i32 %21, 7
  %72 = and i32 %71, 2
  %73 = select i1 %.not95, i32 %72, i32 1
  store i32 %73, ptr %3, align 4, !tbaa !23
  br label %163

74:                                               ; preds = %24
  %.not93 = icmp eq ptr %.0, null
  br i1 %.not93, label %83, label %75

75:                                               ; preds = %74
  %76 = getelementptr inbounds i8, ptr %.0, i64 4
  %77 = load i32, ptr %76, align 4, !tbaa !26
  %78 = and i32 %77, 1
  %.not94 = icmp eq i32 %78, 0
  br i1 %.not94, label %83, label %79

79:                                               ; preds = %75
  %80 = getelementptr inbounds i8, ptr %1, i64 8
  %81 = load ptr, ptr %80, align 8, !tbaa !11
  %82 = getelementptr inbounds i8, ptr %81, i64 8
  br label %83

83:                                               ; preds = %74, %75, %79
  %84 = phi ptr [ %82, %79 ], [ null, %75 ], [ null, %74 ]
  store ptr %84, ptr %3, align 8, !tbaa !27
  br label %163

85:                                               ; preds = %24
  %.not91 = icmp eq ptr %.0, null
  br i1 %.not91, label %93, label %86

86:                                               ; preds = %85
  %87 = getelementptr inbounds i8, ptr %.0, i64 4
  %88 = load i32, ptr %87, align 4, !tbaa !26
  %89 = and i32 %88, 2
  %.not92 = icmp eq i32 %89, 0
  br i1 %.not92, label %93, label %90

90:                                               ; preds = %86
  %91 = getelementptr inbounds i8, ptr %.0, i64 40
  %92 = load i32, ptr %91, align 4, !tbaa !28
  br label %93

93:                                               ; preds = %85, %86, %90
  %94 = phi i32 [ %92, %90 ], [ -1, %86 ], [ -1, %85 ]
  store i32 %94, ptr %3, align 4, !tbaa !23
  br label %163

95:                                               ; preds = %24
  br i1 %.not, label %104, label %96

96:                                               ; preds = %95
  %97 = load i64, ptr %1, align 8, !tbaa !5
  %98 = and i64 %97, 64
  %.not90 = icmp eq i64 %98, 0
  br i1 %.not90, label %104, label %99

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %1, i64 56
  %101 = load ptr, ptr %100, align 8, !tbaa !29
  %102 = icmp ne ptr %101, null
  %103 = zext i1 %102 to i32
  br label %104

104:                                              ; preds = %99, %96, %95
  %105 = phi i32 [ 0, %96 ], [ 0, %95 ], [ %103, %99 ]
  store i32 %105, ptr %3, align 4, !tbaa !23
  br label %163

106:                                              ; preds = %24
  %107 = and i32 %21, 64
  %.not89 = icmp eq i32 %107, 0
  br i1 %.not89, label %112, label %108

108:                                              ; preds = %106
  %109 = getelementptr inbounds i8, ptr %0, i64 26
  %110 = load i16, ptr %109, align 2, !tbaa !30
  %111 = zext i16 %110 to i32
  br label %112

112:                                              ; preds = %106, %108
  %113 = phi i32 [ %111, %108 ], [ -1, %106 ]
  store i32 %113, ptr %3, align 4, !tbaa !23
  br label %163

114:                                              ; preds = %24
  %115 = and i32 %21, 64
  %.not88 = icmp eq i32 %115, 0
  br i1 %.not88, label %120, label %116

116:                                              ; preds = %114
  %117 = getelementptr inbounds i8, ptr %0, i64 26
  %118 = load i16, ptr %117, align 2, !tbaa !30
  %119 = zext i16 %118 to i32
  br label %120

120:                                              ; preds = %114, %116
  %121 = phi i32 [ %119, %116 ], [ 0, %114 ]
  store i32 %121, ptr %3, align 4, !tbaa !23
  br label %163

122:                                              ; preds = %24
  %123 = lshr i32 %21, 6
  %.lobit87 = and i32 %123, 1
  store i32 %.lobit87, ptr %3, align 4, !tbaa !23
  br label %163

124:                                              ; preds = %24
  %125 = getelementptr inbounds i8, ptr %0, i64 36
  %126 = load i16, ptr %125, align 4, !tbaa !31
  %127 = zext i16 %126 to i32
  store i32 %127, ptr %3, align 4, !tbaa !23
  br label %163

128:                                              ; preds = %24
  %129 = getelementptr inbounds i8, ptr %0, i64 38
  %130 = load i16, ptr %129, align 2, !tbaa !32
  %131 = zext i16 %130 to i32
  store i32 %131, ptr %3, align 4, !tbaa !23
  br label %163

132:                                              ; preds = %24
  %133 = getelementptr inbounds i8, ptr %0, i64 34
  %134 = load i16, ptr %133, align 2, !tbaa !33
  %135 = zext i16 %134 to i64
  %136 = getelementptr inbounds i8, ptr %0, i64 %135
  store ptr %136, ptr %3, align 8, !tbaa !27
  br label %163

137:                                              ; preds = %24
  store ptr @_pcre_default_tables, ptr %3, align 8, !tbaa !27
  br label %163

138:                                              ; preds = %24
  %139 = lshr i32 %21, 9
  %.lobit86 = and i32 %139, 1
  %140 = xor i32 %.lobit86, 1
  store i32 %140, ptr %3, align 4, !tbaa !23
  br label %163

141:                                              ; preds = %24
  %142 = lshr i32 %21, 10
  %.lobit85 = and i32 %142, 1
  store i32 %.lobit85, ptr %3, align 4, !tbaa !23
  br label %163

143:                                              ; preds = %24
  %144 = lshr i32 %21, 11
  %.lobit84 = and i32 %144, 1
  store i32 %.lobit84, ptr %3, align 4, !tbaa !23
  br label %163

145:                                              ; preds = %24
  %146 = getelementptr inbounds i8, ptr %0, i64 28
  %147 = load i16, ptr %146, align 4, !tbaa !34
  %148 = zext i16 %147 to i32
  store i32 %148, ptr %3, align 4, !tbaa !23
  br label %163

149:                                              ; preds = %24
  %150 = and i32 %21, 8192
  %151 = icmp eq i32 %150, 0
  br i1 %151, label %163, label %152

152:                                              ; preds = %149
  %153 = getelementptr inbounds i8, ptr %0, i64 16
  %154 = load i32, ptr %153, align 8, !tbaa !35
  store i32 %154, ptr %3, align 4, !tbaa !23
  br label %163

155:                                              ; preds = %24
  %156 = and i32 %21, 16384
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %163, label %158

158:                                              ; preds = %155
  %159 = getelementptr inbounds i8, ptr %0, i64 20
  %160 = load i32, ptr %159, align 4, !tbaa !36
  store i32 %160, ptr %3, align 4, !tbaa !23
  br label %163

161:                                              ; preds = %24
  %162 = lshr i32 %21, 15
  %.lobit = and i32 %162, 1
  store i32 %.lobit, ptr %3, align 4, !tbaa !23
  br label %163

163:                                              ; preds = %25, %30, %39, %41, %42, %46, %59, %67, %69, %83, %93, %104, %112, %120, %122, %124, %128, %132, %137, %138, %141, %143, %145, %152, %158, %161, %24, %155, %149, %19, %4, %16
  %.077 = phi i32 [ %18, %16 ], [ -2, %4 ], [ -28, %19 ], [ -33, %149 ], [ -33, %155 ], [ -3, %24 ], [ 0, %161 ], [ 0, %158 ], [ 0, %152 ], [ 0, %145 ], [ 0, %143 ], [ 0, %141 ], [ 0, %138 ], [ 0, %137 ], [ 0, %132 ], [ 0, %128 ], [ 0, %124 ], [ 0, %122 ], [ 0, %120 ], [ 0, %112 ], [ 0, %104 ], [ 0, %93 ], [ 0, %83 ], [ 0, %69 ], [ 0, %67 ], [ 0, %59 ], [ 0, %46 ], [ 0, %42 ], [ 0, %41 ], [ 0, %39 ], [ 0, %30 ], [ 0, %25 ]
  ret i32 %.077
}

attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) 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" }

!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 = !{!"pcre_extra", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !10, i64 56}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !10, i64 8}
!12 = !{!13, !14, i64 0}
!13 = !{!"real_pcre8_or_16", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !15, i64 24, !15, i64 26, !15, i64 28, !15, i64 30, !15, i64 32, !15, i64 34, !15, i64 36, !15, i64 38, !15, i64 40, !15, i64 42, !15, i64 44, !15, i64 46, !10, i64 48, !10, i64 56}
!14 = !{!"int", !8, i64 0}
!15 = !{!"short", !8, i64 0}
!16 = !{!13, !14, i64 12}
!17 = !{!13, !14, i64 8}
!18 = !{!7, !7, i64 0}
!19 = !{!13, !14, i64 4}
!20 = !{!21, !14, i64 0}
!21 = !{!"pcre_study_data", !14, i64 0, !14, i64 4, !8, i64 8, !14, i64 40}
!22 = !{!13, !15, i64 30}
!23 = !{!14, !14, i64 0}
!24 = !{!13, !15, i64 32}
!25 = !{!13, !15, i64 24}
!26 = !{!21, !14, i64 4}
!27 = !{!10, !10, i64 0}
!28 = !{!21, !14, i64 40}
!29 = !{!6, !10, i64 56}
!30 = !{!13, !15, i64 26}
!31 = !{!13, !15, i64 36}
!32 = !{!13, !15, i64 38}
!33 = !{!13, !15, i64 34}
!34 = !{!13, !15, i64 28}
!35 = !{!13, !14, i64 16}
!36 = !{!13, !14, i64 20}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass