; LLVM IR from specinfo-ua/UAPKI :: library/uapkif/src/asn1 (constr_SEQUENCE)

; 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.asn_dec_rval_s = type { i32, i64 }
%struct.asn_TYPE_descriptor_s = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, i32, ptr, ptr, i32, ptr }
%struct.asn_SEQUENCE_specifics_s = type { i32, i32, ptr, i32, ptr, i32, i32, i32, i32 }
%struct.asn_struct_ctx_s = type { i16, i16, i32, ptr, i64 }
%struct.asn_TYPE_member_s = type { i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr }

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

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #1

; 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) #2

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

; Function Attrs: nounwind uwtable
define dso_local { i32, i64 } @SEQUENCE_decode_xer(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i64 noundef %5) #3 {
  %7 = alloca %struct.asn_dec_rval_s, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.asn_dec_rval_s, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %struct.asn_dec_rval_s, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store i64 %5, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %39 = load ptr, ptr %9, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %39, i32 0, i32 19
  %41 = load ptr, ptr %40, align 8, !tbaa !11
  store ptr %41, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %42 = load ptr, ptr %9, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %42, i32 0, i32 17
  %44 = load ptr, ptr %43, align 8, !tbaa !14
  store ptr %44, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = icmp ne ptr %45, null
  br i1 %46, label %47, label %49

47:                                               ; preds = %6
  %48 = load ptr, ptr %11, align 8, !tbaa !5
  br label %53

49:                                               ; preds = %6
  %50 = load ptr, ptr %9, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %50, i32 0, i32 1
  %52 = load ptr, ptr %51, align 8, !tbaa !15
  br label %53

53:                                               ; preds = %49, %47
  %54 = phi ptr [ %48, %47 ], [ %52, %49 ]
  store ptr %54, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  store ptr %56, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  store i64 0, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %57 = load ptr, ptr %17, align 8, !tbaa !5
  %58 = icmp eq ptr %57, null
  br i1 %58, label %59, label %76

59:                                               ; preds = %53
  %60 = load ptr, ptr %14, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %60, i32 0, i32 0
  %62 = load i32, ptr %61, align 8, !tbaa !16
  %63 = sext i32 %62 to i64
  %64 = call noalias ptr @calloc(i64 noundef 1, i64 noundef %63) #6
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %64, ptr %65, align 8, !tbaa !5
  store ptr %64, ptr %17, align 8, !tbaa !5
  %66 = load ptr, ptr %17, align 8, !tbaa !5
  %67 = icmp eq ptr %66, null
  br i1 %67, label %68, label %75

68:                                               ; preds = %59
  br label %69

69:                                               ; preds = %68
  %70 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 2, ptr %70, align 8, !tbaa !18
  %71 = load i64, ptr %19, align 8, !tbaa !9
  %72 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %71, ptr %72, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %549

73:                                               ; No predecessors!
  br label %74

74:                                               ; preds = %73
  br label %75

75:                                               ; preds = %74, %59
  br label %76

76:                                               ; preds = %75, %53
  %77 = load ptr, ptr %17, align 8, !tbaa !5
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %78, i32 0, i32 1
  %80 = load i32, ptr %79, align 4, !tbaa !21
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds i8, ptr %77, i64 %81
  store ptr %82, ptr %18, align 8, !tbaa !5
  %83 = load ptr, ptr %18, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %83, i32 0, i32 1
  %85 = load i16, ptr %84, align 2, !tbaa !22
  %86 = sext i16 %85 to i32
  store i32 %86, ptr %20, align 4, !tbaa !25
  br label %87

87:                                               ; preds = %538, %76
  %88 = load ptr, ptr %18, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %88, i32 0, i32 0
  %90 = load i16, ptr %89, align 8, !tbaa !26
  %91 = sext i16 %90 to i32
  %92 = icmp sle i32 %91, 3
  br i1 %92, label %93, label %540

93:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %94, i32 0, i32 0
  %96 = load i16, ptr %95, align 8, !tbaa !26
  %97 = sext i16 %96 to i32
  %98 = icmp eq i32 %97, 2
  br i1 %98, label %99, label %183

99:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %100, i32 0, i32 17
  %102 = load ptr, ptr %101, align 8, !tbaa !14
  %103 = load i32, ptr %20, align 4, !tbaa !25
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %102, i64 %104
  store ptr %105, ptr %26, align 8, !tbaa !5
  %106 = load ptr, ptr %26, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %106, i32 0, i32 0
  %108 = load i32, ptr %107, align 8, !tbaa !27
  %109 = and i32 %108, 1
  %110 = icmp ne i32 %109, 0
  br i1 %110, label %111, label %118

111:                                              ; preds = %99
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load ptr, ptr %26, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %113, i32 0, i32 2
  %115 = load i32, ptr %114, align 8, !tbaa !29
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds i8, ptr %112, i64 %116
  store ptr %117, ptr %30, align 8, !tbaa !5
  br label %125

118:                                              ; preds = %99
  %119 = load ptr, ptr %17, align 8, !tbaa !5
  %120 = load ptr, ptr %26, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %120, i32 0, i32 2
  %122 = load i32, ptr %121, align 8, !tbaa !29
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i8, ptr %119, i64 %123
  store ptr %124, ptr %29, align 8, !tbaa !5
  store ptr %29, ptr %30, align 8, !tbaa !5
  br label %125

125:                                              ; preds = %118, %111
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  %126 = load ptr, ptr %26, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %126, i32 0, i32 5
  %128 = load ptr, ptr %127, align 8, !tbaa !30
  %129 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %128, i32 0, i32 7
  %130 = load ptr, ptr %129, align 8, !tbaa !31
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = load ptr, ptr %26, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %132, i32 0, i32 5
  %134 = load ptr, ptr %133, align 8, !tbaa !30
  %135 = load ptr, ptr %30, align 8, !tbaa !5
  %136 = load ptr, ptr %26, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %136, i32 0, i32 9
  %138 = load ptr, ptr %137, align 8, !tbaa !32
  %139 = load ptr, ptr %12, align 8, !tbaa !5
  %140 = load i64, ptr %13, align 8, !tbaa !9
  %141 = call { i32, i64 } %130(ptr noundef %131, ptr noundef %134, ptr noundef %135, ptr noundef %138, ptr noundef %139, i64 noundef %140)
  %142 = getelementptr inbounds { i32, i64 }, ptr %31, i32 0, i32 0
  %143 = extractvalue { i32, i64 } %141, 0
  store i32 %143, ptr %142, align 8
  %144 = getelementptr inbounds { i32, i64 }, ptr %31, i32 0, i32 1
  %145 = extractvalue { i32, i64 } %141, 1
  store i64 %145, ptr %144, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %28, ptr align 8 %31, i64 16, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  br label %146

146:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %147 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %28, i32 0, i32 1
  %148 = load i64, ptr %147, align 8, !tbaa !20
  store i64 %148, ptr %32, align 8, !tbaa !9
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = load i64, ptr %32, align 8, !tbaa !9
  %151 = getelementptr inbounds i8, ptr %149, i64 %150
  store ptr %151, ptr %12, align 8, !tbaa !5
  %152 = load i64, ptr %32, align 8, !tbaa !9
  %153 = load i64, ptr %13, align 8, !tbaa !9
  %154 = sub i64 %153, %152
  store i64 %154, ptr %13, align 8, !tbaa !9
  %155 = load i64, ptr %32, align 8, !tbaa !9
  %156 = load i64, ptr %19, align 8, !tbaa !9
  %157 = add i64 %156, %155
  store i64 %157, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  br label %158

158:                                              ; preds = %146
  br label %159

159:                                              ; preds = %158
  %160 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %28, i32 0, i32 0
  %161 = load i32, ptr %160, align 8, !tbaa !18
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %172

163:                                              ; preds = %159
  br label %164

164:                                              ; preds = %163
  %165 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %28, i32 0, i32 0
  %166 = load i32, ptr %165, align 8, !tbaa !18
  %167 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 %166, ptr %167, align 8, !tbaa !18
  %168 = load i64, ptr %19, align 8, !tbaa !9
  %169 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %168, ptr %169, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %180

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170
  br label %172

172:                                              ; preds = %171, %159
  %173 = load ptr, ptr %18, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %173, i32 0, i32 0
  store i16 1, ptr %174, align 8, !tbaa !26
  %175 = load i32, ptr %20, align 4, !tbaa !25
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %20, align 4, !tbaa !25
  %177 = trunc i32 %176 to i16
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %178, i32 0, i32 1
  store i16 %177, ptr %179, align 2, !tbaa !22
  store i32 0, ptr %22, align 4
  br label %180

180:                                              ; preds = %172, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  %181 = load i32, ptr %22, align 4
  switch i32 %181, label %538 [
    i32 0, label %182
  ]

182:                                              ; preds = %180
  br label %183

183:                                              ; preds = %182, %93
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %184, i32 0, i32 2
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = load i64, ptr %13, align 8, !tbaa !9
  %188 = call i64 @xer_next_token(ptr noundef %185, ptr noundef %186, i64 noundef %187, ptr noundef %23)
  store i64 %188, ptr %24, align 8, !tbaa !9
  %189 = load i64, ptr %24, align 8, !tbaa !9
  %190 = icmp eq i64 %189, -1
  br i1 %190, label %191, label %198

191:                                              ; preds = %183
  br label %192

192:                                              ; preds = %191
  %193 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 2, ptr %193, align 8, !tbaa !18
  %194 = load i64, ptr %19, align 8, !tbaa !9
  %195 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %194, ptr %195, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %538

196:                                              ; No predecessors!
  br label %197

197:                                              ; preds = %196
  br label %222

198:                                              ; preds = %183
  %199 = load i32, ptr %23, align 4, !tbaa !25
  switch i32 %199, label %221 [
    i32 0, label %200
    i32 3, label %207
    i32 2, label %207
    i32 1, label %221
  ]

200:                                              ; preds = %198
  br label %201

201:                                              ; preds = %200
  %202 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 1, ptr %202, align 8, !tbaa !18
  %203 = load i64, ptr %19, align 8, !tbaa !9
  %204 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %203, ptr %204, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %538

205:                                              ; No predecessors!
  br label %206

206:                                              ; preds = %205
  br label %207

207:                                              ; preds = %206, %198, %198
  br label %208

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %209 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %209, ptr %33, align 8, !tbaa !9
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  %211 = load i64, ptr %33, align 8, !tbaa !9
  %212 = getelementptr inbounds i8, ptr %210, i64 %211
  store ptr %212, ptr %12, align 8, !tbaa !5
  %213 = load i64, ptr %33, align 8, !tbaa !9
  %214 = load i64, ptr %13, align 8, !tbaa !9
  %215 = sub i64 %214, %213
  store i64 %215, ptr %13, align 8, !tbaa !9
  %216 = load i64, ptr %33, align 8, !tbaa !9
  %217 = load i64, ptr %19, align 8, !tbaa !9
  %218 = add i64 %217, %216
  store i64 %218, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  br label %219

219:                                              ; preds = %208
  br label %220

220:                                              ; preds = %219
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

221:                                              ; preds = %198, %198
  br label %222

222:                                              ; preds = %221, %197
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load i64, ptr %24, align 8, !tbaa !9
  %225 = trunc i64 %224 to i32
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = call i32 @xer_check_tag(ptr noundef %223, i32 noundef %225, ptr noundef %226)
  store i32 %227, ptr %25, align 4, !tbaa !25
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %228, i32 0, i32 0
  %230 = load i16, ptr %229, align 8, !tbaa !26
  %231 = sext i16 %230 to i32
  %232 = icmp eq i32 %231, 3
  br i1 %232, label %233, label %281

233:                                              ; preds = %222
  %234 = load i32, ptr %25, align 4, !tbaa !25
  %235 = load ptr, ptr %18, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %235, i32 0, i32 4
  %237 = call i32 @xer_skip_unknown(i32 noundef %234, ptr noundef %236)
  switch i32 %237, label %280 [
    i32 -1, label %238
    i32 0, label %247
    i32 1, label %261
    i32 2, label %277
  ]

238:                                              ; preds = %233
  %239 = load ptr, ptr %18, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %239, i32 0, i32 0
  store i16 4, ptr %240, align 8, !tbaa !26
  br label %241

241:                                              ; preds = %238
  %242 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 2, ptr %242, align 8, !tbaa !18
  %243 = load i64, ptr %19, align 8, !tbaa !9
  %244 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %243, ptr %244, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %538

245:                                              ; No predecessors!
  br label %246

246:                                              ; preds = %245
  br label %247

247:                                              ; preds = %246, %233
  br label %248

248:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %249 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %249, ptr %34, align 8, !tbaa !9
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  %251 = load i64, ptr %34, align 8, !tbaa !9
  %252 = getelementptr inbounds i8, ptr %250, i64 %251
  store ptr %252, ptr %12, align 8, !tbaa !5
  %253 = load i64, ptr %34, align 8, !tbaa !9
  %254 = load i64, ptr %13, align 8, !tbaa !9
  %255 = sub i64 %254, %253
  store i64 %255, ptr %13, align 8, !tbaa !9
  %256 = load i64, ptr %34, align 8, !tbaa !9
  %257 = load i64, ptr %19, align 8, !tbaa !9
  %258 = add i64 %257, %256
  store i64 %258, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  br label %259

259:                                              ; preds = %248
  br label %260

260:                                              ; preds = %259
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

261:                                              ; preds = %233
  br label %262

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %263 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %263, ptr %35, align 8, !tbaa !9
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  %265 = load i64, ptr %35, align 8, !tbaa !9
  %266 = getelementptr inbounds i8, ptr %264, i64 %265
  store ptr %266, ptr %12, align 8, !tbaa !5
  %267 = load i64, ptr %35, align 8, !tbaa !9
  %268 = load i64, ptr %13, align 8, !tbaa !9
  %269 = sub i64 %268, %267
  store i64 %269, ptr %13, align 8, !tbaa !9
  %270 = load i64, ptr %35, align 8, !tbaa !9
  %271 = load i64, ptr %19, align 8, !tbaa !9
  %272 = add i64 %271, %270
  store i64 %272, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  br label %273

273:                                              ; preds = %262
  br label %274

274:                                              ; preds = %273
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %275, i32 0, i32 0
  store i16 1, ptr %276, align 8, !tbaa !26
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

277:                                              ; preds = %233
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %278, i32 0, i32 0
  store i16 1, ptr %279, align 8, !tbaa !26
  br label %280

280:                                              ; preds = %277, %233
  br label %281

281:                                              ; preds = %280, %222
  %282 = load i32, ptr %25, align 4, !tbaa !25
  switch i32 %282, label %536 [
    i32 2, label %283
    i32 3, label %293
    i32 1, label %369
    i32 5, label %392
    i32 7, label %392
  ]

283:                                              ; preds = %281
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %284, i32 0, i32 0
  %286 = load i16, ptr %285, align 8, !tbaa !26
  %287 = sext i16 %286 to i32
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %283
  br label %537

290:                                              ; preds = %283
  %291 = load ptr, ptr %18, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %291, i32 0, i32 0
  store i16 0, ptr %292, align 8, !tbaa !26
  br label %293

293:                                              ; preds = %290, %281
  %294 = load ptr, ptr %18, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %294, i32 0, i32 0
  %296 = load i16, ptr %295, align 8, !tbaa !26
  %297 = sext i16 %296 to i32
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %368

299:                                              ; preds = %293
  %300 = load i32, ptr %20, align 4, !tbaa !25
  %301 = load ptr, ptr %9, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %301, i32 0, i32 18
  %303 = load i32, ptr %302, align 8, !tbaa !36
  %304 = icmp sge i32 %300, %303
  br i1 %304, label %338, label %305

305:                                              ; preds = %299
  %306 = load i32, ptr %20, align 4, !tbaa !25
  %307 = load ptr, ptr %15, align 8, !tbaa !5
  %308 = load i32, ptr %20, align 4, !tbaa !25
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %307, i64 %309
  %311 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %310, i32 0, i32 1
  %312 = load i32, ptr %311, align 4, !tbaa !37
  %313 = add nsw i32 %306, %312
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %314, i32 0, i32 18
  %316 = load i32, ptr %315, align 8, !tbaa !36
  %317 = icmp eq i32 %313, %316
  br i1 %317, label %338, label %318

318:                                              ; preds = %305
  %319 = load i32, ptr %20, align 4, !tbaa !25
  %320 = load ptr, ptr %14, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %320, i32 0, i32 7
  %322 = load i32, ptr %321, align 8, !tbaa !38
  %323 = icmp sgt i32 %319, %322
  br i1 %323, label %324, label %360

324:                                              ; preds = %318
  %325 = load i32, ptr %20, align 4, !tbaa !25
  %326 = load ptr, ptr %14, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %326, i32 0, i32 8
  %328 = load i32, ptr %327, align 4, !tbaa !39
  %329 = icmp slt i32 %325, %328
  br i1 %329, label %330, label %360

330:                                              ; preds = %324
  %331 = load ptr, ptr %14, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %331, i32 0, i32 8
  %333 = load i32, ptr %332, align 4, !tbaa !39
  %334 = load ptr, ptr %9, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %334, i32 0, i32 18
  %336 = load i32, ptr %335, align 8, !tbaa !36
  %337 = icmp sgt i32 %333, %336
  br i1 %337, label %338, label %360

338:                                              ; preds = %330, %305, %299
  br label %339

339:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %340 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %340, ptr %36, align 8, !tbaa !9
  %341 = load ptr, ptr %12, align 8, !tbaa !5
  %342 = load i64, ptr %36, align 8, !tbaa !9
  %343 = getelementptr inbounds i8, ptr %341, i64 %342
  store ptr %343, ptr %12, align 8, !tbaa !5
  %344 = load i64, ptr %36, align 8, !tbaa !9
  %345 = load i64, ptr %13, align 8, !tbaa !9
  %346 = sub i64 %345, %344
  store i64 %346, ptr %13, align 8, !tbaa !9
  %347 = load i64, ptr %36, align 8, !tbaa !9
  %348 = load i64, ptr %19, align 8, !tbaa !9
  %349 = add i64 %348, %347
  store i64 %349, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  br label %350

350:                                              ; preds = %339
  br label %351

351:                                              ; preds = %350
  %352 = load ptr, ptr %18, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %352, i32 0, i32 0
  store i16 4, ptr %353, align 8, !tbaa !26
  br label %354

354:                                              ; preds = %351
  %355 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 0, ptr %355, align 8, !tbaa !18
  %356 = load i64, ptr %19, align 8, !tbaa !9
  %357 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %356, ptr %357, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %538

358:                                              ; No predecessors!
  br label %359

359:                                              ; preds = %358
  br label %367

360:                                              ; preds = %330, %324, %318
  br label %361

361:                                              ; preds = %360
  %362 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 2, ptr %362, align 8, !tbaa !18
  %363 = load i64, ptr %19, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %363, ptr %364, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %538

365:                                              ; No predecessors!
  br label %366

366:                                              ; preds = %365
  br label %367

367:                                              ; preds = %366, %359
  br label %368

368:                                              ; preds = %367, %293
  br label %369

