; LLVM IR from apigee/apib :: third_party/http_parser (test)

; 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.message = type { ptr, ptr, i32, i32, i32, [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], i64, ptr, ptr, i16, i32, i32, [13 x [2 x [2048 x i8]]], i32, i32, i32, [16 x i32], ptr, i16, i16, i32, i32, i32, i32, i32, i32 }
%struct.http_parser_url = type { i16, i16, [7 x %struct.anon] }
%struct.anon = type { i16, i16 }

@.str.151 = external hidden unnamed_addr constant [76 x i8], align 1
@messages = external hidden global [5 x %struct.message], align 16
@stderr = external global ptr, align 8
@.str.170 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__.message_eq = external hidden unnamed_addr constant [49 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [8 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

; Function Attrs: noreturn nounwind
declare void @abort() #2

; Function Attrs: nounwind uwtable
define dso_local i32 @message_eq(i32 noundef %0, i32 noundef %1, ptr noundef %2) #4 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.http_parser_url, align 2
  %12 = alloca [256 x i8], align 16
  %13 = alloca [256 x i8], align 16
  %14 = alloca [256 x i8], align 16
  %15 = alloca [256 x i8], align 16
  %16 = alloca [256 x i8], align 16
  %17 = alloca i32, align 4
  store i32 %0, ptr %5, align 4, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %18 = load i32, ptr %5, align 4, !tbaa !5
  %19 = sext i32 %18 to i64
  %20 = getelementptr inbounds [5 x %struct.message], ptr @messages, i64 0, i64 %19
  store ptr %20, ptr %9, align 8, !tbaa !9
  %21 = load ptr, ptr %7, align 8, !tbaa !9
  %22 = load ptr, ptr %7, align 8, !tbaa !9
  %23 = getelementptr inbounds %struct.message, ptr %22, i32 0, i32 23
  %24 = load i16, ptr %23, align 8, !tbaa !11
  %25 = zext i16 %24 to i32
  %26 = load ptr, ptr %9, align 8, !tbaa !9
  %27 = getelementptr inbounds %struct.message, ptr %26, i32 0, i32 23
  %28 = load i16, ptr %27, align 8, !tbaa !11
  %29 = zext i16 %28 to i32
  %30 = call i32 @check_num_eq(ptr noundef %21, ptr noundef @.str.170, i32 noundef %25, i32 noundef %29)
  %31 = icmp ne i32 %30, 0
  br i1 %31, label %33, label %32

32:                                               ; preds = %3
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

33:                                               ; preds = %3
  %34 = load ptr, ptr %7, align 8, !tbaa !9
  %35 = load ptr, ptr %7, align 8, !tbaa !9
  %36 = getelementptr inbounds %struct.message, ptr %35, i32 0, i32 24
  %37 = load i16, ptr %36, align 2, !tbaa !15
  %38 = zext i16 %37 to i32
  %39 = load ptr, ptr %9, align 8, !tbaa !9
  %40 = getelementptr inbounds %struct.message, ptr %39, i32 0, i32 24
  %41 = load i16, ptr %40, align 2, !tbaa !15
  %42 = zext i16 %41 to i32
  %43 = call i32 @check_num_eq(ptr noundef %34, ptr noundef @.str.171, i32 noundef %38, i32 noundef %42)
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %46, label %45

45:                                               ; preds = %33
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

46:                                               ; preds = %33
  %47 = load ptr, ptr %7, align 8, !tbaa !9
  %48 = getelementptr inbounds %struct.message, ptr %47, i32 0, i32 2
  %49 = load i32, ptr %48, align 8, !tbaa !16
  %50 = icmp eq i32 %49, 0
  br i1 %50, label %51, label %63

51:                                               ; preds = %46
  %52 = load ptr, ptr %7, align 8, !tbaa !9
  %53 = load ptr, ptr %7, align 8, !tbaa !9
  %54 = getelementptr inbounds %struct.message, ptr %53, i32 0, i32 3
  %55 = load i32, ptr %54, align 4, !tbaa !17
  %56 = load ptr, ptr %9, align 8, !tbaa !9
  %57 = getelementptr inbounds %struct.message, ptr %56, i32 0, i32 3
  %58 = load i32, ptr %57, align 4, !tbaa !17
  %59 = call i32 @check_num_eq(ptr noundef %52, ptr noundef @.str.172, i32 noundef %55, i32 noundef %58)
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %62, label %61

61:                                               ; preds = %51
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

62:                                               ; preds = %51
  br label %93

63:                                               ; preds = %46
  %64 = load ptr, ptr %7, align 8, !tbaa !9
  %65 = load ptr, ptr %7, align 8, !tbaa !9
  %66 = getelementptr inbounds %struct.message, ptr %65, i32 0, i32 4
  %67 = load i32, ptr %66, align 8, !tbaa !18
  %68 = load ptr, ptr %9, align 8, !tbaa !9
  %69 = getelementptr inbounds %struct.message, ptr %68, i32 0, i32 4
  %70 = load i32, ptr %69, align 8, !tbaa !18
  %71 = call i32 @check_num_eq(ptr noundef %64, ptr noundef @.str.173, i32 noundef %67, i32 noundef %70)
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %74, label %73

73:                                               ; preds = %63
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

74:                                               ; preds = %63
  %75 = load ptr, ptr %7, align 8, !tbaa !9
  %76 = load ptr, ptr %7, align 8, !tbaa !9
  %77 = getelementptr inbounds %struct.message, ptr %76, i32 0, i32 5
  %78 = getelementptr inbounds [2048 x i8], ptr %77, i64 0, i64 0
  %79 = load ptr, ptr %9, align 8, !tbaa !9
  %80 = getelementptr inbounds %struct.message, ptr %79, i32 0, i32 5
  %81 = getelementptr inbounds [2048 x i8], ptr %80, i64 0, i64 0
  %82 = call i32 @check_str_eq(ptr noundef %75, ptr noundef @.str.174, ptr noundef %78, ptr noundef %81)
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %85, label %84

84:                                               ; preds = %74
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

85:                                               ; preds = %74
  %86 = load ptr, ptr %9, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct.message, ptr %86, i32 0, i32 28
  %88 = load i32, ptr %87, align 8, !tbaa !19
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %91

90:                                               ; preds = %85
  br label %92

91:                                               ; preds = %85
  call void @__assert_fail(ptr noundef @.str.175, ptr noundef @.str.151, i32 noundef 2659, ptr noundef @__PRETTY_FUNCTION__.message_eq) #9
  unreachable

92:                                               ; preds = %90
  br label %93

93:                                               ; preds = %92, %62
  %94 = load i32, ptr %6, align 4, !tbaa !5
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %119, label %96

96:                                               ; preds = %93
  %97 = load ptr, ptr %7, align 8, !tbaa !9
  %98 = load ptr, ptr %7, align 8, !tbaa !9
  %99 = getelementptr inbounds %struct.message, ptr %98, i32 0, i32 18
  %100 = load i32, ptr %99, align 4, !tbaa !20
  %101 = load ptr, ptr %9, align 8, !tbaa !9
  %102 = getelementptr inbounds %struct.message, ptr %101, i32 0, i32 18
  %103 = load i32, ptr %102, align 4, !tbaa !20
  %104 = call i32 @check_num_eq(ptr noundef %97, ptr noundef @.str.176, i32 noundef %100, i32 noundef %103)
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %107, label %106

106:                                              ; preds = %96
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

107:                                              ; preds = %96
  %108 = load ptr, ptr %7, align 8, !tbaa !9
  %109 = load ptr, ptr %7, align 8, !tbaa !9
  %110 = getelementptr inbounds %struct.message, ptr %109, i32 0, i32 29
  %111 = load i32, ptr %110, align 4, !tbaa !21
  %112 = load ptr, ptr %9, align 8, !tbaa !9
  %113 = getelementptr inbounds %struct.message, ptr %112, i32 0, i32 29
  %114 = load i32, ptr %113, align 4, !tbaa !21
  %115 = call i32 @check_num_eq(ptr noundef %108, ptr noundef @.str.177, i32 noundef %111, i32 noundef %114)
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %118, label %117

117:                                              ; preds = %107
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

118:                                              ; preds = %107
  br label %119

119:                                              ; preds = %118, %93
  %120 = load ptr, ptr %9, align 8, !tbaa !9
  %121 = getelementptr inbounds %struct.message, ptr %120, i32 0, i32 25
  %122 = load i32, ptr %121, align 4, !tbaa !22
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %125

124:                                              ; preds = %119
  br label %126

125:                                              ; preds = %119
  call void @__assert_fail(ptr noundef @.str.178, ptr noundef @.str.151, i32 noundef 2667, ptr noundef @__PRETTY_FUNCTION__.message_eq) #9
  unreachable

126:                                              ; preds = %124
  %127 = load ptr, ptr %9, align 8, !tbaa !9
  %128 = getelementptr inbounds %struct.message, ptr %127, i32 0, i32 26
  %129 = load i32, ptr %128, align 8, !tbaa !23
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %132

131:                                              ; preds = %126
  br label %133

132:                                              ; preds = %126
  call void @__assert_fail(ptr noundef @.str.179, ptr noundef @.str.151, i32 noundef 2668, ptr noundef @__PRETTY_FUNCTION__.message_eq) #9
  unreachable

133:                                              ; preds = %131
  %134 = load ptr, ptr %9, align 8, !tbaa !9
  %135 = getelementptr inbounds %struct.message, ptr %134, i32 0, i32 27
  %136 = load i32, ptr %135, align 4, !tbaa !24
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %133
  br label %140

139:                                              ; preds = %133
  call void @__assert_fail(ptr noundef @.str.180, ptr noundef @.str.151, i32 noundef 2669, ptr noundef @__PRETTY_FUNCTION__.message_eq) #9
  unreachable

140:                                              ; preds = %138
  %141 = load ptr, ptr %7, align 8, !tbaa !9
  %142 = load ptr, ptr %7, align 8, !tbaa !9
  %143 = getelementptr inbounds %struct.message, ptr %142, i32 0, i32 7
  %144 = getelementptr inbounds [2048 x i8], ptr %143, i64 0, i64 0
  %145 = load ptr, ptr %9, align 8, !tbaa !9
  %146 = getelementptr inbounds %struct.message, ptr %145, i32 0, i32 7
  %147 = getelementptr inbounds [2048 x i8], ptr %146, i64 0, i64 0
  %148 = call i32 @check_str_eq(ptr noundef %141, ptr noundef @.str.181, ptr noundef %144, ptr noundef %147)
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %151, label %150

150:                                              ; preds = %140
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

151:                                              ; preds = %140
  %152 = load ptr, ptr %9, align 8, !tbaa !9
  %153 = getelementptr inbounds %struct.message, ptr %152, i32 0, i32 7
  %154 = getelementptr inbounds [2048 x i8], ptr %153, i64 0, i64 0
  %155 = load i8, ptr %154, align 4, !tbaa !25
  %156 = sext i8 %155 to i32
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %423

158:                                              ; preds = %151
  %159 = load ptr, ptr %9, align 8, !tbaa !9
  %160 = getelementptr inbounds %struct.message, ptr %159, i32 0, i32 3
  %161 = load i32, ptr %160, align 4, !tbaa !17
  %162 = icmp ne i32 %161, 5
  br i1 %162, label %163, label %423

163:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  %164 = load ptr, ptr %9, align 8, !tbaa !9
  %165 = getelementptr inbounds %struct.message, ptr %164, i32 0, i32 7
  %166 = getelementptr inbounds [2048 x i8], ptr %165, i64 0, i64 0
  %167 = load ptr, ptr %9, align 8, !tbaa !9
  %168 = getelementptr inbounds %struct.message, ptr %167, i32 0, i32 7
  %169 = getelementptr inbounds [2048 x i8], ptr %168, i64 0, i64 0
  %170 = call i64 @strlen(ptr noundef %169) #10
  %171 = call i32 @http_parser_parse_url(ptr noundef %166, i64 noundef %170, i32 noundef 0, ptr noundef %11)
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %179

173:                                              ; preds = %163
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = load ptr, ptr %9, align 8, !tbaa !9
  %176 = getelementptr inbounds %struct.message, ptr %175, i32 0, i32 7
  %177 = getelementptr inbounds [2048 x i8], ptr %176, i64 0, i64 0
  %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef @.str.182, ptr noundef %177) #8
  call void @abort() #9
  unreachable

179:                                              ; preds = %163
  %180 = load ptr, ptr %7, align 8, !tbaa !9
  %181 = getelementptr inbounds %struct.message, ptr %180, i32 0, i32 12
  %182 = load ptr, ptr %181, align 8, !tbaa !26
  %183 = icmp ne ptr %182, null
  br i1 %183, label %184, label %225

184:                                              ; preds = %179
  br label %185

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 256, ptr %12) #8
  %186 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %187 = load i16, ptr %186, align 2, !tbaa !27
  %188 = zext i16 %187 to i32
  %189 = and i32 %188, 2
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %214

