; LLVM IR from tangjz/acm-icpc :: hdu/5757.ll (Z5solveiiiPiiS_b)

; 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.std::greater" = type { i8 }
%"class.std::priority_queue" = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl" }
%"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Node = type { i64, i32, i32, i32, i32, i32, i32 }

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_Z5solveiiiPiiS_b(i32 noundef %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i1 noundef zeroext %6) #0 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"struct.std::greater", align 1
  %18 = alloca %"struct.std::greater", align 1
  %19 = alloca i64, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::priority_queue", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %struct.Node, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca %struct.Node, align 8
  %29 = alloca %struct.Node, align 8
  store i32 %0, ptr %8, align 4, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !5
  store i32 %2, ptr %10, align 4, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !9
  %30 = zext i1 %6 to i8
  store i8 %30, ptr %14, align 1, !tbaa !11
  %31 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %32 = trunc i8 %31 to i1
  br i1 %32, label %33, label %74

33:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %34

34:                                               ; preds = %50, %33
  %35 = load i32, ptr %15, align 4, !tbaa !5
  %36 = load i32, ptr %10, align 4, !tbaa !5
  %37 = icmp slt i32 %35, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %34
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %53

39:                                               ; preds = %34
  %40 = load ptr, ptr %11, align 8, !tbaa !9
  %41 = load i32, ptr %15, align 4, !tbaa !5
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds i32, ptr %40, i64 %42
  %44 = load i32, ptr %43, align 4, !tbaa !5
  %45 = sub nsw i32 0, %44
  %46 = load ptr, ptr %11, align 8, !tbaa !9
  %47 = load i32, ptr %15, align 4, !tbaa !5
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds i32, ptr %46, i64 %48
  store i32 %45, ptr %49, align 4, !tbaa !5
  br label %50

50:                                               ; preds = %39
  %51 = load i32, ptr %15, align 4, !tbaa !5
  %52 = add nsw i32 %51, 1
  store i32 %52, ptr %15, align 4, !tbaa !5
  br label %34, !llvm.loop !15

53:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %54

54:                                               ; preds = %70, %53
  %55 = load i32, ptr %16, align 4, !tbaa !5
  %56 = load i32, ptr %12, align 4, !tbaa !5
  %57 = icmp slt i32 %55, %56
  br i1 %57, label %59, label %58

58:                                               ; preds = %54
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %73

59:                                               ; preds = %54
  %60 = load ptr, ptr %13, align 8, !tbaa !9
  %61 = load i32, ptr %16, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i32, ptr %60, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !5
  %65 = sub nsw i32 0, %64
  %66 = load ptr, ptr %13, align 8, !tbaa !9
  %67 = load i32, ptr %16, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds i32, ptr %66, i64 %68
  store i32 %65, ptr %69, align 4, !tbaa !5
  br label %70

70:                                               ; preds = %59
  %71 = load i32, ptr %16, align 4, !tbaa !5
  %72 = add nsw i32 %71, 1
  store i32 %72, ptr %16, align 4, !tbaa !5
  br label %54, !llvm.loop !17

73:                                               ; preds = %58
  br label %74

74:                                               ; preds = %73, %7
  %75 = load ptr, ptr %11, align 8, !tbaa !9
  %76 = load ptr, ptr %11, align 8, !tbaa !9
  %77 = load i32, ptr %10, align 4, !tbaa !5
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds i32, ptr %76, i64 %78
  call void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef %75, ptr noundef %79)
  %80 = load ptr, ptr %13, align 8, !tbaa !9
  %81 = load ptr, ptr %13, align 8, !tbaa !9
  %82 = load i32, ptr %12, align 4, !tbaa !5
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i32, ptr %81, i64 %83
  call void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef %80, ptr noundef %84)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  store i64 0, ptr %19, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %85

85:                                               ; preds = %105, %74
  %86 = load i32, ptr %20, align 4, !tbaa !5
  %87 = load i32, ptr %12, align 4, !tbaa !5
  %88 = icmp slt i32 %86, %87
  br i1 %88, label %89, label %93

89:                                               ; preds = %85
  %90 = load i32, ptr %20, align 4, !tbaa !5
  %91 = load i32, ptr %8, align 4, !tbaa !5
  %92 = icmp slt i32 %90, %91
  br label %93

93:                                               ; preds = %89, %85
  %94 = phi i1 [ false, %85 ], [ %92, %89 ]
  br i1 %94, label %96, label %95

95:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %108

96:                                               ; preds = %93
  %97 = load ptr, ptr %13, align 8, !tbaa !9
  %98 = load i32, ptr %20, align 4, !tbaa !5
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds i32, ptr %97, i64 %99
  %101 = load i32, ptr %100, align 4, !tbaa !5
  %102 = sext i32 %101 to i64
  %103 = load i64, ptr %19, align 8, !tbaa !18
  %104 = add nsw i64 %103, %102
  store i64 %104, ptr %19, align 8, !tbaa !18
  br label %105

105:                                              ; preds = %96
  %106 = load i32, ptr %20, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %20, align 4, !tbaa !5
  br label %85, !llvm.loop !20

108:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(25) %21)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %109 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %109, ptr %23, align 4, !tbaa !5
  br label %110

110:                                              ; preds = %188, %108
  %111 = load i32, ptr %22, align 4, !tbaa !5
  %112 = load i32, ptr %10, align 4, !tbaa !5
  %113 = icmp sle i32 %111, %112
  br i1 %113, label %114, label %117