369:                                              ; preds = %368, %281
  %370 = load ptr, ptr %18, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %370, i32 0, i32 0
  %372 = load i16, ptr %371, align 8, !tbaa !26
  %373 = sext i16 %372 to i32
  %374 = icmp eq i32 %373, 0
  br i1 %374, label %375, label %391

375:                                              ; preds = %369
  br label %376

376:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %377 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %377, ptr %37, align 8, !tbaa !9
  %378 = load ptr, ptr %12, align 8, !tbaa !5
  %379 = load i64, ptr %37, align 8, !tbaa !9
  %380 = getelementptr inbounds i8, ptr %378, i64 %379
  store ptr %380, ptr %12, align 8, !tbaa !5
  %381 = load i64, ptr %37, align 8, !tbaa !9
  %382 = load i64, ptr %13, align 8, !tbaa !9
  %383 = sub i64 %382, %381
  store i64 %383, ptr %13, align 8, !tbaa !9
  %384 = load i64, ptr %37, align 8, !tbaa !9
  %385 = load i64, ptr %19, align 8, !tbaa !9
  %386 = add i64 %385, %384
  store i64 %386, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %387

387:                                              ; preds = %376
  br label %388

388:                                              ; preds = %387
  %389 = load ptr, ptr %18, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %389, i32 0, i32 0
  store i16 1, ptr %390, align 8, !tbaa !26
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

391:                                              ; preds = %369
  br label %392

392:                                              ; preds = %391, %281, %281
  %393 = load ptr, ptr %18, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %393, i32 0, i32 0
  %395 = load i16, ptr %394, align 8, !tbaa !26
  %396 = sext i16 %395 to i32
  %397 = icmp ne i32 %396, 1
  br i1 %397, label %398, label %399

398:                                              ; preds = %392
  br label %537

399:                                              ; preds = %392
  %400 = load i32, ptr %20, align 4, !tbaa !25
  %401 = load ptr, ptr %9, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %401, i32 0, i32 18
  %403 = load i32, ptr %402, align 8, !tbaa !36
  %404 = icmp slt i32 %400, %403
  br i1 %404, label %405, label %466

405:                                              ; preds = %399
  %406 = load i32, ptr %20, align 4, !tbaa !25
  %407 = load ptr, ptr %15, align 8, !tbaa !5
  %408 = load i32, ptr %20, align 4, !tbaa !25
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %407, i64 %409
  %411 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %410, i32 0, i32 1
  %412 = load i32, ptr %411, align 4, !tbaa !37
  %413 = add nsw i32 %406, %412
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %21, align 4, !tbaa !25
  %415 = load i32, ptr %21, align 4, !tbaa !25
  %416 = load ptr, ptr %9, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %416, i32 0, i32 18
  %418 = load i32, ptr %417, align 8, !tbaa !36
  %419 = icmp sgt i32 %415, %418
  br i1 %419, label %420, label %424

420:                                              ; preds = %405
  %421 = load ptr, ptr %9, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %421, i32 0, i32 18
  %423 = load i32, ptr %422, align 8, !tbaa !36
  store i32 %423, ptr %21, align 4, !tbaa !25
  br label %424

424:                                              ; preds = %420, %405
  %425 = load i32, ptr %20, align 4, !tbaa !25
  store i32 %425, ptr %27, align 4, !tbaa !25
  br label %426

426:                                              ; preds = %457, %424
  %427 = load i32, ptr %27, align 4, !tbaa !25
  %428 = load i32, ptr %21, align 4, !tbaa !25
  %429 = icmp slt i32 %427, %428
  br i1 %429, label %430, label %460

430:                                              ; preds = %426
  %431 = load ptr, ptr %9, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %431, i32 0, i32 17
  %433 = load ptr, ptr %432, align 8, !tbaa !14
  %434 = load i32, ptr %27, align 4, !tbaa !25
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %433, i64 %435
  store ptr %436, ptr %26, align 8, !tbaa !5
  %437 = load ptr, ptr %12, align 8, !tbaa !5
  %438 = load i64, ptr %24, align 8, !tbaa !9
  %439 = trunc i64 %438 to i32
  %440 = load ptr, ptr %26, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %440, i32 0, i32 9
  %442 = load ptr, ptr %441, align 8, !tbaa !32
  %443 = call i32 @xer_check_tag(ptr noundef %437, i32 noundef %439, ptr noundef %442)
  store i32 %443, ptr %25, align 4, !tbaa !25
  %444 = load i32, ptr %25, align 4, !tbaa !25
  switch i32 %444, label %454 [
    i32 3, label %445
    i32 1, label %445
    i32 5, label %453
    i32 7, label %453
  ]

445:                                              ; preds = %430, %430
  %446 = load i32, ptr %27, align 4, !tbaa !25
  store i32 %446, ptr %20, align 4, !tbaa !25
  %447 = load i32, ptr %20, align 4, !tbaa !25
  %448 = trunc i32 %447 to i16
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %449, i32 0, i32 1
  store i16 %448, ptr %450, align 2, !tbaa !22
  %451 = load ptr, ptr %18, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %451, i32 0, i32 0
  store i16 2, ptr %452, align 8, !tbaa !26
  br label %456

453:                                              ; preds = %430, %430
  br label %457

454:                                              ; preds = %430
  %455 = load i32, ptr %21, align 4, !tbaa !25
  store i32 %455, ptr %27, align 4, !tbaa !25
  br label %456

456:                                              ; preds = %454, %445
  br label %460

457:                                              ; preds = %453
  %458 = load i32, ptr %27, align 4, !tbaa !25
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr %27, align 4, !tbaa !25
  br label %426, !llvm.loop !40

460:                                              ; preds = %456, %426
  %461 = load i32, ptr %27, align 4, !tbaa !25
  %462 = load i32, ptr %21, align 4, !tbaa !25
  %463 = icmp ne i32 %461, %462
  br i1 %463, label %464, label %465

464:                                              ; preds = %460
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

465:                                              ; preds = %460
  br label %467

466:                                              ; preds = %399
  br label %467

467:                                              ; preds = %466, %465
  %468 = load i32, ptr %20, align 4, !tbaa !25
  %469 = load i32, ptr %20, align 4, !tbaa !25
  %470 = load ptr, ptr %9, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %470, i32 0, i32 18
  %472 = load i32, ptr %471, align 8, !tbaa !36
  %473 = icmp slt i32 %469, %472
  br i1 %473, label %474, label %481