191:                                              ; preds = %185
  %192 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 0
  %193 = load ptr, ptr %9, align 8, !tbaa !9
  %194 = getelementptr inbounds %struct.message, ptr %193, i32 0, i32 7
  %195 = getelementptr inbounds [2048 x i8], ptr %194, i64 0, i64 0
  %196 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %197 = getelementptr inbounds [7 x %struct.anon], ptr %196, i64 0, i64 1
  %198 = getelementptr inbounds %struct.anon, ptr %197, i32 0, i32 0
  %199 = load i16, ptr %198, align 2, !tbaa !29
  %200 = zext i16 %199 to i32
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i8, ptr %195, i64 %201
  %203 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %204 = getelementptr inbounds [7 x %struct.anon], ptr %203, i64 0, i64 1
  %205 = getelementptr inbounds %struct.anon, ptr %204, i32 0, i32 1
  %206 = load i16, ptr %205, align 2, !tbaa !31
  %207 = zext i16 %206 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %192, ptr align 1 %202, i64 %207, i1 false)
  %208 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %209 = getelementptr inbounds [7 x %struct.anon], ptr %208, i64 0, i64 1
  %210 = getelementptr inbounds %struct.anon, ptr %209, i32 0, i32 1
  %211 = load i16, ptr %210, align 2, !tbaa !31
  %212 = zext i16 %211 to i64
  %213 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 %212
  store i8 0, ptr %213, align 1, !tbaa !25
  br label %216

214:                                              ; preds = %185
  %215 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 0
  store i8 0, ptr %215, align 16, !tbaa !25
  br label %216

216:                                              ; preds = %214, %191
  %217 = load ptr, ptr %7, align 8, !tbaa !9
  %218 = load ptr, ptr %7, align 8, !tbaa !9
  %219 = getelementptr inbounds %struct.message, ptr %218, i32 0, i32 12
  %220 = load ptr, ptr %219, align 8, !tbaa !26
  %221 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 0
  %222 = call i32 @check_str_eq(ptr noundef %217, ptr noundef @.str.183, ptr noundef %220, ptr noundef %221)
  call void @llvm.lifetime.end.p0(i64 256, ptr %12) #8
  br label %223

223:                                              ; preds = %216
  br label %224

224:                                              ; preds = %223
  br label %225

225:                                              ; preds = %224, %179
  %226 = load ptr, ptr %7, align 8, !tbaa !9
  %227 = getelementptr inbounds %struct.message, ptr %226, i32 0, i32 13
  %228 = load ptr, ptr %227, align 8, !tbaa !32
  %229 = icmp ne ptr %228, null
  br i1 %229, label %230, label %271

230:                                              ; preds = %225
  br label %231

231:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 256, ptr %13) #8
  %232 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %233 = load i16, ptr %232, align 2, !tbaa !27
  %234 = zext i16 %233 to i32
  %235 = and i32 %234, 64
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %260

237:                                              ; preds = %231
  %238 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 0
  %239 = load ptr, ptr %9, align 8, !tbaa !9
  %240 = getelementptr inbounds %struct.message, ptr %239, i32 0, i32 7
  %241 = getelementptr inbounds [2048 x i8], ptr %240, i64 0, i64 0
  %242 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %243 = getelementptr inbounds [7 x %struct.anon], ptr %242, i64 0, i64 6
  %244 = getelementptr inbounds %struct.anon, ptr %243, i32 0, i32 0
  %245 = load i16, ptr %244, align 2, !tbaa !29
  %246 = zext i16 %245 to i32
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i8, ptr %241, i64 %247
  %249 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %250 = getelementptr inbounds [7 x %struct.anon], ptr %249, i64 0, i64 6
  %251 = getelementptr inbounds %struct.anon, ptr %250, i32 0, i32 1
  %252 = load i16, ptr %251, align 2, !tbaa !31
  %253 = zext i16 %252 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %238, ptr align 1 %248, i64 %253, i1 false)
  %254 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %255 = getelementptr inbounds [7 x %struct.anon], ptr %254, i64 0, i64 6
  %256 = getelementptr inbounds %struct.anon, ptr %255, i32 0, i32 1
  %257 = load i16, ptr %256, align 2, !tbaa !31
  %258 = zext i16 %257 to i64
  %259 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %258
  store i8 0, ptr %259, align 1, !tbaa !25
  br label %262

