; LLVM IR from nickmqb/muon :: bootstrap/mu.ll_Parser (parseNamespaceTail__)

; 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.string__ = type { ptr, i32 }
%struct.tag_____IAllocator__ = type { ptr, ptr, ptr, ptr }
%struct.tag_____Error__ = type { ptr, %struct.tag_____IntRange__, %struct.string__ }
%struct.tag_____IntRange__ = type { i32, i32 }
%struct.tag_____NamespaceDef__ = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr }
%struct.tag_____List__Node____ = type { ptr, i32, i32 }
%struct.tag_____List__Ptr__Token______ = type { ptr, i32, i32 }
%struct.Node__ = type { i32, ptr }
%struct.tag_____ParserState__ = type { %struct.string__, i32, ptr, ptr, i32, i32, i32, i32, i32, ptr, %struct.tag_____IntRange__, i32, i32, ptr, i32, ptr, ptr, ptr }
%struct.tag_____Token__ = type { i32, %struct.string__, %struct.tag_____IntRange__, %struct.tag_____IntRange__, i32 }

@mu_____string336 = external dso_local global %struct.string__, align 8
@mu_____string160 = external dso_local global %struct.string__, align 8
@mu_____string75 = external dso_local global %struct.string__, align 8
@mu_____string340 = external dso_local global %struct.string__, align 8
@mu_____string339 = external dso_local global %struct.string__, align 8
@mu_____string335 = external dso_local global %struct.string__, align 8
@mu_____string342 = external dso_local global %struct.string__, align 8
@mu_____string338 = external dso_local global %struct.string__, align 8
@mu_____string315 = external dso_local global %struct.string__, align 8
@mu_____string74 = external dso_local global %struct.string__, align 8
@mu_____string337 = external dso_local global %struct.string__, align 8
@top_____currentAllocator__ = external dso_local thread_local global %struct.tag_____IAllocator__, align 8

; 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 speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #1

; 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: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

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

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @string__equals__(ptr, i32, ptr, i32) #4

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Error____(ptr noundef, ptr noundef byval(%struct.tag_____Error__) align 8) #4

; Function Attrs: nounwind uwtable
declare dso_local void @Error__at__(ptr dead_on_unwind noalias writable sret(%struct.tag_____Error__) align 8, ptr noundef, i64, ptr, i32) #4

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Ptr__Token______(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Node____(ptr noundef, i32, ptr) #4

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__readToken__(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__badToken__(ptr noundef, ptr, i32) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseOpenBrace__(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__endLine__(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseCloseBrace__(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseEnumMemberTail__(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseFieldTail__(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__tryParseAttributes__(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__parseStaticField__(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__tryParseTypeParams__(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseFunctionTail__(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
define dso_local ptr @Parser__parseNamespaceTail__(ptr noundef %0, ptr noundef %1, ptr noundef %2) #4 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %struct.tag_____NamespaceDef__, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.tag_____List__Node____, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca %struct.tag_____List__Ptr__Token______, align 8
  %18 = alloca i32, align 4
  %19 = alloca %struct.Node__, align 8
  %20 = alloca %struct.Node__, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca ptr, align 8
  %33 = alloca i8, align 1
  %34 = alloca %struct.Node__, align 8
  %35 = alloca %struct.tag_____Error__, align 8
  %36 = alloca %struct.Node__, align 8
  %37 = alloca i8, align 1
  %38 = alloca %struct.Node__, align 8
  %39 = alloca i8, align 1
  %40 = alloca %struct.Node__, align 8
  %41 = alloca i8, align 1
  %42 = alloca %struct.Node__, align 8
  %43 = alloca i8, align 1
  %44 = alloca %struct.Node__, align 8
  %45 = alloca %struct.tag_____Error__, align 8
  %46 = alloca %struct.Node__, align 8
  %47 = alloca i8, align 1
  %48 = alloca i8, align 1
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca %struct.Node__, align 8
  %52 = alloca %struct.Node__, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %53 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %54 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %53, i32 0, i32 1
  %55 = load ptr, ptr %54, align 8, !tbaa !9
  %56 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %57 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %56, i32 0, i32 0
  %58 = load ptr, ptr %57, align 8, !tbaa !11
  %59 = call ptr %55(ptr noundef %58, i64 noundef 88)
  store ptr %59, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %9) #5
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 88, i1 false)
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.tag_____ParserState__, ptr %60, i32 0, i32 2
  %62 = load ptr, ptr %61, align 8, !tbaa !12
  %63 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %9, i32 0, i32 0
  store ptr %62, ptr %63, align 8, !tbaa !17
  %64 = load ptr, ptr %6, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %9, i32 0, i32 1
  store ptr %64, ptr %65, align 8, !tbaa !19
  %66 = load ptr, ptr %7, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %9, i32 0, i32 2
  store ptr %66, ptr %67, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %68 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %69 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %68, i32 0, i32 1
  %70 = load ptr, ptr %69, align 8, !tbaa !9
  %71 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %72 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %71, i32 0, i32 0
  %73 = load ptr, ptr %72, align 8, !tbaa !11
  %74 = call ptr %70(ptr noundef %73, i64 noundef 16)
  store ptr %74, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #5
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 16, i1 false)
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %75, ptr align 8 %11, i64 16, i1 false), !tbaa.struct !21
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %9, i32 0, i32 7
  store ptr %76, ptr %77, align 8, !tbaa !23
  %78 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %78, ptr align 8 %9, i64 88, i1 false), !tbaa.struct !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %79, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  %80 = load ptr, ptr %5, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.tag_____ParserState__, ptr %80, i32 0, i32 3
  %82 = load ptr, ptr %81, align 8, !tbaa !25
  %83 = getelementptr inbounds %struct.tag_____Token__, ptr %82, i32 0, i32 4
  %84 = load i32, ptr %83, align 8, !tbaa !26
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.tag_____ParserState__, ptr %85, i32 0, i32 5
  %87 = load i32, ptr %86, align 4, !tbaa !28
  %88 = icmp sgt i32 %84, %87
  %89 = zext i1 %88 to i32
  %90 = trunc i32 %89 to i8
  store i8 %90, ptr %13, align 1, !tbaa !29
  %91 = load i8, ptr %13, align 1, !tbaa !29
  %92 = icmp ne i8 %91, 0
  br i1 %92, label %93, label %102

93:                                               ; preds = %3
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.tag_____ParserState__, ptr %94, i32 0, i32 3
  %96 = load ptr, ptr %95, align 8, !tbaa !25
  %97 = getelementptr inbounds %struct.tag_____Token__, ptr %96, i32 0, i32 0
  %98 = load i32, ptr %97, align 8, !tbaa !30
  %99 = icmp eq i32 %98, 0
  %100 = zext i1 %99 to i32
  %101 = trunc i32 %100 to i8
  store i8 %101, ptr %13, align 1, !tbaa !29
  br label %102

102:                                              ; preds = %93, %3
  %103 = load i8, ptr %13, align 1, !tbaa !29
  %104 = icmp ne i8 %103, 0
  br i1 %104, label %105, label %174

105:                                              ; preds = %102
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.tag_____ParserState__, ptr %106, i32 0, i32 3
  %108 = load ptr, ptr %107, align 8, !tbaa !25
  %109 = getelementptr inbounds %struct.tag_____Token__, ptr %108, i32 0, i32 1
  %110 = getelementptr inbounds { ptr, i32 }, ptr %109, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8
  %112 = getelementptr inbounds { ptr, i32 }, ptr %109, i32 0, i32 1
  %113 = load i32, ptr %112, align 8
  %114 = load ptr, ptr @mu_____string335, align 8
  %115 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string335, i32 0, i32 1), align 8
  %116 = call zeroext i8 @string__equals__(ptr %111, i32 %113, ptr %114, i32 %115)
  %117 = icmp ne i8 %116, 0
  br i1 %117, label %118, label %127

118:                                              ; preds = %105
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.tag_____ParserState__, ptr %119, i32 0, i32 3
  %121 = load ptr, ptr %120, align 8, !tbaa !25
  %122 = load ptr, ptr %12, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %122, i32 0, i32 3
  store ptr %121, ptr %123, align 8, !tbaa !31
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %124, i32 0, i32 9
  store i32 1, ptr %125, align 8, !tbaa !32
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  call void @Parser__readToken__(ptr noundef %126)
  br label %173

127:                                              ; preds = %105
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.tag_____ParserState__, ptr %128, i32 0, i32 3
  %130 = load ptr, ptr %129, align 8, !tbaa !25
  %131 = getelementptr inbounds %struct.tag_____Token__, ptr %130, i32 0, i32 1
  %132 = getelementptr inbounds { ptr, i32 }, ptr %131, i32 0, i32 0
  %133 = load ptr, ptr %132, align 8
  %134 = getelementptr inbounds { ptr, i32 }, ptr %131, i32 0, i32 1
  %135 = load i32, ptr %134, align 8
  %136 = load ptr, ptr @mu_____string336, align 8
  %137 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string336, i32 0, i32 1), align 8
  %138 = call zeroext i8 @string__equals__(ptr %133, i32 %135, ptr %136, i32 %137)
  %139 = icmp ne i8 %138, 0
  br i1 %139, label %140, label %149

140:                                              ; preds = %127
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.tag_____ParserState__, ptr %141, i32 0, i32 3
  %143 = load ptr, ptr %142, align 8, !tbaa !25
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %144, i32 0, i32 3
  store ptr %143, ptr %145, align 8, !tbaa !31
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %146, i32 0, i32 9
  store i32 2, ptr %147, align 8, !tbaa !32
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  call void @Parser__readToken__(ptr noundef %148)
  br label %172

149:                                              ; preds = %127
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.tag_____ParserState__, ptr %150, i32 0, i32 3
  %152 = load ptr, ptr %151, align 8, !tbaa !25
  %153 = getelementptr inbounds %struct.tag_____Token__, ptr %152, i32 0, i32 1
  %154 = getelementptr inbounds { ptr, i32 }, ptr %153, i32 0, i32 0
  %155 = load ptr, ptr %154, align 8
  %156 = getelementptr inbounds { ptr, i32 }, ptr %153, i32 0, i32 1
  %157 = load i32, ptr %156, align 8
  %158 = load ptr, ptr @mu_____string337, align 8
  %159 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string337, i32 0, i32 1), align 8
  %160 = call zeroext i8 @string__equals__(ptr %155, i32 %157, ptr %158, i32 %159)
  %161 = icmp ne i8 %160, 0
  br i1 %161, label %162, label %171

162:                                              ; preds = %149
  %163 = load ptr, ptr %5, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.tag_____ParserState__, ptr %163, i32 0, i32 3
  %165 = load ptr, ptr %164, align 8, !tbaa !25
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %166, i32 0, i32 3
  store ptr %165, ptr %167, align 8, !tbaa !31
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %168, i32 0, i32 9
  store i32 3, ptr %169, align 8, !tbaa !32
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  call void @Parser__readToken__(ptr noundef %170)
  br label %171

171:                                              ; preds = %162, %149
  br label %172

172:                                              ; preds = %171, %140
  br label %173

173:                                              ; preds = %172, %118
  br label %174

174:                                              ; preds = %173, %102
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = call ptr @Parser__tryParseAttributes__(ptr noundef %175)
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %177, i32 0, i32 4
  store ptr %176, ptr %178, align 8, !tbaa !33
  br label %179

179:                                              ; preds = %233, %174
  br label %180

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.tag_____ParserState__, ptr %181, i32 0, i32 3
  %183 = load ptr, ptr %182, align 8, !tbaa !25
  %184 = getelementptr inbounds %struct.tag_____Token__, ptr %183, i32 0, i32 4
  %185 = load i32, ptr %184, align 8, !tbaa !26
  %186 = icmp eq i32 %185, 2147483647
  %187 = zext i1 %186 to i32
  %188 = trunc i32 %187 to i8
  store i8 %188, ptr %14, align 1, !tbaa !29
  %189 = load i8, ptr %14, align 1, !tbaa !29
  %190 = icmp ne i8 %189, 0
  br i1 %190, label %191, label %200

191:                                              ; preds = %180
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.tag_____ParserState__, ptr %192, i32 0, i32 3
  %194 = load ptr, ptr %193, align 8, !tbaa !25
  %195 = getelementptr inbounds %struct.tag_____Token__, ptr %194, i32 0, i32 0
  %196 = load i32, ptr %195, align 8, !tbaa !30
  %197 = icmp ne i32 %196, 7
  %198 = zext i1 %197 to i32
  %199 = trunc i32 %198 to i8
  store i8 %199, ptr %14, align 1, !tbaa !29
  br label %200

200:                                              ; preds = %191, %180
  %201 = load i8, ptr %14, align 1, !tbaa !29
  %202 = icmp ne i8 %201, 0
  br i1 %202, label %204, label %203

203:                                              ; preds = %200
  store i32 3, ptr %15, align 4
  br label %231

204:                                              ; preds = %200
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %205, i32 0, i32 5
  %207 = load ptr, ptr %206, align 8, !tbaa !34
  %208 = icmp eq ptr %207, null
  br i1 %208, label %209, label %221

209:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %210 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %211 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %210, i32 0, i32 1
  %212 = load ptr, ptr %211, align 8, !tbaa !9
  %213 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %214 = getelementptr inbounds %struct.tag_____IAllocator__, ptr %213, i32 0, i32 0
  %215 = load ptr, ptr %214, align 8, !tbaa !11
  %216 = call ptr %212(ptr noundef %215, i64 noundef 16)
  store ptr %216, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #5
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 16, i1 false)
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %217, ptr align 8 %17, i64 16, i1 false), !tbaa.struct !21
  %218 = load ptr, ptr %16, align 8, !tbaa !5
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %219, i32 0, i32 5
  store ptr %218, ptr %220, align 8, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %221

221:                                              ; preds = %209, %204
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %222, i32 0, i32 5
  %224 = load ptr, ptr %223, align 8, !tbaa !34
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.tag_____ParserState__, ptr %225, i32 0, i32 3
  %227 = load ptr, ptr %226, align 8, !tbaa !25
  call void @List__add__Ptr__Token______(ptr noundef %224, ptr noundef %227)
  %228 = load ptr, ptr %5, align 8, !tbaa !5
  %229 = load ptr, ptr @mu_____string338, align 8
  %230 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string338, i32 0, i32 1), align 8
  call void @Parser__badToken__(ptr noundef %228, ptr %229, i32 %230)
  store i32 0, ptr %15, align 4
  br label %231