114:                                              ; preds = %110
  %115 = load i32, ptr %23, align 4, !tbaa !5
  %116 = icmp sge i32 %115, 0
  br label %117

117:                                              ; preds = %114, %110
  %118 = phi i1 [ false, %110 ], [ %116, %114 ]
  br i1 %118, label %120, label %119

119:                                              ; preds = %117
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %193

120:                                              ; preds = %117
  %121 = load i32, ptr %23, align 4, !tbaa !5
  %122 = load i32, ptr %12, align 4, !tbaa !5
  %123 = icmp sle i32 %121, %122
  br i1 %123, label %124, label %157

124:                                              ; preds = %120
  %125 = load i32, ptr %23, align 4, !tbaa !5
  %126 = and i32 %125, 1
  %127 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %128 = trunc i8 %127 to i1
  %129 = zext i1 %128 to i32
  %130 = icmp eq i32 %126, %129
  br i1 %130, label %131, label %157

131:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #6
  %132 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 0
  %133 = load i64, ptr %19, align 8, !tbaa !18
  store i64 %133, ptr %132, align 8, !tbaa !21
  %134 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 1
  %135 = load i32, ptr %22, align 4, !tbaa !5
  %136 = sub nsw i32 %135, 1
  store i32 %136, ptr %134, align 8, !tbaa !23
  %137 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 2
  %138 = load i32, ptr %22, align 4, !tbaa !5
  %139 = sub nsw i32 %138, 1
  store i32 %139, ptr %137, align 4, !tbaa !24
  %140 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 3
  %141 = load i32, ptr %10, align 4, !tbaa !5
  %142 = sub nsw i32 %141, 1
  store i32 %142, ptr %140, align 8, !tbaa !25
  %143 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 4
  %144 = load i32, ptr %23, align 4, !tbaa !5
  %145 = sub nsw i32 %144, 1
  store i32 %145, ptr %143, align 4, !tbaa !26
  %146 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 5
  %147 = load i32, ptr %23, align 4, !tbaa !5
  %148 = sub nsw i32 %147, 1
  store i32 %148, ptr %146, align 8, !tbaa !27
  %149 = getelementptr inbounds %struct.Node, ptr %24, i32 0, i32 6
  %150 = load i32, ptr %12, align 4, !tbaa !5
  %151 = sub nsw i32 %150, 1
  store i32 %151, ptr %149, align 4, !tbaa !28
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushEOS0_(ptr noundef nonnull align 8 dereferenceable(25) %21, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %152 unwind label %153

152:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #6
  br label %157

153:                                              ; preds = %131
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %25, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %376

157:                                              ; preds = %152, %124, %120
  %158 = load i32, ptr %22, align 4, !tbaa !5
  %159 = load i32, ptr %10, align 4, !tbaa !5
  %160 = icmp slt i32 %158, %159
  br i1 %160, label %161, label %170

161:                                              ; preds = %157
  %162 = load ptr, ptr %11, align 8, !tbaa !9
  %163 = load i32, ptr %22, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %162, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = load i64, ptr %19, align 8, !tbaa !18
  %169 = add nsw i64 %168, %167
  store i64 %169, ptr %19, align 8, !tbaa !18
  br label %170

170:                                              ; preds = %161, %157
  %171 = load i32, ptr %23, align 4, !tbaa !5
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %187

173:                                              ; preds = %170
  %174 = load i32, ptr %23, align 4, !tbaa !5
  %175 = load i32, ptr %12, align 4, !tbaa !5
  %176 = icmp sle i32 %174, %175
  br i1 %176, label %177, label %187

177:                                              ; preds = %173
  %178 = load ptr, ptr %13, align 8, !tbaa !9
  %179 = load i32, ptr %23, align 4, !tbaa !5
  %180 = sub nsw i32 %179, 1
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %178, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = load i64, ptr %19, align 8, !tbaa !18
  %186 = sub nsw i64 %185, %184
  store i64 %186, ptr %19, align 8, !tbaa !18
  br label %187

187:                                              ; preds = %177, %173, %170
  br label %188

188:                                              ; preds = %187
  %189 = load i32, ptr %22, align 4, !tbaa !5
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr %22, align 4, !tbaa !5
  %191 = load i32, ptr %23, align 4, !tbaa !5
  %192 = add nsw i32 %191, -1
  store i32 %192, ptr %23, align 4, !tbaa !5
  br label %110, !llvm.loop !29

193:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 1, ptr %27, align 4, !tbaa !5
  br label %194

194:                                              ; preds = %357, %193
  %195 = load i32, ptr %27, align 4, !tbaa !5
  %196 = load i32, ptr %9, align 4, !tbaa !5
  %197 = icmp slt i32 %195, %196
  br i1 %197, label %199, label %198

198:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %361

199:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  %200 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25) %21)
          to label %201 unwind label %235

201:                                              ; preds = %199
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %28, ptr align 8 %200, i64 32, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3popEv(ptr noundef nonnull align 8 dereferenceable(25) %21)
          to label %202 unwind label %239

202:                                              ; preds = %201
  %203 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 1
  %204 = load i32, ptr %203, align 8, !tbaa !23
  %205 = icmp sge i32 %204, 0
  br i1 %205, label %206, label %282