260:                                              ; preds = %231
  %261 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 0
  store i8 0, ptr %261, align 16, !tbaa !25
  br label %262

262:                                              ; preds = %260, %237
  %263 = load ptr, ptr %7, align 8, !tbaa !9
  %264 = load ptr, ptr %7, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.message, ptr %264, i32 0, i32 13
  %266 = load ptr, ptr %265, align 8, !tbaa !32
  %267 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 0
  %268 = call i32 @check_str_eq(ptr noundef %263, ptr noundef @.str.184, ptr noundef %266, ptr noundef %267)
  call void @llvm.lifetime.end.p0(i64 256, ptr %13) #8
  br label %269

269:                                              ; preds = %262
  br label %270

270:                                              ; preds = %269
  br label %271

271:                                              ; preds = %270, %225
  %272 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %273 = load i16, ptr %272, align 2, !tbaa !27
  %274 = zext i16 %273 to i32
  %275 = and i32 %274, 4
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %277, label %281

277:                                              ; preds = %271
  %278 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 1
  %279 = load i16, ptr %278, align 2, !tbaa !33
  %280 = zext i16 %279 to i32
  br label %282

281:                                              ; preds = %271
  br label %282

282:                                              ; preds = %281, %277
  %283 = phi i32 [ %280, %277 ], [ 0, %281 ]
  %284 = trunc i32 %283 to i16
  %285 = load ptr, ptr %9, align 8, !tbaa !9
  %286 = getelementptr inbounds %struct.message, ptr %285, i32 0, i32 14
  store i16 %284, ptr %286, align 8, !tbaa !34
  br label %287

287:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 256, ptr %14) #8
  %288 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %289 = load i16, ptr %288, align 2, !tbaa !27
  %290 = zext i16 %289 to i32
  %291 = and i32 %290, 16
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %316

293:                                              ; preds = %287
  %294 = getelementptr inbounds [256 x i8], ptr %14, i64 0, i64 0
  %295 = load ptr, ptr %9, align 8, !tbaa !9
  %296 = getelementptr inbounds %struct.message, ptr %295, i32 0, i32 7
  %297 = getelementptr inbounds [2048 x i8], ptr %296, i64 0, i64 0
  %298 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %299 = getelementptr inbounds [7 x %struct.anon], ptr %298, i64 0, i64 4
  %300 = getelementptr inbounds %struct.anon, ptr %299, i32 0, i32 0
  %301 = load i16, ptr %300, align 2, !tbaa !29
  %302 = zext i16 %301 to i32
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds i8, ptr %297, i64 %303
  %305 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %306 = getelementptr inbounds [7 x %struct.anon], ptr %305, i64 0, i64 4
  %307 = getelementptr inbounds %struct.anon, ptr %306, i32 0, i32 1
  %308 = load i16, ptr %307, align 2, !tbaa !31
  %309 = zext i16 %308 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %294, ptr align 1 %304, i64 %309, i1 false)
  %310 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %311 = getelementptr inbounds [7 x %struct.anon], ptr %310, i64 0, i64 4
  %312 = getelementptr inbounds %struct.anon, ptr %311, i32 0, i32 1
  %313 = load i16, ptr %312, align 2, !tbaa !31
  %314 = zext i16 %313 to i64
  %315 = getelementptr inbounds [256 x i8], ptr %14, i64 0, i64 %314
  store i8 0, ptr %315, align 1, !tbaa !25
  br label %318

316:                                              ; preds = %287
  %317 = getelementptr inbounds [256 x i8], ptr %14, i64 0, i64 0
  store i8 0, ptr %317, align 16, !tbaa !25
  br label %318

318:                                              ; preds = %316, %293
  %319 = load ptr, ptr %7, align 8, !tbaa !9
  %320 = load ptr, ptr %7, align 8, !tbaa !9
  %321 = getelementptr inbounds %struct.message, ptr %320, i32 0, i32 9
  %322 = getelementptr inbounds [2048 x i8], ptr %321, i64 0, i64 0
  %323 = getelementptr inbounds [256 x i8], ptr %14, i64 0, i64 0
  %324 = call i32 @check_str_eq(ptr noundef %319, ptr noundef @.str.185, ptr noundef %322, ptr noundef %323)
  call void @llvm.lifetime.end.p0(i64 256, ptr %14) #8
  br label %325

325:                                              ; preds = %318
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 256, ptr %15) #8
  %328 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %329 = load i16, ptr %328, align 2, !tbaa !27
  %330 = zext i16 %329 to i32
  %331 = and i32 %330, 32
  %332 = icmp ne i32 %331, 0
  br i1 %332, label %333, label %356

333:                                              ; preds = %327
  %334 = getelementptr inbounds [256 x i8], ptr %15, i64 0, i64 0
  %335 = load ptr, ptr %9, align 8, !tbaa !9
  %336 = getelementptr inbounds %struct.message, ptr %335, i32 0, i32 7
  %337 = getelementptr inbounds [2048 x i8], ptr %336, i64 0, i64 0
  %338 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %339 = getelementptr inbounds [7 x %struct.anon], ptr %338, i64 0, i64 5
  %340 = getelementptr inbounds %struct.anon, ptr %339, i32 0, i32 0
  %341 = load i16, ptr %340, align 2, !tbaa !29
  %342 = zext i16 %341 to i32
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i8, ptr %337, i64 %343
  %345 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %346 = getelementptr inbounds [7 x %struct.anon], ptr %345, i64 0, i64 5
  %347 = getelementptr inbounds %struct.anon, ptr %346, i32 0, i32 1
  %348 = load i16, ptr %347, align 2, !tbaa !31
  %349 = zext i16 %348 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %334, ptr align 1 %344, i64 %349, i1 false)
  %350 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %351 = getelementptr inbounds [7 x %struct.anon], ptr %350, i64 0, i64 5
  %352 = getelementptr inbounds %struct.anon, ptr %351, i32 0, i32 1
  %353 = load i16, ptr %352, align 2, !tbaa !31
  %354 = zext i16 %353 to i64
  %355 = getelementptr inbounds [256 x i8], ptr %15, i64 0, i64 %354
  store i8 0, ptr %355, align 1, !tbaa !25
  br label %358

356:                                              ; preds = %327
  %357 = getelementptr inbounds [256 x i8], ptr %15, i64 0, i64 0
  store i8 0, ptr %357, align 16, !tbaa !25
  br label %358

358:                                              ; preds = %356, %333
  %359 = load ptr, ptr %7, align 8, !tbaa !9
  %360 = load ptr, ptr %7, align 8, !tbaa !9
  %361 = getelementptr inbounds %struct.message, ptr %360, i32 0, i32 8
  %362 = getelementptr inbounds [2048 x i8], ptr %361, i64 0, i64 0
  %363 = getelementptr inbounds [256 x i8], ptr %15, i64 0, i64 0
  %364 = call i32 @check_str_eq(ptr noundef %359, ptr noundef @.str.186, ptr noundef %362, ptr noundef %363)
  call void @llvm.lifetime.end.p0(i64 256, ptr %15) #8
  br label %365

365:                                              ; preds = %358
  br label %366

366:                                              ; preds = %365
  br label %367

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 256, ptr %16) #8
  %368 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 0
  %369 = load i16, ptr %368, align 2, !tbaa !27
  %370 = zext i16 %369 to i32
  %371 = and i32 %370, 8
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %396