474:                                              ; preds = %467
  %475 = load ptr, ptr %15, align 8, !tbaa !5
  %476 = load i32, ptr %20, align 4, !tbaa !25
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %475, i64 %477
  %479 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %478, i32 0, i32 1
  %480 = load i32, ptr %479, align 4, !tbaa !37
  br label %482

481:                                              ; preds = %467
  br label %482

482:                                              ; preds = %481, %474
  %483 = phi i32 [ %480, %474 ], [ 0, %481 ]
  %484 = add nsw i32 %468, %483
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %485, i32 0, i32 7
  %487 = load i32, ptr %486, align 8, !tbaa !38
  %488 = icmp sgt i32 %484, %487
  br i1 %488, label %489, label %535

489:                                              ; preds = %482
  %490 = load i32, ptr %20, align 4, !tbaa !25
  %491 = load i32, ptr %20, align 4, !tbaa !25
  %492 = load ptr, ptr %9, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.asn_TYPE_descriptor_s, ptr %492, i32 0, i32 18
  %494 = load i32, ptr %493, align 8, !tbaa !36
  %495 = icmp slt i32 %491, %494
  br i1 %495, label %496, label %503

496:                                              ; preds = %489
  %497 = load ptr, ptr %15, align 8, !tbaa !5
  %498 = load i32, ptr %20, align 4, !tbaa !25
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %497, i64 %499
  %501 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %500, i32 0, i32 1
  %502 = load i32, ptr %501, align 4, !tbaa !37
  br label %504

503:                                              ; preds = %489
  br label %504

504:                                              ; preds = %503, %496
  %505 = phi i32 [ %502, %496 ], [ 0, %503 ]
  %506 = add nsw i32 %490, %505
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.asn_SEQUENCE_specifics_s, ptr %507, i32 0, i32 8
  %509 = load i32, ptr %508, align 4, !tbaa !39
  %510 = icmp slt i32 %506, %509
  br i1 %510, label %511, label %535

511:                                              ; preds = %504
  %512 = load i32, ptr %25, align 4, !tbaa !25
  %513 = and i32 %512, 2
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %516

515:                                              ; preds = %511
  br label %521

516:                                              ; preds = %511
  %517 = load ptr, ptr %18, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %517, i32 0, i32 4
  store i64 1, ptr %518, align 8, !tbaa !41
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %519, i32 0, i32 0
  store i16 3, ptr %520, align 8, !tbaa !26
  br label %521

521:                                              ; preds = %516, %515
  br label %522

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %523 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %523, ptr %38, align 8, !tbaa !9
  %524 = load ptr, ptr %12, align 8, !tbaa !5
  %525 = load i64, ptr %38, align 8, !tbaa !9
  %526 = getelementptr inbounds i8, ptr %524, i64 %525
  store ptr %526, ptr %12, align 8, !tbaa !5
  %527 = load i64, ptr %38, align 8, !tbaa !9
  %528 = load i64, ptr %13, align 8, !tbaa !9
  %529 = sub i64 %528, %527
  store i64 %529, ptr %13, align 8, !tbaa !9
  %530 = load i64, ptr %38, align 8, !tbaa !9
  %531 = load i64, ptr %19, align 8, !tbaa !9
  %532 = add i64 %531, %530
  store i64 %532, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  br label %533

533:                                              ; preds = %522
  br label %534

534:                                              ; preds = %533
  store i32 5, ptr %22, align 4
  br label %538, !llvm.loop !34

535:                                              ; preds = %504, %482
  br label %537

536:                                              ; preds = %281
  br label %537

537:                                              ; preds = %536, %535, %398, %289
  store i32 4, ptr %22, align 4
  br label %538

538:                                              ; preds = %537, %534, %464, %388, %361, %354, %274, %260, %241, %220, %201, %192, %180
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  %539 = load i32, ptr %22, align 4
  switch i32 %539, label %549 [
    i32 5, label %87
    i32 4, label %540
  ]

540:                                              ; preds = %538, %87
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.asn_struct_ctx_s, ptr %541, i32 0, i32 0
  store i16 4, ptr %542, align 8, !tbaa !26
  br label %543

543:                                              ; preds = %540
  %544 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 0
  store i32 2, ptr %544, align 8, !tbaa !18
  %545 = load i64, ptr %19, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.asn_dec_rval_s, ptr %7, i32 0, i32 1
  store i64 %545, ptr %546, align 8, !tbaa !20
  store i32 1, ptr %22, align 4
  br label %549

547:                                              ; No predecessors!
  br label %548

548:                                              ; preds = %547
  store i32 0, ptr %22, align 4
  br label %549

549:                                              ; preds = %548, %543, %538, %69
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  %550 = load i32, ptr %22, align 4
  switch i32 %550, label %553 [
    i32 0, label %551
    i32 1, label %551
  ]

551:                                              ; preds = %549, %549
  %552 = load { i32, i64 }, ptr %7, align 8
  ret { i32, i64 } %552

553:                                              ; preds = %549
  unreachable
}