206:                                              ; preds = %202
  %207 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 2
  %208 = load i32, ptr %207, align 4, !tbaa !24
  %209 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 3
  %210 = load i32, ptr %209, align 8, !tbaa !25
  %211 = icmp slt i32 %208, %210
  br i1 %211, label %212, label %243

212:                                              ; preds = %206
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %28, i64 32, i1 false), !tbaa.struct !30
  %213 = load ptr, ptr %11, align 8, !tbaa !9
  %214 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 2
  %215 = load i32, ptr %214, align 4, !tbaa !24
  %216 = add nsw i32 %215, 1
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i32, ptr %213, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !5
  %220 = load ptr, ptr %11, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 2
  %222 = load i32, ptr %221, align 4, !tbaa !24
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %220, i64 %223
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = sub nsw i32 %219, %225
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 0
  %229 = load i64, ptr %228, align 8, !tbaa !21
  %230 = add nsw i64 %229, %227
  store i64 %230, ptr %228, align 8, !tbaa !21
  %231 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 2
  %232 = load i32, ptr %231, align 4, !tbaa !24
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %231, align 4, !tbaa !24
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %21, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %234 unwind label %239

234:                                              ; preds = %212
  br label %243

235:                                              ; preds = %199
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %25, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %26, align 4
  br label %360

239:                                              ; preds = %326, %292, %253, %212, %201
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %25, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %360

243:                                              ; preds = %234, %206
  %244 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 1
  %245 = load i32, ptr %244, align 8, !tbaa !23
  %246 = icmp sgt i32 %245, 0
  br i1 %246, label %247, label %281

247:                                              ; preds = %243
  %248 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 1
  %249 = load i32, ptr %248, align 8, !tbaa !23
  %250 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 2
  %251 = load i32, ptr %250, align 4, !tbaa !24
  %252 = icmp slt i32 %249, %251
  br i1 %252, label %253, label %281

253:                                              ; preds = %247
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %28, i64 32, i1 false), !tbaa.struct !30
  %254 = load ptr, ptr %11, align 8, !tbaa !9
  %255 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 1
  %256 = load i32, ptr %255, align 8, !tbaa !23
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds i32, ptr %254, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = load ptr, ptr %11, align 8, !tbaa !9
  %261 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 1
  %262 = load i32, ptr %261, align 8, !tbaa !23
  %263 = sub nsw i32 %262, 1
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %260, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = sub nsw i32 %259, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 0
  %270 = load i64, ptr %269, align 8, !tbaa !21
  %271 = add nsw i64 %270, %268
  store i64 %271, ptr %269, align 8, !tbaa !21
  %272 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 2
  %273 = load i32, ptr %272, align 4, !tbaa !24
  %274 = sub nsw i32 %273, 1
  %275 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 3
  store i32 %274, ptr %275, align 8, !tbaa !25
  %276 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 1
  %277 = load i32, ptr %276, align 8, !tbaa !23
  %278 = add nsw i32 %277, -1
  store i32 %278, ptr %276, align 8, !tbaa !23
  %279 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 2
  store i32 %277, ptr %279, align 4, !tbaa !24
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %21, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %280 unwind label %239

280:                                              ; preds = %253
  br label %281

281:                                              ; preds = %280, %247, %243
  br label %282

282:                                              ; preds = %281, %202
  %283 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 4
  %284 = load i32, ptr %283, align 4, !tbaa !26
  %285 = icmp sge i32 %284, 0
  br i1 %285, label %286, label %356

286:                                              ; preds = %282
  %287 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 5
  %288 = load i32, ptr %287, align 8, !tbaa !27
  %289 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 6
  %290 = load i32, ptr %289, align 4, !tbaa !28
  %291 = icmp slt i32 %288, %290
  br i1 %291, label %292, label %316

292:                                              ; preds = %286
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %28, i64 32, i1 false), !tbaa.struct !30
  %293 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 1
  store i32 -1, ptr %293, align 8, !tbaa !23
  %294 = load ptr, ptr %13, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 5
  %296 = load i32, ptr %295, align 8, !tbaa !27
  %297 = add nsw i32 %296, 1
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %294, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = load ptr, ptr %13, align 8, !tbaa !9
  %302 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 5
  %303 = load i32, ptr %302, align 8, !tbaa !27
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %301, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !5
  %307 = sub nsw i32 %300, %306
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 0
  %310 = load i64, ptr %309, align 8, !tbaa !21
  %311 = add nsw i64 %310, %308
  store i64 %311, ptr %309, align 8, !tbaa !21
  %312 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 5
  %313 = load i32, ptr %312, align 8, !tbaa !27
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %312, align 8, !tbaa !27
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %21, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %315 unwind label %239

315:                                              ; preds = %292
  br label %316

316:                                              ; preds = %315, %286
  %317 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 4
  %318 = load i32, ptr %317, align 4, !tbaa !26
  %319 = icmp sgt i32 %318, 0
  br i1 %319, label %320, label %355

320:                                              ; preds = %316
  %321 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 4
  %322 = load i32, ptr %321, align 4, !tbaa !26
  %323 = getelementptr inbounds %struct.Node, ptr %28, i32 0, i32 5
  %324 = load i32, ptr %323, align 8, !tbaa !27
  %325 = icmp slt i32 %322, %324
  br i1 %325, label %326, label %355