373:                                              ; preds = %367
  %374 = getelementptr inbounds [256 x i8], ptr %16, i64 0, i64 0
  %375 = load ptr, ptr %9, align 8, !tbaa !9
  %376 = getelementptr inbounds %struct.message, ptr %375, i32 0, i32 7
  %377 = getelementptr inbounds [2048 x i8], ptr %376, i64 0, i64 0
  %378 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %379 = getelementptr inbounds [7 x %struct.anon], ptr %378, i64 0, i64 3
  %380 = getelementptr inbounds %struct.anon, ptr %379, i32 0, i32 0
  %381 = load i16, ptr %380, align 2, !tbaa !29
  %382 = zext i16 %381 to i32
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds i8, ptr %377, i64 %383
  %385 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %386 = getelementptr inbounds [7 x %struct.anon], ptr %385, i64 0, i64 3
  %387 = getelementptr inbounds %struct.anon, ptr %386, i32 0, i32 1
  %388 = load i16, ptr %387, align 2, !tbaa !31
  %389 = zext i16 %388 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %374, ptr align 1 %384, i64 %389, i1 false)
  %390 = getelementptr inbounds %struct.http_parser_url, ptr %11, i32 0, i32 2
  %391 = getelementptr inbounds [7 x %struct.anon], ptr %390, i64 0, i64 3
  %392 = getelementptr inbounds %struct.anon, ptr %391, i32 0, i32 1
  %393 = load i16, ptr %392, align 2, !tbaa !31
  %394 = zext i16 %393 to i64
  %395 = getelementptr inbounds [256 x i8], ptr %16, i64 0, i64 %394
  store i8 0, ptr %395, align 1, !tbaa !25
  br label %398

396:                                              ; preds = %367
  %397 = getelementptr inbounds [256 x i8], ptr %16, i64 0, i64 0
  store i8 0, ptr %397, align 16, !tbaa !25
  br label %398

398:                                              ; preds = %396, %373
  %399 = load ptr, ptr %7, align 8, !tbaa !9
  %400 = load ptr, ptr %7, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.message, ptr %400, i32 0, i32 6
  %402 = getelementptr inbounds [2048 x i8], ptr %401, i64 0, i64 0
  %403 = getelementptr inbounds [256 x i8], ptr %16, i64 0, i64 0
  %404 = call i32 @check_str_eq(ptr noundef %399, ptr noundef @.str.187, ptr noundef %402, ptr noundef %403)
  call void @llvm.lifetime.end.p0(i64 256, ptr %16) #8
  br label %405

405:                                              ; preds = %398
  br label %406

406:                                              ; preds = %405
  %407 = load ptr, ptr %7, align 8, !tbaa !9
  %408 = load ptr, ptr %7, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.message, ptr %408, i32 0, i32 14
  %410 = load i16, ptr %409, align 8, !tbaa !34
  %411 = zext i16 %410 to i32
  %412 = load ptr, ptr %9, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.message, ptr %412, i32 0, i32 14
  %414 = load i16, ptr %413, align 8, !tbaa !34
  %415 = zext i16 %414 to i32
  %416 = call i32 @check_num_eq(ptr noundef %407, ptr noundef @.str.188, i32 noundef %411, i32 noundef %415)
  %417 = icmp ne i32 %416, 0
  br i1 %417, label %419, label %418

418:                                              ; preds = %406
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %420

419:                                              ; preds = %406
  store i32 0, ptr %10, align 4
  br label %420

420:                                              ; preds = %419, %418
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  %421 = load i32, ptr %10, align 4
  switch i32 %421, label %608 [
    i32 0, label %422
  ]

422:                                              ; preds = %420
  br label %423

423:                                              ; preds = %422, %158, %151
  %424 = load i32, ptr %6, align 4, !tbaa !5
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %433

426:                                              ; preds = %423
  %427 = load ptr, ptr %9, align 8, !tbaa !9
  %428 = load ptr, ptr %9, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.message, ptr %428, i32 0, i32 11
  %430 = load i64, ptr %429, align 8, !tbaa !35
  %431 = trunc i64 %430 to i32
  %432 = call i32 @check_num_eq(ptr noundef %427, ptr noundef @.str.189, i32 noundef 0, i32 noundef %431)
  br label %465

433:                                              ; preds = %423
  %434 = load ptr, ptr %7, align 8, !tbaa !9
  %435 = getelementptr inbounds %struct.message, ptr %434, i32 0, i32 11
  %436 = load i64, ptr %435, align 8, !tbaa !35
  %437 = icmp ne i64 %436, 0
  br i1 %437, label %438, label %452

438:                                              ; preds = %433
  %439 = load ptr, ptr %7, align 8, !tbaa !9
  %440 = load ptr, ptr %7, align 8, !tbaa !9
  %441 = getelementptr inbounds %struct.message, ptr %440, i32 0, i32 11
  %442 = load i64, ptr %441, align 8, !tbaa !35
  %443 = trunc i64 %442 to i32
  %444 = load ptr, ptr %9, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.message, ptr %444, i32 0, i32 11
  %446 = load i64, ptr %445, align 8, !tbaa !35
  %447 = trunc i64 %446 to i32
  %448 = call i32 @check_num_eq(ptr noundef %439, ptr noundef @.str.189, i32 noundef %443, i32 noundef %447)
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %451, label %450

450:                                              ; preds = %438
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

451:                                              ; preds = %438
  br label %464

452:                                              ; preds = %433
  %453 = load ptr, ptr %7, align 8, !tbaa !9
  %454 = load ptr, ptr %7, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.message, ptr %454, i32 0, i32 10
  %456 = getelementptr inbounds [2048 x i8], ptr %455, i64 0, i64 0
  %457 = load ptr, ptr %9, align 8, !tbaa !9
  %458 = getelementptr inbounds %struct.message, ptr %457, i32 0, i32 10
  %459 = getelementptr inbounds [2048 x i8], ptr %458, i64 0, i64 0
  %460 = call i32 @check_str_eq(ptr noundef %453, ptr noundef @.str.190, ptr noundef %456, ptr noundef %459)
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %463, label %462

462:                                              ; preds = %452
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

463:                                              ; preds = %452
  br label %464

464:                                              ; preds = %463, %451
  br label %465

465:                                              ; preds = %464, %426
  %466 = load i32, ptr %6, align 4, !tbaa !5
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %474

468:                                              ; preds = %465
  %469 = load ptr, ptr %9, align 8, !tbaa !9
  %470 = load ptr, ptr %9, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.message, ptr %470, i32 0, i32 20
  %472 = load i32, ptr %471, align 4, !tbaa !36
  %473 = call i32 @check_num_eq(ptr noundef %469, ptr noundef @.str.191, i32 noundef 0, i32 noundef %472)
  br label %529

474:                                              ; preds = %465
  %475 = load ptr, ptr %9, align 8, !tbaa !9
  %476 = getelementptr inbounds %struct.message, ptr %475, i32 0, i32 19
  %477 = load i32, ptr %476, align 8, !tbaa !37
  %478 = load ptr, ptr %9, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.message, ptr %478, i32 0, i32 20
  %480 = load i32, ptr %479, align 4, !tbaa !36
  %481 = icmp eq i32 %477, %480
  br i1 %481, label %482, label %483

482:                                              ; preds = %474
  br label %484

483:                                              ; preds = %474
  call void @__assert_fail(ptr noundef @.str.192, ptr noundef @.str.151, i32 noundef 2714, ptr noundef @__PRETTY_FUNCTION__.message_eq) #9
  unreachable

484:                                              ; preds = %482
  %485 = load ptr, ptr %7, align 8, !tbaa !9
  %486 = load ptr, ptr %7, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.message, ptr %486, i32 0, i32 20
  %488 = load i32, ptr %487, align 4, !tbaa !36
  %489 = load ptr, ptr %9, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.message, ptr %489, i32 0, i32 20
  %491 = load i32, ptr %490, align 4, !tbaa !36
  %492 = call i32 @check_num_eq(ptr noundef %485, ptr noundef @.str.191, i32 noundef %488, i32 noundef %491)
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %495, label %494

494:                                              ; preds = %484
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

495:                                              ; preds = %484
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %496

496:                                              ; preds = %525, %495
  %497 = load i32, ptr %8, align 4, !tbaa !5
  %498 = load ptr, ptr %9, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.message, ptr %498, i32 0, i32 19
  %500 = load i32, ptr %499, align 8, !tbaa !37
  %501 = icmp slt i32 %497, %500
  br i1 %501, label %502, label %505

502:                                              ; preds = %496
  %503 = load i32, ptr %8, align 4, !tbaa !5
  %504 = icmp slt i32 %503, 16
  br label %505

505:                                              ; preds = %502, %496
  %506 = phi i1 [ false, %496 ], [ %504, %502 ]
  br i1 %506, label %507, label %528

507:                                              ; preds = %505
  %508 = load ptr, ptr %7, align 8, !tbaa !9
  %509 = load ptr, ptr %7, align 8, !tbaa !9
  %510 = getelementptr inbounds %struct.message, ptr %509, i32 0, i32 21
  %511 = load i32, ptr %8, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds [16 x i32], ptr %510, i64 0, i64 %512
  %514 = load i32, ptr %513, align 4, !tbaa !5
  %515 = load ptr, ptr %9, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.message, ptr %515, i32 0, i32 21
  %517 = load i32, ptr %8, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds [16 x i32], ptr %516, i64 0, i64 %518
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call i32 @check_num_eq(ptr noundef %508, ptr noundef @.str.193, i32 noundef %514, i32 noundef %520)
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %524, label %523