231:                                              ; preds = %221, %203
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  %232 = load i32, ptr %15, align 4
  switch i32 %232, label %899 [
    i32 0, label %233
    i32 3, label %234
  ]

233:                                              ; preds = %231
  br label %179

234:                                              ; preds = %231
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %236, i32 0, i32 7
  %238 = load ptr, ptr %237, align 8, !tbaa !23
  %239 = call ptr @Parser__parseOpenBrace__(ptr noundef %235, ptr noundef %238)
  %240 = load ptr, ptr %12, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %240, i32 0, i32 6
  store ptr %239, ptr %241, align 8, !tbaa !35
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.tag_____ParserState__, ptr %242, i32 0, i32 15
  %244 = load ptr, ptr %243, align 8, !tbaa !36
  %245 = icmp ne ptr %244, null
  br i1 %245, label %246, label %253

246:                                              ; preds = %234
  %247 = load ptr, ptr %5, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.tag_____ParserState__, ptr %247, i32 0, i32 15
  %249 = load ptr, ptr %248, align 8, !tbaa !36
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %250, i32 0, i32 8
  store ptr %249, ptr %251, align 8, !tbaa !37
  %252 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %252, ptr %4, align 8
  store i32 1, ptr %15, align 4
  br label %897

253:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %254 = load ptr, ptr %5, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.tag_____ParserState__, ptr %254, i32 0, i32 3
  %256 = load ptr, ptr %255, align 8, !tbaa !25
  %257 = getelementptr inbounds %struct.tag_____Token__, ptr %256, i32 0, i32 4
  %258 = load i32, ptr %257, align 8, !tbaa !26
  store i32 %258, ptr %18, align 4, !tbaa !22
  br label %259

259:                                              ; preds = %890, %253
  br label %260

260:                                              ; preds = %259
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.tag_____ParserState__, ptr %261, i32 0, i32 3
  %263 = load ptr, ptr %262, align 8, !tbaa !25
  %264 = getelementptr inbounds %struct.tag_____Token__, ptr %263, i32 0, i32 4
  %265 = load i32, ptr %264, align 8, !tbaa !26
  %266 = load ptr, ptr %5, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.tag_____ParserState__, ptr %266, i32 0, i32 5
  %268 = load i32, ptr %267, align 4, !tbaa !28
  %269 = icmp sgt i32 %265, %268
  br i1 %269, label %271, label %270

270:                                              ; preds = %260
  br label %891

271:                                              ; preds = %260
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.tag_____ParserState__, ptr %272, i32 0, i32 3
  %274 = load ptr, ptr %273, align 8, !tbaa !25
  %275 = getelementptr inbounds %struct.tag_____Token__, ptr %274, i32 0, i32 0
  %276 = load i32, ptr %275, align 8, !tbaa !30
  %277 = icmp eq i32 %276, 8
  br i1 %277, label %278, label %303

278:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #5
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.tag_____ParserState__, ptr %279, i32 0, i32 3
  %281 = load ptr, ptr %280, align 8, !tbaa !25
  %282 = getelementptr inbounds %struct.Node__, ptr %19, i32 0, i32 1
  store ptr %281, ptr %282, align 8, !tbaa !38
  %283 = getelementptr inbounds %struct.Node__, ptr %19, i32 0, i32 1
  %284 = load ptr, ptr %283, align 8, !tbaa !38
  %285 = icmp ne ptr %284, null
  %286 = zext i1 %285 to i64
  %287 = select i1 %285, i32 21, i32 0
  %288 = getelementptr inbounds %struct.Node__, ptr %19, i32 0, i32 0
  store i32 %287, ptr %288, align 8, !tbaa !40
  %289 = load ptr, ptr %12, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %289, i32 0, i32 7
  %291 = load ptr, ptr %290, align 8, !tbaa !23
  %292 = getelementptr inbounds { i32, ptr }, ptr %19, i32 0, i32 0
  %293 = load i32, ptr %292, align 8
  %294 = getelementptr inbounds { i32, ptr }, ptr %19, i32 0, i32 1
  %295 = load ptr, ptr %294, align 8
  call void @List__add__Node____(ptr noundef %291, i32 %293, ptr %295)
  %296 = load ptr, ptr %5, align 8, !tbaa !5
  %297 = load ptr, ptr @mu_____string315, align 8
  %298 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string315, i32 0, i32 1), align 8
  call void @Parser__badToken__(ptr noundef %296, ptr %297, i32 %298)
  %299 = load ptr, ptr %5, align 8, !tbaa !5
  %300 = load ptr, ptr %12, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %300, i32 0, i32 7
  %302 = load ptr, ptr %301, align 8, !tbaa !23
  call void @Parser__endLine__(ptr noundef %299, ptr noundef %302)
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #5
  br label %890

303:                                              ; preds = %271
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.tag_____ParserState__, ptr %304, i32 0, i32 3
  %306 = load ptr, ptr %305, align 8, !tbaa !25
  %307 = getelementptr inbounds %struct.tag_____Token__, ptr %306, i32 0, i32 4
  %308 = load i32, ptr %307, align 8, !tbaa !26
  %309 = load i32, ptr %18, align 4, !tbaa !22
  %310 = icmp ne i32 %308, %309
  br i1 %310, label %311, label %336

311:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.tag_____ParserState__, ptr %312, i32 0, i32 3
  %314 = load ptr, ptr %313, align 8, !tbaa !25
  %315 = getelementptr inbounds %struct.Node__, ptr %20, i32 0, i32 1
  store ptr %314, ptr %315, align 8, !tbaa !38
  %316 = getelementptr inbounds %struct.Node__, ptr %20, i32 0, i32 1
  %317 = load ptr, ptr %316, align 8, !tbaa !38
  %318 = icmp ne ptr %317, null
  %319 = zext i1 %318 to i64
  %320 = select i1 %318, i32 21, i32 0
  %321 = getelementptr inbounds %struct.Node__, ptr %20, i32 0, i32 0
  store i32 %320, ptr %321, align 8, !tbaa !40
  %322 = load ptr, ptr %12, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %322, i32 0, i32 7
  %324 = load ptr, ptr %323, align 8, !tbaa !23
  %325 = getelementptr inbounds { i32, ptr }, ptr %20, i32 0, i32 0
  %326 = load i32, ptr %325, align 8
  %327 = getelementptr inbounds { i32, ptr }, ptr %20, i32 0, i32 1
  %328 = load ptr, ptr %327, align 8
  call void @List__add__Node____(ptr noundef %324, i32 %326, ptr %328)
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = load ptr, ptr @mu_____string339, align 8
  %331 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string339, i32 0, i32 1), align 8
  call void @Parser__badToken__(ptr noundef %329, ptr %330, i32 %331)
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %333, i32 0, i32 7
  %335 = load ptr, ptr %334, align 8, !tbaa !23
  call void @Parser__endLine__(ptr noundef %332, ptr noundef %335)
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %889

336:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.tag_____ParserState__, ptr %337, i32 0, i32 5
  %339 = load i32, ptr %338, align 4, !tbaa !28
  store i32 %339, ptr %21, align 4, !tbaa !22
  %340 = load ptr, ptr %5, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.tag_____ParserState__, ptr %340, i32 0, i32 3
  %342 = load ptr, ptr %341, align 8, !tbaa !25
  %343 = getelementptr inbounds %struct.tag_____Token__, ptr %342, i32 0, i32 4
  %344 = load i32, ptr %343, align 8, !tbaa !26
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.tag_____ParserState__, ptr %345, i32 0, i32 5
  store i32 %344, ptr %346, align 4, !tbaa !28
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.tag_____ParserState__, ptr %347, i32 0, i32 3
  %349 = load ptr, ptr %348, align 8, !tbaa !25
  %350 = getelementptr inbounds %struct.tag_____Token__, ptr %349, i32 0, i32 0
  %351 = load i32, ptr %350, align 8, !tbaa !30
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %353, label %760

353:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.tag_____ParserState__, ptr %354, i32 0, i32 3
  %356 = load ptr, ptr %355, align 8, !tbaa !25
  store ptr %356, ptr %22, align 8, !tbaa !5
  %357 = load ptr, ptr %5, align 8, !tbaa !5
  call void @Parser__readToken__(ptr noundef %357)
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #5
  %358 = load ptr, ptr %5, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.tag_____ParserState__, ptr %358, i32 0, i32 3
  %360 = load ptr, ptr %359, align 8, !tbaa !25
  %361 = getelementptr inbounds %struct.tag_____Token__, ptr %360, i32 0, i32 4
  %362 = load i32, ptr %361, align 8, !tbaa !26
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.tag_____ParserState__, ptr %363, i32 0, i32 5
  %365 = load i32, ptr %364, align 4, !tbaa !28
  %366 = icmp sge i32 %362, %365
  %367 = zext i1 %366 to i32
  %368 = trunc i32 %367 to i8
  store i8 %368, ptr %23, align 1, !tbaa !29
  %369 = load i8, ptr %23, align 1, !tbaa !29
  %370 = icmp ne i8 %369, 0
  br i1 %370, label %371, label %380

371:                                              ; preds = %353
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.tag_____ParserState__, ptr %372, i32 0, i32 3
  %374 = load ptr, ptr %373, align 8, !tbaa !25
  %375 = getelementptr inbounds %struct.tag_____Token__, ptr %374, i32 0, i32 0
  %376 = load i32, ptr %375, align 8, !tbaa !30
  %377 = icmp eq i32 %376, 7
  %378 = zext i1 %377 to i32
  %379 = trunc i32 %378 to i8
  store i8 %379, ptr %23, align 1, !tbaa !29
  br label %380

380:                                              ; preds = %371, %353
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #5
  %381 = load i8, ptr %23, align 1, !tbaa !29
  store i8 %381, ptr %24, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #5
  %382 = load i8, ptr %24, align 1, !tbaa !29
  store i8 %382, ptr %25, align 1, !tbaa !29
  %383 = load i8, ptr %25, align 1, !tbaa !29
  %384 = icmp ne i8 %383, 0
  br i1 %384, label %458, label %385

385:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #5
  %386 = load ptr, ptr %5, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.tag_____ParserState__, ptr %386, i32 0, i32 3
  %388 = load ptr, ptr %387, align 8, !tbaa !25
  %389 = getelementptr inbounds %struct.tag_____Token__, ptr %388, i32 0, i32 4
  %390 = load i32, ptr %389, align 8, !tbaa !26
  %391 = load ptr, ptr %5, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.tag_____ParserState__, ptr %391, i32 0, i32 5
  %393 = load i32, ptr %392, align 4, !tbaa !28
  %394 = icmp sgt i32 %390, %393
  %395 = zext i1 %394 to i32
  %396 = trunc i32 %395 to i8
  store i8 %396, ptr %26, align 1, !tbaa !29
  %397 = load i8, ptr %26, align 1, !tbaa !29
  %398 = icmp ne i8 %397, 0
  br i1 %398, label %399, label %408

399:                                              ; preds = %385
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.tag_____ParserState__, ptr %400, i32 0, i32 3
  %402 = load ptr, ptr %401, align 8, !tbaa !25
  %403 = getelementptr inbounds %struct.tag_____Token__, ptr %402, i32 0, i32 0
  %404 = load i32, ptr %403, align 8, !tbaa !30
  %405 = icmp eq i32 %404, 0
  %406 = zext i1 %405 to i32
  %407 = trunc i32 %406 to i8
  store i8 %407, ptr %26, align 1, !tbaa !29
  br label %408

408:                                              ; preds = %399, %385
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  %409 = load i8, ptr %26, align 1, !tbaa !29
  store i8 %409, ptr %27, align 1, !tbaa !29
  %410 = load i8, ptr %27, align 1, !tbaa !29
  %411 = icmp ne i8 %410, 0
  br i1 %411, label %412, label %456

412:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.tag_____ParserState__, ptr %413, i32 0, i32 3
  %415 = load ptr, ptr %414, align 8, !tbaa !25
  %416 = getelementptr inbounds %struct.tag_____Token__, ptr %415, i32 0, i32 1
  %417 = getelementptr inbounds { ptr, i32 }, ptr %416, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8
  %419 = getelementptr inbounds { ptr, i32 }, ptr %416, i32 0, i32 1
  %420 = load i32, ptr %419, align 8
  %421 = load ptr, ptr @mu_____string335, align 8
  %422 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string335, i32 0, i32 1), align 8
  %423 = call zeroext i8 @string__equals__(ptr %418, i32 %420, ptr %421, i32 %422)
  store i8 %423, ptr %28, align 1, !tbaa !29
  %424 = load i8, ptr %28, align 1, !tbaa !29
  %425 = icmp ne i8 %424, 0
  br i1 %425, label %438, label %426

426:                                              ; preds = %412
  %427 = load ptr, ptr %5, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.tag_____ParserState__, ptr %427, i32 0, i32 3
  %429 = load ptr, ptr %428, align 8, !tbaa !25
  %430 = getelementptr inbounds %struct.tag_____Token__, ptr %429, i32 0, i32 1
  %431 = getelementptr inbounds { ptr, i32 }, ptr %430, i32 0, i32 0
  %432 = load ptr, ptr %431, align 8
  %433 = getelementptr inbounds { ptr, i32 }, ptr %430, i32 0, i32 1
  %434 = load i32, ptr %433, align 8
  %435 = load ptr, ptr @mu_____string336, align 8
  %436 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string336, i32 0, i32 1), align 8
  %437 = call zeroext i8 @string__equals__(ptr %432, i32 %434, ptr %435, i32 %436)
  store i8 %437, ptr %28, align 1, !tbaa !29
  br label %438

438:                                              ; preds = %426, %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #5
  %439 = load i8, ptr %28, align 1, !tbaa !29
  store i8 %439, ptr %29, align 1, !tbaa !29
  %440 = load i8, ptr %29, align 1, !tbaa !29
  %441 = icmp ne i8 %440, 0
  br i1 %441, label %454, label %442

442:                                              ; preds = %438
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.tag_____ParserState__, ptr %443, i32 0, i32 3
  %445 = load ptr, ptr %444, align 8, !tbaa !25
  %446 = getelementptr inbounds %struct.tag_____Token__, ptr %445, i32 0, i32 1
  %447 = getelementptr inbounds { ptr, i32 }, ptr %446, i32 0, i32 0
  %448 = load ptr, ptr %447, align 8
  %449 = getelementptr inbounds { ptr, i32 }, ptr %446, i32 0, i32 1
  %450 = load i32, ptr %449, align 8
  %451 = load ptr, ptr @mu_____string337, align 8
  %452 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string337, i32 0, i32 1), align 8
  %453 = call zeroext i8 @string__equals__(ptr %448, i32 %450, ptr %451, i32 %452)
  store i8 %453, ptr %29, align 1, !tbaa !29
  br label %454

454:                                              ; preds = %442, %438
  %455 = load i8, ptr %29, align 1, !tbaa !29
  store i8 %455, ptr %27, align 1, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  br label %456

456:                                              ; preds = %454, %408
  %457 = load i8, ptr %27, align 1, !tbaa !29
  store i8 %457, ptr %25, align 1, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  br label %458

458:                                              ; preds = %456, %380
  %459 = load i8, ptr %25, align 1, !tbaa !29
  store i8 %459, ptr %24, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #5
  %460 = load ptr, ptr %5, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.tag_____ParserState__, ptr %460, i32 0, i32 3
  %462 = load ptr, ptr %461, align 8, !tbaa !25
  %463 = getelementptr inbounds %struct.tag_____Token__, ptr %462, i32 0, i32 4
  %464 = load i32, ptr %463, align 8, !tbaa !26
  %465 = load ptr, ptr %5, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.tag_____ParserState__, ptr %465, i32 0, i32 5
  %467 = load i32, ptr %466, align 4, !tbaa !28
  %468 = icmp sgt i32 %464, %467
  %469 = zext i1 %468 to i32
  %470 = trunc i32 %469 to i8
  store i8 %470, ptr %30, align 1, !tbaa !29
  %471 = load i8, ptr %30, align 1, !tbaa !29
  %472 = icmp ne i8 %471, 0
  br i1 %472, label %473, label %482

473:                                              ; preds = %458
  %474 = load ptr, ptr %5, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.tag_____ParserState__, ptr %474, i32 0, i32 3
  %476 = load ptr, ptr %475, align 8, !tbaa !25
  %477 = getelementptr inbounds %struct.tag_____Token__, ptr %476, i32 0, i32 0
  %478 = load i32, ptr %477, align 8, !tbaa !30
  %479 = icmp eq i32 %478, 11
  %480 = zext i1 %479 to i32
  %481 = trunc i32 %480 to i8
  store i8 %481, ptr %30, align 1, !tbaa !29
  br label %482

482:                                              ; preds = %473, %458
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  %483 = load i8, ptr %30, align 1, !tbaa !29
  store i8 %483, ptr %31, align 1, !tbaa !29
  %484 = load i8, ptr %31, align 1, !tbaa !29
  %485 = icmp ne i8 %484, 0
  br i1 %485, label %486, label %493

486:                                              ; preds = %482
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %487, i32 0, i32 9
  %489 = load i32, ptr %488, align 8, !tbaa !32
  %490 = icmp ne i32 %489, 3
  %491 = zext i1 %490 to i32
  %492 = trunc i32 %491 to i8
  store i8 %492, ptr %31, align 1, !tbaa !29
  br label %493

493:                                              ; preds = %486, %482
  %494 = load i8, ptr %31, align 1, !tbaa !29
  %495 = icmp ne i8 %494, 0
  br i1 %495, label %496, label %574

496:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %497 = load ptr, ptr %5, align 8, !tbaa !5
  %498 = call ptr @Parser__tryParseTypeParams__(ptr noundef %497)
  store ptr %498, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #5
  %499 = load ptr, ptr %5, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.tag_____ParserState__, ptr %499, i32 0, i32 3
  %501 = load ptr, ptr %500, align 8, !tbaa !25
  %502 = getelementptr inbounds %struct.tag_____Token__, ptr %501, i32 0, i32 4
  %503 = load i32, ptr %502, align 8, !tbaa !26
  %504 = load ptr, ptr %5, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.tag_____ParserState__, ptr %504, i32 0, i32 5
  %506 = load i32, ptr %505, align 4, !tbaa !28
  %507 = icmp sgt i32 %503, %506
  %508 = zext i1 %507 to i32
  %509 = trunc i32 %508 to i8
  store i8 %509, ptr %33, align 1, !tbaa !29
  %510 = load i8, ptr %33, align 1, !tbaa !29
  %511 = icmp ne i8 %510, 0
  br i1 %511, label %512, label %521

512:                                              ; preds = %496
  %513 = load ptr, ptr %5, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.tag_____ParserState__, ptr %513, i32 0, i32 3
  %515 = load ptr, ptr %514, align 8, !tbaa !25
  %516 = getelementptr inbounds %struct.tag_____Token__, ptr %515, i32 0, i32 0
  %517 = load i32, ptr %516, align 8, !tbaa !30
  %518 = icmp eq i32 %517, 5
  %519 = zext i1 %518 to i32
  %520 = trunc i32 %519 to i8
  store i8 %520, ptr %33, align 1, !tbaa !29
  br label %521