326:                                              ; preds = %320
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %28, i64 32, i1 false), !tbaa.struct !30
  %327 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 1
  store i32 -1, ptr %327, align 8, !tbaa !23
  %328 = load ptr, ptr %13, align 8, !tbaa !9
  %329 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 4
  %330 = load i32, ptr %329, align 4, !tbaa !26
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds i32, ptr %328, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !5
  %334 = load ptr, ptr %13, align 8, !tbaa !9
  %335 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 4
  %336 = load i32, ptr %335, align 4, !tbaa !26
  %337 = sub nsw i32 %336, 1
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i32, ptr %334, i64 %338
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = sub nsw i32 %333, %340
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 0
  %344 = load i64, ptr %343, align 8, !tbaa !21
  %345 = add nsw i64 %344, %342
  store i64 %345, ptr %343, align 8, !tbaa !21
  %346 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 5
  %347 = load i32, ptr %346, align 8, !tbaa !27
  %348 = sub nsw i32 %347, 1
  %349 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 6
  store i32 %348, ptr %349, align 4, !tbaa !28
  %350 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 4
  %351 = load i32, ptr %350, align 4, !tbaa !26
  %352 = add nsw i32 %351, -1
  store i32 %352, ptr %350, align 4, !tbaa !26
  %353 = getelementptr inbounds %struct.Node, ptr %29, i32 0, i32 5
  store i32 %351, ptr %353, align 8, !tbaa !27
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %21, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %354 unwind label %239

354:                                              ; preds = %326
  br label %355

355:                                              ; preds = %354, %320, %316
  br label %356

356:                                              ; preds = %355, %282
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %27, align 4, !tbaa !5
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %27, align 4, !tbaa !5
  br label %194, !llvm.loop !31

360:                                              ; preds = %239, %235
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %376

361:                                              ; preds = %198
  %362 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %363 = trunc i8 %362 to i1
  %364 = zext i1 %363 to i64
  %365 = select i1 %363, i32 -1, i32 1
  %366 = sext i32 %365 to i64
  %367 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25) %21)
          to label %368 unwind label %372

368:                                              ; preds = %361
  %369 = getelementptr inbounds %struct.Node, ptr %367, i32 0, i32 0
  %370 = load i64, ptr %369, align 8, !tbaa !21
  %371 = mul nsw i64 %366, %370
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  ret i64 %371

372:                                              ; preds = %361
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %25, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %26, align 4
  br label %376

376:                                              ; preds = %372, %360, %153
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %377

377:                                              ; preds = %376
  %378 = load ptr, ptr %25, align 8
  %379 = load i32, ptr %26, align 4
  %380 = insertvalue { ptr, i32 } poison, ptr %378, 0
  %381 = insertvalue { ptr, i32 } %380, i32 %379, 1
  resume { ptr, i32 } %381
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(25)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushEOS0_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25)) #3 align 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) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3popEv(ptr noundef nonnull align 8 dereferenceable(25)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25)) unnamed_addr #5 align 2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress 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 = { mustprogress 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !19, i64 0}
!19 = !{!"long long", !7, i64 0}
!20 = distinct !{!20, !16}
!21 = !{!22, !19, i64 0}
!22 = !{!"_ZTS4Node", !19, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28}
!23 = !{!22, !6, i64 8}
!24 = !{!22, !6, i64 12}
!25 = !{!22, !6, i64 16}
!26 = !{!22, !6, i64 20}
!27 = !{!22, !6, i64 24}
!28 = !{!22, !6, i64 28}
!29 = distinct !{!29, !16}
!30 = !{i64 0, i64 8, !18, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 4, !5, i64 24, i64 4, !5, i64 28, i64 4, !5}
!31 = distinct !{!31, !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"

%"class.std::priority_queue" = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl" }
%"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Node, std::allocator<Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Node = type { i64, i32, i32, i32, i32, i32, i32 }

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_Z5solveiiiPiiS_b(i32 noundef %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i1 noundef zeroext %6) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.std::priority_queue", align 8
  %9 = alloca %struct.Node, align 8
  %10 = alloca %struct.Node, align 8
  br i1 %6, label %.preheader146, label %.loopexit

.preheader146:                                    ; preds = %7
  %11 = icmp sgt i32 %2, 0
  br i1 %11, label %.lr.ph.preheader, label %.preheader145

.lr.ph.preheader:                                 ; preds = %.preheader146
  %wide.trip.count = zext nneg i32 %2 to i64
  %min.iters.check = icmp ult i32 %2, 8
  br i1 %min.iters.check, label %.lr.ph.preheader212, label %vector.ph

.lr.ph.preheader212:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %12 = getelementptr inbounds i32, ptr %3, i64 %index
  %13 = getelementptr inbounds i8, ptr %12, i64 16
  %wide.load = load <4 x i32>, ptr %12, align 4, !tbaa !5
  %wide.load180 = load <4 x i32>, ptr %13, align 4, !tbaa !5
  %14 = sub nsw <4 x i32> zeroinitializer, %wide.load
  %15 = sub nsw <4 x i32> zeroinitializer, %wide.load180
  store <4 x i32> %14, ptr %12, align 4, !tbaa !5
  store <4 x i32> %15, ptr %13, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %16 = icmp eq i64 %index.next, %n.vec
  br i1 %16, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.preheader145, label %.lr.ph.preheader212

.preheader145:                                    ; preds = %.lr.ph, %middle.block, %.preheader146
  %17 = icmp sgt i32 %4, 0
  br i1 %17, label %.lr.ph149.preheader, label %.loopexit

.lr.ph149.preheader:                              ; preds = %.preheader145
  %wide.trip.count165 = zext nneg i32 %4 to i64
  %min.iters.check183 = icmp ult i32 %4, 8
  br i1 %min.iters.check183, label %.lr.ph149.preheader211, label %vector.ph184

.lr.ph149.preheader211:                           ; preds = %middle.block181, %.lr.ph149.preheader
  %indvars.iv162.ph = phi i64 [ 0, %.lr.ph149.preheader ], [ %n.vec186, %middle.block181 ]
  br label %.lr.ph149

vector.ph184:                                     ; preds = %.lr.ph149.preheader
  %n.vec186 = and i64 %wide.trip.count165, 2147483640
  br label %vector.body188

vector.body188:                                   ; preds = %vector.body188, %vector.ph184
  %index189 = phi i64 [ 0, %vector.ph184 ], [ %index.next192, %vector.body188 ]
  %18 = getelementptr inbounds i32, ptr %5, i64 %index189
  %19 = getelementptr inbounds i8, ptr %18, i64 16
  %wide.load190 = load <4 x i32>, ptr %18, align 4, !tbaa !5
  %wide.load191 = load <4 x i32>, ptr %19, align 4, !tbaa !5
  %20 = sub nsw <4 x i32> zeroinitializer, %wide.load190
  %21 = sub nsw <4 x i32> zeroinitializer, %wide.load191
  store <4 x i32> %20, ptr %18, align 4, !tbaa !5
  store <4 x i32> %21, ptr %19, align 4, !tbaa !5
  %index.next192 = add nuw i64 %index189, 8
  %22 = icmp eq i64 %index.next192, %n.vec186
  br i1 %22, label %middle.block181, label %vector.body188, !llvm.loop !13

middle.block181:                                  ; preds = %vector.body188
  %cmp.n193 = icmp eq i64 %n.vec186, %wide.trip.count165
  br i1 %cmp.n193, label %.loopexit, label %.lr.ph149.preheader211

.lr.ph:                                           ; preds = %.lr.ph.preheader212, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader212 ]
  %23 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv
  %24 = load i32, ptr %23, align 4, !tbaa !5
  %25 = sub nsw i32 0, %24
  store i32 %25, ptr %23, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader145, label %.lr.ph, !llvm.loop !14