523:                                              ; preds = %507
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

524:                                              ; preds = %507
  br label %525

525:                                              ; preds = %524
  %526 = load i32, ptr %8, align 4, !tbaa !5
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %8, align 4, !tbaa !5
  br label %496, !llvm.loop !38

528:                                              ; preds = %505
  br label %529

529:                                              ; preds = %528, %468
  %530 = load ptr, ptr %7, align 8, !tbaa !9
  %531 = load ptr, ptr %7, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.message, ptr %531, i32 0, i32 15
  %533 = load i32, ptr %532, align 4, !tbaa !40
  %534 = load ptr, ptr %9, align 8, !tbaa !9
  %535 = getelementptr inbounds %struct.message, ptr %534, i32 0, i32 15
  %536 = load i32, ptr %535, align 4, !tbaa !40
  %537 = call i32 @check_num_eq(ptr noundef %530, ptr noundef @.str.194, i32 noundef %533, i32 noundef %536)
  %538 = icmp ne i32 %537, 0
  br i1 %538, label %540, label %539

539:                                              ; preds = %529
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %608

540:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %541

541:                                              ; preds = %588, %540
  %542 = load i32, ptr %8, align 4, !tbaa !5
  %543 = load ptr, ptr %9, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.message, ptr %543, i32 0, i32 15
  %545 = load i32, ptr %544, align 4, !tbaa !40
  %546 = icmp slt i32 %542, %545
  br i1 %546, label %547, label %591

547:                                              ; preds = %541
  %548 = load ptr, ptr %7, align 8, !tbaa !9
  %549 = load ptr, ptr %7, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.message, ptr %549, i32 0, i32 17
  %551 = load i32, ptr %8, align 4, !tbaa !5
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %550, i64 0, i64 %552
  %554 = getelementptr inbounds [2 x [2048 x i8]], ptr %553, i64 0, i64 0
  %555 = getelementptr inbounds [2048 x i8], ptr %554, i64 0, i64 0
  %556 = load ptr, ptr %9, align 8, !tbaa !9
  %557 = getelementptr inbounds %struct.message, ptr %556, i32 0, i32 17
  %558 = load i32, ptr %8, align 4, !tbaa !5
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %557, i64 0, i64 %559
  %561 = getelementptr inbounds [2 x [2048 x i8]], ptr %560, i64 0, i64 0
  %562 = getelementptr inbounds [2048 x i8], ptr %561, i64 0, i64 0
  %563 = call i32 @check_str_eq(ptr noundef %548, ptr noundef @.str.195, ptr noundef %555, ptr noundef %562)
  store i32 %563, ptr %17, align 4, !tbaa !5
  %564 = load i32, ptr %17, align 4, !tbaa !5
  %565 = icmp ne i32 %564, 0
  br i1 %565, label %567, label %566

566:                                              ; preds = %547
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %607

567:                                              ; preds = %547
  %568 = load ptr, ptr %7, align 8, !tbaa !9
  %569 = load ptr, ptr %7, align 8, !tbaa !9
  %570 = getelementptr inbounds %struct.message, ptr %569, i32 0, i32 17
  %571 = load i32, ptr %8, align 4, !tbaa !5
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %570, i64 0, i64 %572
  %574 = getelementptr inbounds [2 x [2048 x i8]], ptr %573, i64 0, i64 1
  %575 = getelementptr inbounds [2048 x i8], ptr %574, i64 0, i64 0
  %576 = load ptr, ptr %9, align 8, !tbaa !9
  %577 = getelementptr inbounds %struct.message, ptr %576, i32 0, i32 17
  %578 = load i32, ptr %8, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %577, i64 0, i64 %579
  %581 = getelementptr inbounds [2 x [2048 x i8]], ptr %580, i64 0, i64 1
  %582 = getelementptr inbounds [2048 x i8], ptr %581, i64 0, i64 0
  %583 = call i32 @check_str_eq(ptr noundef %568, ptr noundef @.str.196, ptr noundef %575, ptr noundef %582)
  store i32 %583, ptr %17, align 4, !tbaa !5
  %584 = load i32, ptr %17, align 4, !tbaa !5
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %587, label %586

586:                                              ; preds = %567
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %607

587:                                              ; preds = %567
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr %8, align 4, !tbaa !5
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %8, align 4, !tbaa !5
  br label %541, !llvm.loop !41

591:                                              ; preds = %541
  %592 = load i32, ptr %6, align 4, !tbaa !5
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %606, label %594

594:                                              ; preds = %591
  %595 = load ptr, ptr %7, align 8, !tbaa !9
  %596 = load ptr, ptr %7, align 8, !tbaa !9
  %597 = getelementptr inbounds %struct.message, ptr %596, i32 0, i32 22
  %598 = load ptr, ptr %597, align 8, !tbaa !42
  %599 = load ptr, ptr %9, align 8, !tbaa !9
  %600 = getelementptr inbounds %struct.message, ptr %599, i32 0, i32 22
  %601 = load ptr, ptr %600, align 8, !tbaa !42
  %602 = call i32 @check_str_eq(ptr noundef %595, ptr noundef @.str.197, ptr noundef %598, ptr noundef %601)
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %605, label %604

604:                                              ; preds = %594
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %607

605:                                              ; preds = %594
  br label %606

606:                                              ; preds = %605, %591
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %607

607:                                              ; preds = %606, %604, %586, %566
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %608