521:                                              ; preds = %512, %496
  %522 = load i8, ptr %33, align 1, !tbaa !29
  %523 = icmp ne i8 %522, 0
  br i1 %523, label %524, label %543

524:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #5
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = load ptr, ptr %22, align 8, !tbaa !5
  %527 = load ptr, ptr %32, align 8, !tbaa !5
  %528 = call ptr @Parser__parseFunctionTail__(ptr noundef %525, ptr noundef %526, ptr noundef %527)
  %529 = getelementptr inbounds %struct.Node__, ptr %34, i32 0, i32 1
  store ptr %528, ptr %529, align 8, !tbaa !38
  %530 = getelementptr inbounds %struct.Node__, ptr %34, i32 0, i32 1
  %531 = load ptr, ptr %530, align 8, !tbaa !38
  %532 = icmp ne ptr %531, null
  %533 = zext i1 %532 to i64
  %534 = select i1 %532, i32 34, i32 0
  %535 = getelementptr inbounds %struct.Node__, ptr %34, i32 0, i32 0
  store i32 %534, ptr %535, align 8, !tbaa !40
  %536 = load ptr, ptr %12, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %536, i32 0, i32 7
  %538 = load ptr, ptr %537, align 8, !tbaa !23
  %539 = getelementptr inbounds { i32, ptr }, ptr %34, i32 0, i32 0
  %540 = load i32, ptr %539, align 8
  %541 = getelementptr inbounds { i32, ptr }, ptr %34, i32 0, i32 1
  %542 = load ptr, ptr %541, align 8
  call void @List__add__Node____(ptr noundef %538, i32 %540, ptr %542)
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  br label %573

543:                                              ; preds = %521
  %544 = load ptr, ptr %5, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.tag_____ParserState__, ptr %544, i32 0, i32 9
  %546 = load ptr, ptr %545, align 8, !tbaa !41
  %547 = load ptr, ptr %5, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.tag_____ParserState__, ptr %547, i32 0, i32 2
  %549 = load ptr, ptr %548, align 8, !tbaa !12
  %550 = load ptr, ptr %22, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.tag_____Token__, ptr %550, i32 0, i32 2
  %552 = load i64, ptr %551, align 8
  %553 = load ptr, ptr @mu_____string340, align 8
  %554 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string340, i32 0, i32 1), align 8
  call void @Error__at__(ptr dead_on_unwind writable sret(%struct.tag_____Error__) align 8 %35, ptr noundef %549, i64 %552, ptr %553, i32 %554)
  call void @List__add__Error____(ptr noundef %546, ptr noundef byval(%struct.tag_____Error__) align 8 %35)
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #5
  %555 = load ptr, ptr %5, align 8, !tbaa !5
  %556 = load ptr, ptr %22, align 8, !tbaa !5
  %557 = load ptr, ptr %32, align 8, !tbaa !5
  %558 = call ptr @Parser__parseNamespaceTail__(ptr noundef %555, ptr noundef %556, ptr noundef %557)
  %559 = getelementptr inbounds %struct.Node__, ptr %36, i32 0, i32 1
  store ptr %558, ptr %559, align 8, !tbaa !38
  %560 = getelementptr inbounds %struct.Node__, ptr %36, i32 0, i32 1
  %561 = load ptr, ptr %560, align 8, !tbaa !38
  %562 = icmp ne ptr %561, null
  %563 = zext i1 %562 to i64
  %564 = select i1 %562, i32 31, i32 0
  %565 = getelementptr inbounds %struct.Node__, ptr %36, i32 0, i32 0
  store i32 %564, ptr %565, align 8, !tbaa !40
  %566 = load ptr, ptr %12, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %566, i32 0, i32 7
  %568 = load ptr, ptr %567, align 8, !tbaa !23
  %569 = getelementptr inbounds { i32, ptr }, ptr %36, i32 0, i32 0
  %570 = load i32, ptr %569, align 8
  %571 = getelementptr inbounds { i32, ptr }, ptr %36, i32 0, i32 1
  %572 = load ptr, ptr %571, align 8
  call void @List__add__Node____(ptr noundef %568, i32 %570, ptr %572)
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  br label %573

573:                                              ; preds = %543, %524
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  br label %759

574:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #5
  %575 = load ptr, ptr %5, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.tag_____ParserState__, ptr %575, i32 0, i32 3
  %577 = load ptr, ptr %576, align 8, !tbaa !25
  %578 = getelementptr inbounds %struct.tag_____Token__, ptr %577, i32 0, i32 4
  %579 = load i32, ptr %578, align 8, !tbaa !26
  %580 = load ptr, ptr %5, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.tag_____ParserState__, ptr %580, i32 0, i32 5
  %582 = load i32, ptr %581, align 4, !tbaa !28
  %583 = icmp sgt i32 %579, %582
  %584 = zext i1 %583 to i32
  %585 = trunc i32 %584 to i8
  store i8 %585, ptr %37, align 1, !tbaa !29
  %586 = load i8, ptr %37, align 1, !tbaa !29
  %587 = icmp ne i8 %586, 0
  br i1 %587, label %588, label %597

588:                                              ; preds = %574
  %589 = load ptr, ptr %5, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.tag_____ParserState__, ptr %589, i32 0, i32 3
  %591 = load ptr, ptr %590, align 8, !tbaa !25
  %592 = getelementptr inbounds %struct.tag_____Token__, ptr %591, i32 0, i32 0
  %593 = load i32, ptr %592, align 8, !tbaa !30
  %594 = icmp eq i32 %593, 5
  %595 = zext i1 %594 to i32
  %596 = trunc i32 %595 to i8
  store i8 %596, ptr %37, align 1, !tbaa !29
  br label %597

597:                                              ; preds = %588, %574
  %598 = load i8, ptr %37, align 1, !tbaa !29
  %599 = icmp ne i8 %598, 0
  br i1 %599, label %600, label %618

600:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #5
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  %602 = load ptr, ptr %22, align 8, !tbaa !5
  %603 = call ptr @Parser__parseFunctionTail__(ptr noundef %601, ptr noundef %602, ptr noundef null)
  %604 = getelementptr inbounds %struct.Node__, ptr %38, i32 0, i32 1
  store ptr %603, ptr %604, align 8, !tbaa !38
  %605 = getelementptr inbounds %struct.Node__, ptr %38, i32 0, i32 1
  %606 = load ptr, ptr %605, align 8, !tbaa !38
  %607 = icmp ne ptr %606, null
  %608 = zext i1 %607 to i64
  %609 = select i1 %607, i32 34, i32 0
  %610 = getelementptr inbounds %struct.Node__, ptr %38, i32 0, i32 0
  store i32 %609, ptr %610, align 8, !tbaa !40
  %611 = load ptr, ptr %12, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %611, i32 0, i32 7
  %613 = load ptr, ptr %612, align 8, !tbaa !23
  %614 = getelementptr inbounds { i32, ptr }, ptr %38, i32 0, i32 0
  %615 = load i32, ptr %614, align 8
  %616 = getelementptr inbounds { i32, ptr }, ptr %38, i32 0, i32 1
  %617 = load ptr, ptr %616, align 8
  call void @List__add__Node____(ptr noundef %613, i32 %615, ptr %617)
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  br label %758

618:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #5
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %619, i32 0, i32 9
  %621 = load i32, ptr %620, align 8, !tbaa !32
  %622 = icmp eq i32 %621, 1
  %623 = zext i1 %622 to i32
  %624 = trunc i32 %623 to i8
  store i8 %624, ptr %39, align 1, !tbaa !29
  %625 = load i8, ptr %39, align 1, !tbaa !29
  %626 = icmp ne i8 %625, 0
  br i1 %626, label %627, label %633

627:                                              ; preds = %618
  %628 = load i8, ptr %24, align 1, !tbaa !29
  %629 = icmp ne i8 %628, 0
  %630 = xor i1 %629, true
  %631 = zext i1 %630 to i32
  %632 = trunc i32 %631 to i8
  store i8 %632, ptr %39, align 1, !tbaa !29
  br label %633

633:                                              ; preds = %627, %618
  %634 = load i8, ptr %39, align 1, !tbaa !29
  %635 = icmp ne i8 %634, 0
  br i1 %635, label %636, label %654

636:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #5
  %637 = load ptr, ptr %5, align 8, !tbaa !5
  %638 = load ptr, ptr %22, align 8, !tbaa !5
  %639 = call ptr @Parser__parseFieldTail__(ptr noundef %637, ptr noundef %638)
  %640 = getelementptr inbounds %struct.Node__, ptr %40, i32 0, i32 1
  store ptr %639, ptr %640, align 8, !tbaa !38
  %641 = getelementptr inbounds %struct.Node__, ptr %40, i32 0, i32 1
  %642 = load ptr, ptr %641, align 8, !tbaa !38
  %643 = icmp ne ptr %642, null
  %644 = zext i1 %643 to i64
  %645 = select i1 %643, i32 36, i32 0
  %646 = getelementptr inbounds %struct.Node__, ptr %40, i32 0, i32 0
  store i32 %645, ptr %646, align 8, !tbaa !40
  %647 = load ptr, ptr %12, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %647, i32 0, i32 7
  %649 = load ptr, ptr %648, align 8, !tbaa !23
  %650 = getelementptr inbounds { i32, ptr }, ptr %40, i32 0, i32 0
  %651 = load i32, ptr %650, align 8
  %652 = getelementptr inbounds { i32, ptr }, ptr %40, i32 0, i32 1
  %653 = load ptr, ptr %652, align 8
  call void @List__add__Node____(ptr noundef %649, i32 %651, ptr %653)
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  br label %757

654:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #5
  %655 = load ptr, ptr %12, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %655, i32 0, i32 9
  %657 = load i32, ptr %656, align 8, !tbaa !32
  %658 = icmp eq i32 %657, 2
  %659 = zext i1 %658 to i32
  %660 = trunc i32 %659 to i8
  store i8 %660, ptr %41, align 1, !tbaa !29
  %661 = load i8, ptr %41, align 1, !tbaa !29
  %662 = icmp ne i8 %661, 0
  br i1 %662, label %663, label %669

663:                                              ; preds = %654
  %664 = load i8, ptr %24, align 1, !tbaa !29
  %665 = icmp ne i8 %664, 0
  %666 = xor i1 %665, true
  %667 = zext i1 %666 to i32
  %668 = trunc i32 %667 to i8
  store i8 %668, ptr %41, align 1, !tbaa !29
  br label %669

669:                                              ; preds = %663, %654
  %670 = load i8, ptr %41, align 1, !tbaa !29
  %671 = icmp ne i8 %670, 0
  br i1 %671, label %672, label %690

672:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #5
  %673 = load ptr, ptr %5, align 8, !tbaa !5
  %674 = load ptr, ptr %22, align 8, !tbaa !5
  %675 = call ptr @Parser__parseEnumMemberTail__(ptr noundef %673, ptr noundef %674)
  %676 = getelementptr inbounds %struct.Node__, ptr %42, i32 0, i32 1
  store ptr %675, ptr %676, align 8, !tbaa !38
  %677 = getelementptr inbounds %struct.Node__, ptr %42, i32 0, i32 1
  %678 = load ptr, ptr %677, align 8, !tbaa !38
  %679 = icmp ne ptr %678, null
  %680 = zext i1 %679 to i64
  %681 = select i1 %679, i32 1, i32 0
  %682 = getelementptr inbounds %struct.Node__, ptr %42, i32 0, i32 0
  store i32 %681, ptr %682, align 8, !tbaa !40
  %683 = load ptr, ptr %12, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %683, i32 0, i32 7
  %685 = load ptr, ptr %684, align 8, !tbaa !23
  %686 = getelementptr inbounds { i32, ptr }, ptr %42, i32 0, i32 0
  %687 = load i32, ptr %686, align 8
  %688 = getelementptr inbounds { i32, ptr }, ptr %42, i32 0, i32 1
  %689 = load ptr, ptr %688, align 8
  call void @List__add__Node____(ptr noundef %685, i32 %687, ptr %689)
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  br label %756

690:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #5
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %691, i32 0, i32 9
  %693 = load i32, ptr %692, align 8, !tbaa !32
  %694 = icmp eq i32 %693, 3
  %695 = zext i1 %694 to i32
  %696 = trunc i32 %695 to i8
  store i8 %696, ptr %43, align 1, !tbaa !29
  %697 = load i8, ptr %43, align 1, !tbaa !29
  %698 = icmp ne i8 %697, 0
  br i1 %698, label %699, label %705

699:                                              ; preds = %690
  %700 = load i8, ptr %24, align 1, !tbaa !29
  %701 = icmp ne i8 %700, 0
  %702 = xor i1 %701, true
  %703 = zext i1 %702 to i32
  %704 = trunc i32 %703 to i8
  store i8 %704, ptr %43, align 1, !tbaa !29
  br label %705

705:                                              ; preds = %699, %690
  %706 = load i8, ptr %43, align 1, !tbaa !29
  %707 = icmp ne i8 %706, 0
  br i1 %707, label %708, label %726

708:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #5
  %709 = load ptr, ptr %5, align 8, !tbaa !5
  %710 = load ptr, ptr %22, align 8, !tbaa !5
  %711 = call ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef %709, ptr noundef %710)
  %712 = getelementptr inbounds %struct.Node__, ptr %44, i32 0, i32 1
  store ptr %711, ptr %712, align 8, !tbaa !38
  %713 = getelementptr inbounds %struct.Node__, ptr %44, i32 0, i32 1
  %714 = load ptr, ptr %713, align 8, !tbaa !38
  %715 = icmp ne ptr %714, null
  %716 = zext i1 %715 to i64
  %717 = select i1 %715, i32 2, i32 0
  %718 = getelementptr inbounds %struct.Node__, ptr %44, i32 0, i32 0
  store i32 %717, ptr %718, align 8, !tbaa !40
  %719 = load ptr, ptr %12, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %719, i32 0, i32 7
  %721 = load ptr, ptr %720, align 8, !tbaa !23
  %722 = getelementptr inbounds { i32, ptr }, ptr %44, i32 0, i32 0
  %723 = load i32, ptr %722, align 8
  %724 = getelementptr inbounds { i32, ptr }, ptr %44, i32 0, i32 1
  %725 = load ptr, ptr %724, align 8
  call void @List__add__Node____(ptr noundef %721, i32 %723, ptr %725)
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  br label %755

726:                                              ; preds = %705
  %727 = load ptr, ptr %5, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.tag_____ParserState__, ptr %727, i32 0, i32 9
  %729 = load ptr, ptr %728, align 8, !tbaa !41
  %730 = load ptr, ptr %5, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.tag_____ParserState__, ptr %730, i32 0, i32 2
  %732 = load ptr, ptr %731, align 8, !tbaa !12
  %733 = load ptr, ptr %22, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.tag_____Token__, ptr %733, i32 0, i32 2
  %735 = load i64, ptr %734, align 8
  %736 = load ptr, ptr @mu_____string340, align 8
  %737 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string340, i32 0, i32 1), align 8
  call void @Error__at__(ptr dead_on_unwind writable sret(%struct.tag_____Error__) align 8 %45, ptr noundef %732, i64 %735, ptr %736, i32 %737)
  call void @List__add__Error____(ptr noundef %729, ptr noundef byval(%struct.tag_____Error__) align 8 %45)
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #5
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = load ptr, ptr %22, align 8, !tbaa !5
  %740 = call ptr @Parser__parseNamespaceTail__(ptr noundef %738, ptr noundef %739, ptr noundef null)
  %741 = getelementptr inbounds %struct.Node__, ptr %46, i32 0, i32 1
  store ptr %740, ptr %741, align 8, !tbaa !38
  %742 = getelementptr inbounds %struct.Node__, ptr %46, i32 0, i32 1
  %743 = load ptr, ptr %742, align 8, !tbaa !38
  %744 = icmp ne ptr %743, null
  %745 = zext i1 %744 to i64
  %746 = select i1 %744, i32 31, i32 0
  %747 = getelementptr inbounds %struct.Node__, ptr %46, i32 0, i32 0
  store i32 %746, ptr %747, align 8, !tbaa !40
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %748, i32 0, i32 7
  %750 = load ptr, ptr %749, align 8, !tbaa !23
  %751 = getelementptr inbounds { i32, ptr }, ptr %46, i32 0, i32 0
  %752 = load i32, ptr %751, align 8
  %753 = getelementptr inbounds { i32, ptr }, ptr %46, i32 0, i32 1
  %754 = load ptr, ptr %753, align 8
  call void @List__add__Node____(ptr noundef %750, i32 %752, ptr %754)
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  br label %755

755:                                              ; preds = %726, %708
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #5
  br label %756

756:                                              ; preds = %755, %672
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #5
  br label %757

757:                                              ; preds = %756, %636
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  br label %758

758:                                              ; preds = %757, %600
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #5
  br label %759

759:                                              ; preds = %758, %573
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %881

760:                                              ; preds = %336
  %761 = load ptr, ptr %5, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.tag_____ParserState__, ptr %761, i32 0, i32 3
  %763 = load ptr, ptr %762, align 8, !tbaa !25
  %764 = getelementptr inbounds %struct.tag_____Token__, ptr %763, i32 0, i32 0
  %765 = load i32, ptr %764, align 8, !tbaa !30
  %766 = icmp eq i32 %765, 15
  br i1 %766, label %767, label %772

767:                                              ; preds = %760
  %768 = load ptr, ptr %5, align 8, !tbaa !5
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %769, i32 0, i32 7
  %771 = load ptr, ptr %770, align 8, !tbaa !23
  call void @Parser__parseStaticField__(ptr noundef %768, ptr noundef %771)
  br label %880

772:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #5
  %773 = load ptr, ptr %12, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %773, i32 0, i32 9
  %775 = load i32, ptr %774, align 8, !tbaa !32
  %776 = icmp eq i32 %775, 3
  %777 = zext i1 %776 to i32
  %778 = trunc i32 %777 to i8
  store i8 %778, ptr %47, align 1, !tbaa !29
  %779 = load i8, ptr %47, align 1, !tbaa !29
  %780 = icmp ne i8 %779, 0
  br i1 %780, label %781, label %790

781:                                              ; preds = %772
  %782 = load ptr, ptr %5, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.tag_____ParserState__, ptr %782, i32 0, i32 3
  %784 = load ptr, ptr %783, align 8, !tbaa !25
  %785 = getelementptr inbounds %struct.tag_____Token__, ptr %784, i32 0, i32 0
  %786 = load i32, ptr %785, align 8, !tbaa !30
  %787 = icmp eq i32 %786, 4
  %788 = zext i1 %787 to i32
  %789 = trunc i32 %788 to i8
  store i8 %789, ptr %47, align 1, !tbaa !29
  br label %790

790:                                              ; preds = %781, %772
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #5
  %791 = load i8, ptr %47, align 1, !tbaa !29
  store i8 %791, ptr %48, align 1, !tbaa !29
  %792 = load i8, ptr %48, align 1, !tbaa !29
  %793 = icmp ne i8 %792, 0
  br i1 %793, label %794, label %838

794:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #5
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.tag_____ParserState__, ptr %795, i32 0, i32 3
  %797 = load ptr, ptr %796, align 8, !tbaa !25
  %798 = getelementptr inbounds %struct.tag_____Token__, ptr %797, i32 0, i32 1
  %799 = getelementptr inbounds { ptr, i32 }, ptr %798, i32 0, i32 0
  %800 = load ptr, ptr %799, align 8
  %801 = getelementptr inbounds { ptr, i32 }, ptr %798, i32 0, i32 1
  %802 = load i32, ptr %801, align 8
  %803 = load ptr, ptr @mu_____string74, align 8
  %804 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string74, i32 0, i32 1), align 8
  %805 = call zeroext i8 @string__equals__(ptr %800, i32 %802, ptr %803, i32 %804)
  store i8 %805, ptr %49, align 1, !tbaa !29
  %806 = load i8, ptr %49, align 1, !tbaa !29
  %807 = icmp ne i8 %806, 0
  br i1 %807, label %820, label %808

808:                                              ; preds = %794
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.tag_____ParserState__, ptr %809, i32 0, i32 3
  %811 = load ptr, ptr %810, align 8, !tbaa !25
  %812 = getelementptr inbounds %struct.tag_____Token__, ptr %811, i32 0, i32 1
  %813 = getelementptr inbounds { ptr, i32 }, ptr %812, i32 0, i32 0
  %814 = load ptr, ptr %813, align 8
  %815 = getelementptr inbounds { ptr, i32 }, ptr %812, i32 0, i32 1
  %816 = load i32, ptr %815, align 8
  %817 = load ptr, ptr @mu_____string75, align 8
  %818 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string75, i32 0, i32 1), align 8
  %819 = call zeroext i8 @string__equals__(ptr %814, i32 %816, ptr %817, i32 %818)
  store i8 %819, ptr %49, align 1, !tbaa !29
  br label %820

820:                                              ; preds = %808, %794
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #5
  %821 = load i8, ptr %49, align 1, !tbaa !29
  store i8 %821, ptr %50, align 1, !tbaa !29
  %822 = load i8, ptr %50, align 1, !tbaa !29
  %823 = icmp ne i8 %822, 0
  br i1 %823, label %836, label %824

824:                                              ; preds = %820
  %825 = load ptr, ptr %5, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.tag_____ParserState__, ptr %825, i32 0, i32 3
  %827 = load ptr, ptr %826, align 8, !tbaa !25
  %828 = getelementptr inbounds %struct.tag_____Token__, ptr %827, i32 0, i32 1
  %829 = getelementptr inbounds { ptr, i32 }, ptr %828, i32 0, i32 0
  %830 = load ptr, ptr %829, align 8
  %831 = getelementptr inbounds { ptr, i32 }, ptr %828, i32 0, i32 1
  %832 = load i32, ptr %831, align 8
  %833 = load ptr, ptr @mu_____string160, align 8
  %834 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string160, i32 0, i32 1), align 8
  %835 = call zeroext i8 @string__equals__(ptr %830, i32 %832, ptr %833, i32 %834)
  store i8 %835, ptr %50, align 1, !tbaa !29
  br label %836