.lr.ph149:                                        ; preds = %.lr.ph149.preheader211, %.lr.ph149
  %indvars.iv162 = phi i64 [ %indvars.iv.next163, %.lr.ph149 ], [ %indvars.iv162.ph, %.lr.ph149.preheader211 ]
  %26 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv162
  %27 = load i32, ptr %26, align 4, !tbaa !5
  %28 = sub nsw i32 0, %27
  store i32 %28, ptr %26, align 4, !tbaa !5
  %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 1
  %exitcond166.not = icmp eq i64 %indvars.iv.next163, %wide.trip.count165
  br i1 %exitcond166.not, label %.loopexit, label %.lr.ph149, !llvm.loop !15

.loopexit:                                        ; preds = %.lr.ph149, %middle.block181, %.preheader145, %7
  %29 = sext i32 %2 to i64
  %30 = getelementptr inbounds i32, ptr %3, i64 %29
  tail call void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef %3, ptr noundef %30)
  %31 = sext i32 %4 to i64
  %32 = getelementptr inbounds i32, ptr %5, i64 %31
  tail call void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef %5, ptr noundef %32)
  %invariant.smin = tail call i32 @llvm.smin.i32(i32 %4, i32 %0)
  %33 = icmp sgt i32 %invariant.smin, 0
  br i1 %33, label %.lr.ph152.preheader, label %._crit_edge

.lr.ph152.preheader:                              ; preds = %.loopexit
  %wide.trip.count170 = zext nneg i32 %invariant.smin to i64
  %min.iters.check196 = icmp ult i32 %invariant.smin, 4
  br i1 %min.iters.check196, label %.lr.ph152.preheader208, label %vector.ph197

.lr.ph152.preheader208:                           ; preds = %middle.block194, %.lr.ph152.preheader
  %indvars.iv167.ph = phi i64 [ 0, %.lr.ph152.preheader ], [ %n.vec199, %middle.block194 ]
  %.0129151.ph = phi i64 [ 0, %.lr.ph152.preheader ], [ %41, %middle.block194 ]
  br label %.lr.ph152

vector.ph197:                                     ; preds = %.lr.ph152.preheader
  %n.vec199 = and i64 %wide.trip.count170, 2147483644
  br label %vector.body201

vector.body201:                                   ; preds = %vector.body201, %vector.ph197
  %index202 = phi i64 [ 0, %vector.ph197 ], [ %index.next206, %vector.body201 ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph197 ], [ %38, %vector.body201 ]
  %vec.phi203 = phi <2 x i64> [ zeroinitializer, %vector.ph197 ], [ %39, %vector.body201 ]
  %34 = getelementptr inbounds i32, ptr %5, i64 %index202
  %35 = getelementptr inbounds i8, ptr %34, i64 8
  %wide.load204 = load <2 x i32>, ptr %34, align 4, !tbaa !5
  %wide.load205 = load <2 x i32>, ptr %35, align 4, !tbaa !5
  %36 = sext <2 x i32> %wide.load204 to <2 x i64>
  %37 = sext <2 x i32> %wide.load205 to <2 x i64>
  %38 = add <2 x i64> %vec.phi, %36
  %39 = add <2 x i64> %vec.phi203, %37
  %index.next206 = add nuw i64 %index202, 4
  %40 = icmp eq i64 %index.next206, %n.vec199
  br i1 %40, label %middle.block194, label %vector.body201, !llvm.loop !16