608:                                              ; preds = %607, %539, %523, %494, %462, %450, %420, %150, %117, %106, %84, %73, %61, %45, %32
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  %609 = load i32, ptr %4, align 4
  ret i32 %609
}

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @check_num_eq(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @check_str_eq(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #5

declare i32 @http_parser_parse_url(ptr noundef, i64 noundef, i32 noundef, ptr noundef) #6

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !14, i64 65688}
!12 = !{!"message", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 20, !6, i64 24, !7, i64 28, !7, i64 2076, !7, i64 4124, !7, i64 6172, !7, i64 8220, !7, i64 10268, !13, i64 12320, !10, i64 12328, !10, i64 12336, !14, i64 12344, !6, i64 12348, !6, i64 12352, !7, i64 12356, !6, i64 65604, !6, i64 65608, !6, i64 65612, !7, i64 65616, !10, i64 65680, !14, i64 65688, !14, i64 65690, !6, i64 65692, !6, i64 65696, !6, i64 65700, !6, i64 65704, !6, i64 65708, !6, i64 65712}
!13 = !{!"long", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!12, !14, i64 65690}
!16 = !{!12, !6, i64 16}
!17 = !{!12, !6, i64 20}
!18 = !{!12, !6, i64 24}
!19 = !{!12, !6, i64 65704}
!20 = !{!12, !6, i64 65604}
!21 = !{!12, !6, i64 65708}
!22 = !{!12, !6, i64 65692}
!23 = !{!12, !6, i64 65696}
!24 = !{!12, !6, i64 65700}
!25 = !{!7, !7, i64 0}
!26 = !{!12, !10, i64 12328}
!27 = !{!28, !14, i64 0}
!28 = !{!"http_parser_url", !14, i64 0, !14, i64 2, !7, i64 4}
!29 = !{!30, !14, i64 0}
!30 = !{!"", !14, i64 0, !14, i64 2}
!31 = !{!30, !14, i64 2}
!32 = !{!12, !10, i64 12336}
!33 = !{!28, !14, i64 2}
!34 = !{!12, !14, i64 12344}
!35 = !{!12, !13, i64 12320}
!36 = !{!12, !6, i64 65612}
!37 = !{!12, !6, i64 65608}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = !{!12, !6, i64 12348}
!41 = distinct !{!41, !39}
!42 = !{!12, !10, i64 65680}


; 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.message = type { ptr, ptr, i32, i32, i32, [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], i64, ptr, ptr, i16, i32, i32, [13 x [2 x [2048 x i8]]], i32, i32, i32, [16 x i32], ptr, i16, i16, i32, i32, i32, i32, i32, i32 }
%struct.http_parser_url = type { i16, i16, [7 x %struct.anon] }
%struct.anon = type { i16, i16 }

@.str.151 = external hidden unnamed_addr constant [76 x i8], align 1
@messages = external hidden global [5 x %struct.message], align 16
@stderr = external local_unnamed_addr global ptr, align 8
@.str.170 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__.message_eq = external hidden unnamed_addr constant [49 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [8 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @message_eq(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_unnamed_addr #4 {
  %4 = alloca %struct.http_parser_url, align 2
  %5 = alloca [256 x i8], align 16
  %6 = alloca [256 x i8], align 16
  %7 = alloca [256 x i8], align 16
  %8 = alloca [256 x i8], align 16
  %9 = alloca [256 x i8], align 16
  %10 = sext i32 %0 to i64
  %11 = getelementptr inbounds [5 x %struct.message], ptr @messages, i64 0, i64 %10
  %12 = getelementptr inbounds i8, ptr %2, i64 65688
  %13 = load i16, ptr %12, align 8, !tbaa !5
  %14 = zext i16 %13 to i32
  %15 = getelementptr inbounds i8, ptr %11, i64 65688
  %16 = load i16, ptr %15, align 8, !tbaa !5
  %17 = zext i16 %16 to i32
  %18 = tail call i32 @check_num_eq(ptr noundef %2, ptr noundef nonnull @.str.170, i32 noundef %14, i32 noundef %17)
  %.not = icmp eq i32 %18, 0
  br i1 %.not, label %.loopexit, label %19

19:                                               ; preds = %3
  %20 = getelementptr inbounds i8, ptr %2, i64 65690
  %21 = load i16, ptr %20, align 2, !tbaa !13
  %22 = zext i16 %21 to i32
  %23 = getelementptr inbounds i8, ptr %11, i64 65690
  %24 = load i16, ptr %23, align 2, !tbaa !13
  %25 = zext i16 %24 to i32
  %26 = tail call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.171, i32 noundef %22, i32 noundef %25)
  %.not112 = icmp eq i32 %26, 0
  br i1 %.not112, label %.loopexit, label %27

27:                                               ; preds = %19
  %28 = getelementptr inbounds i8, ptr %2, i64 16
  %29 = load i32, ptr %28, align 8, !tbaa !14
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %37

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %2, i64 20
  %33 = load i32, ptr %32, align 4, !tbaa !15
  %34 = getelementptr inbounds i8, ptr %11, i64 20
  %35 = load i32, ptr %34, align 4, !tbaa !15
  %36 = tail call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.172, i32 noundef %33, i32 noundef %35)
  %.not116 = icmp eq i32 %36, 0
  br i1 %.not116, label %.loopexit, label %51

37:                                               ; preds = %27
  %38 = getelementptr inbounds i8, ptr %2, i64 24
  %39 = load i32, ptr %38, align 8, !tbaa !16
  %40 = getelementptr inbounds i8, ptr %11, i64 24
  %41 = load i32, ptr %40, align 8, !tbaa !16
  %42 = tail call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.173, i32 noundef %39, i32 noundef %41)
  %.not113 = icmp eq i32 %42, 0
  br i1 %.not113, label %.loopexit, label %43

43:                                               ; preds = %37
  %44 = getelementptr inbounds i8, ptr %2, i64 28
  %45 = getelementptr inbounds i8, ptr %11, i64 28
  %46 = tail call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.174, ptr noundef nonnull %44, ptr noundef nonnull %45)
  %.not114 = icmp eq i32 %46, 0
  br i1 %.not114, label %.loopexit, label %47

47:                                               ; preds = %43
  %48 = getelementptr inbounds i8, ptr %11, i64 65704
  %49 = load i32, ptr %48, align 8, !tbaa !17
  %.not115 = icmp eq i32 %49, 0
  br i1 %.not115, label %50, label %51

50:                                               ; preds = %47
  tail call void @__assert_fail(ptr noundef nonnull @.str.175, ptr noundef nonnull @.str.151, i32 noundef 2659, ptr noundef nonnull @__PRETTY_FUNCTION__.message_eq) #8
  unreachable

51:                                               ; preds = %47, %31
  %.not117 = icmp eq i32 %1, 0
  br i1 %.not117, label %52, label %64

52:                                               ; preds = %51
  %53 = getelementptr inbounds i8, ptr %2, i64 65604
  %54 = load i32, ptr %53, align 4, !tbaa !18
  %55 = getelementptr inbounds i8, ptr %11, i64 65604
  %56 = load i32, ptr %55, align 4, !tbaa !18
  %57 = tail call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.176, i32 noundef %54, i32 noundef %56)
  %.not118 = icmp eq i32 %57, 0
  br i1 %.not118, label %.loopexit, label %58

58:                                               ; preds = %52
  %59 = getelementptr inbounds i8, ptr %2, i64 65708
  %60 = load i32, ptr %59, align 4, !tbaa !19
  %61 = getelementptr inbounds i8, ptr %11, i64 65708
  %62 = load i32, ptr %61, align 4, !tbaa !19
  %63 = tail call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.177, i32 noundef %60, i32 noundef %62)
  %.not119 = icmp eq i32 %63, 0
  br i1 %.not119, label %.loopexit, label %64

64:                                               ; preds = %58, %51
  %65 = getelementptr inbounds i8, ptr %11, i64 65692
  %66 = load i32, ptr %65, align 4, !tbaa !20
  %.not120 = icmp eq i32 %66, 0
  br i1 %.not120, label %67, label %68

67:                                               ; preds = %64
  tail call void @__assert_fail(ptr noundef nonnull @.str.178, ptr noundef nonnull @.str.151, i32 noundef 2667, ptr noundef nonnull @__PRETTY_FUNCTION__.message_eq) #8
  unreachable

68:                                               ; preds = %64
  %69 = getelementptr inbounds i8, ptr %11, i64 65696
  %70 = load i32, ptr %69, align 8, !tbaa !21
  %.not121 = icmp eq i32 %70, 0
  br i1 %.not121, label %71, label %72

71:                                               ; preds = %68
  tail call void @__assert_fail(ptr noundef nonnull @.str.179, ptr noundef nonnull @.str.151, i32 noundef 2668, ptr noundef nonnull @__PRETTY_FUNCTION__.message_eq) #8
  unreachable

72:                                               ; preds = %68
  %73 = getelementptr inbounds i8, ptr %11, i64 65700
  %74 = load i32, ptr %73, align 4, !tbaa !22
  %.not122 = icmp eq i32 %74, 0
  br i1 %.not122, label %75, label %76

75:                                               ; preds = %72
  tail call void @__assert_fail(ptr noundef nonnull @.str.180, ptr noundef nonnull @.str.151, i32 noundef 2669, ptr noundef nonnull @__PRETTY_FUNCTION__.message_eq) #8
  unreachable

76:                                               ; preds = %72
  %77 = getelementptr inbounds i8, ptr %2, i64 4124
  %78 = getelementptr inbounds i8, ptr %11, i64 4124
  %79 = tail call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.181, ptr noundef nonnull %77, ptr noundef nonnull %78)
  %.not123 = icmp eq i32 %79, 0
  br i1 %.not123, label %.loopexit, label %80

80:                                               ; preds = %76
  %81 = load i8, ptr %78, align 4, !tbaa !23
  %.not124 = icmp eq i8 %81, 0
  br i1 %.not124, label %183, label %82

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %11, i64 20
  %84 = load i32, ptr %83, align 4, !tbaa !15
  %.not125 = icmp eq i32 %84, 5
  br i1 %.not125, label %183, label %85

85:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  %86 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %78) #10
  %87 = call i32 @http_parser_parse_url(ptr noundef nonnull %78, i64 noundef %86, i32 noundef 0, ptr noundef nonnull %4) #9
  %.not126 = icmp eq i32 %87, 0
  br i1 %.not126, label %91, label %88

88:                                               ; preds = %85
  %89 = load ptr, ptr @stderr, align 8, !tbaa !24
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef nonnull @.str.182, ptr noundef nonnull %78) #11
  call void @abort() #8
  unreachable

91:                                               ; preds = %85
  %92 = getelementptr inbounds i8, ptr %2, i64 12328
  %93 = load ptr, ptr %92, align 8, !tbaa !25
  %.not127 = icmp eq ptr %93, null
  br i1 %.not127, label %109, label %94

94:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #9
  %95 = load i16, ptr %4, align 2, !tbaa !26
  %96 = and i16 %95, 2
  %.not128 = icmp eq i16 %96, 0
  br i1 %.not128, label %106, label %97