declare i64 @xer_next_token(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare i32 @xer_check_tag(ptr noundef, i32 noundef, ptr noundef) #4

declare i32 @xer_skip_unknown(i32 noundef, ptr noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind allocsize(0,1) "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 #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { "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 }
attributes #6 = { nounwind allocsize(0,1) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 152}
!12 = !{!"asn_TYPE_descriptor_s", !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, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !13, i64 104, !6, i64 112, !13, i64 120, !6, i64 128, !6, i64 136, !13, i64 144, !6, i64 152}
!13 = !{!"int", !7, i64 0}
!14 = !{!12, !6, i64 136}
!15 = !{!12, !6, i64 8}
!16 = !{!17, !13, i64 0}
!17 = !{!"asn_SEQUENCE_specifics_s", !13, i64 0, !13, i64 4, !6, i64 8, !13, i64 16, !6, i64 24, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44}
!18 = !{!19, !13, i64 0}
!19 = !{!"asn_dec_rval_s", !13, i64 0, !10, i64 8}
!20 = !{!19, !10, i64 8}
!21 = !{!17, !13, i64 4}
!22 = !{!23, !24, i64 2}
!23 = !{!"asn_struct_ctx_s", !24, i64 0, !24, i64 2, !13, i64 4, !6, i64 8, !10, i64 16}
!24 = !{!"short", !7, i64 0}
!25 = !{!13, !13, i64 0}
!26 = !{!23, !24, i64 0}
!27 = !{!28, !13, i64 0}
!28 = !{!"asn_TYPE_member_s", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!29 = !{!28, !13, i64 8}
!30 = !{!28, !6, i64 24}
!31 = !{!12, !6, i64 56}
!32 = !{!28, !6, i64 56}
!33 = !{i64 0, i64 4, !25, i64 8, i64 8, !9}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!12, !13, i64 144}
!37 = !{!28, !13, i64 4}
!38 = !{!17, !13, i64 40}
!39 = !{!17, !13, i64 44}
!40 = distinct !{!40, !35}
!41 = !{!23, !10, i64 16}


; 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.asn_TYPE_member_s = type { i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr }

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local { i32, i64 } @SEQUENCE_decode_xer(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4, i64 noundef %5) local_unnamed_addr #2 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = getelementptr inbounds i8, ptr %1, i64 152
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %1, i64 136
  %12 = load ptr, ptr %11, align 8, !tbaa !11
  %.not = icmp eq ptr %3, null
  br i1 %.not, label %13, label %16

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

16:                                               ; preds = %6, %13
  %17 = phi ptr [ %15, %13 ], [ %3, %6 ]
  %18 = load ptr, ptr %2, align 8, !tbaa !13
  %19 = icmp eq ptr %18, null
  br i1 %19, label %20, label %25

20:                                               ; preds = %16
  %21 = load i32, ptr %10, align 8, !tbaa !14
  %22 = sext i32 %21 to i64
  %23 = tail call noalias ptr @calloc(i64 noundef 1, i64 noundef %22) #4
  store ptr %23, ptr %2, align 8, !tbaa !13
  %24 = icmp eq ptr %23, null
  br i1 %24, label %167, label %25

25:                                               ; preds = %20, %16
  %.0170 = phi ptr [ %23, %20 ], [ %18, %16 ]
  %26 = getelementptr inbounds i8, ptr %10, i64 4
  %27 = load i32, ptr %26, align 4, !tbaa !16
  %28 = sext i32 %27 to i64
  %29 = getelementptr inbounds i8, ptr %.0170, i64 %28
  %30 = getelementptr inbounds i8, ptr %29, i64 2
  %31 = load i16, ptr %29, align 8, !tbaa !17
  %32 = icmp slt i16 %31, 4
  br i1 %32, label %.lr.ph274, label %.loopexit236

.lr.ph274:                                        ; preds = %25
  %33 = load i16, ptr %30, align 2, !tbaa !21
  %34 = sext i16 %33 to i32
  %35 = getelementptr inbounds i8, ptr %29, i64 4
  %36 = getelementptr inbounds i8, ptr %29, i64 16
  %37 = getelementptr inbounds i8, ptr %1, i64 144
  %38 = getelementptr inbounds i8, ptr %10, i64 40
  %39 = getelementptr inbounds i8, ptr %10, i64 44
  br label %40

40:                                               ; preds = %.lr.ph274, %164
  %41 = phi i16 [ %31, %.lr.ph274 ], [ %165, %164 ]
  %.0273 = phi ptr [ %4, %.lr.ph274 ], [ %.2, %164 ]
  %.0167272 = phi i64 [ %5, %.lr.ph274 ], [ %.2169, %164 ]
  %.0171271 = phi i64 [ 0, %.lr.ph274 ], [ %.2173, %164 ]
  %.0174270 = phi i32 [ %34, %.lr.ph274 ], [ %.6, %164 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  %42 = icmp eq i16 %41, 2
  br i1 %42, label %43, label %70

43:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %44 = load ptr, ptr %11, align 8, !tbaa !11
  %45 = sext i32 %.0174270 to i64
  %46 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %44, i64 %45
  %47 = load i32, ptr %46, align 8, !tbaa !22
  %48 = and i32 %47, 1
  %.not196 = icmp eq i32 %48, 0
  %49 = getelementptr inbounds i8, ptr %46, i64 8
  %50 = load i32, ptr %49, align 8, !tbaa !24
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds i8, ptr %.0170, i64 %51
  br i1 %.not196, label %53, label %54

53:                                               ; preds = %43
  store ptr %52, ptr %8, align 8, !tbaa !13
  br label %54

54:                                               ; preds = %43, %53
  %.0184 = phi ptr [ %8, %53 ], [ %52, %43 ]
  %55 = getelementptr inbounds i8, ptr %46, i64 24
  %56 = load ptr, ptr %55, align 8, !tbaa !25
  %57 = getelementptr inbounds i8, ptr %56, i64 56
  %58 = load ptr, ptr %57, align 8, !tbaa !26
  %59 = getelementptr inbounds i8, ptr %46, i64 56
  %60 = load ptr, ptr %59, align 8, !tbaa !27
  %61 = call { i32, i64 } %58(ptr noundef %0, ptr noundef %56, ptr noundef nonnull %.0184, ptr noundef %60, ptr noundef %.0273, i64 noundef %.0167272) #5
  %62 = extractvalue { i32, i64 } %61, 0
  %63 = extractvalue { i32, i64 } %61, 1
  %64 = add i64 %63, %.0171271
  %.not197 = icmp eq i32 %62, 0
  br i1 %.not197, label %.thread, label %69

.thread:                                          ; preds = %54
  %65 = sub i64 %.0167272, %63
  %66 = getelementptr inbounds i8, ptr %.0273, i64 %63
  store i16 1, ptr %29, align 8, !tbaa !17
  %67 = add nsw i32 %.0174270, 1
  %68 = trunc i32 %67 to i16
  store i16 %68, ptr %30, align 2, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %70

69:                                               ; preds = %54
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %.thread219

70:                                               ; preds = %.thread, %40
  %.2176 = phi i32 [ %.0174270, %40 ], [ %67, %.thread ]
  %.1172 = phi i64 [ %.0171271, %40 ], [ %64, %.thread ]
  %.1168 = phi i64 [ %.0167272, %40 ], [ %65, %.thread ]
  %.1 = phi ptr [ %.0273, %40 ], [ %66, %.thread ]
  %71 = call i64 @xer_next_token(ptr noundef nonnull %35, ptr noundef %.1, i64 noundef %.1168, ptr noundef nonnull %7) #5
  %72 = icmp eq i64 %71, -1
  br i1 %72, label %.thread219, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %7, align 4, !tbaa !28
  switch i32 %74, label %79 [
    i32 0, label %.thread219
    i32 3, label %75
    i32 2, label %75
  ]

75:                                               ; preds = %73, %73
  %76 = getelementptr inbounds i8, ptr %.1, i64 %71
  %77 = sub i64 %.1168, %71
  %78 = add i64 %71, %.1172
  br label %164, !llvm.loop !29

79:                                               ; preds = %73
  %80 = trunc i64 %71 to i32
  %81 = call i32 @xer_check_tag(ptr noundef %.1, i32 noundef %80, ptr noundef %17) #5
  %82 = load i16, ptr %29, align 8, !tbaa !17
  %83 = icmp eq i16 %82, 3
  br i1 %83, label %84, label %96

84:                                               ; preds = %79
  %85 = call i32 @xer_skip_unknown(i32 noundef %81, ptr noundef nonnull %36) #5
  switch i32 %85, label %96 [
    i32 -1, label %86
    i32 0, label %87
    i32 1, label %91
    i32 2, label %95
  ]

86:                                               ; preds = %84
  store i16 4, ptr %29, align 8, !tbaa !17
  br label %.thread219

87:                                               ; preds = %84
  %88 = getelementptr inbounds i8, ptr %.1, i64 %71
  %89 = sub i64 %.1168, %71
  %90 = add i64 %71, %.1172
  br label %164, !llvm.loop !29

91:                                               ; preds = %84
  %92 = getelementptr inbounds i8, ptr %.1, i64 %71
  %93 = sub i64 %.1168, %71
  %94 = add i64 %71, %.1172
  store i16 1, ptr %29, align 8, !tbaa !17
  br label %164, !llvm.loop !29

95:                                               ; preds = %84
  store i16 1, ptr %29, align 8, !tbaa !17
  br label %96

96:                                               ; preds = %84, %95, %79
  switch i32 %81, label %.thread228 [
    i32 2, label %97
    i32 3, label %100
    i32 1, label %117
    i32 5, label %thread-pre-split210
    i32 7, label %thread-pre-split210
  ]

97:                                               ; preds = %96
  %98 = load i16, ptr %29, align 8, !tbaa !17
  %99 = icmp eq i16 %98, 0
  br i1 %99, label %.thread228, label %.thread206

.thread206:                                       ; preds = %97
  store i16 0, ptr %29, align 8, !tbaa !17
  br label %.loopexit237

100:                                              ; preds = %96
  %.pr = load i16, ptr %29, align 8, !tbaa !17
  %101 = icmp eq i16 %.pr, 0
  br i1 %101, label %.loopexit237, label %.thread209

.loopexit237:                                     ; preds = %100, %.thread206
  %102 = load i32, ptr %37, align 8, !tbaa !31
  %.not202 = icmp slt i32 %.2176, %102
  br i1 %.not202, label %103, label %115

103:                                              ; preds = %.loopexit237
  %104 = sext i32 %.2176 to i64
  %105 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %12, i64 %104, i32 1
  %106 = load i32, ptr %105, align 4, !tbaa !32
  %107 = add nsw i32 %106, %.2176
  %108 = icmp eq i32 %107, %102
  br i1 %108, label %115, label %109

109:                                              ; preds = %103
  %110 = load i32, ptr %38, align 8, !tbaa !33
  %111 = icmp sgt i32 %.2176, %110
  br i1 %111, label %112, label %.thread219

112:                                              ; preds = %109
  %113 = load i32, ptr %39, align 4, !tbaa !34
  %114 = icmp sgt i32 %113, %102
  br i1 %114, label %115, label %.thread219

115:                                              ; preds = %112, %.loopexit237, %103
  %116 = add i64 %71, %.1172
  store i16 4, ptr %29, align 8, !tbaa !17
  br label %.thread219

117:                                              ; preds = %96
  %.pr208 = load i16, ptr %29, align 8, !tbaa !17
  %118 = icmp eq i16 %.pr208, 0
  br i1 %118, label %119, label %.thread209

119:                                              ; preds = %117
  %120 = getelementptr inbounds i8, ptr %.1, i64 %71
  %121 = sub i64 %.1168, %71
  %122 = add i64 %71, %.1172
  store i16 1, ptr %29, align 8, !tbaa !17
  br label %164, !llvm.loop !29

thread-pre-split210:                              ; preds = %96, %96
  %.pr211 = load i16, ptr %29, align 8, !tbaa !17
  br label %.thread209

.thread209:                                       ; preds = %100, %thread-pre-split210, %117
  %123 = phi i16 [ %.pr211, %thread-pre-split210 ], [ %.pr208, %117 ], [ %.pr, %100 ]
  %.not198 = icmp eq i16 %123, 1
  br i1 %.not198, label %124, label %.thread228

124:                                              ; preds = %.thread209
  %125 = load i32, ptr %37, align 8, !tbaa !31
  %126 = icmp slt i32 %.2176, %125
  br i1 %126, label %127, label %.thread212

127:                                              ; preds = %124
  %128 = sext i32 %.2176 to i64
  %129 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %12, i64 %128, i32 1
  %130 = load i32, ptr %129, align 4, !tbaa !32
  %131 = add nsw i32 %130, %.2176
  %132 = add nsw i32 %131, 1
  %.not199 = icmp slt i32 %131, %125
  %spec.select = select i1 %.not199, i32 %132, i32 %125
  %133 = icmp slt i32 %.2176, %spec.select
  br i1 %133, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %127, %141
  %indvars.iv = phi i64 [ %indvars.iv.next, %141 ], [ %128, %127 ]
  %134 = load ptr, ptr %11, align 8, !tbaa !11
  %135 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %134, i64 %indvars.iv, i32 9
  %136 = load ptr, ptr %135, align 8, !tbaa !27
  %137 = call i32 @xer_check_tag(ptr noundef %.1, i32 noundef %80, ptr noundef %136) #5
  switch i32 %137, label %.thread212 [
    i32 3, label %138
    i32 1, label %138
    i32 5, label %141
    i32 7, label %141
  ]

138:                                              ; preds = %.lr.ph, %.lr.ph
  %139 = trunc nsw i64 %indvars.iv to i32
  %140 = trunc i64 %indvars.iv to i16
  store i16 %140, ptr %30, align 2, !tbaa !21
  store i16 2, ptr %29, align 8, !tbaa !17
  br label %.loopexit

141:                                              ; preds = %.lr.ph, %.lr.ph
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %spec.select, %lftr.wideiv
  br i1 %exitcond.not, label %.thread212, label %.lr.ph, !llvm.loop !35

.loopexit:                                        ; preds = %127, %138
  %.0185242 = phi i32 [ %139, %138 ], [ %.2176, %127 ]
  %.1182 = phi i32 [ %137, %138 ], [ %81, %127 ]
  %.not200 = icmp eq i32 %.0185242, %spec.select
  br i1 %.not200, label %.thread212, label %164, !llvm.loop !29

.thread212:                                       ; preds = %141, %.lr.ph, %124, %.loopexit
  %.2183 = phi i32 [ %.1182, %.loopexit ], [ %81, %124 ], [ %137, %.lr.ph ], [ %137, %141 ]
  %.4 = phi i32 [ %.0185242, %.loopexit ], [ %.2176, %124 ], [ %.2176, %.lr.ph ], [ %.2176, %141 ]
  %142 = load i32, ptr %37, align 8, !tbaa !31
  %143 = icmp slt i32 %.4, %142
  br i1 %143, label %144, label %.thread217

144:                                              ; preds = %.thread212
  %145 = sext i32 %.4 to i64
  %146 = getelementptr inbounds %struct.asn_TYPE_member_s, ptr %12, i64 %145, i32 1
  %147 = load i32, ptr %146, align 4, !tbaa !32
  %148 = add nsw i32 %147, %.4
  %149 = load i32, ptr %38, align 8, !tbaa !33
  %150 = icmp sgt i32 %148, %149
  br i1 %150, label %.thread218, label %.thread228

.thread217:                                       ; preds = %.thread212
  %151 = load i32, ptr %38, align 8, !tbaa !33
  %152 = icmp sgt i32 %.4, %151
  br i1 %152, label %.thread218, label %.thread228

.thread218:                                       ; preds = %144, %.thread217
  %153 = phi i32 [ 0, %.thread217 ], [ %147, %144 ]
  %154 = add nsw i32 %153, %.4
  %155 = load i32, ptr %39, align 4, !tbaa !34
  %156 = icmp slt i32 %154, %155
  br i1 %156, label %157, label %.thread228

157:                                              ; preds = %.thread218
  %158 = and i32 %.2183, 2
  %.not201 = icmp eq i32 %158, 0
  br i1 %.not201, label %159, label %160

159:                                              ; preds = %157
  store i64 1, ptr %36, align 8, !tbaa !36
  store i16 3, ptr %29, align 8, !tbaa !17
  br label %160

160:                                              ; preds = %159, %157
  %161 = getelementptr inbounds i8, ptr %.1, i64 %71
  %162 = sub i64 %.1168, %71
  %163 = add i64 %71, %.1172
  br label %164, !llvm.loop !29

.thread219:                                       ; preds = %70, %73, %115, %86, %69, %109, %112
  %.sroa.0166.3.ph = phi i32 [ 2, %112 ], [ 2, %109 ], [ %62, %69 ], [ 2, %86 ], [ 0, %115 ], [ 2, %70 ], [ 1, %73 ]
  %.sroa.9.3.ph = phi i64 [ %.1172, %112 ], [ %.1172, %109 ], [ %64, %69 ], [ %.1172, %86 ], [ %116, %115 ], [ %.1172, %73 ], [ %.1172, %70 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  br label %167

.thread228:                                       ; preds = %96, %144, %.thread218, %.thread209, %.thread217, %97
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  br label %.loopexit236

164:                                              ; preds = %.loopexit, %160, %119, %91, %87, %75
  %.6 = phi i32 [ %.4, %160 ], [ %.2176, %119 ], [ %.2176, %91 ], [ %.2176, %87 ], [ %.2176, %75 ], [ %.0185242, %.loopexit ]
  %.2173 = phi i64 [ %163, %160 ], [ %122, %119 ], [ %94, %91 ], [ %90, %87 ], [ %78, %75 ], [ %.1172, %.loopexit ]
  %.2169 = phi i64 [ %162, %160 ], [ %121, %119 ], [ %93, %91 ], [ %89, %87 ], [ %77, %75 ], [ %.1168, %.loopexit ]
  %.2 = phi ptr [ %161, %160 ], [ %120, %119 ], [ %92, %91 ], [ %88, %87 ], [ %76, %75 ], [ %.1, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  %165 = load i16, ptr %29, align 8, !tbaa !17
  %166 = icmp slt i16 %165, 4
  br i1 %166, label %40, label %.loopexit236

.loopexit236:                                     ; preds = %164, %25, %.thread228
  %.3 = phi i64 [ %.1172, %.thread228 ], [ 0, %25 ], [ %.2173, %164 ]
  store i16 4, ptr %29, align 8, !tbaa !17
  br label %167

167:                                              ; preds = %.thread219, %20, %.loopexit236
  %.sroa.0166.4 = phi i32 [ 2, %.loopexit236 ], [ 2, %20 ], [ %.sroa.0166.3.ph, %.thread219 ]
  %.sroa.9.4 = phi i64 [ %.3, %.loopexit236 ], [ 0, %20 ], [ %.sroa.9.3.ph, %.thread219 ]
  %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %.sroa.0166.4, 0
  %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %.sroa.9.4, 1
  ret { i32, i64 } %.fca.1.insert
}

declare i64 @xer_next_token(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @xer_check_tag(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @xer_skip_unknown(i32 noundef, ptr noundef) local_unnamed_addr #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind allocsize(0,1) }
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, !7, i64 152}
!6 = !{!"asn_TYPE_descriptor_s", !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, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !10, i64 104, !7, i64 112, !10, i64 120, !7, i64 128, !7, i64 136, !10, i64 144, !7, i64 152}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !7, i64 136}
!12 = !{!6, !7, i64 8}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !10, i64 0}
!15 = !{!"asn_SEQUENCE_specifics_s", !10, i64 0, !10, i64 4, !7, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44}
!16 = !{!15, !10, i64 4}
!17 = !{!18, !19, i64 0}
!18 = !{!"asn_struct_ctx_s", !19, i64 0, !19, i64 2, !10, i64 4, !7, i64 8, !20, i64 16}
!19 = !{!"short", !8, i64 0}
!20 = !{!"long", !8, i64 0}
!21 = !{!18, !19, i64 2}
!22 = !{!23, !10, i64 0}
!23 = !{!"asn_TYPE_member_s", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56}
!24 = !{!23, !10, i64 8}
!25 = !{!23, !7, i64 24}
!26 = !{!6, !7, i64 56}
!27 = !{!23, !7, i64 56}
!28 = !{!10, !10, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!6, !10, i64 144}
!32 = !{!23, !10, i64 4}
!33 = !{!15, !10, i64 40}
!34 = !{!15, !10, i64 44}
!35 = distinct !{!35, !30}
!36 = !{!18, !20, i64 16}


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