836:                                              ; preds = %824, %820
  %837 = load i8, ptr %50, align 1, !tbaa !29
  store i8 %837, ptr %48, align 1, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #5
  br label %838

838:                                              ; preds = %836, %790
  %839 = load i8, ptr %48, align 1, !tbaa !29
  %840 = icmp ne i8 %839, 0
  br i1 %840, label %841, label %858

841:                                              ; preds = %838
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #5
  %842 = load ptr, ptr %5, align 8, !tbaa !5
  %843 = call ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef %842, ptr noundef null)
  %844 = getelementptr inbounds %struct.Node__, ptr %51, i32 0, i32 1
  store ptr %843, ptr %844, align 8, !tbaa !38
  %845 = getelementptr inbounds %struct.Node__, ptr %51, i32 0, i32 1
  %846 = load ptr, ptr %845, align 8, !tbaa !38
  %847 = icmp ne ptr %846, null
  %848 = zext i1 %847 to i64
  %849 = select i1 %847, i32 2, i32 0
  %850 = getelementptr inbounds %struct.Node__, ptr %51, i32 0, i32 0
  store i32 %849, ptr %850, align 8, !tbaa !40
  %851 = load ptr, ptr %12, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %851, i32 0, i32 7
  %853 = load ptr, ptr %852, align 8, !tbaa !23
  %854 = getelementptr inbounds { i32, ptr }, ptr %51, i32 0, i32 0
  %855 = load i32, ptr %854, align 8
  %856 = getelementptr inbounds { i32, ptr }, ptr %51, i32 0, i32 1
  %857 = load ptr, ptr %856, align 8
  call void @List__add__Node____(ptr noundef %853, i32 %855, ptr %857)
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #5
  br label %879

858:                                              ; preds = %838
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #5
  %859 = load ptr, ptr %5, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.tag_____ParserState__, ptr %859, i32 0, i32 3
  %861 = load ptr, ptr %860, align 8, !tbaa !25
  %862 = getelementptr inbounds %struct.Node__, ptr %52, i32 0, i32 1
  store ptr %861, ptr %862, align 8, !tbaa !38
  %863 = getelementptr inbounds %struct.Node__, ptr %52, i32 0, i32 1
  %864 = load ptr, ptr %863, align 8, !tbaa !38
  %865 = icmp ne ptr %864, null
  %866 = zext i1 %865 to i64
  %867 = select i1 %865, i32 21, i32 0
  %868 = getelementptr inbounds %struct.Node__, ptr %52, i32 0, i32 0
  store i32 %867, ptr %868, align 8, !tbaa !40
  %869 = load ptr, ptr %12, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %869, i32 0, i32 7
  %871 = load ptr, ptr %870, align 8, !tbaa !23
  %872 = getelementptr inbounds { i32, ptr }, ptr %52, i32 0, i32 0
  %873 = load i32, ptr %872, align 8
  %874 = getelementptr inbounds { i32, ptr }, ptr %52, i32 0, i32 1
  %875 = load ptr, ptr %874, align 8
  call void @List__add__Node____(ptr noundef %871, i32 %873, ptr %875)
  %876 = load ptr, ptr %5, align 8, !tbaa !5
  %877 = load ptr, ptr @mu_____string342, align 8
  %878 = load i32, ptr getelementptr inbounds ({ ptr, i32 }, ptr @mu_____string342, i32 0, i32 1), align 8
  call void @Parser__badToken__(ptr noundef %876, ptr %877, i32 %878)
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #5
  br label %879

879:                                              ; preds = %858, %841
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #5
  br label %880

880:                                              ; preds = %879, %767
  br label %881

881:                                              ; preds = %880, %759
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  %883 = load ptr, ptr %12, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %883, i32 0, i32 7
  %885 = load ptr, ptr %884, align 8, !tbaa !23
  call void @Parser__endLine__(ptr noundef %882, ptr noundef %885)
  %886 = load i32, ptr %21, align 4, !tbaa !22
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.tag_____ParserState__, ptr %887, i32 0, i32 5
  store i32 %886, ptr %888, align 4, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %889

889:                                              ; preds = %881, %311
  br label %890

890:                                              ; preds = %889, %278
  br label %259

891:                                              ; preds = %270
  %892 = load ptr, ptr %5, align 8, !tbaa !5
  %893 = call ptr @Parser__parseCloseBrace__(ptr noundef %892)
  %894 = load ptr, ptr %12, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.tag_____NamespaceDef__, ptr %894, i32 0, i32 8
  store ptr %893, ptr %895, align 8, !tbaa !37
  %896 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %896, ptr %4, align 8
  store i32 1, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %897

897:                                              ; preds = %891, %246
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 88, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %898 = load ptr, ptr %4, align 8
  ret ptr %898