97:                                               ; preds = %94
  %98 = getelementptr inbounds i8, ptr %4, i64 8
  %99 = load i16, ptr %98, align 2, !tbaa !28
  %100 = zext i16 %99 to i64
  %101 = getelementptr inbounds i8, ptr %78, i64 %100
  %102 = getelementptr inbounds i8, ptr %4, i64 10
  %103 = load i16, ptr %102, align 2, !tbaa !30
  %104 = zext i16 %103 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %5, ptr nonnull align 1 %101, i64 %104, i1 false)
  %105 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %104
  store i8 0, ptr %105, align 1, !tbaa !23
  br label %107

106:                                              ; preds = %94
  store i8 0, ptr %5, align 16, !tbaa !23
  br label %107

107:                                              ; preds = %106, %97
  %108 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.183, ptr noundef nonnull %93, ptr noundef nonnull %5)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #9
  br label %109

109:                                              ; preds = %107, %91
  %110 = getelementptr inbounds i8, ptr %2, i64 12336
  %111 = load ptr, ptr %110, align 8, !tbaa !31
  %.not129 = icmp eq ptr %111, null
  br i1 %.not129, label %127, label %112

112:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %6) #9
  %113 = load i16, ptr %4, align 2, !tbaa !26
  %114 = and i16 %113, 64
  %.not130 = icmp eq i16 %114, 0
  br i1 %.not130, label %124, label %115

115:                                              ; preds = %112
  %116 = getelementptr inbounds i8, ptr %4, i64 28
  %117 = load i16, ptr %116, align 2, !tbaa !28
  %118 = zext i16 %117 to i64
  %119 = getelementptr inbounds i8, ptr %78, i64 %118
  %120 = getelementptr inbounds i8, ptr %4, i64 30
  %121 = load i16, ptr %120, align 2, !tbaa !30
  %122 = zext i16 %121 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull align 1 %119, i64 %122, i1 false)
  %123 = getelementptr inbounds [256 x i8], ptr %6, i64 0, i64 %122
  store i8 0, ptr %123, align 1, !tbaa !23
  br label %125

124:                                              ; preds = %112
  store i8 0, ptr %6, align 16, !tbaa !23
  br label %125

125:                                              ; preds = %124, %115
  %126 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.184, ptr noundef nonnull %111, ptr noundef nonnull %6)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) #9
  br label %127

127:                                              ; preds = %125, %109
  %128 = load i16, ptr %4, align 2, !tbaa !26
  %129 = and i16 %128, 4
  %.not131 = icmp eq i16 %129, 0
  %130 = getelementptr inbounds i8, ptr %4, i64 2
  %131 = load i16, ptr %130, align 2
  %narrow = select i1 %.not131, i16 0, i16 %131
  %132 = getelementptr inbounds i8, ptr %11, i64 12344
  store i16 %narrow, ptr %132, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %7) #9
  %133 = and i16 %128, 16
  %.not132 = icmp eq i16 %133, 0
  br i1 %.not132, label %143, label %134

134:                                              ; preds = %127
  %135 = getelementptr inbounds i8, ptr %4, i64 20
  %136 = load i16, ptr %135, align 2, !tbaa !28
  %137 = zext i16 %136 to i64
  %138 = getelementptr inbounds i8, ptr %78, i64 %137
  %139 = getelementptr inbounds i8, ptr %4, i64 22
  %140 = load i16, ptr %139, align 2, !tbaa !30
  %141 = zext i16 %140 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %7, ptr nonnull align 1 %138, i64 %141, i1 false)
  %142 = getelementptr inbounds [256 x i8], ptr %7, i64 0, i64 %141
  store i8 0, ptr %142, align 1, !tbaa !23
  br label %144

143:                                              ; preds = %127
  store i8 0, ptr %7, align 16, !tbaa !23
  br label %144

144:                                              ; preds = %143, %134
  %145 = getelementptr inbounds i8, ptr %2, i64 8220
  %146 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.185, ptr noundef nonnull %145, ptr noundef nonnull %7)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %8) #9
  %147 = load i16, ptr %4, align 2, !tbaa !26
  %148 = and i16 %147, 32
  %.not133 = icmp eq i16 %148, 0
  br i1 %.not133, label %158, label %149

149:                                              ; preds = %144
  %150 = getelementptr inbounds i8, ptr %4, i64 24
  %151 = load i16, ptr %150, align 2, !tbaa !28
  %152 = zext i16 %151 to i64
  %153 = getelementptr inbounds i8, ptr %78, i64 %152
  %154 = getelementptr inbounds i8, ptr %4, i64 26
  %155 = load i16, ptr %154, align 2, !tbaa !30
  %156 = zext i16 %155 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %8, ptr nonnull align 1 %153, i64 %156, i1 false)
  %157 = getelementptr inbounds [256 x i8], ptr %8, i64 0, i64 %156
  store i8 0, ptr %157, align 1, !tbaa !23
  br label %159

158:                                              ; preds = %144
  store i8 0, ptr %8, align 16, !tbaa !23
  br label %159

159:                                              ; preds = %158, %149
  %160 = getelementptr inbounds i8, ptr %2, i64 6172
  %161 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.186, ptr noundef nonnull %160, ptr noundef nonnull %8)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %9) #9
  %162 = load i16, ptr %4, align 2, !tbaa !26
  %163 = and i16 %162, 8
  %.not134 = icmp eq i16 %163, 0
  br i1 %.not134, label %173, label %164

164:                                              ; preds = %159
  %165 = getelementptr inbounds i8, ptr %4, i64 16
  %166 = load i16, ptr %165, align 2, !tbaa !28
  %167 = zext i16 %166 to i64
  %168 = getelementptr inbounds i8, ptr %78, i64 %167
  %169 = getelementptr inbounds i8, ptr %4, i64 18
  %170 = load i16, ptr %169, align 2, !tbaa !30
  %171 = zext i16 %170 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %9, ptr nonnull align 1 %168, i64 %171, i1 false)
  %172 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %171
  store i8 0, ptr %172, align 1, !tbaa !23
  br label %174

173:                                              ; preds = %159
  store i8 0, ptr %9, align 16, !tbaa !23
  br label %174

174:                                              ; preds = %173, %164
  %175 = getelementptr inbounds i8, ptr %2, i64 2076
  %176 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.187, ptr noundef nonnull %175, ptr noundef nonnull %9)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) #9
  %177 = getelementptr inbounds i8, ptr %2, i64 12344
  %178 = load i16, ptr %177, align 8, !tbaa !32
  %179 = zext i16 %178 to i32
  %180 = load i16, ptr %132, align 8, !tbaa !32
  %181 = zext i16 %180 to i32
  %182 = call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.188, i32 noundef %179, i32 noundef %181)
  %.not135.not = icmp eq i32 %182, 0
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br i1 %.not135.not, label %.loopexit, label %183

183:                                              ; preds = %174, %82, %80
  br i1 %.not117, label %184, label %197

184:                                              ; preds = %183
  %185 = getelementptr inbounds i8, ptr %2, i64 12320
  %186 = load i64, ptr %185, align 8, !tbaa !33
  %.not136 = icmp eq i64 %186, 0
  br i1 %.not136, label %193, label %187

187:                                              ; preds = %184
  %188 = trunc i64 %186 to i32
  %189 = getelementptr inbounds i8, ptr %11, i64 12320
  %190 = load i64, ptr %189, align 8, !tbaa !33
  %191 = trunc i64 %190 to i32
  %192 = call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.189, i32 noundef %188, i32 noundef %191)
  %.not138 = icmp eq i32 %192, 0
  br i1 %.not138, label %.loopexit, label %205

193:                                              ; preds = %184
  %194 = getelementptr inbounds i8, ptr %2, i64 10268
  %195 = getelementptr inbounds i8, ptr %11, i64 10268
  %196 = call i32 @check_str_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.190, ptr noundef nonnull %194, ptr noundef nonnull %195)
  %.not137 = icmp eq i32 %196, 0
  br i1 %.not137, label %.loopexit, label %205

197:                                              ; preds = %183
  %198 = getelementptr inbounds i8, ptr %11, i64 12320
  %199 = load i64, ptr %198, align 8, !tbaa !33
  %200 = trunc i64 %199 to i32
  %201 = call i32 @check_num_eq(ptr noundef nonnull %11, ptr noundef nonnull @.str.189, i32 noundef 0, i32 noundef %200)
  %202 = getelementptr inbounds i8, ptr %11, i64 65612
  %203 = load i32, ptr %202, align 4, !tbaa !34
  %204 = call i32 @check_num_eq(ptr noundef nonnull %11, ptr noundef nonnull @.str.191, i32 noundef 0, i32 noundef %203)
  br label %.loopexit146