middle.block194:                                  ; preds = %vector.body201
  %bin.rdx = add <2 x i64> %39, %38
  %41 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n207 = icmp eq i64 %n.vec199, %wide.trip.count170
  br i1 %cmp.n207, label %._crit_edge, label %.lr.ph152.preheader208

._crit_edge:                                      ; preds = %.lr.ph152, %middle.block194, %.loopexit
  %.0129.lcssa = phi i64 [ 0, %.loopexit ], [ %41, %middle.block194 ], [ %56, %.lr.ph152 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(25) %8)
  %invariant.gep = getelementptr i8, ptr %5, i64 -4
  %42 = or i32 %2, %0
  %43 = icmp sgt i32 %42, -1
  br i1 %43, label %.lr.ph157, label %.preheader

.lr.ph157:                                        ; preds = %._crit_edge
  %44 = getelementptr inbounds i8, ptr %9, i64 8
  %45 = getelementptr inbounds i8, ptr %9, i64 12
  %46 = getelementptr inbounds i8, ptr %9, i64 16
  %47 = add nsw i32 %2, -1
  %48 = getelementptr inbounds i8, ptr %9, i64 20
  %49 = getelementptr inbounds i8, ptr %9, i64 24
  %50 = getelementptr inbounds i8, ptr %9, i64 28
  %51 = add nsw i32 %4, -1
  %52 = zext i32 %0 to i64
  br label %58

.lr.ph152:                                        ; preds = %.lr.ph152.preheader208, %.lr.ph152
  %indvars.iv167 = phi i64 [ %indvars.iv.next168, %.lr.ph152 ], [ %indvars.iv167.ph, %.lr.ph152.preheader208 ]
  %.0129151 = phi i64 [ %56, %.lr.ph152 ], [ %.0129151.ph, %.lr.ph152.preheader208 ]
  %53 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv167
  %54 = load i32, ptr %53, align 4, !tbaa !5
  %55 = sext i32 %54 to i64
  %56 = add nsw i64 %.0129151, %55
  %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1
  %exitcond171.not = icmp eq i64 %indvars.iv.next168, %wide.trip.count170
  br i1 %exitcond171.not, label %._crit_edge, label %.lr.ph152, !llvm.loop !17

.preheader:                                       ; preds = %81, %._crit_edge
  %57 = icmp sgt i32 %1, 1
  br i1 %57, label %.lr.ph159, label %._crit_edge160

.lr.ph159:                                        ; preds = %.preheader
  %.sroa.8.0..sroa_idx5 = getelementptr inbounds i8, ptr %10, i64 8
  %.sroa.11.0..sroa_idx15 = getelementptr inbounds i8, ptr %10, i64 12
  %.sroa.13.0..sroa_idx24 = getelementptr inbounds i8, ptr %10, i64 16
  %.sroa.14.0..sroa_idx32 = getelementptr inbounds i8, ptr %10, i64 20
  %.sroa.17.0..sroa_idx42 = getelementptr inbounds i8, ptr %10, i64 24
  %.sroa.19.0..sroa_idx51 = getelementptr inbounds i8, ptr %10, i64 28
  br label %88

58:                                               ; preds = %.lr.ph157, %81
  %indvars.iv174 = phi i64 [ %52, %.lr.ph157 ], [ %indvars.iv.next175, %81 ]
  %indvars.iv172 = phi i64 [ 0, %.lr.ph157 ], [ %indvars.iv.next173, %81 ]
  %.1155 = phi i64 [ %.0129.lcssa, %.lr.ph157 ], [ %.3, %81 ]
  %59 = trunc nuw i64 %indvars.iv174 to i32
  %.not139 = icmp sgt i32 %59, %4
  %60 = trunc i64 %indvars.iv174 to i1
  %61 = xor i1 %60, %6
  %or.cond = or i1 %.not139, %61
  br i1 %or.cond, label %69, label %62

62:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  store i64 %.1155, ptr %9, align 8, !tbaa !18
  %63 = trunc i64 %indvars.iv172 to i32
  %64 = add i32 %63, -1
  store i32 %64, ptr %44, align 8, !tbaa !21
  store i32 %64, ptr %45, align 4, !tbaa !22
  store i32 %47, ptr %46, align 8, !tbaa !23
  %65 = add nsw i32 %59, -1
  store i32 %65, ptr %48, align 4, !tbaa !24
  store i32 %65, ptr %49, align 8, !tbaa !25
  store i32 %51, ptr %50, align 4, !tbaa !26
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushEOS0_(ptr noundef nonnull align 8 dereferenceable(25) %8, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %66 unwind label %67

66:                                               ; preds = %62
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %69

67:                                               ; preds = %62
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %148

69:                                               ; preds = %66, %58
  %70 = icmp slt i64 %indvars.iv172, %29
  br i1 %70, label %71, label %76

71:                                               ; preds = %69
  %72 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv172
  %73 = load i32, ptr %72, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = add nsw i64 %.1155, %74
  br label %76

76:                                               ; preds = %71, %69
  %.2 = phi i64 [ %75, %71 ], [ %.1155, %69 ]
  %.not141 = icmp eq i64 %indvars.iv174, 0
  %brmerge = or i1 %.not141, %.not139
  br i1 %brmerge, label %81, label %77

77:                                               ; preds = %76
  %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv174
  %78 = load i32, ptr %gep, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = sub nsw i64 %.2, %79
  br label %81

81:                                               ; preds = %76, %77
  %.3 = phi i64 [ %80, %77 ], [ %.2, %76 ]
  %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1
  %indvars.iv.next175 = add nsw i64 %indvars.iv174, -1
  %82 = icmp sgt i32 %59, 0
  %83 = and i1 %70, %82
  br i1 %83, label %58, label %.preheader, !llvm.loop !27

._crit_edge160:                                   ; preds = %146, %.preheader
  %84 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25) %8)
  %85 = load i64, ptr %84, align 8, !tbaa !18
  %86 = sub nsw i64 0, %85
  %87 = select i1 %6, i64 %86, i64 %85
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  ret i64 %87