899:                                              ; preds = %231
  unreachable
}

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef, ptr noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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, !6, i64 8}
!10 = !{!"tag_____IAllocator__", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!11 = !{!10, !6, i64 0}
!12 = !{!13, !6, i64 24}
!13 = !{!"tag_____ParserState__", !14, i64 0, !15, i64 16, !6, i64 24, !6, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !6, i64 64, !16, i64 72, !15, i64 80, !15, i64 84, !6, i64 88, !15, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!14 = !{!"", !6, i64 0, !15, i64 8}
!15 = !{!"int", !7, i64 0}
!16 = !{!"tag_____IntRange__", !15, i64 0, !15, i64 4}
!17 = !{!18, !6, i64 0}
!18 = !{!"tag_____NamespaceDef__", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !15, i64 72, !6, i64 80}
!19 = !{!18, !6, i64 8}
!20 = !{!18, !6, i64 16}
!21 = !{i64 0, i64 8, !5, i64 8, i64 4, !22, i64 12, i64 4, !22}
!22 = !{!15, !15, i64 0}
!23 = !{!18, !6, i64 56}
!24 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !5, i64 32, i64 8, !5, i64 40, i64 8, !5, i64 48, i64 8, !5, i64 56, i64 8, !5, i64 64, i64 8, !5, i64 72, i64 4, !22, i64 80, i64 8, !5}
!25 = !{!13, !6, i64 32}
!26 = !{!27, !15, i64 40}
!27 = !{!"tag_____Token__", !15, i64 0, !14, i64 8, !16, i64 24, !16, i64 32, !15, i64 40}
!28 = !{!13, !15, i64 44}
!29 = !{!7, !7, i64 0}
!30 = !{!27, !15, i64 0}
!31 = !{!18, !6, i64 24}
!32 = !{!18, !15, i64 72}
!33 = !{!18, !6, i64 32}
!34 = !{!18, !6, i64 40}
!35 = !{!18, !6, i64 48}
!36 = !{!13, !6, i64 104}
!37 = !{!18, !6, i64 64}
!38 = !{!39, !6, i64 8}
!39 = !{!"", !15, i64 0, !6, i64 8}
!40 = !{!39, !15, i64 0}
!41 = !{!13, !6, i64 64}


; 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.string__ = type { ptr, i32 }
%struct.tag_____IAllocator__ = type { ptr, ptr, ptr, ptr }
%struct.tag_____Error__ = type { ptr, %struct.tag_____IntRange__, %struct.string__ }
%struct.tag_____IntRange__ = type { i32, i32 }

@mu_____string336 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string160 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string75 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string340 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string339 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string335 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string342 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string338 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string315 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string74 = external dso_local local_unnamed_addr global %struct.string__, align 8
@mu_____string337 = external dso_local local_unnamed_addr global %struct.string__, align 8
@top_____currentAllocator__ = external dso_local thread_local local_unnamed_addr global %struct.tag_____IAllocator__, align 8

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #0

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

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @string__equals__(ptr, i32, ptr, i32) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Error____(ptr noundef, ptr noundef byval(%struct.tag_____Error__) align 8) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @Error__at__(ptr dead_on_unwind noalias writable sret(%struct.tag_____Error__) align 8, ptr noundef, i64, ptr, i32) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Ptr__Token______(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @List__add__Node____(ptr noundef, i32, ptr) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__readToken__(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__badToken__(ptr noundef, ptr, i32) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseOpenBrace__(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__endLine__(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseCloseBrace__(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseEnumMemberTail__(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseFieldTail__(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__tryParseAttributes__(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @Parser__parseStaticField__(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__tryParseTypeParams__(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseFunctionTail__(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local ptr @Parser__parseNamespaceTail__(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #2 {
  %4 = alloca %struct.tag_____Error__, align 8
  %5 = alloca %struct.tag_____Error__, align 8
  %6 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @top_____currentAllocator__)
  %7 = getelementptr inbounds i8, ptr %6, i64 8
  %8 = load ptr, ptr %7, align 8, !tbaa !5
  %9 = load ptr, ptr %6, align 8, !tbaa !10
  %10 = tail call ptr %8(ptr noundef %9, i64 noundef 88) #3
  %11 = getelementptr inbounds i8, ptr %0, i64 24
  %12 = load ptr, ptr %11, align 8, !tbaa !11
  %13 = load ptr, ptr %7, align 8, !tbaa !5
  %14 = load ptr, ptr %6, align 8, !tbaa !10
  %15 = tail call ptr %13(ptr noundef %14, i64 noundef 16) #3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false)
  store ptr %12, ptr %10, align 8, !tbaa !16
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %1, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !16
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %2, ptr %.sroa.6.0..sroa_idx, align 8, !tbaa !16
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 24
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.0..sroa_idx, i8 0, i64 32, i1 false)
  %.sroa.7138.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 56
  store ptr %15, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !16
  %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 64
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.8.0..sroa_idx, i8 0, i64 24, i1 false)
  %16 = getelementptr inbounds i8, ptr %0, i64 32
  %17 = load ptr, ptr %16, align 8, !tbaa !17
  %18 = getelementptr inbounds i8, ptr %17, i64 40
  %19 = load i32, ptr %18, align 8, !tbaa !18
  %20 = getelementptr inbounds i8, ptr %0, i64 44
  %21 = load i32, ptr %20, align 4, !tbaa !20
  %22 = icmp sgt i32 %19, %21
  br i1 %22, label %23, label %.thread

23:                                               ; preds = %3
  %24 = load i32, ptr %17, align 8, !tbaa !21
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %25, label %.thread

25:                                               ; preds = %23
  %26 = getelementptr inbounds i8, ptr %17, i64 8
  %27 = load ptr, ptr %26, align 8
  %28 = getelementptr inbounds i8, ptr %17, i64 16
  %29 = load i32, ptr %28, align 8
  %30 = load ptr, ptr @mu_____string335, align 8
  %31 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string335, i64 8), align 8
  %32 = tail call zeroext i8 @string__equals__(ptr %27, i32 %29, ptr %30, i32 %31)
  %.not260 = icmp eq i8 %32, 0
  %33 = load ptr, ptr %16, align 8, !tbaa !17
  br i1 %.not260, label %34, label %.thread.sink.split

34:                                               ; preds = %25
  %35 = getelementptr inbounds i8, ptr %33, i64 8
  %36 = load ptr, ptr %35, align 8
  %37 = getelementptr inbounds i8, ptr %33, i64 16
  %38 = load i32, ptr %37, align 8
  %39 = load ptr, ptr @mu_____string336, align 8
  %40 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string336, i64 8), align 8
  %41 = tail call zeroext i8 @string__equals__(ptr %36, i32 %38, ptr %39, i32 %40)
  %.not261 = icmp eq i8 %41, 0
  %42 = load ptr, ptr %16, align 8, !tbaa !17
  br i1 %.not261, label %43, label %.thread.sink.split

43:                                               ; preds = %34
  %44 = getelementptr inbounds i8, ptr %42, i64 8
  %45 = load ptr, ptr %44, align 8
  %46 = getelementptr inbounds i8, ptr %42, i64 16
  %47 = load i32, ptr %46, align 8
  %48 = load ptr, ptr @mu_____string337, align 8
  %49 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string337, i64 8), align 8
  %50 = tail call zeroext i8 @string__equals__(ptr %45, i32 %47, ptr %48, i32 %49)
  %.not262 = icmp eq i8 %50, 0
  br i1 %.not262, label %.thread, label %51

51:                                               ; preds = %43
  %52 = load ptr, ptr %16, align 8, !tbaa !17
  br label %.thread.sink.split

.thread.sink.split:                               ; preds = %34, %25, %51
  %.sink358 = phi ptr [ %52, %51 ], [ %33, %25 ], [ %42, %34 ]
  %.sink = phi i32 [ 3, %51 ], [ 1, %25 ], [ 2, %34 ]
  store ptr %.sink358, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !22
  %53 = getelementptr inbounds i8, ptr %10, i64 72
  store i32 %.sink, ptr %53, align 8, !tbaa !24
  tail call void @Parser__readToken__(ptr noundef nonnull %0)
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %3, %43, %23
  %54 = tail call ptr @Parser__tryParseAttributes__(ptr noundef nonnull %0)
  %55 = getelementptr inbounds i8, ptr %10, i64 32
  store ptr %54, ptr %55, align 8, !tbaa !25
  %56 = load ptr, ptr %16, align 8, !tbaa !17
  %57 = getelementptr inbounds i8, ptr %56, i64 40
  %58 = load i32, ptr %57, align 8, !tbaa !18
  %59 = icmp eq i32 %58, 2147483647
  br i1 %59, label %.lr.ph, label %.thread296

.lr.ph:                                           ; preds = %.thread
  %60 = getelementptr inbounds i8, ptr %10, i64 40
  br label %61

61:                                               ; preds = %.lr.ph, %71
  %62 = phi ptr [ %56, %.lr.ph ], [ %76, %71 ]
  %63 = load i32, ptr %62, align 8, !tbaa !21
  %.not336 = icmp eq i32 %63, 7
  br i1 %.not336, label %.thread296, label %64

64:                                               ; preds = %61
  %65 = load ptr, ptr %60, align 8, !tbaa !26
  %66 = icmp eq ptr %65, null
  br i1 %66, label %67, label %71

67:                                               ; preds = %64
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = load ptr, ptr %6, align 8, !tbaa !10
  %70 = tail call ptr %68(ptr noundef %69, i64 noundef 16) #3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %70, i8 0, i64 16, i1 false)
  store ptr %70, ptr %60, align 8, !tbaa !26
  %.pre = load ptr, ptr %16, align 8, !tbaa !17
  br label %71

71:                                               ; preds = %64, %67
  %72 = phi ptr [ %62, %64 ], [ %.pre, %67 ]
  %73 = phi ptr [ %65, %64 ], [ %70, %67 ]
  tail call void @List__add__Ptr__Token______(ptr noundef nonnull %73, ptr noundef %72)
  %74 = load ptr, ptr @mu_____string338, align 8
  %75 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string338, i64 8), align 8
  tail call void @Parser__badToken__(ptr noundef %0, ptr %74, i32 %75)
  %76 = load ptr, ptr %16, align 8, !tbaa !17
  %77 = getelementptr inbounds i8, ptr %76, i64 40
  %78 = load i32, ptr %77, align 8, !tbaa !18
  %79 = icmp eq i32 %78, 2147483647
  br i1 %79, label %61, label %.thread296

.thread296:                                       ; preds = %61, %71, %.thread
  %80 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  %81 = tail call ptr @Parser__parseOpenBrace__(ptr noundef nonnull %0, ptr noundef %80)
  %82 = getelementptr inbounds i8, ptr %10, i64 48
  store ptr %81, ptr %82, align 8, !tbaa !28
  %83 = getelementptr inbounds i8, ptr %0, i64 104
  %84 = load ptr, ptr %83, align 8, !tbaa !29
  %.not264 = icmp eq ptr %84, null
  br i1 %.not264, label %85, label %257

85:                                               ; preds = %.thread296
  %86 = load ptr, ptr %16, align 8, !tbaa !17
  %87 = getelementptr inbounds i8, ptr %86, i64 40
  %88 = load i32, ptr %87, align 8, !tbaa !18
  %89 = load i32, ptr %20, align 4, !tbaa !20
  %90 = icmp sgt i32 %88, %89
  br i1 %90, label %.lr.ph351, label %._crit_edge

.lr.ph351:                                        ; preds = %85
  %91 = getelementptr inbounds i8, ptr %10, i64 72
  %92 = getelementptr inbounds i8, ptr %0, i64 64
  br label %93

93:                                               ; preds = %.lr.ph351, %250
  %94 = phi i32 [ %89, %.lr.ph351 ], [ %254, %250 ]
  %95 = phi i32 [ %88, %.lr.ph351 ], [ %253, %250 ]
  %96 = phi ptr [ %86, %.lr.ph351 ], [ %251, %250 ]
  %97 = load i32, ptr %96, align 8, !tbaa !21
  %98 = icmp eq i32 %97, 8
  br i1 %98, label %99, label %104

99:                                               ; preds = %93
  %100 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %100, i32 21, ptr nonnull %96)
  %101 = load ptr, ptr @mu_____string315, align 8
  %102 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string315, i64 8), align 8
  call void @Parser__badToken__(ptr noundef nonnull %0, ptr %101, i32 %102)
  %103 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @Parser__endLine__(ptr noundef nonnull %0, ptr noundef %103)
  br label %250

104:                                              ; preds = %93
  %.not265 = icmp eq i32 %95, %88
  br i1 %.not265, label %110, label %105

105:                                              ; preds = %104
  %106 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %106, i32 21, ptr nonnull %96)
  %107 = load ptr, ptr @mu_____string339, align 8
  %108 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string339, i64 8), align 8
  call void @Parser__badToken__(ptr noundef nonnull %0, ptr %107, i32 %108)
  %109 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @Parser__endLine__(ptr noundef nonnull %0, ptr noundef %109)
  br label %250

110:                                              ; preds = %104
  store i32 %88, ptr %20, align 4, !tbaa !20
  switch i32 %97, label %210 [
    i32 0, label %111
    i32 15, label %208
  ]

111:                                              ; preds = %110
  call void @Parser__readToken__(ptr noundef nonnull %0)
  %112 = load ptr, ptr %16, align 8, !tbaa !17
  %113 = getelementptr inbounds i8, ptr %112, i64 40
  %114 = load i32, ptr %113, align 8, !tbaa !18
  %115 = load i32, ptr %20, align 4, !tbaa !20
  %.not272 = icmp slt i32 %114, %115
  br i1 %.not272, label %.thread302, label %116

116:                                              ; preds = %111
  %117 = load i32, ptr %112, align 8, !tbaa !21
  %.not337 = icmp eq i32 %117, 7
  br i1 %.not337, label %.thread305, label %.thread302

.thread302:                                       ; preds = %111, %116
  %118 = icmp sgt i32 %114, %115
  br i1 %118, label %119, label %.thread305

119:                                              ; preds = %.thread302
  %120 = load i32, ptr %112, align 8, !tbaa !21
  %.not338 = icmp eq i32 %120, 0
  br i1 %.not338, label %121, label %.thread305

121:                                              ; preds = %119
  %122 = getelementptr inbounds i8, ptr %112, i64 8
  %123 = load ptr, ptr %122, align 8
  %124 = getelementptr inbounds i8, ptr %112, i64 16
  %125 = load i32, ptr %124, align 8
  %126 = load ptr, ptr @mu_____string335, align 8
  %127 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string335, i64 8), align 8
  %128 = call zeroext i8 @string__equals__(ptr %123, i32 %125, ptr %126, i32 %127)
  %.not275 = icmp eq i8 %128, 0
  %.pre353 = load ptr, ptr %16, align 8, !tbaa !17
  br i1 %.not275, label %129, label %.thread305

129:                                              ; preds = %121
  %130 = getelementptr inbounds i8, ptr %.pre353, i64 8
  %131 = load ptr, ptr %130, align 8
  %132 = getelementptr inbounds i8, ptr %.pre353, i64 16
  %133 = load i32, ptr %132, align 8
  %134 = load ptr, ptr @mu_____string336, align 8
  %135 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string336, i64 8), align 8
  %136 = call zeroext i8 @string__equals__(ptr %131, i32 %133, ptr %134, i32 %135)
  %.not276 = icmp eq i8 %136, 0
  %.pre354 = load ptr, ptr %16, align 8, !tbaa !17
  br i1 %.not276, label %137, label %.thread305

137:                                              ; preds = %129
  %138 = getelementptr inbounds i8, ptr %.pre354, i64 8
  %139 = load ptr, ptr %138, align 8
  %140 = getelementptr inbounds i8, ptr %.pre354, i64 16
  %141 = load i32, ptr %140, align 8
  %142 = load ptr, ptr @mu_____string337, align 8
  %143 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string337, i64 8), align 8
  %144 = call zeroext i8 @string__equals__(ptr %139, i32 %141, ptr %142, i32 %143)
  %.pre352 = load ptr, ptr %16, align 8, !tbaa !17
  br label %.thread305

.thread305:                                       ; preds = %121, %.thread302, %119, %137, %129, %116
  %145 = phi ptr [ %112, %116 ], [ %112, %119 ], [ %.pre354, %129 ], [ %.pre352, %137 ], [ %112, %.thread302 ], [ %.pre353, %121 ]
  %.0232 = phi i8 [ 1, %116 ], [ 0, %119 ], [ %136, %129 ], [ %144, %137 ], [ 0, %.thread302 ], [ %128, %121 ]
  %146 = getelementptr inbounds i8, ptr %145, i64 40
  %147 = load i32, ptr %146, align 8, !tbaa !18
  %148 = load i32, ptr %20, align 4, !tbaa !20
  %149 = icmp sgt i32 %147, %148
  br i1 %149, label %150, label %.thread323

150:                                              ; preds = %.thread305
  %151 = load i32, ptr %145, align 8, !tbaa !21
  switch i32 %151, label %.thread323 [
    i32 11, label %152
    i32 5, label %176
  ]

152:                                              ; preds = %150
  %153 = load i32, ptr %91, align 8, !tbaa !24
  %.not340 = icmp eq i32 %153, 3
  br i1 %.not340, label %.thread323, label %154