205:                                              ; preds = %187, %193
  %206 = getelementptr inbounds i8, ptr %11, i64 65608
  %207 = load i32, ptr %206, align 8, !tbaa !35
  %208 = getelementptr inbounds i8, ptr %11, i64 65612
  %209 = load i32, ptr %208, align 4, !tbaa !34
  %210 = icmp eq i32 %207, %209
  br i1 %210, label %212, label %211

211:                                              ; preds = %205
  call void @__assert_fail(ptr noundef nonnull @.str.192, ptr noundef nonnull @.str.151, i32 noundef 2714, ptr noundef nonnull @__PRETTY_FUNCTION__.message_eq) #8
  unreachable

212:                                              ; preds = %205
  %213 = getelementptr inbounds i8, ptr %2, i64 65612
  %214 = load i32, ptr %213, align 4, !tbaa !34
  %215 = call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.191, i32 noundef %214, i32 noundef %207)
  %.not139 = icmp eq i32 %215, 0
  br i1 %.not139, label %.loopexit, label %.preheader145

.preheader145:                                    ; preds = %212
  %216 = load i32, ptr %206, align 8, !tbaa !35
  %217 = icmp sgt i32 %216, 0
  br i1 %217, label %.lr.ph, label %.loopexit146

.lr.ph:                                           ; preds = %.preheader145
  %218 = getelementptr inbounds i8, ptr %2, i64 65616
  %219 = getelementptr inbounds i8, ptr %11, i64 65616
  br label %226

220:                                              ; preds = %226
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %221 = load i32, ptr %206, align 8, !tbaa !35
  %222 = sext i32 %221 to i64
  %223 = icmp slt i64 %indvars.iv.next, %222
  %224 = icmp ult i64 %indvars.iv, 15
  %225 = and i1 %224, %223
  br i1 %225, label %226, label %.loopexit146, !llvm.loop !36

226:                                              ; preds = %.lr.ph, %220
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %220 ]
  %227 = getelementptr inbounds [16 x i32], ptr %218, i64 0, i64 %indvars.iv
  %228 = load i32, ptr %227, align 4, !tbaa !38
  %229 = getelementptr inbounds [16 x i32], ptr %219, i64 0, i64 %indvars.iv
  %230 = load i32, ptr %229, align 4, !tbaa !38
  %231 = call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.193, i32 noundef %228, i32 noundef %230)
  %.not140 = icmp eq i32 %231, 0
  br i1 %.not140, label %.loopexit, label %220

.loopexit146:                                     ; preds = %220, %.preheader145, %197
  %232 = getelementptr inbounds i8, ptr %2, i64 12348
  %233 = load i32, ptr %232, align 4, !tbaa !39
  %234 = getelementptr inbounds i8, ptr %11, i64 12348
  %235 = load i32, ptr %234, align 4, !tbaa !39
  %236 = call i32 @check_num_eq(ptr noundef nonnull %2, ptr noundef nonnull @.str.194, i32 noundef %233, i32 noundef %235)
  %.not141 = icmp eq i32 %236, 0
  br i1 %.not141, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %.loopexit146
  %237 = load i32, ptr %234, align 4, !tbaa !39
  %238 = icmp sgt i32 %237, 0
  br i1 %238, label %.lr.ph150, label %._crit_edge

.lr.ph150:                                        ; preds = %.preheader
  %239 = getelementptr inbounds i8, ptr %2, i64 12356
  %240 = getelementptr inbounds i8, ptr %11, i64 12356
  br label %245

241:                                              ; preds = %249
  %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1
  %242 = load i32, ptr %234, align 4, !tbaa !39
  %243 = sext i32 %242 to i64
  %244 = icmp slt i64 %indvars.iv.next154, %243
  br i1 %244, label %245, label %._crit_edge, !llvm.loop !40

245:                                              ; preds = %.lr.ph150, %241
  %indvars.iv153 = phi i64 [ 0, %.lr.ph150 ], [ %indvars.iv.next154, %241 ]
  %246 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %239, i64 0, i64 %indvars.iv153
  %247 = getelementptr inbounds [13 x [2 x [2048 x i8]]], ptr %240, i64 0, i64 %indvars.iv153
  %248 = call i32 @check_str_eq(ptr noundef %2, ptr noundef nonnull @.str.195, ptr noundef nonnull %246, ptr noundef nonnull %247)
  %.not143 = icmp eq i32 %248, 0
  br i1 %.not143, label %.loopexit, label %249

249:                                              ; preds = %245
  %250 = getelementptr inbounds i8, ptr %246, i64 2048
  %251 = getelementptr inbounds i8, ptr %247, i64 2048
  %252 = call i32 @check_str_eq(ptr noundef %2, ptr noundef nonnull @.str.196, ptr noundef nonnull %250, ptr noundef nonnull %251)
  %.not144 = icmp eq i32 %252, 0
  br i1 %.not144, label %.loopexit, label %241

._crit_edge:                                      ; preds = %241, %.preheader
  br i1 %.not117, label %253, label %259

253:                                              ; preds = %._crit_edge
  %254 = getelementptr inbounds i8, ptr %2, i64 65680
  %255 = load ptr, ptr %254, align 8, !tbaa !41
  %256 = getelementptr inbounds i8, ptr %11, i64 65680
  %257 = load ptr, ptr %256, align 8, !tbaa !41
  %258 = call i32 @check_str_eq(ptr noundef %2, ptr noundef nonnull @.str.197, ptr noundef %255, ptr noundef %257)
  %.not142 = icmp eq i32 %258, 0
  br i1 %.not142, label %.loopexit, label %259

259:                                              ; preds = %253, %._crit_edge
  br label %.loopexit

.loopexit:                                        ; preds = %226, %245, %249, %259, %253, %.loopexit146, %212, %193, %187, %76, %58, %52, %43, %37, %31, %19, %3, %174
  %.2 = phi i32 [ 0, %174 ], [ 0, %3 ], [ 0, %19 ], [ 0, %31 ], [ 0, %37 ], [ 0, %43 ], [ 0, %52 ], [ 0, %58 ], [ 0, %76 ], [ 0, %187 ], [ 0, %193 ], [ 0, %212 ], [ 0, %.loopexit146 ], [ 1, %259 ], [ 0, %253 ], [ 0, %249 ], [ 0, %245 ], [ 0, %226 ]
  ret i32 %.2
}

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @check_num_eq(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @check_str_eq(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @http_parser_parse_url(ptr noundef, i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 65688}
!6 = !{!"message", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !8, i64 28, !8, i64 2076, !8, i64 4124, !8, i64 6172, !8, i64 8220, !8, i64 10268, !11, i64 12320, !7, i64 12328, !7, i64 12336, !12, i64 12344, !10, i64 12348, !10, i64 12352, !8, i64 12356, !10, i64 65604, !10, i64 65608, !10, i64 65612, !8, i64 65616, !7, i64 65680, !12, i64 65688, !12, i64 65690, !10, i64 65692, !10, i64 65696, !10, i64 65700, !10, i64 65704, !10, i64 65708, !10, i64 65712}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"short", !8, i64 0}
!13 = !{!6, !12, i64 65690}
!14 = !{!6, !10, i64 16}
!15 = !{!6, !10, i64 20}
!16 = !{!6, !10, i64 24}
!17 = !{!6, !10, i64 65704}
!18 = !{!6, !10, i64 65604}
!19 = !{!6, !10, i64 65708}
!20 = !{!6, !10, i64 65692}
!21 = !{!6, !10, i64 65696}
!22 = !{!6, !10, i64 65700}
!23 = !{!8, !8, i64 0}
!24 = !{!7, !7, i64 0}
!25 = !{!6, !7, i64 12328}
!26 = !{!27, !12, i64 0}
!27 = !{!"http_parser_url", !12, i64 0, !12, i64 2, !8, i64 4}
!28 = !{!29, !12, i64 0}
!29 = !{!"", !12, i64 0, !12, i64 2}
!30 = !{!29, !12, i64 2}
!31 = !{!6, !7, i64 12336}
!32 = !{!6, !12, i64 12344}
!33 = !{!6, !11, i64 12320}
!34 = !{!6, !10, i64 65612}
!35 = !{!6, !10, i64 65608}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!10, !10, i64 0}
!39 = !{!6, !10, i64 12348}
!40 = distinct !{!40, !37}
!41 = !{!6, !7, i64 65680}


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