88:                                               ; preds = %.lr.ph159, %146
  %.0134158 = phi i32 [ 1, %.lr.ph159 ], [ %147, %146 ]
  %89 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25) %8)
  %.sroa.0.0.copyload = load i64, ptr %89, align 8, !tbaa !28
  %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 8
  %.sroa.8.0.copyload = load i32, ptr %.sroa.8.0..sroa_idx, align 8, !tbaa !5
  %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 12
  %.sroa.11.0.copyload = load i32, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !5
  %.sroa.13.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 16
  %.sroa.13.0.copyload = load i32, ptr %.sroa.13.0..sroa_idx, align 8, !tbaa !5
  %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 20
  %.sroa.14.0.copyload = load i32, ptr %.sroa.14.0..sroa_idx, align 4, !tbaa !5
  %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 24
  %.sroa.17.0.copyload = load i32, ptr %.sroa.17.0..sroa_idx, align 8, !tbaa !5
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 28
  %.sroa.19.0.copyload = load i32, ptr %.sroa.19.0..sroa_idx, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3popEv(ptr noundef nonnull align 8 dereferenceable(25) %8)
          to label %90 unwind label %104

90:                                               ; preds = %88
  %91 = icmp sgt i32 %.sroa.8.0.copyload, -1
  br i1 %91, label %92, label %119

92:                                               ; preds = %90
  %93 = icmp slt i32 %.sroa.11.0.copyload, %.sroa.13.0.copyload
  br i1 %93, label %94, label %106

94:                                               ; preds = %92
  store i32 %.sroa.8.0.copyload, ptr %.sroa.8.0..sroa_idx5, align 8, !tbaa !5
  store i32 %.sroa.13.0.copyload, ptr %.sroa.13.0..sroa_idx24, align 8, !tbaa !5
  store i32 %.sroa.14.0.copyload, ptr %.sroa.14.0..sroa_idx32, align 4, !tbaa !5
  store i32 %.sroa.17.0.copyload, ptr %.sroa.17.0..sroa_idx42, align 8, !tbaa !5
  store i32 %.sroa.19.0.copyload, ptr %.sroa.19.0..sroa_idx51, align 4, !tbaa !5
  %95 = sext i32 %.sroa.11.0.copyload to i64
  %96 = getelementptr i32, ptr %3, i64 %95
  %97 = getelementptr i8, ptr %96, i64 4
  %98 = load i32, ptr %97, align 4, !tbaa !5
  %99 = load i32, ptr %96, align 4, !tbaa !5
  %100 = sub nsw i32 %98, %99
  %101 = sext i32 %100 to i64
  %102 = add nsw i64 %.sroa.0.0.copyload, %101
  store i64 %102, ptr %10, align 8, !tbaa !18
  %103 = add nsw i32 %.sroa.11.0.copyload, 1
  store i32 %103, ptr %.sroa.11.0..sroa_idx15, align 4, !tbaa !22
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %106 unwind label %104

104:                                              ; preds = %135, %123, %108, %94, %88
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %148

106:                                              ; preds = %94, %92
  %.not = icmp ne i32 %.sroa.8.0.copyload, 0
  %107 = icmp slt i32 %.sroa.8.0.copyload, %.sroa.11.0.copyload
  %or.cond143 = select i1 %.not, i1 %107, i1 false
  br i1 %or.cond143, label %108, label %119

108:                                              ; preds = %106
  store i32 %.sroa.14.0.copyload, ptr %.sroa.14.0..sroa_idx32, align 4, !tbaa !5
  store i32 %.sroa.17.0.copyload, ptr %.sroa.17.0..sroa_idx42, align 8, !tbaa !5
  store i32 %.sroa.19.0.copyload, ptr %.sroa.19.0..sroa_idx51, align 4, !tbaa !5
  %109 = zext nneg i32 %.sroa.8.0.copyload to i64
  %110 = getelementptr inbounds i32, ptr %3, i64 %109
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = getelementptr i8, ptr %110, i64 -4
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = sub nsw i32 %111, %113
  %115 = sext i32 %114 to i64
  %116 = add nsw i64 %.sroa.0.0.copyload, %115
  store i64 %116, ptr %10, align 8, !tbaa !18
  %117 = add nsw i32 %.sroa.11.0.copyload, -1
  store i32 %117, ptr %.sroa.13.0..sroa_idx24, align 8, !tbaa !23
  %118 = add nsw i32 %.sroa.8.0.copyload, -1
  store i32 %118, ptr %.sroa.8.0..sroa_idx5, align 8, !tbaa !21
  store i32 %.sroa.8.0.copyload, ptr %.sroa.11.0..sroa_idx15, align 4, !tbaa !22
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %119 unwind label %104