154:                                              ; preds = %152
  %155 = call ptr @Parser__tryParseTypeParams__(ptr noundef nonnull %0)
  %156 = load ptr, ptr %16, align 8, !tbaa !17
  %157 = getelementptr inbounds i8, ptr %156, i64 40
  %158 = load i32, ptr %157, align 8, !tbaa !18
  %159 = load i32, ptr %20, align 4, !tbaa !20
  %160 = icmp sgt i32 %158, %159
  br i1 %160, label %161, label %.thread318

161:                                              ; preds = %154
  %162 = load i32, ptr %156, align 8, !tbaa !21
  %.not341 = icmp eq i32 %162, 5
  br i1 %.not341, label %163, label %.thread318

163:                                              ; preds = %161
  %164 = call ptr @Parser__parseFunctionTail__(ptr noundef nonnull %0, ptr noundef nonnull %96, ptr noundef %155)
  %.not293 = icmp eq ptr %164, null
  %165 = select i1 %.not293, i32 0, i32 34
  %166 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %166, i32 %165, ptr %164)
  br label %248

.thread318:                                       ; preds = %154, %161
  %167 = load ptr, ptr %92, align 8, !tbaa !30
  %168 = load ptr, ptr %11, align 8, !tbaa !11
  %169 = getelementptr inbounds i8, ptr %96, i64 24
  %170 = load i64, ptr %169, align 8
  %171 = load ptr, ptr @mu_____string340, align 8
  %172 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string340, i64 8), align 8
  call void @Error__at__(ptr dead_on_unwind nonnull writable sret(%struct.tag_____Error__) align 8 %4, ptr noundef %168, i64 %170, ptr %171, i32 %172)
  call void @List__add__Error____(ptr noundef %167, ptr noundef nonnull byval(%struct.tag_____Error__) align 8 %4)
  %173 = call ptr @Parser__parseNamespaceTail__(ptr noundef nonnull %0, ptr noundef nonnull %96, ptr noundef %155)
  %.not292 = icmp eq ptr %173, null
  %174 = select i1 %.not292, i32 0, i32 31
  %175 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %175, i32 %174, ptr %173)
  br label %248

176:                                              ; preds = %150
  %177 = call ptr @Parser__parseFunctionTail__(ptr noundef nonnull %0, ptr noundef nonnull %96, ptr noundef null)
  %.not290 = icmp eq ptr %177, null
  %178 = select i1 %.not290, i32 0, i32 34
  %179 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %179, i32 %178, ptr %177)
  br label %248

.thread323:                                       ; preds = %150, %152, %.thread305
  %180 = load i32, ptr %91, align 8, !tbaa !24
  %181 = icmp eq i32 %180, 1
  %.not280 = icmp eq i8 %.0232, 0
  %.not281.not = select i1 %181, i1 %.not280, i1 false
  br i1 %.not281.not, label %182, label %186

182:                                              ; preds = %.thread323
  %183 = call ptr @Parser__parseFieldTail__(ptr noundef nonnull %0, ptr noundef nonnull %96)
  %.not289 = icmp eq ptr %183, null
  %184 = select i1 %.not289, i32 0, i32 36
  %185 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %185, i32 %184, ptr %183)
  br label %248

186:                                              ; preds = %.thread323
  %187 = icmp eq i32 %180, 2
  %.not283.not = select i1 %187, i1 %.not280, i1 false
  br i1 %.not283.not, label %188, label %192

188:                                              ; preds = %186
  %189 = call ptr @Parser__parseEnumMemberTail__(ptr noundef nonnull %0, ptr noundef nonnull %96)
  %.not288 = icmp ne ptr %189, null
  %190 = zext i1 %.not288 to i32
  %191 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %191, i32 %190, ptr %189)
  br label %248

192:                                              ; preds = %186
  %193 = icmp eq i32 %180, 3
  %narrow = select i1 %193, i1 %.not280, i1 false
  br i1 %narrow, label %194, label %198

194:                                              ; preds = %192
  %195 = call ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef nonnull %0, ptr noundef nonnull %96)
  %.not287 = icmp eq ptr %195, null
  %196 = select i1 %.not287, i32 0, i32 2
  %197 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %197, i32 %196, ptr %195)
  br label %248

198:                                              ; preds = %192
  %199 = load ptr, ptr %92, align 8, !tbaa !30
  %200 = load ptr, ptr %11, align 8, !tbaa !11
  %201 = getelementptr inbounds i8, ptr %96, i64 24
  %202 = load i64, ptr %201, align 8
  %203 = load ptr, ptr @mu_____string340, align 8
  %204 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string340, i64 8), align 8
  call void @Error__at__(ptr dead_on_unwind nonnull writable sret(%struct.tag_____Error__) align 8 %5, ptr noundef %200, i64 %202, ptr %203, i32 %204)
  call void @List__add__Error____(ptr noundef %199, ptr noundef nonnull byval(%struct.tag_____Error__) align 8 %5)
  %205 = call ptr @Parser__parseNamespaceTail__(ptr noundef nonnull %0, ptr noundef nonnull %96, ptr noundef null)
  %.not286 = icmp eq ptr %205, null
  %206 = select i1 %.not286, i32 0, i32 31
  %207 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %207, i32 %206, ptr %205)
  br label %248

208:                                              ; preds = %110
  %209 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @Parser__parseStaticField__(ptr noundef nonnull %0, ptr noundef %209)
  br label %248

210:                                              ; preds = %110
  %211 = load i32, ptr %91, align 8, !tbaa !24
  %212 = icmp ne i32 %211, 3
  %213 = icmp ne i32 %97, 4
  %narrow347.not = or i1 %213, %212
  br i1 %narrow347.not, label %.thread333, label %214

214:                                              ; preds = %210
  %215 = getelementptr inbounds i8, ptr %96, i64 8
  %216 = load ptr, ptr %215, align 8
  %217 = getelementptr inbounds i8, ptr %96, i64 16
  %218 = load i32, ptr %217, align 8
  %219 = load ptr, ptr @mu_____string74, align 8
  %220 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string74, i64 8), align 8
  %221 = call zeroext i8 @string__equals__(ptr %216, i32 %218, ptr %219, i32 %220)
  %.not267 = icmp eq i8 %221, 0
  br i1 %.not267, label %222, label %.thread330

222:                                              ; preds = %214
  %223 = load ptr, ptr %16, align 8, !tbaa !17
  %224 = getelementptr inbounds i8, ptr %223, i64 8
  %225 = load ptr, ptr %224, align 8
  %226 = getelementptr inbounds i8, ptr %223, i64 16
  %227 = load i32, ptr %226, align 8
  %228 = load ptr, ptr @mu_____string75, align 8
  %229 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string75, i64 8), align 8
  %230 = call zeroext i8 @string__equals__(ptr %225, i32 %227, ptr %228, i32 %229)
  %.not268 = icmp eq i8 %230, 0
  br i1 %.not268, label %231, label %.thread330

231:                                              ; preds = %222
  %232 = load ptr, ptr %16, align 8, !tbaa !17
  %233 = getelementptr inbounds i8, ptr %232, i64 8
  %234 = load ptr, ptr %233, align 8
  %235 = getelementptr inbounds i8, ptr %232, i64 16
  %236 = load i32, ptr %235, align 8
  %237 = load ptr, ptr @mu_____string160, align 8
  %238 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string160, i64 8), align 8
  %239 = call zeroext i8 @string__equals__(ptr %234, i32 %236, ptr %237, i32 %238)
  %.not269 = icmp eq i8 %239, 0
  br i1 %.not269, label %..thread333_crit_edge, label %.thread330

..thread333_crit_edge:                            ; preds = %231
  %.pre355 = load ptr, ptr %16, align 8, !tbaa !17
  br label %.thread333

.thread330:                                       ; preds = %214, %222, %231
  %240 = call ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef nonnull %0, ptr noundef null)
  %.not271 = icmp eq ptr %240, null
  %241 = select i1 %.not271, i32 0, i32 2
  %242 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %242, i32 %241, ptr %240)
  br label %248

.thread333:                                       ; preds = %..thread333_crit_edge, %210
  %243 = phi ptr [ %.pre355, %..thread333_crit_edge ], [ %96, %210 ]
  %.not270 = icmp eq ptr %243, null
  %244 = select i1 %.not270, i32 0, i32 21
  %245 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @List__add__Node____(ptr noundef %245, i32 %244, ptr %243)
  %246 = load ptr, ptr @mu_____string342, align 8
  %247 = load i32, ptr getelementptr inbounds (i8, ptr @mu_____string342, i64 8), align 8
  call void @Parser__badToken__(ptr noundef nonnull %0, ptr %246, i32 %247)
  br label %248

248:                                              ; preds = %.thread330, %.thread333, %.thread318, %163, %182, %194, %198, %188, %176, %208
  %249 = load ptr, ptr %.sroa.7138.0..sroa_idx, align 8, !tbaa !27
  call void @Parser__endLine__(ptr noundef nonnull %0, ptr noundef %249)
  store i32 %94, ptr %20, align 4, !tbaa !20
  br label %250

250:                                              ; preds = %105, %248, %99
  %251 = load ptr, ptr %16, align 8, !tbaa !17
  %252 = getelementptr inbounds i8, ptr %251, i64 40
  %253 = load i32, ptr %252, align 8, !tbaa !18
  %254 = load i32, ptr %20, align 4, !tbaa !20
  %255 = icmp sgt i32 %253, %254
  br i1 %255, label %93, label %._crit_edge

._crit_edge:                                      ; preds = %250, %85
  %256 = call ptr @Parser__parseCloseBrace__(ptr noundef nonnull %0)
  br label %257

257:                                              ; preds = %.thread296, %._crit_edge
  %storemerge = phi ptr [ %256, %._crit_edge ], [ %84, %.thread296 ]
  store ptr %storemerge, ptr %.sroa.8.0..sroa_idx, align 8, !tbaa !31
  ret ptr %10
}

; Function Attrs: nounwind uwtable
declare dso_local ptr @Parser__parseTaggedPointerOptionTail__(ptr noundef, ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"tag_____IAllocator__", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 0}
!11 = !{!12, !7, i64 24}
!12 = !{!"tag_____ParserState__", !13, i64 0, !14, i64 16, !7, i64 24, !7, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !7, i64 64, !15, i64 72, !14, i64 80, !14, i64 84, !7, i64 88, !14, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!13 = !{!"", !7, i64 0, !14, i64 8}
!14 = !{!"int", !8, i64 0}
!15 = !{!"tag_____IntRange__", !14, i64 0, !14, i64 4}
!16 = !{!7, !7, i64 0}
!17 = !{!12, !7, i64 32}
!18 = !{!19, !14, i64 40}
!19 = !{!"tag_____Token__", !14, i64 0, !13, i64 8, !15, i64 24, !15, i64 32, !14, i64 40}
!20 = !{!12, !14, i64 44}
!21 = !{!19, !14, i64 0}
!22 = !{!23, !7, i64 24}
!23 = !{!"tag_____NamespaceDef__", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !14, i64 72, !7, i64 80}
!24 = !{!23, !14, i64 72}
!25 = !{!23, !7, i64 32}
!26 = !{!23, !7, i64 40}
!27 = !{!23, !7, i64 56}
!28 = !{!23, !7, i64 48}
!29 = !{!12, !7, i64 104}
!30 = !{!12, !7, i64 64}
!31 = !{!23, !7, i64 64}


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