119:                                              ; preds = %106, %108, %90
  %120 = icmp sgt i32 %.sroa.14.0.copyload, -1
  br i1 %120, label %121, label %146

121:                                              ; preds = %119
  %122 = icmp slt i32 %.sroa.17.0.copyload, %.sroa.19.0.copyload
  br i1 %122, label %123, label %133

123:                                              ; preds = %121
  store i32 %.sroa.11.0.copyload, ptr %.sroa.11.0..sroa_idx15, align 4, !tbaa !5
  store i32 %.sroa.13.0.copyload, ptr %.sroa.13.0..sroa_idx24, align 8, !tbaa !5
  store i32 %.sroa.14.0.copyload, ptr %.sroa.14.0..sroa_idx32, align 4, !tbaa !5
  store i32 %.sroa.19.0.copyload, ptr %.sroa.19.0..sroa_idx51, align 4, !tbaa !5
  store i32 -1, ptr %.sroa.8.0..sroa_idx5, align 8, !tbaa !21
  %124 = sext i32 %.sroa.17.0.copyload to i64
  %125 = getelementptr i32, ptr %5, i64 %124
  %126 = getelementptr i8, ptr %125, i64 4
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = load i32, ptr %125, align 4, !tbaa !5
  %129 = sub nsw i32 %127, %128
  %130 = sext i32 %129 to i64
  %131 = add nsw i64 %.sroa.0.0.copyload, %130
  store i64 %131, ptr %10, align 8, !tbaa !18
  %132 = add nsw i32 %.sroa.17.0.copyload, 1
  store i32 %132, ptr %.sroa.17.0..sroa_idx42, align 8, !tbaa !25
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %133 unwind label %104

133:                                              ; preds = %123, %121
  %.not138 = icmp ne i32 %.sroa.14.0.copyload, 0
  %134 = icmp slt i32 %.sroa.14.0.copyload, %.sroa.17.0.copyload
  %or.cond144 = select i1 %.not138, i1 %134, i1 false
  br i1 %or.cond144, label %135, label %146

135:                                              ; preds = %133
  store i32 %.sroa.11.0.copyload, ptr %.sroa.11.0..sroa_idx15, align 4, !tbaa !5
  store i32 %.sroa.13.0.copyload, ptr %.sroa.13.0..sroa_idx24, align 8, !tbaa !5
  store i32 -1, ptr %.sroa.8.0..sroa_idx5, align 8, !tbaa !21
  %136 = zext nneg i32 %.sroa.14.0.copyload to i64
  %137 = getelementptr inbounds i32, ptr %5, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = getelementptr i8, ptr %137, i64 -4
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = sub nsw i32 %138, %140
  %142 = sext i32 %141 to i64
  %143 = add nsw i64 %.sroa.0.0.copyload, %142
  store i64 %143, ptr %10, align 8, !tbaa !18
  %144 = add nsw i32 %.sroa.17.0.copyload, -1
  store i32 %144, ptr %.sroa.19.0..sroa_idx51, align 4, !tbaa !26
  %145 = add nsw i32 %.sroa.14.0.copyload, -1
  store i32 %145, ptr %.sroa.14.0..sroa_idx32, align 4, !tbaa !24
  store i32 %.sroa.14.0.copyload, ptr %.sroa.17.0..sroa_idx42, align 8, !tbaa !25
  invoke void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25) %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %146 unwind label %104

146:                                              ; preds = %133, %135, %119
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  %147 = add nuw nsw i32 %.0134158, 1
  %exitcond179.not = icmp eq i32 %147, %1
  br i1 %exitcond179.not, label %._crit_edge160, label %88, !llvm.loop !29

148:                                              ; preds = %104, %67
  %.pn = phi { ptr, i32 } [ %68, %67 ], [ %105, %104 ]
  call void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  resume { ptr, i32 } %.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPiSt7greaterIiEEvT_S3_T0_(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(25)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushEOS0_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3topEv(ptr noundef nonnull align 8 dereferenceable(25)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE3popEv(ptr noundef nonnull align 8 dereferenceable(25)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt14priority_queueI4NodeSt6vectorIS0_SaIS0_EESt4lessIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(25)) unnamed_addr #4 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #5

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress 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 = { mustprogress 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 = { inlinehint mustprogress 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !11, !12}
!14 = distinct !{!14, !10, !12, !11}
!15 = distinct !{!15, !10, !12, !11}
!16 = distinct !{!16, !10, !11, !12}
!17 = distinct !{!17, !10, !12, !11}
!18 = !{!19, !20, i64 0}
!19 = !{!"_ZTS4Node", !20, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28}
!20 = !{!"long long", !7, i64 0}
!21 = !{!19, !6, i64 8}
!22 = !{!19, !6, i64 12}
!23 = !{!19, !6, i64 16}
!24 = !{!19, !6, i64 20}
!25 = !{!19, !6, i64 24}
!26 = !{!19, !6, i64 28}
!27 = distinct !{!27, !10}
!28 = !{!20, !20, i64 0}
!29 = distinct !{!29, !10}


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