; LLVM IR from tangjz/acm-icpc :: codechef/ACM15AMR/AMMAM.ll (Z5solveiiii)

; 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::pair" = type { i32, i32 }
%"struct.std::greater" = type { i8 }

@c = external dso_local global i32, align 4
@a = external dso_local global [1003 x [1003 x i32]], align 16
@U = external dso_local global [5 x [1003 x [1003 x i32]]], align 16
@D = external dso_local global [5 x [1003 x [1003 x i32]]], align 16
@L = external dso_local global [5 x [1003 x [1003 x i32]]], align 16
@R = external dso_local global [5 x [1003 x [1003 x i32]]], align 16
@tot1 = external dso_local global i32, align 4
@tot2 = external dso_local global i32, align 4
@seq1 = external dso_local global [7 x %"struct.std::pair"], align 16
@seq2 = external dso_local global [7 x %"struct.std::pair"], align 16
@cur = external dso_local global [5 x %"struct.std::pair"], align 16
@tmp = external dso_local global [7 x %"struct.std::pair"], align 16
@ans = external dso_local global i64, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5solveiiii(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"struct.std::pair", align 4
  %13 = alloca i32, align 4
  %14 = alloca %"struct.std::pair", align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"struct.std::pair", align 4
  %24 = alloca %"struct.std::greater", align 1
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %"struct.std::pair", align 4
  %30 = alloca %"struct.std::pair", align 4
  %31 = alloca i32, align 4
  %32 = alloca %"struct.std::pair", align 4
  %33 = alloca %"struct.std::pair", align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"struct.std::pair", align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"struct.std::pair", align 4
  %43 = alloca %"struct.std::pair", align 4
  %44 = alloca i32, align 4
  %45 = alloca %"struct.std::pair", align 4
  %46 = alloca %"struct.std::pair", align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %"struct.std::pair", align 4
  %54 = alloca i32, align 4
  %55 = alloca %"struct.std::pair", align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %"struct.std::pair", align 4
  %65 = alloca %"struct.std::greater", align 1
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %"struct.std::pair", align 4
  %71 = alloca %"struct.std::pair", align 4
  %72 = alloca i32, align 4
  %73 = alloca %"struct.std::pair", align 4
  %74 = alloca %"struct.std::pair", align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca %"struct.std::pair", align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca %"struct.std::pair", align 4
  %84 = alloca %"struct.std::pair", align 4
  %85 = alloca i32, align 4
  %86 = alloca %"struct.std::pair", align 4
  %87 = alloca %"struct.std::pair", align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  store i32 %0, ptr %5, align 4, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !5
  %92 = load i32, ptr %5, align 4, !tbaa !5
  %93 = load i32, ptr %6, align 4, !tbaa !5
  %94 = icmp sgt i32 %92, %93
  br i1 %94, label %99, label %95

95:                                               ; preds = %4
  %96 = load i32, ptr %7, align 4, !tbaa !5
  %97 = load i32, ptr %8, align 4, !tbaa !5
  %98 = icmp sgt i32 %96, %97
  br i1 %98, label %99, label %100

99:                                               ; preds = %95, %4
  br label %1707

100:                                              ; preds = %95
  %101 = load i32, ptr %5, align 4, !tbaa !5
  %102 = load i32, ptr %6, align 4, !tbaa !5
  %103 = icmp eq i32 %101, %102
  br i1 %103, label %104, label %123

104:                                              ; preds = %100
  %105 = load i32, ptr %7, align 4, !tbaa !5
  %106 = load i32, ptr %8, align 4, !tbaa !5
  %107 = icmp eq i32 %105, %106
  br i1 %107, label %108, label %123

108:                                              ; preds = %104
  %109 = load i32, ptr %5, align 4, !tbaa !5
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %110
  %112 = load i32, ptr %7, align 4, !tbaa !5
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds [1003 x i32], ptr %111, i64 0, i64 %113
  %115 = load i32, ptr %114, align 4, !tbaa !5
  %116 = load i32, ptr @c, align 4, !tbaa !5
  %117 = shl i32 1, %116
  %118 = sub nsw i32 %117, 1
  %119 = icmp eq i32 %115, %118
  %120 = zext i1 %119 to i64
  %121 = load i64, ptr @ans, align 8, !tbaa !9
  %122 = add nsw i64 %121, %120
  store i64 %122, ptr @ans, align 8, !tbaa !9
  br label %1707

123:                                              ; preds = %104, %100
  %124 = load i32, ptr %6, align 4, !tbaa !5
  %125 = load i32, ptr %5, align 4, !tbaa !5
  %126 = sub nsw i32 %124, %125
  %127 = add nsw i32 %126, 1
  %128 = load i32, ptr %8, align 4, !tbaa !5
  %129 = load i32, ptr %7, align 4, !tbaa !5
  %130 = sub nsw i32 %128, %129
  %131 = add nsw i32 %130, 1
  %132 = icmp slt i32 %127, %131
  br i1 %132, label %133, label %920

133:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %134 = load i32, ptr %7, align 4, !tbaa !5
  %135 = load i32, ptr %8, align 4, !tbaa !5
  %136 = add nsw i32 %134, %135
  %137 = ashr i32 %136, 1
  store i32 %137, ptr %9, align 4, !tbaa !5
  %138 = load i32, ptr %5, align 4, !tbaa !5
  %139 = load i32, ptr %6, align 4, !tbaa !5
  %140 = load i32, ptr %7, align 4, !tbaa !5
  %141 = load i32, ptr %9, align 4, !tbaa !5
  call void @_Z5solveiiii(i32 noundef %138, i32 noundef %139, i32 noundef %140, i32 noundef %141)
  %142 = load i32, ptr %5, align 4, !tbaa !5
  %143 = load i32, ptr %6, align 4, !tbaa !5
  %144 = load i32, ptr %9, align 4, !tbaa !5
  %145 = add nsw i32 %144, 1
  %146 = load i32, ptr %8, align 4, !tbaa !5
  call void @_Z5solveiiii(i32 noundef %142, i32 noundef %143, i32 noundef %145, i32 noundef %146)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %147 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %147, ptr %10, align 4, !tbaa !5
  br label %148

148:                                              ; preds = %916, %133
  %149 = load i32, ptr %10, align 4, !tbaa !5
  %150 = load i32, ptr %6, align 4, !tbaa !5
  %151 = icmp sle i32 %149, %150
  br i1 %151, label %153, label %152

152:                                              ; preds = %148
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %919

153:                                              ; preds = %148
  store i32 0, ptr @tot2, align 4, !tbaa !5
  store i32 0, ptr @tot1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !5
  %154 = call i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %13)
  store i64 %154, ptr %12, align 4
  %155 = load i32, ptr @tot1, align 4, !tbaa !5
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr @tot1, align 4, !tbaa !5
  %157 = sext i32 %155 to i64
  %158 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %157
  %159 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %158, ptr noundef nonnull align 4 dereferenceable(8) %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %160 = load i32, ptr %9, align 4, !tbaa !5
  %161 = add nsw i32 %160, 1
  store i32 %161, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !5
  %162 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  store i64 %162, ptr %14, align 4
  %163 = load i32, ptr @tot2, align 4, !tbaa !5
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr @tot2, align 4, !tbaa !5
  %165 = sext i32 %163 to i64
  %166 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %165
  %167 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %166, ptr noundef nonnull align 4 dereferenceable(8) %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %168 = load i32, ptr %7, align 4, !tbaa !5
  %169 = sub nsw i32 %168, 1
  store i32 %169, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %170 = load i32, ptr %8, align 4, !tbaa !5
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %172 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %172, ptr %19, align 4, !tbaa !5
  br label %173

173:                                              ; preds = %912, %153
  %174 = load i32, ptr %19, align 4, !tbaa !5
  %175 = load i32, ptr %6, align 4, !tbaa !5
  %176 = icmp sle i32 %174, %175
  br i1 %176, label %178, label %177

177:                                              ; preds = %173
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %915

178:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %179

179:                                              ; preds = %243, %178
  %180 = load i32, ptr %21, align 4, !tbaa !5
  %181 = load i32, ptr @c, align 4, !tbaa !5
  %182 = icmp slt i32 %180, %181
  br i1 %182, label %184, label %183

183:                                              ; preds = %179
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %246

184:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %185 = load i32, ptr %21, align 4, !tbaa !5
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @L, i64 0, i64 %186
  %188 = load i32, ptr %19, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds [1003 x [1003 x i32]], ptr %187, i64 0, i64 %189
  %191 = load i32, ptr %9, align 4, !tbaa !5
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [1003 x i32], ptr %190, i64 0, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !5
  store i32 %194, ptr %22, align 4, !tbaa !5
  %195 = load i32, ptr %22, align 4, !tbaa !5
  %196 = load i32, ptr %17, align 4, !tbaa !5
  %197 = icmp sgt i32 %195, %196
  br i1 %197, label %198, label %242

198:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %199 = load i32, ptr %19, align 4, !tbaa !5
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %200
  %202 = load i32, ptr %22, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [1003 x i32], ptr %201, i64 0, i64 %203
  %205 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %204)
  store i64 %205, ptr %23, align 4
  %206 = load i32, ptr %20, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %20, align 4, !tbaa !5
  %208 = sext i32 %206 to i64
  %209 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %208
  %210 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %209, ptr noundef nonnull align 4 dereferenceable(8) %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  %211 = load i32, ptr %22, align 4, !tbaa !5
  %212 = sub nsw i32 %211, 1
  %213 = load i32, ptr %17, align 4, !tbaa !5
  %214 = icmp sgt i32 %212, %213
  br i1 %214, label %215, label %241

215:                                              ; preds = %198
  %216 = load i32, ptr %17, align 4, !tbaa !5
  %217 = load i32, ptr %21, align 4, !tbaa !5
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @L, i64 0, i64 %218
  %220 = load i32, ptr %19, align 4, !tbaa !5
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [1003 x [1003 x i32]], ptr %219, i64 0, i64 %221
  %223 = load i32, ptr %22, align 4, !tbaa !5
  %224 = sub nsw i32 %223, 1
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds [1003 x i32], ptr %222, i64 0, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = icmp slt i32 %216, %227
  br i1 %228, label %229, label %241

229:                                              ; preds = %215
  %230 = load i32, ptr %21, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @L, i64 0, i64 %231
  %233 = load i32, ptr %19, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [1003 x [1003 x i32]], ptr %232, i64 0, i64 %234
  %236 = load i32, ptr %22, align 4, !tbaa !5
  %237 = sub nsw i32 %236, 1
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds [1003 x i32], ptr %235, i64 0, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !5
  store i32 %240, ptr %17, align 4, !tbaa !5
  br label %241

241:                                              ; preds = %229, %215, %198
  br label %242

242:                                              ; preds = %241, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %243

243:                                              ; preds = %242
  %244 = load i32, ptr %21, align 4, !tbaa !5
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %21, align 4, !tbaa !5
  br label %179, !llvm.loop !11

246:                                              ; preds = %183
  %247 = load i32, ptr %20, align 4, !tbaa !5
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %248
  call void @_ZSt4sortIPSt4pairIiiESt7greaterIS1_EEvT_S5_T0_(ptr noundef @cur, ptr noundef %249)
  %250 = load i32, ptr %20, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %251
  %253 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef @cur, ptr noundef %252)
  %254 = ptrtoint ptr %253 to i64
  %255 = sub i64 %254, ptrtoint (ptr @cur to i64)
  %256 = sdiv exact i64 %255, 8
  %257 = trunc i64 %256 to i32
  store i32 %257, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 -1, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %258

258:                                              ; preds = %469, %246
  %259 = load i32, ptr %27, align 4, !tbaa !5
  %260 = load i32, ptr @tot1, align 4, !tbaa !5
  %261 = icmp slt i32 %259, %260
  br i1 %261, label %266, label %262

262:                                              ; preds = %258
  %263 = load i32, ptr %28, align 4, !tbaa !5
  %264 = load i32, ptr %20, align 4, !tbaa !5
  %265 = icmp slt i32 %263, %264
  br label %266

266:                                              ; preds = %262, %258
  %267 = phi i1 [ true, %258 ], [ %265, %262 ]
  br i1 %267, label %269, label %268

268:                                              ; preds = %266
  store i32 11, ptr %11, align 4
  br label %470

269:                                              ; preds = %266
  %270 = load i32, ptr %28, align 4, !tbaa !5
  %271 = load i32, ptr %20, align 4, !tbaa !5
  %272 = icmp eq i32 %270, %271
  br i1 %272, label %289, label %273

273:                                              ; preds = %269
  %274 = load i32, ptr %27, align 4, !tbaa !5
  %275 = load i32, ptr @tot1, align 4, !tbaa !5
  %276 = icmp slt i32 %274, %275
  br i1 %276, label %277, label %358

277:                                              ; preds = %273
  %278 = load i32, ptr %27, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %279
  %281 = getelementptr inbounds %"struct.std::pair", ptr %280, i32 0, i32 0
  %282 = load i32, ptr %281, align 8, !tbaa !13
  %283 = load i32, ptr %28, align 4, !tbaa !5
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %284
  %286 = getelementptr inbounds %"struct.std::pair", ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !13
  %288 = icmp sgt i32 %282, %287
  br i1 %288, label %289, label %358

289:                                              ; preds = %277, %269
  %290 = load i32, ptr %26, align 4, !tbaa !5
  %291 = icmp eq i32 %290, -1
  br i1 %291, label %292, label %308

292:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %293 = load i32, ptr %27, align 4, !tbaa !5
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %294
  %296 = getelementptr inbounds %"struct.std::pair", ptr %295, i32 0, i32 0
  %297 = load i32, ptr %27, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %298
  %300 = getelementptr inbounds %"struct.std::pair", ptr %299, i32 0, i32 1
  %301 = load i32, ptr %300, align 4, !tbaa !15
  store i32 %301, ptr %26, align 4, !tbaa !5
  %302 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %296, ptr noundef nonnull align 4 dereferenceable(4) %26)
  store i64 %302, ptr %29, align 4
  %303 = load i32, ptr %25, align 4, !tbaa !5
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %25, align 4, !tbaa !5
  %305 = sext i32 %303 to i64
  %306 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %305
  %307 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %306, ptr noundef nonnull align 4 dereferenceable(8) %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br label %355

308:                                              ; preds = %289
  %309 = load i32, ptr %26, align 4, !tbaa !5
  %310 = load i32, ptr %27, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %311
  %313 = getelementptr inbounds %"struct.std::pair", ptr %312, i32 0, i32 1
  %314 = load i32, ptr %313, align 4, !tbaa !15
  %315 = and i32 %309, %314
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %339, label %317

317:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %318 = load i32, ptr %27, align 4, !tbaa !5
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %319
  %321 = getelementptr inbounds %"struct.std::pair", ptr %320, i32 0, i32 0
  %322 = load i32, ptr %27, align 4, !tbaa !5
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %323
  %325 = getelementptr inbounds %"struct.std::pair", ptr %324, i32 0, i32 1
  %326 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %321, ptr noundef nonnull align 4 dereferenceable(4) %325)
  store i64 %326, ptr %30, align 4
  %327 = load i32, ptr %25, align 4, !tbaa !5
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %25, align 4, !tbaa !5
  %329 = sext i32 %327 to i64
  %330 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %329
  %331 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %330, ptr noundef nonnull align 4 dereferenceable(8) %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  %332 = load i32, ptr %27, align 4, !tbaa !5
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %333
  %335 = getelementptr inbounds %"struct.std::pair", ptr %334, i32 0, i32 1
  %336 = load i32, ptr %335, align 4, !tbaa !15
  %337 = load i32, ptr %26, align 4, !tbaa !5
  %338 = or i32 %337, %336
  store i32 %338, ptr %26, align 4, !tbaa !5
  br label %354

339:                                              ; preds = %308
  %340 = load i32, ptr %17, align 4, !tbaa !5
  %341 = load i32, ptr %27, align 4, !tbaa !5
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %342
  %344 = getelementptr inbounds %"struct.std::pair", ptr %343, i32 0, i32 0
  %345 = load i32, ptr %344, align 8, !tbaa !13
  %346 = icmp slt i32 %340, %345
  br i1 %346, label %347, label %353

347:                                              ; preds = %339
  %348 = load i32, ptr %27, align 4, !tbaa !5
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %349
  %351 = getelementptr inbounds %"struct.std::pair", ptr %350, i32 0, i32 0
  %352 = load i32, ptr %351, align 8, !tbaa !13
  store i32 %352, ptr %17, align 4, !tbaa !5
  br label %353

353:                                              ; preds = %347, %339
  store i32 11, ptr %11, align 4
  br label %470

354:                                              ; preds = %317
  br label %355

355:                                              ; preds = %354, %292
  %356 = load i32, ptr %27, align 4, !tbaa !5
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %27, align 4, !tbaa !5
  br label %469

358:                                              ; preds = %277, %273
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %359 = load i32, ptr %28, align 4, !tbaa !5
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %360
  %362 = getelementptr inbounds %"struct.std::pair", ptr %361, i32 0, i32 1
  %363 = load i32, ptr %362, align 4, !tbaa !15
  store i32 %363, ptr %31, align 4, !tbaa !5
  %364 = load i32, ptr %27, align 4, !tbaa !5
  %365 = load i32, ptr @tot1, align 4, !tbaa !5
  %366 = icmp slt i32 %364, %365
  br i1 %366, label %367, label %413

367:                                              ; preds = %358
  %368 = load i32, ptr %27, align 4, !tbaa !5
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %369
  %371 = getelementptr inbounds %"struct.std::pair", ptr %370, i32 0, i32 0
  %372 = load i32, ptr %371, align 8, !tbaa !13
  %373 = load i32, ptr %28, align 4, !tbaa !5
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %374
  %376 = getelementptr inbounds %"struct.std::pair", ptr %375, i32 0, i32 0
  %377 = load i32, ptr %376, align 8, !tbaa !13
  %378 = icmp eq i32 %372, %377
  br i1 %378, label %379, label %413

379:                                              ; preds = %367
  %380 = load i32, ptr %31, align 4, !tbaa !5
  %381 = load i32, ptr %27, align 4, !tbaa !5
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %382
  %384 = getelementptr inbounds %"struct.std::pair", ptr %383, i32 0, i32 1
  %385 = load i32, ptr %384, align 4, !tbaa !15
  %386 = and i32 %380, %385
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %397, label %388

388:                                              ; preds = %379
  %389 = load i32, ptr %27, align 4, !tbaa !5
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr %27, align 4, !tbaa !5
  %391 = sext i32 %389 to i64
  %392 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %391
  %393 = getelementptr inbounds %"struct.std::pair", ptr %392, i32 0, i32 1
  %394 = load i32, ptr %393, align 4, !tbaa !15
  %395 = load i32, ptr %31, align 4, !tbaa !5
  %396 = or i32 %395, %394
  store i32 %396, ptr %31, align 4, !tbaa !5
  br label %412

397:                                              ; preds = %379
  %398 = load i32, ptr %17, align 4, !tbaa !5
  %399 = load i32, ptr %28, align 4, !tbaa !5
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %400
  %402 = getelementptr inbounds %"struct.std::pair", ptr %401, i32 0, i32 0
  %403 = load i32, ptr %402, align 8, !tbaa !13
  %404 = icmp slt i32 %398, %403
  br i1 %404, label %405, label %411

405:                                              ; preds = %397
  %406 = load i32, ptr %28, align 4, !tbaa !5
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %407
  %409 = getelementptr inbounds %"struct.std::pair", ptr %408, i32 0, i32 0
  %410 = load i32, ptr %409, align 8, !tbaa !13
  store i32 %410, ptr %17, align 4, !tbaa !5
  br label %411

411:                                              ; preds = %405, %397
  store i32 11, ptr %11, align 4
  br label %466

412:                                              ; preds = %388
  br label %413

413:                                              ; preds = %412, %367, %358
  %414 = load i32, ptr %26, align 4, !tbaa !5
  %415 = icmp eq i32 %414, -1
  br i1 %415, label %416, label %428

416:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %417 = load i32, ptr %28, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %418
  %420 = getelementptr inbounds %"struct.std::pair", ptr %419, i32 0, i32 0
  %421 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %421, ptr %26, align 4, !tbaa !5
  %422 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %420, ptr noundef nonnull align 4 dereferenceable(4) %26)
  store i64 %422, ptr %32, align 4
  %423 = load i32, ptr %25, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %25, align 4, !tbaa !5
  %425 = sext i32 %423 to i64
  %426 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %425
  %427 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %426, ptr noundef nonnull align 4 dereferenceable(8) %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  br label %463

428:                                              ; preds = %413
  %429 = load i32, ptr %26, align 4, !tbaa !5
  %430 = load i32, ptr %31, align 4, !tbaa !5
  %431 = and i32 %429, %430
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %447, label %433

433:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %434 = load i32, ptr %28, align 4, !tbaa !5
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %435
  %437 = getelementptr inbounds %"struct.std::pair", ptr %436, i32 0, i32 0
  %438 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %437, ptr noundef nonnull align 4 dereferenceable(4) %31)
  store i64 %438, ptr %33, align 4
  %439 = load i32, ptr %25, align 4, !tbaa !5
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %25, align 4, !tbaa !5
  %441 = sext i32 %439 to i64
  %442 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %441
  %443 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %442, ptr noundef nonnull align 4 dereferenceable(8) %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  %444 = load i32, ptr %31, align 4, !tbaa !5
  %445 = load i32, ptr %26, align 4, !tbaa !5
  %446 = or i32 %445, %444
  store i32 %446, ptr %26, align 4, !tbaa !5
  br label %462

447:                                              ; preds = %428
  %448 = load i32, ptr %17, align 4, !tbaa !5
  %449 = load i32, ptr %28, align 4, !tbaa !5
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %450
  %452 = getelementptr inbounds %"struct.std::pair", ptr %451, i32 0, i32 0
  %453 = load i32, ptr %452, align 8, !tbaa !13
  %454 = icmp slt i32 %448, %453
  br i1 %454, label %455, label %461

455:                                              ; preds = %447
  %456 = load i32, ptr %28, align 4, !tbaa !5
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %457
  %459 = getelementptr inbounds %"struct.std::pair", ptr %458, i32 0, i32 0
  %460 = load i32, ptr %459, align 8, !tbaa !13
  store i32 %460, ptr %17, align 4, !tbaa !5
  br label %461

461:                                              ; preds = %455, %447
  store i32 11, ptr %11, align 4
  br label %466

462:                                              ; preds = %433
  br label %463

463:                                              ; preds = %462, %416
  %464 = load i32, ptr %28, align 4, !tbaa !5
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %11, align 4
  br label %466

466:                                              ; preds = %463, %461, %411
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  %467 = load i32, ptr %11, align 4
  switch i32 %467, label %470 [
    i32 0, label %468
  ]

468:                                              ; preds = %466
  br label %469

469:                                              ; preds = %468, %355
  br label %258, !llvm.loop !16

470:                                              ; preds = %466, %353, %268
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %471

471:                                              ; preds = %470
  br label %472

472:                                              ; preds = %487, %471
  %473 = load i32, ptr %25, align 4, !tbaa !5
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %475, label %484

475:                                              ; preds = %472
  %476 = load i32, ptr %25, align 4, !tbaa !5
  %477 = sub nsw i32 %476, 1
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %478
  %480 = getelementptr inbounds %"struct.std::pair", ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 8, !tbaa !13
  %482 = load i32, ptr %17, align 4, !tbaa !5
  %483 = icmp sle i32 %481, %482
  br label %484

484:                                              ; preds = %475, %472
  %485 = phi i1 [ false, %472 ], [ %483, %475 ]
  br i1 %485, label %486, label %490

486:                                              ; preds = %484
  br label %487

487:                                              ; preds = %486
  %488 = load i32, ptr %25, align 4, !tbaa !5
  %489 = add nsw i32 %488, -1
  store i32 %489, ptr %25, align 4, !tbaa !5
  br label %472, !llvm.loop !17

490:                                              ; preds = %484
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot1, ptr noundef nonnull align 4 dereferenceable(4) %25) #5
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq1, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 0, ptr %34, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %491

491:                                              ; preds = %556, %490
  %492 = load i32, ptr %35, align 4, !tbaa !5
  %493 = load i32, ptr @c, align 4, !tbaa !5
  %494 = icmp slt i32 %492, %493
  br i1 %494, label %496, label %495

495:                                              ; preds = %491
  store i32 16, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %559

496:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  %497 = load i32, ptr %35, align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @R, i64 0, i64 %498
  %500 = load i32, ptr %19, align 4, !tbaa !5
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [1003 x [1003 x i32]], ptr %499, i64 0, i64 %501
  %503 = load i32, ptr %9, align 4, !tbaa !5
  %504 = add nsw i32 %503, 1
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds [1003 x i32], ptr %502, i64 0, i64 %505
  %507 = load i32, ptr %506, align 4, !tbaa !5
  store i32 %507, ptr %36, align 4, !tbaa !5
  %508 = load i32, ptr %36, align 4, !tbaa !5
  %509 = load i32, ptr %18, align 4, !tbaa !5
  %510 = icmp slt i32 %508, %509
  br i1 %510, label %511, label %555

511:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %512 = load i32, ptr %19, align 4, !tbaa !5
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %513
  %515 = load i32, ptr %36, align 4, !tbaa !5
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds [1003 x i32], ptr %514, i64 0, i64 %516
  %518 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %517)
  store i64 %518, ptr %37, align 4
  %519 = load i32, ptr %34, align 4, !tbaa !5
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %34, align 4, !tbaa !5
  %521 = sext i32 %519 to i64
  %522 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %521
  %523 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %522, ptr noundef nonnull align 4 dereferenceable(8) %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  %524 = load i32, ptr %36, align 4, !tbaa !5
  %525 = add nsw i32 %524, 1
  %526 = load i32, ptr %18, align 4, !tbaa !5
  %527 = icmp slt i32 %525, %526
  br i1 %527, label %528, label %554

528:                                              ; preds = %511
  %529 = load i32, ptr %18, align 4, !tbaa !5
  %530 = load i32, ptr %35, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @R, i64 0, i64 %531
  %533 = load i32, ptr %19, align 4, !tbaa !5
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds [1003 x [1003 x i32]], ptr %532, i64 0, i64 %534
  %536 = load i32, ptr %36, align 4, !tbaa !5
  %537 = add nsw i32 %536, 1
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds [1003 x i32], ptr %535, i64 0, i64 %538
  %540 = load i32, ptr %539, align 4, !tbaa !5
  %541 = icmp sgt i32 %529, %540
  br i1 %541, label %542, label %554

542:                                              ; preds = %528
  %543 = load i32, ptr %35, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @R, i64 0, i64 %544
  %546 = load i32, ptr %19, align 4, !tbaa !5
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds [1003 x [1003 x i32]], ptr %545, i64 0, i64 %547
  %549 = load i32, ptr %36, align 4, !tbaa !5
  %550 = add nsw i32 %549, 1
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds [1003 x i32], ptr %548, i64 0, i64 %551
  %553 = load i32, ptr %552, align 4, !tbaa !5
  store i32 %553, ptr %18, align 4, !tbaa !5
  br label %554

554:                                              ; preds = %542, %528, %511
  br label %555

555:                                              ; preds = %554, %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %556

556:                                              ; preds = %555
  %557 = load i32, ptr %35, align 4, !tbaa !5
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %35, align 4, !tbaa !5
  br label %491, !llvm.loop !18

559:                                              ; preds = %495
  %560 = load i32, ptr %34, align 4, !tbaa !5
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %561
  call void @_ZSt4sortIPSt4pairIiiEEvT_S3_(ptr noundef @cur, ptr noundef %562)
  %563 = load i32, ptr %34, align 4, !tbaa !5
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %564
  %566 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef @cur, ptr noundef %565)
  %567 = ptrtoint ptr %566 to i64
  %568 = sub i64 %567, ptrtoint (ptr @cur to i64)
  %569 = sdiv exact i64 %568, 8
  %570 = trunc i64 %569 to i32
  store i32 %570, ptr %34, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  store i32 0, ptr %38, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 -1, ptr %39, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  store i32 0, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  store i32 0, ptr %41, align 4, !tbaa !5
  br label %571

571:                                              ; preds = %782, %559
  %572 = load i32, ptr %40, align 4, !tbaa !5
  %573 = load i32, ptr @tot2, align 4, !tbaa !5
  %574 = icmp slt i32 %572, %573
  br i1 %574, label %579, label %575

575:                                              ; preds = %571
  %576 = load i32, ptr %41, align 4, !tbaa !5
  %577 = load i32, ptr %34, align 4, !tbaa !5
  %578 = icmp slt i32 %576, %577
  br label %579

579:                                              ; preds = %575, %571
  %580 = phi i1 [ true, %571 ], [ %578, %575 ]
  br i1 %580, label %582, label %581

581:                                              ; preds = %579
  store i32 19, ptr %11, align 4
  br label %783

582:                                              ; preds = %579
  %583 = load i32, ptr %41, align 4, !tbaa !5
  %584 = load i32, ptr %34, align 4, !tbaa !5
  %585 = icmp eq i32 %583, %584
  br i1 %585, label %602, label %586

586:                                              ; preds = %582
  %587 = load i32, ptr %40, align 4, !tbaa !5
  %588 = load i32, ptr @tot2, align 4, !tbaa !5
  %589 = icmp slt i32 %587, %588
  br i1 %589, label %590, label %671

590:                                              ; preds = %586
  %591 = load i32, ptr %40, align 4, !tbaa !5
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %592
  %594 = getelementptr inbounds %"struct.std::pair", ptr %593, i32 0, i32 0
  %595 = load i32, ptr %594, align 8, !tbaa !13
  %596 = load i32, ptr %41, align 4, !tbaa !5
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %597
  %599 = getelementptr inbounds %"struct.std::pair", ptr %598, i32 0, i32 0
  %600 = load i32, ptr %599, align 8, !tbaa !13
  %601 = icmp slt i32 %595, %600
  br i1 %601, label %602, label %671

602:                                              ; preds = %590, %582
  %603 = load i32, ptr %39, align 4, !tbaa !5
  %604 = icmp eq i32 %603, -1
  br i1 %604, label %605, label %621

605:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %606 = load i32, ptr %40, align 4, !tbaa !5
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %607
  %609 = getelementptr inbounds %"struct.std::pair", ptr %608, i32 0, i32 0
  %610 = load i32, ptr %40, align 4, !tbaa !5
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %611
  %613 = getelementptr inbounds %"struct.std::pair", ptr %612, i32 0, i32 1
  %614 = load i32, ptr %613, align 4, !tbaa !15
  store i32 %614, ptr %39, align 4, !tbaa !5
  %615 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %609, ptr noundef nonnull align 4 dereferenceable(4) %39)
  store i64 %615, ptr %42, align 4
  %616 = load i32, ptr %38, align 4, !tbaa !5
  %617 = add nsw i32 %616, 1
  store i32 %617, ptr %38, align 4, !tbaa !5
  %618 = sext i32 %616 to i64
  %619 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %618
  %620 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %619, ptr noundef nonnull align 4 dereferenceable(8) %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  br label %668

621:                                              ; preds = %602
  %622 = load i32, ptr %39, align 4, !tbaa !5
  %623 = load i32, ptr %40, align 4, !tbaa !5
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %624
  %626 = getelementptr inbounds %"struct.std::pair", ptr %625, i32 0, i32 1
  %627 = load i32, ptr %626, align 4, !tbaa !15
  %628 = and i32 %622, %627
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %652, label %630

630:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %631 = load i32, ptr %40, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %632
  %634 = getelementptr inbounds %"struct.std::pair", ptr %633, i32 0, i32 0
  %635 = load i32, ptr %40, align 4, !tbaa !5
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %636
  %638 = getelementptr inbounds %"struct.std::pair", ptr %637, i32 0, i32 1
  %639 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %634, ptr noundef nonnull align 4 dereferenceable(4) %638)
  store i64 %639, ptr %43, align 4
  %640 = load i32, ptr %38, align 4, !tbaa !5
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %38, align 4, !tbaa !5
  %642 = sext i32 %640 to i64
  %643 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %642
  %644 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %643, ptr noundef nonnull align 4 dereferenceable(8) %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  %645 = load i32, ptr %40, align 4, !tbaa !5
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %646
  %648 = getelementptr inbounds %"struct.std::pair", ptr %647, i32 0, i32 1
  %649 = load i32, ptr %648, align 4, !tbaa !15
  %650 = load i32, ptr %39, align 4, !tbaa !5
  %651 = or i32 %650, %649
  store i32 %651, ptr %39, align 4, !tbaa !5
  br label %667

652:                                              ; preds = %621
  %653 = load i32, ptr %18, align 4, !tbaa !5
  %654 = load i32, ptr %40, align 4, !tbaa !5
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %655
  %657 = getelementptr inbounds %"struct.std::pair", ptr %656, i32 0, i32 0
  %658 = load i32, ptr %657, align 8, !tbaa !13
  %659 = icmp sgt i32 %653, %658
  br i1 %659, label %660, label %666

660:                                              ; preds = %652
  %661 = load i32, ptr %40, align 4, !tbaa !5
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %662
  %664 = getelementptr inbounds %"struct.std::pair", ptr %663, i32 0, i32 0
  %665 = load i32, ptr %664, align 8, !tbaa !13
  store i32 %665, ptr %18, align 4, !tbaa !5
  br label %666

666:                                              ; preds = %660, %652
  store i32 19, ptr %11, align 4
  br label %783

667:                                              ; preds = %630
  br label %668

668:                                              ; preds = %667, %605
  %669 = load i32, ptr %40, align 4, !tbaa !5
  %670 = add nsw i32 %669, 1
  store i32 %670, ptr %40, align 4, !tbaa !5
  br label %782

671:                                              ; preds = %590, %586
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  %672 = load i32, ptr %41, align 4, !tbaa !5
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %673
  %675 = getelementptr inbounds %"struct.std::pair", ptr %674, i32 0, i32 1
  %676 = load i32, ptr %675, align 4, !tbaa !15
  store i32 %676, ptr %44, align 4, !tbaa !5
  %677 = load i32, ptr %40, align 4, !tbaa !5
  %678 = load i32, ptr @tot2, align 4, !tbaa !5
  %679 = icmp slt i32 %677, %678
  br i1 %679, label %680, label %726

680:                                              ; preds = %671
  %681 = load i32, ptr %40, align 4, !tbaa !5
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %682
  %684 = getelementptr inbounds %"struct.std::pair", ptr %683, i32 0, i32 0
  %685 = load i32, ptr %684, align 8, !tbaa !13
  %686 = load i32, ptr %41, align 4, !tbaa !5
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %687
  %689 = getelementptr inbounds %"struct.std::pair", ptr %688, i32 0, i32 0
  %690 = load i32, ptr %689, align 8, !tbaa !13
  %691 = icmp eq i32 %685, %690
  br i1 %691, label %692, label %726

692:                                              ; preds = %680
  %693 = load i32, ptr %44, align 4, !tbaa !5
  %694 = load i32, ptr %40, align 4, !tbaa !5
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %695
  %697 = getelementptr inbounds %"struct.std::pair", ptr %696, i32 0, i32 1
  %698 = load i32, ptr %697, align 4, !tbaa !15
  %699 = and i32 %693, %698
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %710, label %701

701:                                              ; preds = %692
  %702 = load i32, ptr %40, align 4, !tbaa !5
  %703 = add nsw i32 %702, 1
  store i32 %703, ptr %40, align 4, !tbaa !5
  %704 = sext i32 %702 to i64
  %705 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %704
  %706 = getelementptr inbounds %"struct.std::pair", ptr %705, i32 0, i32 1
  %707 = load i32, ptr %706, align 4, !tbaa !15
  %708 = load i32, ptr %44, align 4, !tbaa !5
  %709 = or i32 %708, %707
  store i32 %709, ptr %44, align 4, !tbaa !5
  br label %725

710:                                              ; preds = %692
  %711 = load i32, ptr %18, align 4, !tbaa !5
  %712 = load i32, ptr %41, align 4, !tbaa !5
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %713
  %715 = getelementptr inbounds %"struct.std::pair", ptr %714, i32 0, i32 0
  %716 = load i32, ptr %715, align 8, !tbaa !13
  %717 = icmp sgt i32 %711, %716
  br i1 %717, label %718, label %724

718:                                              ; preds = %710
  %719 = load i32, ptr %41, align 4, !tbaa !5
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %720
  %722 = getelementptr inbounds %"struct.std::pair", ptr %721, i32 0, i32 0
  %723 = load i32, ptr %722, align 8, !tbaa !13
  store i32 %723, ptr %18, align 4, !tbaa !5
  br label %724

724:                                              ; preds = %718, %710
  store i32 19, ptr %11, align 4
  br label %779

725:                                              ; preds = %701
  br label %726

726:                                              ; preds = %725, %680, %671
  %727 = load i32, ptr %39, align 4, !tbaa !5
  %728 = icmp eq i32 %727, -1
  br i1 %728, label %729, label %741

729:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %730 = load i32, ptr %41, align 4, !tbaa !5
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %731
  %733 = getelementptr inbounds %"struct.std::pair", ptr %732, i32 0, i32 0
  %734 = load i32, ptr %44, align 4, !tbaa !5
  store i32 %734, ptr %39, align 4, !tbaa !5
  %735 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %733, ptr noundef nonnull align 4 dereferenceable(4) %39)
  store i64 %735, ptr %45, align 4
  %736 = load i32, ptr %38, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %38, align 4, !tbaa !5
  %738 = sext i32 %736 to i64
  %739 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %738
  %740 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %739, ptr noundef nonnull align 4 dereferenceable(8) %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  br label %776

741:                                              ; preds = %726
  %742 = load i32, ptr %39, align 4, !tbaa !5
  %743 = load i32, ptr %44, align 4, !tbaa !5
  %744 = and i32 %742, %743
  %745 = icmp ne i32 %744, 0
  br i1 %745, label %760, label %746

746:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %747 = load i32, ptr %41, align 4, !tbaa !5
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %748
  %750 = getelementptr inbounds %"struct.std::pair", ptr %749, i32 0, i32 0
  %751 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %750, ptr noundef nonnull align 4 dereferenceable(4) %44)
  store i64 %751, ptr %46, align 4
  %752 = load i32, ptr %38, align 4, !tbaa !5
  %753 = add nsw i32 %752, 1
  store i32 %753, ptr %38, align 4, !tbaa !5
  %754 = sext i32 %752 to i64
  %755 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %754
  %756 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %755, ptr noundef nonnull align 4 dereferenceable(8) %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  %757 = load i32, ptr %44, align 4, !tbaa !5
  %758 = load i32, ptr %39, align 4, !tbaa !5
  %759 = or i32 %758, %757
  store i32 %759, ptr %39, align 4, !tbaa !5
  br label %775

760:                                              ; preds = %741
  %761 = load i32, ptr %18, align 4, !tbaa !5
  %762 = load i32, ptr %41, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %763
  %765 = getelementptr inbounds %"struct.std::pair", ptr %764, i32 0, i32 0
  %766 = load i32, ptr %765, align 8, !tbaa !13
  %767 = icmp sgt i32 %761, %766
  br i1 %767, label %768, label %774

768:                                              ; preds = %760
  %769 = load i32, ptr %41, align 4, !tbaa !5
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %770
  %772 = getelementptr inbounds %"struct.std::pair", ptr %771, i32 0, i32 0
  %773 = load i32, ptr %772, align 8, !tbaa !13
  store i32 %773, ptr %18, align 4, !tbaa !5
  br label %774

774:                                              ; preds = %768, %760
  store i32 19, ptr %11, align 4
  br label %779

775:                                              ; preds = %746
  br label %776

776:                                              ; preds = %775, %729
  %777 = load i32, ptr %41, align 4, !tbaa !5
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %41, align 4, !tbaa !5
  store i32 0, ptr %11, align 4
  br label %779

779:                                              ; preds = %776, %774, %724
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  %780 = load i32, ptr %11, align 4
  switch i32 %780, label %783 [
    i32 0, label %781
  ]

781:                                              ; preds = %779
  br label %782

782:                                              ; preds = %781, %668
  br label %571, !llvm.loop !19

783:                                              ; preds = %779, %666, %581
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %784

784:                                              ; preds = %783
  br label %785

785:                                              ; preds = %800, %784
  %786 = load i32, ptr %38, align 4, !tbaa !5
  %787 = icmp ne i32 %786, 0
  br i1 %787, label %788, label %797

788:                                              ; preds = %785
  %789 = load i32, ptr %38, align 4, !tbaa !5
  %790 = sub nsw i32 %789, 1
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %791
  %793 = getelementptr inbounds %"struct.std::pair", ptr %792, i32 0, i32 0
  %794 = load i32, ptr %793, align 8, !tbaa !13
  %795 = load i32, ptr %18, align 4, !tbaa !5
  %796 = icmp sge i32 %794, %795
  br label %797

797:                                              ; preds = %788, %785
  %798 = phi i1 [ false, %785 ], [ %796, %788 ]
  br i1 %798, label %799, label %803

799:                                              ; preds = %797
  br label %800

800:                                              ; preds = %799
  %801 = load i32, ptr %38, align 4, !tbaa !5
  %802 = add nsw i32 %801, -1
  store i32 %802, ptr %38, align 4, !tbaa !5
  br label %785, !llvm.loop !20

803:                                              ; preds = %797
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot2, ptr noundef nonnull align 4 dereferenceable(4) %38) #5
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq2, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  %804 = load i32, ptr %17, align 4, !tbaa !5
  %805 = load i32, ptr @tot1, align 4, !tbaa !5
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %806
  %808 = getelementptr inbounds %"struct.std::pair", ptr %807, i32 0, i32 0
  store i32 %804, ptr %808, align 8, !tbaa !13
  %809 = load i32, ptr %18, align 4, !tbaa !5
  %810 = load i32, ptr @tot2, align 4, !tbaa !5
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %811
  %813 = getelementptr inbounds %"struct.std::pair", ptr %812, i32 0, i32 0
  store i32 %809, ptr %813, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  store i32 0, ptr %47, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  store i32 0, ptr %48, align 4, !tbaa !5
  br label %814

814:                                              ; preds = %820, %803
  %815 = load i32, ptr %48, align 4, !tbaa !5
  %816 = load i32, ptr @tot1, align 4, !tbaa !5
  %817 = icmp slt i32 %815, %816
  br i1 %817, label %819, label %818

818:                                              ; preds = %814
  store i32 24, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  br label %829

819:                                              ; preds = %814
  br label %820

820:                                              ; preds = %819
  %821 = load i32, ptr %48, align 4, !tbaa !5
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr %48, align 4, !tbaa !5
  %823 = sext i32 %821 to i64
  %824 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %823
  %825 = getelementptr inbounds %"struct.std::pair", ptr %824, i32 0, i32 1
  %826 = load i32, ptr %825, align 4, !tbaa !15
  %827 = load i32, ptr %47, align 4, !tbaa !5
  %828 = or i32 %827, %826
  store i32 %828, ptr %47, align 4, !tbaa !5
  br label %814, !llvm.loop !21

829:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  %830 = load i32, ptr @tot1, align 4, !tbaa !5
  %831 = sub nsw i32 %830, 1
  store i32 %831, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  store i32 0, ptr %50, align 4, !tbaa !5
  br label %832

832:                                              ; preds = %902, %829
  %833 = load i32, ptr %49, align 4, !tbaa !5
  %834 = icmp sge i32 %833, 0
  br i1 %834, label %836, label %835

835:                                              ; preds = %832
  store i32 27, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br label %911

836:                                              ; preds = %832
  br label %837

837:                                              ; preds = %854, %836
  %838 = load i32, ptr %50, align 4, !tbaa !5
  %839 = load i32, ptr @tot2, align 4, !tbaa !5
  %840 = icmp slt i32 %838, %839
  br i1 %840, label %841, label %851

841:                                              ; preds = %837
  %842 = load i32, ptr %47, align 4, !tbaa !5
  %843 = load i32, ptr %50, align 4, !tbaa !5
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %844
  %846 = getelementptr inbounds %"struct.std::pair", ptr %845, i32 0, i32 1
  %847 = load i32, ptr %846, align 4, !tbaa !15
  %848 = and i32 %842, %847
  %849 = icmp ne i32 %848, 0
  %850 = xor i1 %849, true
  br label %851

851:                                              ; preds = %841, %837
  %852 = phi i1 [ false, %837 ], [ %850, %841 ]
  br i1 %852, label %853, label %863

853:                                              ; preds = %851
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %50, align 4, !tbaa !5
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %50, align 4, !tbaa !5
  %857 = sext i32 %855 to i64
  %858 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %857
  %859 = getelementptr inbounds %"struct.std::pair", ptr %858, i32 0, i32 1
  %860 = load i32, ptr %859, align 4, !tbaa !15
  %861 = load i32, ptr %47, align 4, !tbaa !5
  %862 = or i32 %861, %860
  store i32 %862, ptr %47, align 4, !tbaa !5
  br label %837, !llvm.loop !22

863:                                              ; preds = %851
  %864 = load i32, ptr %50, align 4, !tbaa !5
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %866, label %901

866:                                              ; preds = %863
  %867 = load i32, ptr %47, align 4, !tbaa !5
  %868 = load i32, ptr @c, align 4, !tbaa !5
  %869 = shl i32 1, %868
  %870 = sub nsw i32 %869, 1
  %871 = icmp eq i32 %867, %870
  br i1 %871, label %872, label %901

872:                                              ; preds = %866
  %873 = load i32, ptr %49, align 4, !tbaa !5
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %874
  %876 = getelementptr inbounds %"struct.std::pair", ptr %875, i32 0, i32 0
  %877 = load i32, ptr %876, align 8, !tbaa !13
  %878 = load i32, ptr %49, align 4, !tbaa !5
  %879 = add nsw i32 %878, 1
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %880
  %882 = getelementptr inbounds %"struct.std::pair", ptr %881, i32 0, i32 0
  %883 = load i32, ptr %882, align 8, !tbaa !13
  %884 = sub nsw i32 %877, %883
  %885 = load i32, ptr %50, align 4, !tbaa !5
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %886
  %888 = getelementptr inbounds %"struct.std::pair", ptr %887, i32 0, i32 0
  %889 = load i32, ptr %888, align 8, !tbaa !13
  %890 = load i32, ptr %50, align 4, !tbaa !5
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %892
  %894 = getelementptr inbounds %"struct.std::pair", ptr %893, i32 0, i32 0
  %895 = load i32, ptr %894, align 8, !tbaa !13
  %896 = sub nsw i32 %889, %895
  %897 = mul nsw i32 %884, %896
  %898 = sext i32 %897 to i64
  %899 = load i64, ptr @ans, align 8, !tbaa !9
  %900 = add nsw i64 %899, %898
  store i64 %900, ptr @ans, align 8, !tbaa !9
  br label %901

901:                                              ; preds = %872, %866, %863
  br label %902

902:                                              ; preds = %901
  %903 = load i32, ptr %49, align 4, !tbaa !5
  %904 = add nsw i32 %903, -1
  store i32 %904, ptr %49, align 4, !tbaa !5
  %905 = sext i32 %903 to i64
  %906 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %905
  %907 = getelementptr inbounds %"struct.std::pair", ptr %906, i32 0, i32 1
  %908 = load i32, ptr %907, align 4, !tbaa !15
  %909 = load i32, ptr %47, align 4, !tbaa !5
  %910 = xor i32 %909, %908
  store i32 %910, ptr %47, align 4, !tbaa !5
  br label %832, !llvm.loop !23

911:                                              ; preds = %835
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  br label %912

912:                                              ; preds = %911
  %913 = load i32, ptr %19, align 4, !tbaa !5
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %19, align 4, !tbaa !5
  br label %173, !llvm.loop !24

915:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %916

916:                                              ; preds = %915
  %917 = load i32, ptr %10, align 4, !tbaa !5
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr %10, align 4, !tbaa !5
  br label %148, !llvm.loop !25

919:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %1707

920:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  %921 = load i32, ptr %5, align 4, !tbaa !5
  %922 = load i32, ptr %6, align 4, !tbaa !5
  %923 = add nsw i32 %921, %922
  %924 = ashr i32 %923, 1
  store i32 %924, ptr %51, align 4, !tbaa !5
  %925 = load i32, ptr %5, align 4, !tbaa !5
  %926 = load i32, ptr %51, align 4, !tbaa !5
  %927 = load i32, ptr %7, align 4, !tbaa !5
  %928 = load i32, ptr %8, align 4, !tbaa !5
  call void @_Z5solveiiii(i32 noundef %925, i32 noundef %926, i32 noundef %927, i32 noundef %928)
  %929 = load i32, ptr %51, align 4, !tbaa !5
  %930 = add nsw i32 %929, 1
  %931 = load i32, ptr %6, align 4, !tbaa !5
  %932 = load i32, ptr %7, align 4, !tbaa !5
  %933 = load i32, ptr %8, align 4, !tbaa !5
  call void @_Z5solveiiii(i32 noundef %930, i32 noundef %931, i32 noundef %932, i32 noundef %933)
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  %934 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %934, ptr %52, align 4, !tbaa !5
  br label %935

935:                                              ; preds = %1703, %920
  %936 = load i32, ptr %52, align 4, !tbaa !5
  %937 = load i32, ptr %8, align 4, !tbaa !5
  %938 = icmp sle i32 %936, %937
  br i1 %938, label %940, label %939

939:                                              ; preds = %935
  store i32 33, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  br label %1706

940:                                              ; preds = %935
  store i32 0, ptr @tot2, align 4, !tbaa !5
  store i32 0, ptr @tot1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  store i32 0, ptr %54, align 4, !tbaa !5
  %941 = call i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %54)
  store i64 %941, ptr %53, align 4
  %942 = load i32, ptr @tot1, align 4, !tbaa !5
  %943 = add nsw i32 %942, 1
  store i32 %943, ptr @tot1, align 4, !tbaa !5
  %944 = sext i32 %942 to i64
  %945 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %944
  %946 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %945, ptr noundef nonnull align 4 dereferenceable(8) %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  %947 = load i32, ptr %51, align 4, !tbaa !5
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr %56, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #5
  store i32 0, ptr %57, align 4, !tbaa !5
  %949 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef nonnull align 4 dereferenceable(4) %57)
  store i64 %949, ptr %55, align 4
  %950 = load i32, ptr @tot2, align 4, !tbaa !5
  %951 = add nsw i32 %950, 1
  store i32 %951, ptr @tot2, align 4, !tbaa !5
  %952 = sext i32 %950 to i64
  %953 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %952
  %954 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %953, ptr noundef nonnull align 4 dereferenceable(8) %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #5
  %955 = load i32, ptr %5, align 4, !tbaa !5
  %956 = sub nsw i32 %955, 1
  store i32 %956, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #5
  %957 = load i32, ptr %6, align 4, !tbaa !5
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr %59, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #5
  %959 = load i32, ptr %52, align 4, !tbaa !5
  store i32 %959, ptr %60, align 4, !tbaa !5
  br label %960

960:                                              ; preds = %1699, %940
  %961 = load i32, ptr %60, align 4, !tbaa !5
  %962 = load i32, ptr %8, align 4, !tbaa !5
  %963 = icmp sle i32 %961, %962
  br i1 %963, label %965, label %964

964:                                              ; preds = %960
  store i32 36, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  br label %1702

965:                                              ; preds = %960
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #5
  store i32 0, ptr %61, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #5
  store i32 0, ptr %62, align 4, !tbaa !5
  br label %966

966:                                              ; preds = %1030, %965
  %967 = load i32, ptr %62, align 4, !tbaa !5
  %968 = load i32, ptr @c, align 4, !tbaa !5
  %969 = icmp slt i32 %967, %968
  br i1 %969, label %971, label %970

970:                                              ; preds = %966
  store i32 39, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  br label %1033

971:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #5
  %972 = load i32, ptr %62, align 4, !tbaa !5
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @U, i64 0, i64 %973
  %975 = load i32, ptr %51, align 4, !tbaa !5
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds [1003 x [1003 x i32]], ptr %974, i64 0, i64 %976
  %978 = load i32, ptr %60, align 4, !tbaa !5
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds [1003 x i32], ptr %977, i64 0, i64 %979
  %981 = load i32, ptr %980, align 4, !tbaa !5
  store i32 %981, ptr %63, align 4, !tbaa !5
  %982 = load i32, ptr %63, align 4, !tbaa !5
  %983 = load i32, ptr %58, align 4, !tbaa !5
  %984 = icmp sgt i32 %982, %983
  br i1 %984, label %985, label %1029

985:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  %986 = load i32, ptr %63, align 4, !tbaa !5
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %987
  %989 = load i32, ptr %60, align 4, !tbaa !5
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds [1003 x i32], ptr %988, i64 0, i64 %990
  %992 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %991)
  store i64 %992, ptr %64, align 4
  %993 = load i32, ptr %61, align 4, !tbaa !5
  %994 = add nsw i32 %993, 1
  store i32 %994, ptr %61, align 4, !tbaa !5
  %995 = sext i32 %993 to i64
  %996 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %995
  %997 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %996, ptr noundef nonnull align 4 dereferenceable(8) %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  %998 = load i32, ptr %63, align 4, !tbaa !5
  %999 = sub nsw i32 %998, 1
  %1000 = load i32, ptr %58, align 4, !tbaa !5
  %1001 = icmp sgt i32 %999, %1000
  br i1 %1001, label %1002, label %1028

1002:                                             ; preds = %985
  %1003 = load i32, ptr %58, align 4, !tbaa !5
  %1004 = load i32, ptr %62, align 4, !tbaa !5
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @U, i64 0, i64 %1005
  %1007 = load i32, ptr %63, align 4, !tbaa !5
  %1008 = sub nsw i32 %1007, 1
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [1003 x [1003 x i32]], ptr %1006, i64 0, i64 %1009
  %1011 = load i32, ptr %60, align 4, !tbaa !5
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds [1003 x i32], ptr %1010, i64 0, i64 %1012
  %1014 = load i32, ptr %1013, align 4, !tbaa !5
  %1015 = icmp slt i32 %1003, %1014
  br i1 %1015, label %1016, label %1028

1016:                                             ; preds = %1002
  %1017 = load i32, ptr %62, align 4, !tbaa !5
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @U, i64 0, i64 %1018
  %1020 = load i32, ptr %63, align 4, !tbaa !5
  %1021 = sub nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds [1003 x [1003 x i32]], ptr %1019, i64 0, i64 %1022
  %1024 = load i32, ptr %60, align 4, !tbaa !5
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds [1003 x i32], ptr %1023, i64 0, i64 %1025
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  store i32 %1027, ptr %58, align 4, !tbaa !5
  br label %1028

1028:                                             ; preds = %1016, %1002, %985
  br label %1029

1029:                                             ; preds = %1028, %971
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  br label %1030

1030:                                             ; preds = %1029
  %1031 = load i32, ptr %62, align 4, !tbaa !5
  %1032 = add nsw i32 %1031, 1
  store i32 %1032, ptr %62, align 4, !tbaa !5
  br label %966, !llvm.loop !26

1033:                                             ; preds = %970
  %1034 = load i32, ptr %61, align 4, !tbaa !5
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %1035
  call void @_ZSt4sortIPSt4pairIiiESt7greaterIS1_EEvT_S5_T0_(ptr noundef @cur, ptr noundef %1036)
  %1037 = load i32, ptr %61, align 4, !tbaa !5
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %1038
  %1040 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef @cur, ptr noundef %1039)
  %1041 = ptrtoint ptr %1040 to i64
  %1042 = sub i64 %1041, ptrtoint (ptr @cur to i64)
  %1043 = sdiv exact i64 %1042, 8
  %1044 = trunc i64 %1043 to i32
  store i32 %1044, ptr %61, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #5
  store i32 0, ptr %66, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #5
  store i32 -1, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #5
  store i32 0, ptr %68, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #5
  store i32 0, ptr %69, align 4, !tbaa !5
  br label %1045

1045:                                             ; preds = %1256, %1033
  %1046 = load i32, ptr %68, align 4, !tbaa !5
  %1047 = load i32, ptr @tot1, align 4, !tbaa !5
  %1048 = icmp slt i32 %1046, %1047
  br i1 %1048, label %1053, label %1049

1049:                                             ; preds = %1045
  %1050 = load i32, ptr %69, align 4, !tbaa !5
  %1051 = load i32, ptr %61, align 4, !tbaa !5
  %1052 = icmp slt i32 %1050, %1051
  br label %1053

1053:                                             ; preds = %1049, %1045
  %1054 = phi i1 [ true, %1045 ], [ %1052, %1049 ]
  br i1 %1054, label %1056, label %1055

1055:                                             ; preds = %1053
  store i32 42, ptr %11, align 4
  br label %1257

1056:                                             ; preds = %1053
  %1057 = load i32, ptr %69, align 4, !tbaa !5
  %1058 = load i32, ptr %61, align 4, !tbaa !5
  %1059 = icmp eq i32 %1057, %1058
  br i1 %1059, label %1076, label %1060

1060:                                             ; preds = %1056
  %1061 = load i32, ptr %68, align 4, !tbaa !5
  %1062 = load i32, ptr @tot1, align 4, !tbaa !5
  %1063 = icmp slt i32 %1061, %1062
  br i1 %1063, label %1064, label %1145

1064:                                             ; preds = %1060
  %1065 = load i32, ptr %68, align 4, !tbaa !5
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1066
  %1068 = getelementptr inbounds %"struct.std::pair", ptr %1067, i32 0, i32 0
  %1069 = load i32, ptr %1068, align 8, !tbaa !13
  %1070 = load i32, ptr %69, align 4, !tbaa !5
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1071
  %1073 = getelementptr inbounds %"struct.std::pair", ptr %1072, i32 0, i32 0
  %1074 = load i32, ptr %1073, align 8, !tbaa !13
  %1075 = icmp sgt i32 %1069, %1074
  br i1 %1075, label %1076, label %1145

1076:                                             ; preds = %1064, %1056
  %1077 = load i32, ptr %67, align 4, !tbaa !5
  %1078 = icmp eq i32 %1077, -1
  br i1 %1078, label %1079, label %1095

1079:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  %1080 = load i32, ptr %68, align 4, !tbaa !5
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1081
  %1083 = getelementptr inbounds %"struct.std::pair", ptr %1082, i32 0, i32 0
  %1084 = load i32, ptr %68, align 4, !tbaa !5
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1085
  %1087 = getelementptr inbounds %"struct.std::pair", ptr %1086, i32 0, i32 1
  %1088 = load i32, ptr %1087, align 4, !tbaa !15
  store i32 %1088, ptr %67, align 4, !tbaa !5
  %1089 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1083, ptr noundef nonnull align 4 dereferenceable(4) %67)
  store i64 %1089, ptr %70, align 4
  %1090 = load i32, ptr %66, align 4, !tbaa !5
  %1091 = add nsw i32 %1090, 1
  store i32 %1091, ptr %66, align 4, !tbaa !5
  %1092 = sext i32 %1090 to i64
  %1093 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1092
  %1094 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1093, ptr noundef nonnull align 4 dereferenceable(8) %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  br label %1142

1095:                                             ; preds = %1076
  %1096 = load i32, ptr %67, align 4, !tbaa !5
  %1097 = load i32, ptr %68, align 4, !tbaa !5
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1098
  %1100 = getelementptr inbounds %"struct.std::pair", ptr %1099, i32 0, i32 1
  %1101 = load i32, ptr %1100, align 4, !tbaa !15
  %1102 = and i32 %1096, %1101
  %1103 = icmp ne i32 %1102, 0
  br i1 %1103, label %1126, label %1104

1104:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  %1105 = load i32, ptr %68, align 4, !tbaa !5
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1106
  %1108 = getelementptr inbounds %"struct.std::pair", ptr %1107, i32 0, i32 0
  %1109 = load i32, ptr %68, align 4, !tbaa !5
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1110
  %1112 = getelementptr inbounds %"struct.std::pair", ptr %1111, i32 0, i32 1
  %1113 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1108, ptr noundef nonnull align 4 dereferenceable(4) %1112)
  store i64 %1113, ptr %71, align 4
  %1114 = load i32, ptr %66, align 4, !tbaa !5
  %1115 = add nsw i32 %1114, 1
  store i32 %1115, ptr %66, align 4, !tbaa !5
  %1116 = sext i32 %1114 to i64
  %1117 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1116
  %1118 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1117, ptr noundef nonnull align 4 dereferenceable(8) %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  %1119 = load i32, ptr %68, align 4, !tbaa !5
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1120
  %1122 = getelementptr inbounds %"struct.std::pair", ptr %1121, i32 0, i32 1
  %1123 = load i32, ptr %1122, align 4, !tbaa !15
  %1124 = load i32, ptr %67, align 4, !tbaa !5
  %1125 = or i32 %1124, %1123
  store i32 %1125, ptr %67, align 4, !tbaa !5
  br label %1141

1126:                                             ; preds = %1095
  %1127 = load i32, ptr %58, align 4, !tbaa !5
  %1128 = load i32, ptr %68, align 4, !tbaa !5
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1129
  %1131 = getelementptr inbounds %"struct.std::pair", ptr %1130, i32 0, i32 0
  %1132 = load i32, ptr %1131, align 8, !tbaa !13
  %1133 = icmp slt i32 %1127, %1132
  br i1 %1133, label %1134, label %1140

1134:                                             ; preds = %1126
  %1135 = load i32, ptr %68, align 4, !tbaa !5
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1136
  %1138 = getelementptr inbounds %"struct.std::pair", ptr %1137, i32 0, i32 0
  %1139 = load i32, ptr %1138, align 8, !tbaa !13
  store i32 %1139, ptr %58, align 4, !tbaa !5
  br label %1140

1140:                                             ; preds = %1134, %1126
  store i32 42, ptr %11, align 4
  br label %1257

1141:                                             ; preds = %1104
  br label %1142

1142:                                             ; preds = %1141, %1079
  %1143 = load i32, ptr %68, align 4, !tbaa !5
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %68, align 4, !tbaa !5
  br label %1256

1145:                                             ; preds = %1064, %1060
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #5
  %1146 = load i32, ptr %69, align 4, !tbaa !5
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1147
  %1149 = getelementptr inbounds %"struct.std::pair", ptr %1148, i32 0, i32 1
  %1150 = load i32, ptr %1149, align 4, !tbaa !15
  store i32 %1150, ptr %72, align 4, !tbaa !5
  %1151 = load i32, ptr %68, align 4, !tbaa !5
  %1152 = load i32, ptr @tot1, align 4, !tbaa !5
  %1153 = icmp slt i32 %1151, %1152
  br i1 %1153, label %1154, label %1200

1154:                                             ; preds = %1145
  %1155 = load i32, ptr %68, align 4, !tbaa !5
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1156
  %1158 = getelementptr inbounds %"struct.std::pair", ptr %1157, i32 0, i32 0
  %1159 = load i32, ptr %1158, align 8, !tbaa !13
  %1160 = load i32, ptr %69, align 4, !tbaa !5
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1161
  %1163 = getelementptr inbounds %"struct.std::pair", ptr %1162, i32 0, i32 0
  %1164 = load i32, ptr %1163, align 8, !tbaa !13
  %1165 = icmp eq i32 %1159, %1164
  br i1 %1165, label %1166, label %1200

1166:                                             ; preds = %1154
  %1167 = load i32, ptr %72, align 4, !tbaa !5
  %1168 = load i32, ptr %68, align 4, !tbaa !5
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1169
  %1171 = getelementptr inbounds %"struct.std::pair", ptr %1170, i32 0, i32 1
  %1172 = load i32, ptr %1171, align 4, !tbaa !15
  %1173 = and i32 %1167, %1172
  %1174 = icmp ne i32 %1173, 0
  br i1 %1174, label %1184, label %1175

1175:                                             ; preds = %1166
  %1176 = load i32, ptr %68, align 4, !tbaa !5
  %1177 = add nsw i32 %1176, 1
  store i32 %1177, ptr %68, align 4, !tbaa !5
  %1178 = sext i32 %1176 to i64
  %1179 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1178
  %1180 = getelementptr inbounds %"struct.std::pair", ptr %1179, i32 0, i32 1
  %1181 = load i32, ptr %1180, align 4, !tbaa !15
  %1182 = load i32, ptr %72, align 4, !tbaa !5
  %1183 = or i32 %1182, %1181
  store i32 %1183, ptr %72, align 4, !tbaa !5
  br label %1199

1184:                                             ; preds = %1166
  %1185 = load i32, ptr %58, align 4, !tbaa !5
  %1186 = load i32, ptr %69, align 4, !tbaa !5
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1187
  %1189 = getelementptr inbounds %"struct.std::pair", ptr %1188, i32 0, i32 0
  %1190 = load i32, ptr %1189, align 8, !tbaa !13
  %1191 = icmp slt i32 %1185, %1190
  br i1 %1191, label %1192, label %1198

1192:                                             ; preds = %1184
  %1193 = load i32, ptr %69, align 4, !tbaa !5
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1194
  %1196 = getelementptr inbounds %"struct.std::pair", ptr %1195, i32 0, i32 0
  %1197 = load i32, ptr %1196, align 8, !tbaa !13
  store i32 %1197, ptr %58, align 4, !tbaa !5
  br label %1198

1198:                                             ; preds = %1192, %1184
  store i32 42, ptr %11, align 4
  br label %1253

1199:                                             ; preds = %1175
  br label %1200

1200:                                             ; preds = %1199, %1154, %1145
  %1201 = load i32, ptr %67, align 4, !tbaa !5
  %1202 = icmp eq i32 %1201, -1
  br i1 %1202, label %1203, label %1215

1203:                                             ; preds = %1200
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  %1204 = load i32, ptr %69, align 4, !tbaa !5
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1205
  %1207 = getelementptr inbounds %"struct.std::pair", ptr %1206, i32 0, i32 0
  %1208 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %1208, ptr %67, align 4, !tbaa !5
  %1209 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1207, ptr noundef nonnull align 4 dereferenceable(4) %67)
  store i64 %1209, ptr %73, align 4
  %1210 = load i32, ptr %66, align 4, !tbaa !5
  %1211 = add nsw i32 %1210, 1
  store i32 %1211, ptr %66, align 4, !tbaa !5
  %1212 = sext i32 %1210 to i64
  %1213 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1212
  %1214 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1213, ptr noundef nonnull align 4 dereferenceable(8) %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  br label %1250

1215:                                             ; preds = %1200
  %1216 = load i32, ptr %67, align 4, !tbaa !5
  %1217 = load i32, ptr %72, align 4, !tbaa !5
  %1218 = and i32 %1216, %1217
  %1219 = icmp ne i32 %1218, 0
  br i1 %1219, label %1234, label %1220

1220:                                             ; preds = %1215
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  %1221 = load i32, ptr %69, align 4, !tbaa !5
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1222
  %1224 = getelementptr inbounds %"struct.std::pair", ptr %1223, i32 0, i32 0
  %1225 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1224, ptr noundef nonnull align 4 dereferenceable(4) %72)
  store i64 %1225, ptr %74, align 4
  %1226 = load i32, ptr %66, align 4, !tbaa !5
  %1227 = add nsw i32 %1226, 1
  store i32 %1227, ptr %66, align 4, !tbaa !5
  %1228 = sext i32 %1226 to i64
  %1229 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1228
  %1230 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1229, ptr noundef nonnull align 4 dereferenceable(8) %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  %1231 = load i32, ptr %72, align 4, !tbaa !5
  %1232 = load i32, ptr %67, align 4, !tbaa !5
  %1233 = or i32 %1232, %1231
  store i32 %1233, ptr %67, align 4, !tbaa !5
  br label %1249

1234:                                             ; preds = %1215
  %1235 = load i32, ptr %58, align 4, !tbaa !5
  %1236 = load i32, ptr %69, align 4, !tbaa !5
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1237
  %1239 = getelementptr inbounds %"struct.std::pair", ptr %1238, i32 0, i32 0
  %1240 = load i32, ptr %1239, align 8, !tbaa !13
  %1241 = icmp slt i32 %1235, %1240
  br i1 %1241, label %1242, label %1248

1242:                                             ; preds = %1234
  %1243 = load i32, ptr %69, align 4, !tbaa !5
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1244
  %1246 = getelementptr inbounds %"struct.std::pair", ptr %1245, i32 0, i32 0
  %1247 = load i32, ptr %1246, align 8, !tbaa !13
  store i32 %1247, ptr %58, align 4, !tbaa !5
  br label %1248

1248:                                             ; preds = %1242, %1234
  store i32 42, ptr %11, align 4
  br label %1253

1249:                                             ; preds = %1220
  br label %1250

1250:                                             ; preds = %1249, %1203
  %1251 = load i32, ptr %69, align 4, !tbaa !5
  %1252 = add nsw i32 %1251, 1
  store i32 %1252, ptr %69, align 4, !tbaa !5
  store i32 0, ptr %11, align 4
  br label %1253

1253:                                             ; preds = %1250, %1248, %1198
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  %1254 = load i32, ptr %11, align 4
  switch i32 %1254, label %1257 [
    i32 0, label %1255
  ]

1255:                                             ; preds = %1253
  br label %1256

1256:                                             ; preds = %1255, %1142
  br label %1045, !llvm.loop !27

1257:                                             ; preds = %1253, %1140, %1055
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  br label %1258

1258:                                             ; preds = %1257
  br label %1259

1259:                                             ; preds = %1274, %1258
  %1260 = load i32, ptr %66, align 4, !tbaa !5
  %1261 = icmp ne i32 %1260, 0
  br i1 %1261, label %1262, label %1271

1262:                                             ; preds = %1259
  %1263 = load i32, ptr %66, align 4, !tbaa !5
  %1264 = sub nsw i32 %1263, 1
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1265
  %1267 = getelementptr inbounds %"struct.std::pair", ptr %1266, i32 0, i32 0
  %1268 = load i32, ptr %1267, align 8, !tbaa !13
  %1269 = load i32, ptr %58, align 4, !tbaa !5
  %1270 = icmp sle i32 %1268, %1269
  br label %1271

1271:                                             ; preds = %1262, %1259
  %1272 = phi i1 [ false, %1259 ], [ %1270, %1262 ]
  br i1 %1272, label %1273, label %1277

1273:                                             ; preds = %1271
  br label %1274

1274:                                             ; preds = %1273
  %1275 = load i32, ptr %66, align 4, !tbaa !5
  %1276 = add nsw i32 %1275, -1
  store i32 %1276, ptr %66, align 4, !tbaa !5
  br label %1259, !llvm.loop !28

1277:                                             ; preds = %1271
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot1, ptr noundef nonnull align 4 dereferenceable(4) %66) #5
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq1, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #5
  store i32 0, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  store i32 0, ptr %76, align 4, !tbaa !5
  br label %1278

1278:                                             ; preds = %1343, %1277
  %1279 = load i32, ptr %76, align 4, !tbaa !5
  %1280 = load i32, ptr @c, align 4, !tbaa !5
  %1281 = icmp slt i32 %1279, %1280
  br i1 %1281, label %1283, label %1282

1282:                                             ; preds = %1278
  store i32 47, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  br label %1346

1283:                                             ; preds = %1278
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #5
  %1284 = load i32, ptr %76, align 4, !tbaa !5
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @D, i64 0, i64 %1285
  %1287 = load i32, ptr %51, align 4, !tbaa !5
  %1288 = add nsw i32 %1287, 1
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds [1003 x [1003 x i32]], ptr %1286, i64 0, i64 %1289
  %1291 = load i32, ptr %60, align 4, !tbaa !5
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds [1003 x i32], ptr %1290, i64 0, i64 %1292
  %1294 = load i32, ptr %1293, align 4, !tbaa !5
  store i32 %1294, ptr %77, align 4, !tbaa !5
  %1295 = load i32, ptr %77, align 4, !tbaa !5
  %1296 = load i32, ptr %59, align 4, !tbaa !5
  %1297 = icmp slt i32 %1295, %1296
  br i1 %1297, label %1298, label %1342

1298:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  %1299 = load i32, ptr %77, align 4, !tbaa !5
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %1300
  %1302 = load i32, ptr %60, align 4, !tbaa !5
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds [1003 x i32], ptr %1301, i64 0, i64 %1303
  %1305 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %77, ptr noundef nonnull align 4 dereferenceable(4) %1304)
  store i64 %1305, ptr %78, align 4
  %1306 = load i32, ptr %75, align 4, !tbaa !5
  %1307 = add nsw i32 %1306, 1
  store i32 %1307, ptr %75, align 4, !tbaa !5
  %1308 = sext i32 %1306 to i64
  %1309 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1308
  %1310 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1309, ptr noundef nonnull align 4 dereferenceable(8) %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  %1311 = load i32, ptr %77, align 4, !tbaa !5
  %1312 = add nsw i32 %1311, 1
  %1313 = load i32, ptr %59, align 4, !tbaa !5
  %1314 = icmp slt i32 %1312, %1313
  br i1 %1314, label %1315, label %1341

1315:                                             ; preds = %1298
  %1316 = load i32, ptr %59, align 4, !tbaa !5
  %1317 = load i32, ptr %76, align 4, !tbaa !5
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @D, i64 0, i64 %1318
  %1320 = load i32, ptr %77, align 4, !tbaa !5
  %1321 = add nsw i32 %1320, 1
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds [1003 x [1003 x i32]], ptr %1319, i64 0, i64 %1322
  %1324 = load i32, ptr %60, align 4, !tbaa !5
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds [1003 x i32], ptr %1323, i64 0, i64 %1325
  %1327 = load i32, ptr %1326, align 4, !tbaa !5
  %1328 = icmp sgt i32 %1316, %1327
  br i1 %1328, label %1329, label %1341

1329:                                             ; preds = %1315
  %1330 = load i32, ptr %76, align 4, !tbaa !5
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @D, i64 0, i64 %1331
  %1333 = load i32, ptr %77, align 4, !tbaa !5
  %1334 = add nsw i32 %1333, 1
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds [1003 x [1003 x i32]], ptr %1332, i64 0, i64 %1335
  %1337 = load i32, ptr %60, align 4, !tbaa !5
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds [1003 x i32], ptr %1336, i64 0, i64 %1338
  %1340 = load i32, ptr %1339, align 4, !tbaa !5
  store i32 %1340, ptr %59, align 4, !tbaa !5
  br label %1341

1341:                                             ; preds = %1329, %1315, %1298
  br label %1342

1342:                                             ; preds = %1341, %1283
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  br label %1343

1343:                                             ; preds = %1342
  %1344 = load i32, ptr %76, align 4, !tbaa !5
  %1345 = add nsw i32 %1344, 1
  store i32 %1345, ptr %76, align 4, !tbaa !5
  br label %1278, !llvm.loop !29

1346:                                             ; preds = %1282
  %1347 = load i32, ptr %75, align 4, !tbaa !5
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %1348
  call void @_ZSt4sortIPSt4pairIiiEEvT_S3_(ptr noundef @cur, ptr noundef %1349)
  %1350 = load i32, ptr %75, align 4, !tbaa !5
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %1351
  %1353 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef @cur, ptr noundef %1352)
  %1354 = ptrtoint ptr %1353 to i64
  %1355 = sub i64 %1354, ptrtoint (ptr @cur to i64)
  %1356 = sdiv exact i64 %1355, 8
  %1357 = trunc i64 %1356 to i32
  store i32 %1357, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  store i32 0, ptr %79, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #5
  store i32 -1, ptr %80, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #5
  store i32 0, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #5
  store i32 0, ptr %82, align 4, !tbaa !5
  br label %1358

1358:                                             ; preds = %1569, %1346
  %1359 = load i32, ptr %81, align 4, !tbaa !5
  %1360 = load i32, ptr @tot2, align 4, !tbaa !5
  %1361 = icmp slt i32 %1359, %1360
  br i1 %1361, label %1366, label %1362

1362:                                             ; preds = %1358
  %1363 = load i32, ptr %82, align 4, !tbaa !5
  %1364 = load i32, ptr %75, align 4, !tbaa !5
  %1365 = icmp slt i32 %1363, %1364
  br label %1366

1366:                                             ; preds = %1362, %1358
  %1367 = phi i1 [ true, %1358 ], [ %1365, %1362 ]
  br i1 %1367, label %1369, label %1368

1368:                                             ; preds = %1366
  store i32 50, ptr %11, align 4
  br label %1570

1369:                                             ; preds = %1366
  %1370 = load i32, ptr %82, align 4, !tbaa !5
  %1371 = load i32, ptr %75, align 4, !tbaa !5
  %1372 = icmp eq i32 %1370, %1371
  br i1 %1372, label %1389, label %1373

1373:                                             ; preds = %1369
  %1374 = load i32, ptr %81, align 4, !tbaa !5
  %1375 = load i32, ptr @tot2, align 4, !tbaa !5
  %1376 = icmp slt i32 %1374, %1375
  br i1 %1376, label %1377, label %1458

1377:                                             ; preds = %1373
  %1378 = load i32, ptr %81, align 4, !tbaa !5
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1379
  %1381 = getelementptr inbounds %"struct.std::pair", ptr %1380, i32 0, i32 0
  %1382 = load i32, ptr %1381, align 8, !tbaa !13
  %1383 = load i32, ptr %82, align 4, !tbaa !5
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1384
  %1386 = getelementptr inbounds %"struct.std::pair", ptr %1385, i32 0, i32 0
  %1387 = load i32, ptr %1386, align 8, !tbaa !13
  %1388 = icmp slt i32 %1382, %1387
  br i1 %1388, label %1389, label %1458

1389:                                             ; preds = %1377, %1369
  %1390 = load i32, ptr %80, align 4, !tbaa !5
  %1391 = icmp eq i32 %1390, -1
  br i1 %1391, label %1392, label %1408

1392:                                             ; preds = %1389
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  %1393 = load i32, ptr %81, align 4, !tbaa !5
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1394
  %1396 = getelementptr inbounds %"struct.std::pair", ptr %1395, i32 0, i32 0
  %1397 = load i32, ptr %81, align 4, !tbaa !5
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1398
  %1400 = getelementptr inbounds %"struct.std::pair", ptr %1399, i32 0, i32 1
  %1401 = load i32, ptr %1400, align 4, !tbaa !15
  store i32 %1401, ptr %80, align 4, !tbaa !5
  %1402 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1396, ptr noundef nonnull align 4 dereferenceable(4) %80)
  store i64 %1402, ptr %83, align 4
  %1403 = load i32, ptr %79, align 4, !tbaa !5
  %1404 = add nsw i32 %1403, 1
  store i32 %1404, ptr %79, align 4, !tbaa !5
  %1405 = sext i32 %1403 to i64
  %1406 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1405
  %1407 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1406, ptr noundef nonnull align 4 dereferenceable(8) %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  br label %1455

1408:                                             ; preds = %1389
  %1409 = load i32, ptr %80, align 4, !tbaa !5
  %1410 = load i32, ptr %81, align 4, !tbaa !5
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1411
  %1413 = getelementptr inbounds %"struct.std::pair", ptr %1412, i32 0, i32 1
  %1414 = load i32, ptr %1413, align 4, !tbaa !15
  %1415 = and i32 %1409, %1414
  %1416 = icmp ne i32 %1415, 0
  br i1 %1416, label %1439, label %1417

1417:                                             ; preds = %1408
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  %1418 = load i32, ptr %81, align 4, !tbaa !5
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1419
  %1421 = getelementptr inbounds %"struct.std::pair", ptr %1420, i32 0, i32 0
  %1422 = load i32, ptr %81, align 4, !tbaa !5
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1423
  %1425 = getelementptr inbounds %"struct.std::pair", ptr %1424, i32 0, i32 1
  %1426 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1421, ptr noundef nonnull align 4 dereferenceable(4) %1425)
  store i64 %1426, ptr %84, align 4
  %1427 = load i32, ptr %79, align 4, !tbaa !5
  %1428 = add nsw i32 %1427, 1
  store i32 %1428, ptr %79, align 4, !tbaa !5
  %1429 = sext i32 %1427 to i64
  %1430 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1429
  %1431 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1430, ptr noundef nonnull align 4 dereferenceable(8) %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  %1432 = load i32, ptr %81, align 4, !tbaa !5
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1433
  %1435 = getelementptr inbounds %"struct.std::pair", ptr %1434, i32 0, i32 1
  %1436 = load i32, ptr %1435, align 4, !tbaa !15
  %1437 = load i32, ptr %80, align 4, !tbaa !5
  %1438 = or i32 %1437, %1436
  store i32 %1438, ptr %80, align 4, !tbaa !5
  br label %1454

1439:                                             ; preds = %1408
  %1440 = load i32, ptr %59, align 4, !tbaa !5
  %1441 = load i32, ptr %81, align 4, !tbaa !5
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1442
  %1444 = getelementptr inbounds %"struct.std::pair", ptr %1443, i32 0, i32 0
  %1445 = load i32, ptr %1444, align 8, !tbaa !13
  %1446 = icmp sgt i32 %1440, %1445
  br i1 %1446, label %1447, label %1453

1447:                                             ; preds = %1439
  %1448 = load i32, ptr %81, align 4, !tbaa !5
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1449
  %1451 = getelementptr inbounds %"struct.std::pair", ptr %1450, i32 0, i32 0
  %1452 = load i32, ptr %1451, align 8, !tbaa !13
  store i32 %1452, ptr %59, align 4, !tbaa !5
  br label %1453

1453:                                             ; preds = %1447, %1439
  store i32 50, ptr %11, align 4
  br label %1570

1454:                                             ; preds = %1417
  br label %1455

1455:                                             ; preds = %1454, %1392
  %1456 = load i32, ptr %81, align 4, !tbaa !5
  %1457 = add nsw i32 %1456, 1
  store i32 %1457, ptr %81, align 4, !tbaa !5
  br label %1569

1458:                                             ; preds = %1377, %1373
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #5
  %1459 = load i32, ptr %82, align 4, !tbaa !5
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1460
  %1462 = getelementptr inbounds %"struct.std::pair", ptr %1461, i32 0, i32 1
  %1463 = load i32, ptr %1462, align 4, !tbaa !15
  store i32 %1463, ptr %85, align 4, !tbaa !5
  %1464 = load i32, ptr %81, align 4, !tbaa !5
  %1465 = load i32, ptr @tot2, align 4, !tbaa !5
  %1466 = icmp slt i32 %1464, %1465
  br i1 %1466, label %1467, label %1513

1467:                                             ; preds = %1458
  %1468 = load i32, ptr %81, align 4, !tbaa !5
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1469
  %1471 = getelementptr inbounds %"struct.std::pair", ptr %1470, i32 0, i32 0
  %1472 = load i32, ptr %1471, align 8, !tbaa !13
  %1473 = load i32, ptr %82, align 4, !tbaa !5
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1474
  %1476 = getelementptr inbounds %"struct.std::pair", ptr %1475, i32 0, i32 0
  %1477 = load i32, ptr %1476, align 8, !tbaa !13
  %1478 = icmp eq i32 %1472, %1477
  br i1 %1478, label %1479, label %1513

1479:                                             ; preds = %1467
  %1480 = load i32, ptr %85, align 4, !tbaa !5
  %1481 = load i32, ptr %81, align 4, !tbaa !5
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1482
  %1484 = getelementptr inbounds %"struct.std::pair", ptr %1483, i32 0, i32 1
  %1485 = load i32, ptr %1484, align 4, !tbaa !15
  %1486 = and i32 %1480, %1485
  %1487 = icmp ne i32 %1486, 0
  br i1 %1487, label %1497, label %1488

1488:                                             ; preds = %1479
  %1489 = load i32, ptr %81, align 4, !tbaa !5
  %1490 = add nsw i32 %1489, 1
  store i32 %1490, ptr %81, align 4, !tbaa !5
  %1491 = sext i32 %1489 to i64
  %1492 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1491
  %1493 = getelementptr inbounds %"struct.std::pair", ptr %1492, i32 0, i32 1
  %1494 = load i32, ptr %1493, align 4, !tbaa !15
  %1495 = load i32, ptr %85, align 4, !tbaa !5
  %1496 = or i32 %1495, %1494
  store i32 %1496, ptr %85, align 4, !tbaa !5
  br label %1512

1497:                                             ; preds = %1479
  %1498 = load i32, ptr %59, align 4, !tbaa !5
  %1499 = load i32, ptr %82, align 4, !tbaa !5
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1500
  %1502 = getelementptr inbounds %"struct.std::pair", ptr %1501, i32 0, i32 0
  %1503 = load i32, ptr %1502, align 8, !tbaa !13
  %1504 = icmp sgt i32 %1498, %1503
  br i1 %1504, label %1505, label %1511

1505:                                             ; preds = %1497
  %1506 = load i32, ptr %82, align 4, !tbaa !5
  %1507 = sext i32 %1506 to i64
  %1508 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1507
  %1509 = getelementptr inbounds %"struct.std::pair", ptr %1508, i32 0, i32 0
  %1510 = load i32, ptr %1509, align 8, !tbaa !13
  store i32 %1510, ptr %59, align 4, !tbaa !5
  br label %1511

1511:                                             ; preds = %1505, %1497
  store i32 50, ptr %11, align 4
  br label %1566

1512:                                             ; preds = %1488
  br label %1513

1513:                                             ; preds = %1512, %1467, %1458
  %1514 = load i32, ptr %80, align 4, !tbaa !5
  %1515 = icmp eq i32 %1514, -1
  br i1 %1515, label %1516, label %1528

1516:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  %1517 = load i32, ptr %82, align 4, !tbaa !5
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1518
  %1520 = getelementptr inbounds %"struct.std::pair", ptr %1519, i32 0, i32 0
  %1521 = load i32, ptr %85, align 4, !tbaa !5
  store i32 %1521, ptr %80, align 4, !tbaa !5
  %1522 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1520, ptr noundef nonnull align 4 dereferenceable(4) %80)
  store i64 %1522, ptr %86, align 4
  %1523 = load i32, ptr %79, align 4, !tbaa !5
  %1524 = add nsw i32 %1523, 1
  store i32 %1524, ptr %79, align 4, !tbaa !5
  %1525 = sext i32 %1523 to i64
  %1526 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1525
  %1527 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1526, ptr noundef nonnull align 4 dereferenceable(8) %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  br label %1563

1528:                                             ; preds = %1513
  %1529 = load i32, ptr %80, align 4, !tbaa !5
  %1530 = load i32, ptr %85, align 4, !tbaa !5
  %1531 = and i32 %1529, %1530
  %1532 = icmp ne i32 %1531, 0
  br i1 %1532, label %1547, label %1533

1533:                                             ; preds = %1528
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  %1534 = load i32, ptr %82, align 4, !tbaa !5
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1535
  %1537 = getelementptr inbounds %"struct.std::pair", ptr %1536, i32 0, i32 0
  %1538 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %1537, ptr noundef nonnull align 4 dereferenceable(4) %85)
  store i64 %1538, ptr %87, align 4
  %1539 = load i32, ptr %79, align 4, !tbaa !5
  %1540 = add nsw i32 %1539, 1
  store i32 %1540, ptr %79, align 4, !tbaa !5
  %1541 = sext i32 %1539 to i64
  %1542 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1541
  %1543 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %1542, ptr noundef nonnull align 4 dereferenceable(8) %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  %1544 = load i32, ptr %85, align 4, !tbaa !5
  %1545 = load i32, ptr %80, align 4, !tbaa !5
  %1546 = or i32 %1545, %1544
  store i32 %1546, ptr %80, align 4, !tbaa !5
  br label %1562

1547:                                             ; preds = %1528
  %1548 = load i32, ptr %59, align 4, !tbaa !5
  %1549 = load i32, ptr %82, align 4, !tbaa !5
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1550
  %1552 = getelementptr inbounds %"struct.std::pair", ptr %1551, i32 0, i32 0
  %1553 = load i32, ptr %1552, align 8, !tbaa !13
  %1554 = icmp sgt i32 %1548, %1553
  br i1 %1554, label %1555, label %1561

1555:                                             ; preds = %1547
  %1556 = load i32, ptr %82, align 4, !tbaa !5
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %1557
  %1559 = getelementptr inbounds %"struct.std::pair", ptr %1558, i32 0, i32 0
  %1560 = load i32, ptr %1559, align 8, !tbaa !13
  store i32 %1560, ptr %59, align 4, !tbaa !5
  br label %1561

1561:                                             ; preds = %1555, %1547
  store i32 50, ptr %11, align 4
  br label %1566

1562:                                             ; preds = %1533
  br label %1563

1563:                                             ; preds = %1562, %1516
  %1564 = load i32, ptr %82, align 4, !tbaa !5
  %1565 = add nsw i32 %1564, 1
  store i32 %1565, ptr %82, align 4, !tbaa !5
  store i32 0, ptr %11, align 4
  br label %1566

1566:                                             ; preds = %1563, %1561, %1511
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #5
  %1567 = load i32, ptr %11, align 4
  switch i32 %1567, label %1570 [
    i32 0, label %1568
  ]

1568:                                             ; preds = %1566
  br label %1569

1569:                                             ; preds = %1568, %1455
  br label %1358, !llvm.loop !30

1570:                                             ; preds = %1566, %1453, %1368
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  br label %1571

1571:                                             ; preds = %1570
  br label %1572

1572:                                             ; preds = %1587, %1571
  %1573 = load i32, ptr %79, align 4, !tbaa !5
  %1574 = icmp ne i32 %1573, 0
  br i1 %1574, label %1575, label %1584

1575:                                             ; preds = %1572
  %1576 = load i32, ptr %79, align 4, !tbaa !5
  %1577 = sub nsw i32 %1576, 1
  %1578 = sext i32 %1577 to i64
  %1579 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %1578
  %1580 = getelementptr inbounds %"struct.std::pair", ptr %1579, i32 0, i32 0
  %1581 = load i32, ptr %1580, align 8, !tbaa !13
  %1582 = load i32, ptr %59, align 4, !tbaa !5
  %1583 = icmp sge i32 %1581, %1582
  br label %1584

1584:                                             ; preds = %1575, %1572
  %1585 = phi i1 [ false, %1572 ], [ %1583, %1575 ]
  br i1 %1585, label %1586, label %1590

1586:                                             ; preds = %1584
  br label %1587

1587:                                             ; preds = %1586
  %1588 = load i32, ptr %79, align 4, !tbaa !5
  %1589 = add nsw i32 %1588, -1
  store i32 %1589, ptr %79, align 4, !tbaa !5
  br label %1572, !llvm.loop !31

1590:                                             ; preds = %1584
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot2, ptr noundef nonnull align 4 dereferenceable(4) %79) #5
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq2, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  %1591 = load i32, ptr %58, align 4, !tbaa !5
  %1592 = load i32, ptr @tot1, align 4, !tbaa !5
  %1593 = sext i32 %1592 to i64
  %1594 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1593
  %1595 = getelementptr inbounds %"struct.std::pair", ptr %1594, i32 0, i32 0
  store i32 %1591, ptr %1595, align 8, !tbaa !13
  %1596 = load i32, ptr %59, align 4, !tbaa !5
  %1597 = load i32, ptr @tot2, align 4, !tbaa !5
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1598
  %1600 = getelementptr inbounds %"struct.std::pair", ptr %1599, i32 0, i32 0
  store i32 %1596, ptr %1600, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #5
  store i32 0, ptr %88, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #5
  store i32 0, ptr %89, align 4, !tbaa !5
  br label %1601

1601:                                             ; preds = %1607, %1590
  %1602 = load i32, ptr %89, align 4, !tbaa !5
  %1603 = load i32, ptr @tot1, align 4, !tbaa !5
  %1604 = icmp slt i32 %1602, %1603
  br i1 %1604, label %1606, label %1605

1605:                                             ; preds = %1601
  store i32 55, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  br label %1616

1606:                                             ; preds = %1601
  br label %1607

1607:                                             ; preds = %1606
  %1608 = load i32, ptr %89, align 4, !tbaa !5
  %1609 = add nsw i32 %1608, 1
  store i32 %1609, ptr %89, align 4, !tbaa !5
  %1610 = sext i32 %1608 to i64
  %1611 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1610
  %1612 = getelementptr inbounds %"struct.std::pair", ptr %1611, i32 0, i32 1
  %1613 = load i32, ptr %1612, align 4, !tbaa !15
  %1614 = load i32, ptr %88, align 4, !tbaa !5
  %1615 = or i32 %1614, %1613
  store i32 %1615, ptr %88, align 4, !tbaa !5
  br label %1601, !llvm.loop !32

1616:                                             ; preds = %1605
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #5
  %1617 = load i32, ptr @tot1, align 4, !tbaa !5
  %1618 = sub nsw i32 %1617, 1
  store i32 %1618, ptr %90, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #5
  store i32 0, ptr %91, align 4, !tbaa !5
  br label %1619

1619:                                             ; preds = %1689, %1616
  %1620 = load i32, ptr %90, align 4, !tbaa !5
  %1621 = icmp sge i32 %1620, 0
  br i1 %1621, label %1623, label %1622

1622:                                             ; preds = %1619
  store i32 58, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #5
  br label %1698

1623:                                             ; preds = %1619
  br label %1624

1624:                                             ; preds = %1641, %1623
  %1625 = load i32, ptr %91, align 4, !tbaa !5
  %1626 = load i32, ptr @tot2, align 4, !tbaa !5
  %1627 = icmp slt i32 %1625, %1626
  br i1 %1627, label %1628, label %1638

1628:                                             ; preds = %1624
  %1629 = load i32, ptr %88, align 4, !tbaa !5
  %1630 = load i32, ptr %91, align 4, !tbaa !5
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1631
  %1633 = getelementptr inbounds %"struct.std::pair", ptr %1632, i32 0, i32 1
  %1634 = load i32, ptr %1633, align 4, !tbaa !15
  %1635 = and i32 %1629, %1634
  %1636 = icmp ne i32 %1635, 0
  %1637 = xor i1 %1636, true
  br label %1638

1638:                                             ; preds = %1628, %1624
  %1639 = phi i1 [ false, %1624 ], [ %1637, %1628 ]
  br i1 %1639, label %1640, label %1650

1640:                                             ; preds = %1638
  br label %1641

1641:                                             ; preds = %1640
  %1642 = load i32, ptr %91, align 4, !tbaa !5
  %1643 = add nsw i32 %1642, 1
  store i32 %1643, ptr %91, align 4, !tbaa !5
  %1644 = sext i32 %1642 to i64
  %1645 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1644
  %1646 = getelementptr inbounds %"struct.std::pair", ptr %1645, i32 0, i32 1
  %1647 = load i32, ptr %1646, align 4, !tbaa !15
  %1648 = load i32, ptr %88, align 4, !tbaa !5
  %1649 = or i32 %1648, %1647
  store i32 %1649, ptr %88, align 4, !tbaa !5
  br label %1624, !llvm.loop !33

1650:                                             ; preds = %1638
  %1651 = load i32, ptr %91, align 4, !tbaa !5
  %1652 = icmp ne i32 %1651, 0
  br i1 %1652, label %1653, label %1688

1653:                                             ; preds = %1650
  %1654 = load i32, ptr %88, align 4, !tbaa !5
  %1655 = load i32, ptr @c, align 4, !tbaa !5
  %1656 = shl i32 1, %1655
  %1657 = sub nsw i32 %1656, 1
  %1658 = icmp eq i32 %1654, %1657
  br i1 %1658, label %1659, label %1688

1659:                                             ; preds = %1653
  %1660 = load i32, ptr %90, align 4, !tbaa !5
  %1661 = sext i32 %1660 to i64
  %1662 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1661
  %1663 = getelementptr inbounds %"struct.std::pair", ptr %1662, i32 0, i32 0
  %1664 = load i32, ptr %1663, align 8, !tbaa !13
  %1665 = load i32, ptr %90, align 4, !tbaa !5
  %1666 = add nsw i32 %1665, 1
  %1667 = sext i32 %1666 to i64
  %1668 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1667
  %1669 = getelementptr inbounds %"struct.std::pair", ptr %1668, i32 0, i32 0
  %1670 = load i32, ptr %1669, align 8, !tbaa !13
  %1671 = sub nsw i32 %1664, %1670
  %1672 = load i32, ptr %91, align 4, !tbaa !5
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1673
  %1675 = getelementptr inbounds %"struct.std::pair", ptr %1674, i32 0, i32 0
  %1676 = load i32, ptr %1675, align 8, !tbaa !13
  %1677 = load i32, ptr %91, align 4, !tbaa !5
  %1678 = sub nsw i32 %1677, 1
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %1679
  %1681 = getelementptr inbounds %"struct.std::pair", ptr %1680, i32 0, i32 0
  %1682 = load i32, ptr %1681, align 8, !tbaa !13
  %1683 = sub nsw i32 %1676, %1682
  %1684 = mul nsw i32 %1671, %1683
  %1685 = sext i32 %1684 to i64
  %1686 = load i64, ptr @ans, align 8, !tbaa !9
  %1687 = add nsw i64 %1686, %1685
  store i64 %1687, ptr @ans, align 8, !tbaa !9
  br label %1688

1688:                                             ; preds = %1659, %1653, %1650
  br label %1689

1689:                                             ; preds = %1688
  %1690 = load i32, ptr %90, align 4, !tbaa !5
  %1691 = add nsw i32 %1690, -1
  store i32 %1691, ptr %90, align 4, !tbaa !5
  %1692 = sext i32 %1690 to i64
  %1693 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %1692
  %1694 = getelementptr inbounds %"struct.std::pair", ptr %1693, i32 0, i32 1
  %1695 = load i32, ptr %1694, align 4, !tbaa !15
  %1696 = load i32, ptr %88, align 4, !tbaa !5
  %1697 = xor i32 %1696, %1695
  store i32 %1697, ptr %88, align 4, !tbaa !5
  br label %1619, !llvm.loop !34

1698:                                             ; preds = %1622
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #5
  br label %1699

1699:                                             ; preds = %1698
  %1700 = load i32, ptr %60, align 4, !tbaa !5
  %1701 = add nsw i32 %1700, 1
  store i32 %1701, ptr %60, align 4, !tbaa !5
  br label %960, !llvm.loop !35

1702:                                             ; preds = %964
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  br label %1703

1703:                                             ; preds = %1702
  %1704 = load i32, ptr %52, align 4, !tbaa !5
  %1705 = add nsw i32 %1704, 1
  store i32 %1705, ptr %52, align 4, !tbaa !5
  br label %935, !llvm.loop !36

1706:                                             ; preds = %939
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  br label %1707

1707:                                             ; preds = %1706, %919, %108, %99
  ret void
}

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef, ptr noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(56)) #4

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

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 = { 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 #3 = { 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 #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 = { 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 = !{!"long long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSSt4pairIiiE", !6, i64 0, !6, i64 4}
!15 = !{!14, !6, i64 4}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}


; 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.std::pair" = type { i32, i32 }

@c = external dso_local local_unnamed_addr global i32, align 4
@a = external dso_local global [1003 x [1003 x i32]], align 16
@U = external dso_local local_unnamed_addr global [5 x [1003 x [1003 x i32]]], align 16
@D = external dso_local local_unnamed_addr global [5 x [1003 x [1003 x i32]]], align 16
@L = external dso_local local_unnamed_addr global [5 x [1003 x [1003 x i32]]], align 16
@R = external dso_local local_unnamed_addr global [5 x [1003 x [1003 x i32]]], align 16
@tot1 = external dso_local global i32, align 4
@tot2 = external dso_local global i32, align 4
@seq1 = external dso_local global [7 x %"struct.std::pair"], align 16
@seq2 = external dso_local global [7 x %"struct.std::pair"], align 16
@cur = external dso_local global [5 x %"struct.std::pair"], align 16
@tmp = external dso_local global [7 x %"struct.std::pair"], align 16
@ans = external dso_local local_unnamed_addr global i64, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5solveiiii(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 {
  %5 = alloca i32, align 4
  %6 = alloca %"struct.std::pair", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"struct.std::pair", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"struct.std::pair", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"struct.std::pair", align 8
  %16 = alloca %"struct.std::pair", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.std::pair", align 8
  %19 = alloca %"struct.std::pair", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::pair", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.std::pair", align 8
  %25 = alloca %"struct.std::pair", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"struct.std::pair", align 8
  %28 = alloca %"struct.std::pair", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"struct.std::pair", align 8
  %31 = alloca i32, align 4
  %32 = alloca %"struct.std::pair", align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"struct.std::pair", align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %"struct.std::pair", align 8
  %40 = alloca %"struct.std::pair", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"struct.std::pair", align 8
  %43 = alloca %"struct.std::pair", align 8
  %44 = alloca i32, align 4
  %45 = alloca %"struct.std::pair", align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %"struct.std::pair", align 8
  %49 = alloca %"struct.std::pair", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"struct.std::pair", align 8
  %52 = alloca %"struct.std::pair", align 8
  %53 = icmp sgt i32 %0, %1
  %54 = icmp sgt i32 %2, %3
  %or.cond = or i1 %53, %54
  br i1 %or.cond, label %773, label %55

55:                                               ; preds = %4
  %56 = icmp eq i32 %0, %1
  %57 = icmp eq i32 %2, %3
  %or.cond460 = and i1 %56, %57
  br i1 %or.cond460, label %58, label %69

58:                                               ; preds = %55
  %59 = sext i32 %0 to i64
  %60 = sext i32 %2 to i64
  %61 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %59, i64 %60
  %62 = load i32, ptr %61, align 4, !tbaa !5
  %63 = load i32, ptr @c, align 4, !tbaa !5
  %notmask459 = shl nsw i32 -1, %63
  %64 = xor i32 %notmask459, %62
  %65 = icmp eq i32 %64, -1
  %66 = zext i1 %65 to i64
  %67 = load i64, ptr @ans, align 8, !tbaa !9
  %68 = add nsw i64 %67, %66
  store i64 %68, ptr @ans, align 8, !tbaa !9
  br label %773

69:                                               ; preds = %55
  %70 = sub nsw i32 %1, %0
  %71 = sub nsw i32 %3, %2
  %72 = icmp slt i32 %70, %71
  br i1 %72, label %.lr.ph632, label %.lr.ph575

.lr.ph632:                                        ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %73 = add nsw i32 %3, %2
  %74 = ashr i32 %73, 1
  store i32 %74, ptr %5, align 4, !tbaa !5
  tail call void @_Z5solveiiii(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %74)
  %75 = add nsw i32 %74, 1
  tail call void @_Z5solveiiii(i32 noundef %0, i32 noundef %1, i32 noundef %75, i32 noundef %3)
  %76 = add nsw i32 %2, -1
  %77 = add nsw i32 %3, 1
  %78 = sext i32 %0 to i64
  %79 = sext i32 %1 to i64
  br label %80

._crit_edge633:                                   ; preds = %97
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br label %773

80:                                               ; preds = %.lr.ph632, %97
  %indvars.iv701 = phi i64 [ %78, %.lr.ph632 ], [ %indvars.iv.next702, %97 ]
  %indvars706 = trunc i64 %indvars.iv701 to i32
  store i32 0, ptr @tot2, align 4, !tbaa !5
  store i32 0, ptr @tot1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 0, ptr %7, align 4, !tbaa !5
  %81 = call i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %7)
  store i64 %81, ptr %6, align 8
  %82 = load i32, ptr @tot1, align 4, !tbaa !5
  %83 = add nsw i32 %82, 1
  store i32 %83, ptr @tot1, align 4, !tbaa !5
  %84 = sext i32 %82 to i64
  %85 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %84
  %86 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %87 = load i32, ptr %5, align 4, !tbaa !5
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  store i32 0, ptr %10, align 4, !tbaa !5
  %89 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  store i64 %89, ptr %8, align 8
  %90 = load i32, ptr @tot2, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr @tot2, align 4, !tbaa !5
  %92 = sext i32 %90 to i64
  %93 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %92
  %94 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %93, ptr noundef nonnull align 4 dereferenceable(8) %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %.preheader507

.preheader507:                                    ; preds = %80, %._crit_edge625
  %indvars.iv703 = phi i64 [ %indvars.iv701, %80 ], [ %indvars.iv.next704, %._crit_edge625 ]
  %.0368627 = phi i32 [ %77, %80 ], [ %.9377, %._crit_edge625 ]
  %.0378626 = phi i32 [ %76, %80 ], [ %.9387, %._crit_edge625 ]
  %95 = load i32, ptr @c, align 4, !tbaa !5
  %96 = icmp sgt i32 %95, 0
  br i1 %96, label %.lr.ph580, label %._crit_edge581

97:                                               ; preds = %._crit_edge625
  %indvars.iv.next702 = add nsw i64 %indvars.iv701, 1
  %.not444.not = icmp slt i32 %indvars706, %1
  br i1 %.not444.not, label %80, label %._crit_edge633, !llvm.loop !11

._crit_edge581:                                   ; preds = %129, %.preheader507
  %.1379.lcssa = phi i32 [ %.0378626, %.preheader507 ], [ %.2380, %129 ]
  %.0365.lcssa = phi i32 [ 0, %.preheader507 ], [ %.1366, %129 ]
  %98 = sext i32 %.0365.lcssa to i64
  %99 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %98
  call void @_ZSt4sortIPSt4pairIiiESt7greaterIS1_EEvT_S5_T0_(ptr noundef nonnull @cur, ptr noundef nonnull %99)
  %100 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %99)
  %101 = ptrtoint ptr %100 to i64
  %102 = sub i64 %101, ptrtoint (ptr @cur to i64)
  %103 = lshr exact i64 %102, 3
  %104 = trunc i64 %103 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  store i32 -1, ptr %14, align 4, !tbaa !5
  %105 = load i32, ptr @tot1, align 4, !tbaa !5
  %106 = icmp sgt i32 %105, 0
  %107 = icmp sgt i32 %104, 0
  %108 = select i1 %106, i1 true, i1 %107
  br i1 %108, label %.lr.ph587, label %.loopexit506

.lr.ph580:                                        ; preds = %.preheader507, %129
  %indvars.iv677 = phi i64 [ %indvars.iv.next678, %129 ], [ 0, %.preheader507 ]
  %.0365578 = phi i32 [ %.1366, %129 ], [ 0, %.preheader507 ]
  %.1379577 = phi i32 [ %.2380, %129 ], [ %.0378626, %.preheader507 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  %109 = load i32, ptr %5, align 4, !tbaa !5
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @L, i64 0, i64 %indvars.iv677, i64 %indvars.iv703, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !5
  store i32 %112, ptr %11, align 4, !tbaa !5
  %113 = icmp sgt i32 %112, %.1379577
  br i1 %113, label %114, label %129

114:                                              ; preds = %.lr.ph580
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %115 = sext i32 %112 to i64
  %116 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %indvars.iv703, i64 %115
  %117 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %116)
  store i64 %117, ptr %12, align 8
  %118 = add nsw i32 %.0365578, 1
  %119 = sext i32 %.0365578 to i64
  %120 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %119
  %121 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %120, ptr noundef nonnull align 4 dereferenceable(8) %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  %122 = load i32, ptr %11, align 4, !tbaa !5
  %123 = add nsw i32 %122, -1
  %124 = icmp sgt i32 %123, %.1379577
  br i1 %124, label %125, label %129

125:                                              ; preds = %114
  %126 = sext i32 %123 to i64
  %127 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @L, i64 0, i64 %indvars.iv677, i64 %indvars.iv703, i64 %126
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %spec.select = call i32 @llvm.smax.i32(i32 %.1379577, i32 %128)
  br label %129

129:                                              ; preds = %125, %114, %.lr.ph580
  %.2380 = phi i32 [ %.1379577, %114 ], [ %.1379577, %.lr.ph580 ], [ %spec.select, %125 ]
  %.1366 = phi i32 [ %118, %114 ], [ %.0365578, %.lr.ph580 ], [ %118, %125 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  %indvars.iv.next678 = add nuw nsw i64 %indvars.iv677, 1
  %130 = load i32, ptr @c, align 4, !tbaa !5
  %131 = sext i32 %130 to i64
  %132 = icmp slt i64 %indvars.iv.next678, %131
  br i1 %132, label %.lr.ph580, label %._crit_edge581, !llvm.loop !13

.lr.ph587:                                        ; preds = %._crit_edge581, %222
  %133 = phi i1 [ %224, %222 ], [ %106, %._crit_edge581 ]
  %.0357585 = phi i32 [ %.2359, %222 ], [ 0, %._crit_edge581 ]
  %.0360584 = phi i32 [ %.3363, %222 ], [ 0, %._crit_edge581 ]
  %134 = icmp eq i32 %.0357585, %104
  br i1 %134, label %144, label %135

135:                                              ; preds = %.lr.ph587
  br i1 %133, label %136, label %178

136:                                              ; preds = %135
  %137 = sext i32 %.0360584 to i64
  %138 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %137
  %139 = load i32, ptr %138, align 8, !tbaa !14
  %140 = sext i32 %.0357585 to i64
  %141 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %140
  %142 = load i32, ptr %141, align 8, !tbaa !14
  %143 = icmp sgt i32 %139, %142
  br i1 %143, label %144, label %183

144:                                              ; preds = %136, %.lr.ph587
  %145 = load i32, ptr %14, align 4, !tbaa !5
  %146 = icmp eq i32 %145, -1
  br i1 %146, label %147, label %158

147:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %148 = sext i32 %.0360584 to i64
  %149 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %148
  %150 = getelementptr inbounds i8, ptr %149, i64 4
  %151 = load i32, ptr %150, align 4, !tbaa !16
  store i32 %151, ptr %14, align 4, !tbaa !5
  %152 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %149, ptr noundef nonnull align 4 dereferenceable(4) %14)
  store i64 %152, ptr %15, align 8
  %153 = load i32, ptr %13, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %13, align 4, !tbaa !5
  %155 = sext i32 %153 to i64
  %156 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %155
  %157 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %176

158:                                              ; preds = %144
  %159 = sext i32 %.0360584 to i64
  %160 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %159
  %161 = getelementptr inbounds i8, ptr %160, i64 4
  %162 = load i32, ptr %161, align 4, !tbaa !16
  %163 = and i32 %162, %145
  %.not448 = icmp eq i32 %163, 0
  br i1 %.not448, label %164, label %174

164:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %165 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %160, ptr noundef nonnull align 4 dereferenceable(4) %161)
  store i64 %165, ptr %16, align 8
  %166 = load i32, ptr %13, align 4, !tbaa !5
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %13, align 4, !tbaa !5
  %168 = sext i32 %166 to i64
  %169 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %168
  %170 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %169, ptr noundef nonnull align 4 dereferenceable(8) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  %171 = load i32, ptr %161, align 4, !tbaa !16
  %172 = load i32, ptr %14, align 4, !tbaa !5
  %173 = or i32 %172, %171
  store i32 %173, ptr %14, align 4, !tbaa !5
  br label %176

174:                                              ; preds = %158
  %175 = load i32, ptr %160, align 8, !tbaa !14
  %spec.select461 = call i32 @llvm.smax.i32(i32 %.1379.lcssa, i32 %175)
  br label %.loopexit506

176:                                              ; preds = %164, %147
  %177 = add nsw i32 %.0360584, 1
  br label %222

178:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %179 = sext i32 %.0357585 to i64
  %180 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %179
  %181 = getelementptr inbounds i8, ptr %180, i64 4
  %182 = load i32, ptr %181, align 4, !tbaa !16
  store i32 %182, ptr %17, align 4, !tbaa !5
  br label %194

183:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %184 = getelementptr inbounds i8, ptr %141, i64 4
  %185 = load i32, ptr %184, align 4, !tbaa !16
  store i32 %185, ptr %17, align 4, !tbaa !5
  %186 = icmp eq i32 %139, %142
  br i1 %186, label %187, label %194

187:                                              ; preds = %183
  %188 = getelementptr inbounds i8, ptr %138, i64 4
  %189 = load i32, ptr %188, align 4, !tbaa !16
  %190 = and i32 %189, %185
  %.not446 = icmp eq i32 %190, 0
  br i1 %.not446, label %191, label %.thread476

191:                                              ; preds = %187
  %192 = add nsw i32 %.0360584, 1
  %193 = or i32 %189, %185
  store i32 %193, ptr %17, align 4, !tbaa !5
  br label %194

194:                                              ; preds = %178, %191, %183
  %195 = phi i32 [ %193, %191 ], [ %185, %183 ], [ %182, %178 ]
  %196 = phi ptr [ %141, %191 ], [ %141, %183 ], [ %180, %178 ]
  %.1361 = phi i32 [ %192, %191 ], [ %.0360584, %183 ], [ %.0360584, %178 ]
  %197 = load i32, ptr %14, align 4, !tbaa !5
  %198 = icmp eq i32 %197, -1
  br i1 %198, label %199, label %206

199:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  store i32 %195, ptr %14, align 4, !tbaa !5
  %200 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %196, ptr noundef nonnull align 4 dereferenceable(4) %14)
  store i64 %200, ptr %18, align 8
  %201 = load i32, ptr %13, align 4, !tbaa !5
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %13, align 4, !tbaa !5
  %203 = sext i32 %201 to i64
  %204 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %203
  %205 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %204, ptr noundef nonnull align 4 dereferenceable(8) %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  br label %220

206:                                              ; preds = %194
  %207 = and i32 %195, %197
  %.not447 = icmp eq i32 %207, 0
  br i1 %.not447, label %208, label %218

208:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %209 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %196, ptr noundef nonnull align 4 dereferenceable(4) %17)
  store i64 %209, ptr %19, align 8
  %210 = load i32, ptr %13, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %13, align 4, !tbaa !5
  %212 = sext i32 %210 to i64
  %213 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %212
  %214 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %213, ptr noundef nonnull align 4 dereferenceable(8) %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  %215 = load i32, ptr %17, align 4, !tbaa !5
  %216 = load i32, ptr %14, align 4, !tbaa !5
  %217 = or i32 %216, %215
  store i32 %217, ptr %14, align 4, !tbaa !5
  br label %220

218:                                              ; preds = %206
  %219 = load i32, ptr %196, align 8, !tbaa !14
  br label %.thread476

.thread476:                                       ; preds = %187, %218
  %.lcssa.sink = phi i32 [ %219, %218 ], [ %139, %187 ]
  %spec.select462 = call i32 @llvm.smax.i32(i32 %.1379.lcssa, i32 %.lcssa.sink)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %.loopexit506

220:                                              ; preds = %199, %208
  %221 = add nsw i32 %.0357585, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %222

222:                                              ; preds = %220, %176
  %.3363 = phi i32 [ %177, %176 ], [ %.1361, %220 ]
  %.2359 = phi i32 [ %.0357585, %176 ], [ %221, %220 ]
  %223 = load i32, ptr @tot1, align 4, !tbaa !5
  %224 = icmp slt i32 %.3363, %223
  %225 = icmp slt i32 %.2359, %104
  %226 = select i1 %224, i1 true, i1 %225
  br i1 %226, label %.lr.ph587, label %.loopexit506, !llvm.loop !17

.loopexit506:                                     ; preds = %222, %._crit_edge581, %.thread476, %174
  %.9387 = phi i32 [ %spec.select461, %174 ], [ %spec.select462, %.thread476 ], [ %.1379.lcssa, %._crit_edge581 ], [ %.1379.lcssa, %222 ]
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not449588 = icmp eq i32 %.pr, 0
  br i1 %.not449588, label %.critedge, label %.lr.ph590.preheader

.lr.ph590.preheader:                              ; preds = %.loopexit506
  %227 = sext i32 %.pr to i64
  br label %.lr.ph590

.lr.ph590:                                        ; preds = %.lr.ph590.preheader, %230
  %indvars.iv680 = phi i64 [ %227, %.lr.ph590.preheader ], [ %indvars.iv.next681, %230 ]
  %indvars.iv.next681 = add nsw i64 %indvars.iv680, -1
  %228 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %indvars.iv.next681
  %229 = load i32, ptr %228, align 8, !tbaa !14
  %.not450 = icmp sgt i32 %229, %.9387
  br i1 %.not450, label %.critedge, label %230

230:                                              ; preds = %.lr.ph590
  %231 = trunc nsw i64 %indvars.iv.next681 to i32
  store i32 %231, ptr %13, align 4, !tbaa !5
  %.not449 = icmp eq i64 %indvars.iv.next681, 0
  br i1 %.not449, label %.critedge, label %.lr.ph590, !llvm.loop !18

.critedge:                                        ; preds = %.lr.ph590, %230, %.loopexit506
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot1, ptr noundef nonnull align 4 dereferenceable(4) %13) #6
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq1, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  %232 = load i32, ptr @c, align 4, !tbaa !5
  %233 = icmp sgt i32 %232, 0
  br i1 %233, label %.lr.ph595, label %._crit_edge596

._crit_edge596:                                   ; preds = %266, %.critedge
  %.1369.lcssa = phi i32 [ %.0368627, %.critedge ], [ %.2370, %266 ]
  %.0355.lcssa = phi i32 [ 0, %.critedge ], [ %.1356, %266 ]
  %234 = sext i32 %.0355.lcssa to i64
  %235 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %234
  call void @_ZSt4sortIPSt4pairIiiEEvT_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %235)
  %236 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %235)
  %237 = ptrtoint ptr %236 to i64
  %238 = sub i64 %237, ptrtoint (ptr @cur to i64)
  %239 = lshr exact i64 %238, 3
  %240 = trunc i64 %239 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 -1, ptr %23, align 4, !tbaa !5
  %241 = load i32, ptr @tot2, align 4, !tbaa !5
  %242 = icmp sgt i32 %241, 0
  %243 = icmp sgt i32 %240, 0
  %244 = select i1 %242, i1 true, i1 %243
  br i1 %244, label %.lr.ph602, label %.loopexit

.lr.ph595:                                        ; preds = %.critedge, %266
  %indvars.iv683 = phi i64 [ %indvars.iv.next684, %266 ], [ 0, %.critedge ]
  %.0355593 = phi i32 [ %.1356, %266 ], [ 0, %.critedge ]
  %.1369592 = phi i32 [ %.2370, %266 ], [ %.0368627, %.critedge ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  %245 = load i32, ptr %5, align 4, !tbaa !5
  %246 = add nsw i32 %245, 1
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @R, i64 0, i64 %indvars.iv683, i64 %indvars.iv703, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !5
  store i32 %249, ptr %20, align 4, !tbaa !5
  %250 = icmp slt i32 %249, %.1369592
  br i1 %250, label %251, label %266

251:                                              ; preds = %.lr.ph595
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %252 = sext i32 %249 to i64
  %253 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %indvars.iv703, i64 %252
  %254 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %253)
  store i64 %254, ptr %21, align 8
  %255 = add nsw i32 %.0355593, 1
  %256 = sext i32 %.0355593 to i64
  %257 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %256
  %258 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %257, ptr noundef nonnull align 4 dereferenceable(8) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  %259 = load i32, ptr %20, align 4, !tbaa !5
  %260 = add nsw i32 %259, 1
  %261 = icmp slt i32 %260, %.1369592
  br i1 %261, label %262, label %266

262:                                              ; preds = %251
  %263 = sext i32 %260 to i64
  %264 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @R, i64 0, i64 %indvars.iv683, i64 %indvars.iv703, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %spec.select464 = call i32 @llvm.smin.i32(i32 %.1369592, i32 %265)
  br label %266

266:                                              ; preds = %262, %251, %.lr.ph595
  %.2370 = phi i32 [ %.1369592, %251 ], [ %.1369592, %.lr.ph595 ], [ %spec.select464, %262 ]
  %.1356 = phi i32 [ %255, %251 ], [ %.0355593, %.lr.ph595 ], [ %255, %262 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  %indvars.iv.next684 = add nuw nsw i64 %indvars.iv683, 1
  %267 = load i32, ptr @c, align 4, !tbaa !5
  %268 = sext i32 %267 to i64
  %269 = icmp slt i64 %indvars.iv.next684, %268
  br i1 %269, label %.lr.ph595, label %._crit_edge596, !llvm.loop !19

.lr.ph602:                                        ; preds = %._crit_edge596, %359
  %270 = phi i1 [ %361, %359 ], [ %242, %._crit_edge596 ]
  %.0347600 = phi i32 [ %.2349, %359 ], [ 0, %._crit_edge596 ]
  %.0350599 = phi i32 [ %.3353, %359 ], [ 0, %._crit_edge596 ]
  %271 = icmp eq i32 %.0347600, %240
  br i1 %271, label %281, label %272

272:                                              ; preds = %.lr.ph602
  br i1 %270, label %273, label %315

273:                                              ; preds = %272
  %274 = sext i32 %.0350599 to i64
  %275 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %274
  %276 = load i32, ptr %275, align 8, !tbaa !14
  %277 = sext i32 %.0347600 to i64
  %278 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %277
  %279 = load i32, ptr %278, align 8, !tbaa !14
  %280 = icmp slt i32 %276, %279
  br i1 %280, label %281, label %320

281:                                              ; preds = %273, %.lr.ph602
  %282 = load i32, ptr %23, align 4, !tbaa !5
  %283 = icmp eq i32 %282, -1
  br i1 %283, label %284, label %295

284:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  %285 = sext i32 %.0350599 to i64
  %286 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %285
  %287 = getelementptr inbounds i8, ptr %286, i64 4
  %288 = load i32, ptr %287, align 4, !tbaa !16
  store i32 %288, ptr %23, align 4, !tbaa !5
  %289 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %286, ptr noundef nonnull align 4 dereferenceable(4) %23)
  store i64 %289, ptr %24, align 8
  %290 = load i32, ptr %22, align 4, !tbaa !5
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %22, align 4, !tbaa !5
  %292 = sext i32 %290 to i64
  %293 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %292
  %294 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %293, ptr noundef nonnull align 4 dereferenceable(8) %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  br label %313

295:                                              ; preds = %281
  %296 = sext i32 %.0350599 to i64
  %297 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %296
  %298 = getelementptr inbounds i8, ptr %297, i64 4
  %299 = load i32, ptr %298, align 4, !tbaa !16
  %300 = and i32 %299, %282
  %.not453 = icmp eq i32 %300, 0
  br i1 %.not453, label %301, label %311

301:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  %302 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %297, ptr noundef nonnull align 4 dereferenceable(4) %298)
  store i64 %302, ptr %25, align 8
  %303 = load i32, ptr %22, align 4, !tbaa !5
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %22, align 4, !tbaa !5
  %305 = sext i32 %303 to i64
  %306 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %305
  %307 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %306, ptr noundef nonnull align 4 dereferenceable(8) %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  %308 = load i32, ptr %298, align 4, !tbaa !16
  %309 = load i32, ptr %23, align 4, !tbaa !5
  %310 = or i32 %309, %308
  store i32 %310, ptr %23, align 4, !tbaa !5
  br label %313

311:                                              ; preds = %295
  %312 = load i32, ptr %297, align 8, !tbaa !14
  %spec.select465 = call i32 @llvm.smin.i32(i32 %.1369.lcssa, i32 %312)
  br label %.loopexit

313:                                              ; preds = %301, %284
  %314 = add nsw i32 %.0350599, 1
  br label %359

315:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  %316 = sext i32 %.0347600 to i64
  %317 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %316
  %318 = getelementptr inbounds i8, ptr %317, i64 4
  %319 = load i32, ptr %318, align 4, !tbaa !16
  store i32 %319, ptr %26, align 4, !tbaa !5
  br label %331

320:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  %321 = getelementptr inbounds i8, ptr %278, i64 4
  %322 = load i32, ptr %321, align 4, !tbaa !16
  store i32 %322, ptr %26, align 4, !tbaa !5
  %323 = icmp eq i32 %276, %279
  br i1 %323, label %324, label %331

324:                                              ; preds = %320
  %325 = getelementptr inbounds i8, ptr %275, i64 4
  %326 = load i32, ptr %325, align 4, !tbaa !16
  %327 = and i32 %326, %322
  %.not451 = icmp eq i32 %327, 0
  br i1 %.not451, label %328, label %.thread483

328:                                              ; preds = %324
  %329 = add nsw i32 %.0350599, 1
  %330 = or i32 %326, %322
  store i32 %330, ptr %26, align 4, !tbaa !5
  br label %331

331:                                              ; preds = %315, %328, %320
  %332 = phi i32 [ %330, %328 ], [ %322, %320 ], [ %319, %315 ]
  %333 = phi ptr [ %278, %328 ], [ %278, %320 ], [ %317, %315 ]
  %.1351 = phi i32 [ %329, %328 ], [ %.0350599, %320 ], [ %.0350599, %315 ]
  %334 = load i32, ptr %23, align 4, !tbaa !5
  %335 = icmp eq i32 %334, -1
  br i1 %335, label %336, label %343

336:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  store i32 %332, ptr %23, align 4, !tbaa !5
  %337 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %333, ptr noundef nonnull align 4 dereferenceable(4) %23)
  store i64 %337, ptr %27, align 8
  %338 = load i32, ptr %22, align 4, !tbaa !5
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %22, align 4, !tbaa !5
  %340 = sext i32 %338 to i64
  %341 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %340
  %342 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %341, ptr noundef nonnull align 4 dereferenceable(8) %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %357

343:                                              ; preds = %331
  %344 = and i32 %332, %334
  %.not452 = icmp eq i32 %344, 0
  br i1 %.not452, label %345, label %355

345:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  %346 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %333, ptr noundef nonnull align 4 dereferenceable(4) %26)
  store i64 %346, ptr %28, align 8
  %347 = load i32, ptr %22, align 4, !tbaa !5
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %22, align 4, !tbaa !5
  %349 = sext i32 %347 to i64
  %350 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %349
  %351 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %350, ptr noundef nonnull align 4 dereferenceable(8) %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  %352 = load i32, ptr %26, align 4, !tbaa !5
  %353 = load i32, ptr %23, align 4, !tbaa !5
  %354 = or i32 %353, %352
  store i32 %354, ptr %23, align 4, !tbaa !5
  br label %357

355:                                              ; preds = %343
  %356 = load i32, ptr %333, align 8, !tbaa !14
  br label %.thread483

.thread483:                                       ; preds = %324, %355
  %.lcssa711.sink = phi i32 [ %356, %355 ], [ %276, %324 ]
  %spec.select466 = call i32 @llvm.smin.i32(i32 %.1369.lcssa, i32 %.lcssa711.sink)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br label %.loopexit

357:                                              ; preds = %336, %345
  %358 = add nsw i32 %.0347600, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br label %359

359:                                              ; preds = %357, %313
  %.3353 = phi i32 [ %314, %313 ], [ %.1351, %357 ]
  %.2349 = phi i32 [ %.0347600, %313 ], [ %358, %357 ]
  %360 = load i32, ptr @tot2, align 4, !tbaa !5
  %361 = icmp slt i32 %.3353, %360
  %362 = icmp slt i32 %.2349, %240
  %363 = select i1 %361, i1 true, i1 %362
  br i1 %363, label %.lr.ph602, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %359, %._crit_edge596, %.thread483, %311
  %.9377 = phi i32 [ %spec.select465, %311 ], [ %spec.select466, %.thread483 ], [ %.1369.lcssa, %._crit_edge596 ], [ %.1369.lcssa, %359 ]
  %.pr488 = load i32, ptr %22, align 4, !tbaa !5
  %.not454603 = icmp eq i32 %.pr488, 0
  br i1 %.not454603, label %.critedge5, label %.lr.ph605.preheader

.lr.ph605.preheader:                              ; preds = %.loopexit
  %364 = sext i32 %.pr488 to i64
  br label %.lr.ph605

.lr.ph605:                                        ; preds = %.lr.ph605.preheader, %367
  %indvars.iv686 = phi i64 [ %364, %.lr.ph605.preheader ], [ %indvars.iv.next687, %367 ]
  %indvars.iv.next687 = add nsw i64 %indvars.iv686, -1
  %365 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %indvars.iv.next687
  %366 = load i32, ptr %365, align 8, !tbaa !14
  %.not455 = icmp slt i32 %366, %.9377
  br i1 %.not455, label %.critedge5, label %367

367:                                              ; preds = %.lr.ph605
  %368 = trunc nsw i64 %indvars.iv.next687 to i32
  store i32 %368, ptr %22, align 4, !tbaa !5
  %.not454 = icmp eq i64 %indvars.iv.next687, 0
  br i1 %.not454, label %.critedge5, label %.lr.ph605, !llvm.loop !21

.critedge5:                                       ; preds = %.lr.ph605, %367, %.loopexit
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot2, ptr noundef nonnull align 4 dereferenceable(4) %22) #6
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq2, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  %369 = load i32, ptr @tot1, align 4, !tbaa !5
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %370
  store i32 %.9387, ptr %371, align 8, !tbaa !14
  %372 = load i32, ptr @tot2, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %373
  store i32 %.9377, ptr %374, align 8, !tbaa !14
  %375 = icmp sgt i32 %369, 0
  br i1 %375, label %.lr.ph609.preheader, label %._crit_edge625

.lr.ph609.preheader:                              ; preds = %.critedge5
  %wide.trip.count692 = zext nneg i32 %369 to i64
  %min.iters.check752 = icmp ult i32 %369, 9
  br i1 %min.iters.check752, label %.lr.ph609.preheader768, label %vector.ph753

.lr.ph609.preheader768:                           ; preds = %middle.block750, %.lr.ph609.preheader
  %indvars.iv689.ph = phi i64 [ 0, %.lr.ph609.preheader ], [ %n.vec755, %middle.block750 ]
  %.0344607.ph = phi i32 [ 0, %.lr.ph609.preheader ], [ %384, %middle.block750 ]
  br label %.lr.ph609

vector.ph753:                                     ; preds = %.lr.ph609.preheader
  %n.mod.vf754 = and i64 %wide.trip.count692, 7
  %376 = icmp eq i64 %n.mod.vf754, 0
  %377 = select i1 %376, i64 8, i64 %n.mod.vf754
  %n.vec755 = sub nsw i64 %wide.trip.count692, %377
  br label %vector.body757

vector.body757:                                   ; preds = %vector.body757, %vector.ph753
  %index758 = phi i64 [ 0, %vector.ph753 ], [ %index.next765, %vector.body757 ]
  %vec.phi759 = phi <4 x i32> [ zeroinitializer, %vector.ph753 ], [ %381, %vector.body757 ]
  %vec.phi760 = phi <4 x i32> [ zeroinitializer, %vector.ph753 ], [ %382, %vector.body757 ]
  %378 = or disjoint i64 %index758, 4
  %379 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %index758, i32 1
  %380 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %378, i32 1
  %wide.vec761 = load <8 x i32>, ptr %379, align 4, !tbaa !16
  %wide.vec762 = load <8 x i32>, ptr %380, align 4, !tbaa !16
  %strided.vec763 = shufflevector <8 x i32> %wide.vec761, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec764 = shufflevector <8 x i32> %wide.vec762, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %381 = or <4 x i32> %strided.vec763, %vec.phi759
  %382 = or <4 x i32> %strided.vec764, %vec.phi760
  %index.next765 = add nuw i64 %index758, 8
  %383 = icmp eq i64 %index.next765, %n.vec755
  br i1 %383, label %middle.block750, label %vector.body757, !llvm.loop !22

middle.block750:                                  ; preds = %vector.body757
  %bin.rdx766 = or <4 x i32> %382, %381
  %384 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %bin.rdx766)
  br label %.lr.ph609.preheader768

.preheader505:                                    ; preds = %.lr.ph609
  br i1 %375, label %.preheader.lr.ph, label %._crit_edge625

.preheader.lr.ph:                                 ; preds = %.preheader505
  %ans.promoted619 = load i64, ptr @ans, align 8, !tbaa !9
  %385 = load i32, ptr @c, align 4
  %notmask458 = shl nsw i32 -1, %385
  br label %.preheader

.lr.ph609:                                        ; preds = %.lr.ph609.preheader768, %.lr.ph609
  %indvars.iv689 = phi i64 [ %indvars.iv.next690, %.lr.ph609 ], [ %indvars.iv689.ph, %.lr.ph609.preheader768 ]
  %.0344607 = phi i32 [ %388, %.lr.ph609 ], [ %.0344607.ph, %.lr.ph609.preheader768 ]
  %indvars.iv.next690 = add nuw nsw i64 %indvars.iv689, 1
  %386 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv689, i32 1
  %387 = load i32, ptr %386, align 4, !tbaa !16
  %388 = or i32 %387, %.0344607
  %exitcond693.not = icmp eq i64 %indvars.iv.next690, %wide.trip.count692
  br i1 %exitcond693.not, label %.preheader505, label %.lr.ph609, !llvm.loop !25

.preheader:                                       ; preds = %.preheader.lr.ph, %417
  %indvars.iv698 = phi i64 [ %370, %.preheader.lr.ph ], [ %indvars.iv.next699, %417 ]
  %.0340623 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1341.lcssa, %417 ]
  %.1345621 = phi i32 [ %388, %.preheader.lr.ph ], [ %421, %417 ]
  %389 = phi i64 [ %ans.promoted619, %.preheader.lr.ph ], [ %418, %417 ]
  %indvars.iv.next699 = add nsw i64 %indvars.iv698, -1
  %390 = icmp slt i32 %.0340623, %372
  br i1 %390, label %.lr.ph613.preheader, label %.critedge7

.lr.ph613.preheader:                              ; preds = %.preheader
  %391 = sext i32 %.0340623 to i64
  br label %.lr.ph613

._crit_edge625:                                   ; preds = %417, %.critedge5, %.preheader505
  %indvars.iv.next704 = add nsw i64 %indvars.iv703, 1
  %.not445.not = icmp slt i64 %indvars.iv703, %79
  br i1 %.not445.not, label %.preheader507, label %97, !llvm.loop !26

.lr.ph613:                                        ; preds = %.lr.ph613.preheader, %395
  %indvars.iv694 = phi i64 [ %391, %.lr.ph613.preheader ], [ %indvars.iv.next695, %395 ]
  %.2346611 = phi i32 [ %.1345621, %.lr.ph613.preheader ], [ %396, %395 ]
  %392 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %indvars.iv694, i32 1
  %393 = load i32, ptr %392, align 4, !tbaa !16
  %394 = and i32 %393, %.2346611
  %.not456 = icmp eq i32 %394, 0
  br i1 %.not456, label %395, label %.critedge7.loopexit.split.loop.exit725

395:                                              ; preds = %.lr.ph613
  %indvars.iv.next695 = add nsw i64 %indvars.iv694, 1
  %396 = or i32 %393, %.2346611
  %exitcond697.not = icmp eq i64 %indvars.iv.next695, %373
  br i1 %exitcond697.not, label %.critedge7, label %.lr.ph613, !llvm.loop !27

.critedge7.loopexit.split.loop.exit725:           ; preds = %.lr.ph613
  %397 = trunc nsw i64 %indvars.iv694 to i32
  br label %.critedge7

.critedge7:                                       ; preds = %395, %.critedge7.loopexit.split.loop.exit725, %.preheader
  %.2346.lcssa = phi i32 [ %.1345621, %.preheader ], [ %.2346611, %.critedge7.loopexit.split.loop.exit725 ], [ %396, %395 ]
  %.1341.lcssa = phi i32 [ %.0340623, %.preheader ], [ %397, %.critedge7.loopexit.split.loop.exit725 ], [ %372, %395 ]
  %.not457 = icmp ne i32 %.1341.lcssa, 0
  %398 = xor i32 %notmask458, %.2346.lcssa
  %399 = icmp eq i32 %398, -1
  %or.cond635 = select i1 %.not457, i1 %399, i1 false
  br i1 %or.cond635, label %400, label %417

400:                                              ; preds = %.critedge7
  %401 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv.next699
  %402 = load i32, ptr %401, align 8, !tbaa !14
  %403 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv698
  %404 = load i32, ptr %403, align 8, !tbaa !14
  %405 = sub nsw i32 %402, %404
  %406 = sext i32 %.1341.lcssa to i64
  %407 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %406
  %408 = load i32, ptr %407, align 8, !tbaa !14
  %409 = add nsw i32 %.1341.lcssa, -1
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %410
  %412 = load i32, ptr %411, align 8, !tbaa !14
  %413 = sub nsw i32 %408, %412
  %414 = mul nsw i32 %413, %405
  %415 = sext i32 %414 to i64
  %416 = add nsw i64 %389, %415
  store i64 %416, ptr @ans, align 8, !tbaa !9
  br label %417

417:                                              ; preds = %.critedge7, %400
  %418 = phi i64 [ %389, %.critedge7 ], [ %416, %400 ]
  %419 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv.next699, i32 1
  %420 = load i32, ptr %419, align 4, !tbaa !16
  %421 = xor i32 %420, %.2346.lcssa
  %422 = icmp sgt i64 %indvars.iv698, 1
  br i1 %422, label %.preheader, label %._crit_edge625, !llvm.loop !28

.lr.ph575:                                        ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  %423 = add nsw i32 %1, %0
  %424 = ashr i32 %423, 1
  store i32 %424, ptr %29, align 4, !tbaa !5
  tail call void @_Z5solveiiii(i32 noundef %0, i32 noundef %424, i32 noundef %2, i32 noundef %3)
  %425 = add nsw i32 %424, 1
  tail call void @_Z5solveiiii(i32 noundef %425, i32 noundef %1, i32 noundef %2, i32 noundef %3)
  %426 = add nsw i32 %0, -1
  %427 = add nsw i32 %1, 1
  %428 = sext i32 %2 to i64
  %429 = sext i32 %3 to i64
  br label %430

._crit_edge576:                                   ; preds = %447
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  br label %773

430:                                              ; preds = %.lr.ph575, %447
  %indvars.iv671 = phi i64 [ %428, %.lr.ph575 ], [ %indvars.iv.next672, %447 ]
  %indvars676 = trunc i64 %indvars.iv671 to i32
  store i32 0, ptr @tot2, align 4, !tbaa !5
  store i32 0, ptr @tot1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  store i32 0, ptr %31, align 4, !tbaa !5
  %431 = call i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %31)
  store i64 %431, ptr %30, align 8
  %432 = load i32, ptr @tot1, align 4, !tbaa !5
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr @tot1, align 4, !tbaa !5
  %434 = sext i32 %432 to i64
  %435 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %434
  %436 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %435, ptr noundef nonnull align 4 dereferenceable(8) %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  %437 = load i32, ptr %29, align 4, !tbaa !5
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  store i32 0, ptr %34, align 4, !tbaa !5
  %439 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
  store i64 %439, ptr %32, align 8
  %440 = load i32, ptr @tot2, align 4, !tbaa !5
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr @tot2, align 4, !tbaa !5
  %442 = sext i32 %440 to i64
  %443 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %442
  %444 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %443, ptr noundef nonnull align 4 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  br label %.preheader512

.preheader512:                                    ; preds = %430, %._crit_edge568
  %indvars.iv673 = phi i64 [ %indvars.iv671, %430 ], [ %indvars.iv.next674, %._crit_edge568 ]
  %.0325570 = phi i32 [ %427, %430 ], [ %.9, %._crit_edge568 ]
  %.0329569 = phi i32 [ %426, %430 ], [ %.9338, %._crit_edge568 ]
  %445 = load i32, ptr @c, align 4, !tbaa !5
  %446 = icmp sgt i32 %445, 0
  br i1 %446, label %.lr.ph, label %._crit_edge

447:                                              ; preds = %._crit_edge568
  %indvars.iv.next672 = add nsw i64 %indvars.iv671, 1
  %.not.not = icmp slt i32 %indvars676, %3
  br i1 %.not.not, label %430, label %._crit_edge576, !llvm.loop !29

._crit_edge:                                      ; preds = %479, %.preheader512
  %.1330.lcssa = phi i32 [ %.0329569, %.preheader512 ], [ %.2331, %479 ]
  %.0322.lcssa = phi i32 [ 0, %.preheader512 ], [ %.1323, %479 ]
  %448 = sext i32 %.0322.lcssa to i64
  %449 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %448
  call void @_ZSt4sortIPSt4pairIiiESt7greaterIS1_EEvT_S5_T0_(ptr noundef nonnull @cur, ptr noundef nonnull %449)
  %450 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %449)
  %451 = ptrtoint ptr %450 to i64
  %452 = sub i64 %451, ptrtoint (ptr @cur to i64)
  %453 = lshr exact i64 %452, 3
  %454 = trunc i64 %453 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  store i32 0, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  store i32 -1, ptr %38, align 4, !tbaa !5
  %455 = load i32, ptr @tot1, align 4, !tbaa !5
  %456 = icmp sgt i32 %455, 0
  %457 = icmp sgt i32 %454, 0
  %458 = select i1 %456, i1 true, i1 %457
  br i1 %458, label %.lr.ph531, label %.loopexit511

.lr.ph:                                           ; preds = %.preheader512, %479
  %indvars.iv = phi i64 [ %indvars.iv.next, %479 ], [ 0, %.preheader512 ]
  %.0322525 = phi i32 [ %.1323, %479 ], [ 0, %.preheader512 ]
  %.1330524 = phi i32 [ %.2331, %479 ], [ %.0329569, %.preheader512 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  %459 = load i32, ptr %29, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @U, i64 0, i64 %indvars.iv, i64 %460, i64 %indvars.iv673
  %462 = load i32, ptr %461, align 4, !tbaa !5
  store i32 %462, ptr %35, align 4, !tbaa !5
  %463 = icmp sgt i32 %462, %.1330524
  br i1 %463, label %464, label %479

464:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  %465 = sext i32 %462 to i64
  %466 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %465, i64 %indvars.iv673
  %467 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %466)
  store i64 %467, ptr %36, align 8
  %468 = add nsw i32 %.0322525, 1
  %469 = sext i32 %.0322525 to i64
  %470 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %469
  %471 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %470, ptr noundef nonnull align 4 dereferenceable(8) %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  %472 = load i32, ptr %35, align 4, !tbaa !5
  %473 = add nsw i32 %472, -1
  %474 = icmp sgt i32 %473, %.1330524
  br i1 %474, label %475, label %479

475:                                              ; preds = %464
  %476 = sext i32 %473 to i64
  %477 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @U, i64 0, i64 %indvars.iv, i64 %476, i64 %indvars.iv673
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %spec.select468 = call i32 @llvm.smax.i32(i32 %.1330524, i32 %478)
  br label %479

479:                                              ; preds = %475, %464, %.lr.ph
  %.2331 = phi i32 [ %.1330524, %464 ], [ %.1330524, %.lr.ph ], [ %spec.select468, %475 ]
  %.1323 = phi i32 [ %468, %464 ], [ %.0322525, %.lr.ph ], [ %468, %475 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %480 = load i32, ptr @c, align 4, !tbaa !5
  %481 = sext i32 %480 to i64
  %482 = icmp slt i64 %indvars.iv.next, %481
  br i1 %482, label %.lr.ph, label %._crit_edge, !llvm.loop !30

.lr.ph531:                                        ; preds = %._crit_edge, %572
  %483 = phi i1 [ %574, %572 ], [ %456, %._crit_edge ]
  %.0314529 = phi i32 [ %.2316, %572 ], [ 0, %._crit_edge ]
  %.0317528 = phi i32 [ %.3320, %572 ], [ 0, %._crit_edge ]
  %484 = icmp eq i32 %.0314529, %454
  br i1 %484, label %494, label %485

485:                                              ; preds = %.lr.ph531
  br i1 %483, label %486, label %528

486:                                              ; preds = %485
  %487 = sext i32 %.0317528 to i64
  %488 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %487
  %489 = load i32, ptr %488, align 8, !tbaa !14
  %490 = sext i32 %.0314529 to i64
  %491 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %490
  %492 = load i32, ptr %491, align 8, !tbaa !14
  %493 = icmp sgt i32 %489, %492
  br i1 %493, label %494, label %533

494:                                              ; preds = %486, %.lr.ph531
  %495 = load i32, ptr %38, align 4, !tbaa !5
  %496 = icmp eq i32 %495, -1
  br i1 %496, label %497, label %508

497:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %498 = sext i32 %.0317528 to i64
  %499 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %498
  %500 = getelementptr inbounds i8, ptr %499, i64 4
  %501 = load i32, ptr %500, align 4, !tbaa !16
  store i32 %501, ptr %38, align 4, !tbaa !5
  %502 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %499, ptr noundef nonnull align 4 dereferenceable(4) %38)
  store i64 %502, ptr %39, align 8
  %503 = load i32, ptr %37, align 4, !tbaa !5
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %37, align 4, !tbaa !5
  %505 = sext i32 %503 to i64
  %506 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %505
  %507 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %506, ptr noundef nonnull align 4 dereferenceable(8) %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %526

508:                                              ; preds = %494
  %509 = sext i32 %.0317528 to i64
  %510 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %509
  %511 = getelementptr inbounds i8, ptr %510, i64 4
  %512 = load i32, ptr %511, align 4, !tbaa !16
  %513 = and i32 %512, %495
  %.not434 = icmp eq i32 %513, 0
  br i1 %.not434, label %514, label %524

514:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  %515 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %510, ptr noundef nonnull align 4 dereferenceable(4) %511)
  store i64 %515, ptr %40, align 8
  %516 = load i32, ptr %37, align 4, !tbaa !5
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr %37, align 4, !tbaa !5
  %518 = sext i32 %516 to i64
  %519 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %518
  %520 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %519, ptr noundef nonnull align 4 dereferenceable(8) %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  %521 = load i32, ptr %511, align 4, !tbaa !16
  %522 = load i32, ptr %38, align 4, !tbaa !5
  %523 = or i32 %522, %521
  store i32 %523, ptr %38, align 4, !tbaa !5
  br label %526

524:                                              ; preds = %508
  %525 = load i32, ptr %510, align 8, !tbaa !14
  %spec.select469 = call i32 @llvm.smax.i32(i32 %.1330.lcssa, i32 %525)
  br label %.loopexit511

526:                                              ; preds = %514, %497
  %527 = add nsw i32 %.0317528, 1
  br label %572

528:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  %529 = sext i32 %.0314529 to i64
  %530 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %529
  %531 = getelementptr inbounds i8, ptr %530, i64 4
  %532 = load i32, ptr %531, align 4, !tbaa !16
  store i32 %532, ptr %41, align 4, !tbaa !5
  br label %544

533:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  %534 = getelementptr inbounds i8, ptr %491, i64 4
  %535 = load i32, ptr %534, align 4, !tbaa !16
  store i32 %535, ptr %41, align 4, !tbaa !5
  %536 = icmp eq i32 %489, %492
  br i1 %536, label %537, label %544

537:                                              ; preds = %533
  %538 = getelementptr inbounds i8, ptr %488, i64 4
  %539 = load i32, ptr %538, align 4, !tbaa !16
  %540 = and i32 %539, %535
  %.not432 = icmp eq i32 %540, 0
  br i1 %.not432, label %541, label %.thread491

541:                                              ; preds = %537
  %542 = add nsw i32 %.0317528, 1
  %543 = or i32 %539, %535
  store i32 %543, ptr %41, align 4, !tbaa !5
  br label %544

544:                                              ; preds = %528, %541, %533
  %545 = phi i32 [ %543, %541 ], [ %535, %533 ], [ %532, %528 ]
  %546 = phi ptr [ %491, %541 ], [ %491, %533 ], [ %530, %528 ]
  %.1318 = phi i32 [ %542, %541 ], [ %.0317528, %533 ], [ %.0317528, %528 ]
  %547 = load i32, ptr %38, align 4, !tbaa !5
  %548 = icmp eq i32 %547, -1
  br i1 %548, label %549, label %556

549:                                              ; preds = %544
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  store i32 %545, ptr %38, align 4, !tbaa !5
  %550 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %546, ptr noundef nonnull align 4 dereferenceable(4) %38)
  store i64 %550, ptr %42, align 8
  %551 = load i32, ptr %37, align 4, !tbaa !5
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %37, align 4, !tbaa !5
  %553 = sext i32 %551 to i64
  %554 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %553
  %555 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %554, ptr noundef nonnull align 4 dereferenceable(8) %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  br label %570

556:                                              ; preds = %544
  %557 = and i32 %545, %547
  %.not433 = icmp eq i32 %557, 0
  br i1 %.not433, label %558, label %568

558:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  %559 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %546, ptr noundef nonnull align 4 dereferenceable(4) %41)
  store i64 %559, ptr %43, align 8
  %560 = load i32, ptr %37, align 4, !tbaa !5
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %37, align 4, !tbaa !5
  %562 = sext i32 %560 to i64
  %563 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %562
  %564 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %563, ptr noundef nonnull align 4 dereferenceable(8) %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  %565 = load i32, ptr %41, align 4, !tbaa !5
  %566 = load i32, ptr %38, align 4, !tbaa !5
  %567 = or i32 %566, %565
  store i32 %567, ptr %38, align 4, !tbaa !5
  br label %570

568:                                              ; preds = %556
  %569 = load i32, ptr %546, align 8, !tbaa !14
  br label %.thread491

.thread491:                                       ; preds = %537, %568
  %.lcssa715.sink = phi i32 [ %569, %568 ], [ %489, %537 ]
  %spec.select470 = call i32 @llvm.smax.i32(i32 %.1330.lcssa, i32 %.lcssa715.sink)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  br label %.loopexit511

570:                                              ; preds = %549, %558
  %571 = add nsw i32 %.0314529, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  br label %572

572:                                              ; preds = %570, %526
  %.3320 = phi i32 [ %527, %526 ], [ %.1318, %570 ]
  %.2316 = phi i32 [ %.0314529, %526 ], [ %571, %570 ]
  %573 = load i32, ptr @tot1, align 4, !tbaa !5
  %574 = icmp slt i32 %.3320, %573
  %575 = icmp slt i32 %.2316, %454
  %576 = select i1 %574, i1 true, i1 %575
  br i1 %576, label %.lr.ph531, label %.loopexit511, !llvm.loop !31

.loopexit511:                                     ; preds = %572, %._crit_edge, %.thread491, %524
  %.9338 = phi i32 [ %spec.select469, %524 ], [ %spec.select470, %.thread491 ], [ %.1330.lcssa, %._crit_edge ], [ %.1330.lcssa, %572 ]
  %.pr496 = load i32, ptr %37, align 4, !tbaa !5
  %.not435532 = icmp eq i32 %.pr496, 0
  br i1 %.not435532, label %.critedge9, label %.lr.ph534.preheader

.lr.ph534.preheader:                              ; preds = %.loopexit511
  %577 = sext i32 %.pr496 to i64
  br label %.lr.ph534

.lr.ph534:                                        ; preds = %.lr.ph534.preheader, %580
  %indvars.iv652 = phi i64 [ %577, %.lr.ph534.preheader ], [ %indvars.iv.next653, %580 ]
  %indvars.iv.next653 = add nsw i64 %indvars.iv652, -1
  %578 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %indvars.iv.next653
  %579 = load i32, ptr %578, align 8, !tbaa !14
  %.not436 = icmp sgt i32 %579, %.9338
  br i1 %.not436, label %.critedge9, label %580

580:                                              ; preds = %.lr.ph534
  %581 = trunc nsw i64 %indvars.iv.next653 to i32
  store i32 %581, ptr %37, align 4, !tbaa !5
  %.not435 = icmp eq i64 %indvars.iv.next653, 0
  br i1 %.not435, label %.critedge9, label %.lr.ph534, !llvm.loop !32

.critedge9:                                       ; preds = %.lr.ph534, %580, %.loopexit511
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot1, ptr noundef nonnull align 4 dereferenceable(4) %37) #6
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq1, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  %582 = load i32, ptr @c, align 4, !tbaa !5
  %583 = icmp sgt i32 %582, 0
  br i1 %583, label %.lr.ph539, label %._crit_edge540

._crit_edge540:                                   ; preds = %616, %.critedge9
  %.1326.lcssa = phi i32 [ %.0325570, %.critedge9 ], [ %.2327, %616 ]
  %.0312.lcssa = phi i32 [ 0, %.critedge9 ], [ %.1313, %616 ]
  %584 = sext i32 %.0312.lcssa to i64
  %585 = getelementptr inbounds %"struct.std::pair", ptr @cur, i64 %584
  call void @_ZSt4sortIPSt4pairIiiEEvT_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %585)
  %586 = call noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef nonnull @cur, ptr noundef nonnull %585)
  %587 = ptrtoint ptr %586 to i64
  %588 = sub i64 %587, ptrtoint (ptr @cur to i64)
  %589 = lshr exact i64 %588, 3
  %590 = trunc i64 %589 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #6
  store i32 0, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #6
  store i32 -1, ptr %47, align 4, !tbaa !5
  %591 = load i32, ptr @tot2, align 4, !tbaa !5
  %592 = icmp sgt i32 %591, 0
  %593 = icmp sgt i32 %590, 0
  %594 = select i1 %592, i1 true, i1 %593
  br i1 %594, label %.lr.ph546, label %.loopexit510

.lr.ph539:                                        ; preds = %.critedge9, %616
  %indvars.iv655 = phi i64 [ %indvars.iv.next656, %616 ], [ 0, %.critedge9 ]
  %.0312537 = phi i32 [ %.1313, %616 ], [ 0, %.critedge9 ]
  %.1326536 = phi i32 [ %.2327, %616 ], [ %.0325570, %.critedge9 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  %595 = load i32, ptr %29, align 4, !tbaa !5
  %596 = add nsw i32 %595, 1
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @D, i64 0, i64 %indvars.iv655, i64 %597, i64 %indvars.iv673
  %599 = load i32, ptr %598, align 4, !tbaa !5
  store i32 %599, ptr %44, align 4, !tbaa !5
  %600 = icmp slt i32 %599, %.1326536
  br i1 %600, label %601, label %616

601:                                              ; preds = %.lr.ph539
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  %602 = sext i32 %599 to i64
  %603 = getelementptr inbounds [1003 x [1003 x i32]], ptr @a, i64 0, i64 %602, i64 %indvars.iv673
  %604 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %603)
  store i64 %604, ptr %45, align 8
  %605 = add nsw i32 %.0312537, 1
  %606 = sext i32 %.0312537 to i64
  %607 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %606
  %608 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %607, ptr noundef nonnull align 4 dereferenceable(8) %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  %609 = load i32, ptr %44, align 4, !tbaa !5
  %610 = add nsw i32 %609, 1
  %611 = icmp slt i32 %610, %.1326536
  br i1 %611, label %612, label %616

612:                                              ; preds = %601
  %613 = sext i32 %610 to i64
  %614 = getelementptr inbounds [5 x [1003 x [1003 x i32]]], ptr @D, i64 0, i64 %indvars.iv655, i64 %613, i64 %indvars.iv673
  %615 = load i32, ptr %614, align 4, !tbaa !5
  %spec.select472 = call i32 @llvm.smin.i32(i32 %.1326536, i32 %615)
  br label %616

616:                                              ; preds = %612, %601, %.lr.ph539
  %.2327 = phi i32 [ %.1326536, %601 ], [ %.1326536, %.lr.ph539 ], [ %spec.select472, %612 ]
  %.1313 = phi i32 [ %605, %601 ], [ %.0312537, %.lr.ph539 ], [ %605, %612 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  %indvars.iv.next656 = add nuw nsw i64 %indvars.iv655, 1
  %617 = load i32, ptr @c, align 4, !tbaa !5
  %618 = sext i32 %617 to i64
  %619 = icmp slt i64 %indvars.iv.next656, %618
  br i1 %619, label %.lr.ph539, label %._crit_edge540, !llvm.loop !33

.lr.ph546:                                        ; preds = %._crit_edge540, %709
  %620 = phi i1 [ %711, %709 ], [ %592, %._crit_edge540 ]
  %.0305544 = phi i32 [ %.2307, %709 ], [ 0, %._crit_edge540 ]
  %.0308543 = phi i32 [ %.3, %709 ], [ 0, %._crit_edge540 ]
  %621 = icmp eq i32 %.0305544, %590
  br i1 %621, label %631, label %622

622:                                              ; preds = %.lr.ph546
  br i1 %620, label %623, label %665

623:                                              ; preds = %622
  %624 = sext i32 %.0308543 to i64
  %625 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %624
  %626 = load i32, ptr %625, align 8, !tbaa !14
  %627 = sext i32 %.0305544 to i64
  %628 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %627
  %629 = load i32, ptr %628, align 8, !tbaa !14
  %630 = icmp slt i32 %626, %629
  br i1 %630, label %631, label %670

631:                                              ; preds = %623, %.lr.ph546
  %632 = load i32, ptr %47, align 4, !tbaa !5
  %633 = icmp eq i32 %632, -1
  br i1 %633, label %634, label %645

634:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #6
  %635 = sext i32 %.0308543 to i64
  %636 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %635
  %637 = getelementptr inbounds i8, ptr %636, i64 4
  %638 = load i32, ptr %637, align 4, !tbaa !16
  store i32 %638, ptr %47, align 4, !tbaa !5
  %639 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %636, ptr noundef nonnull align 4 dereferenceable(4) %47)
  store i64 %639, ptr %48, align 8
  %640 = load i32, ptr %46, align 4, !tbaa !5
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %46, align 4, !tbaa !5
  %642 = sext i32 %640 to i64
  %643 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %642
  %644 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %643, ptr noundef nonnull align 4 dereferenceable(8) %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  br label %663

645:                                              ; preds = %631
  %646 = sext i32 %.0308543 to i64
  %647 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %646
  %648 = getelementptr inbounds i8, ptr %647, i64 4
  %649 = load i32, ptr %648, align 4, !tbaa !16
  %650 = and i32 %649, %632
  %.not439 = icmp eq i32 %650, 0
  br i1 %.not439, label %651, label %661

651:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #6
  %652 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %647, ptr noundef nonnull align 4 dereferenceable(4) %648)
  store i64 %652, ptr %49, align 8
  %653 = load i32, ptr %46, align 4, !tbaa !5
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %46, align 4, !tbaa !5
  %655 = sext i32 %653 to i64
  %656 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %655
  %657 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %656, ptr noundef nonnull align 4 dereferenceable(8) %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #6
  %658 = load i32, ptr %648, align 4, !tbaa !16
  %659 = load i32, ptr %47, align 4, !tbaa !5
  %660 = or i32 %659, %658
  store i32 %660, ptr %47, align 4, !tbaa !5
  br label %663

661:                                              ; preds = %645
  %662 = load i32, ptr %647, align 8, !tbaa !14
  %spec.select473 = call i32 @llvm.smin.i32(i32 %.1326.lcssa, i32 %662)
  br label %.loopexit510

663:                                              ; preds = %651, %634
  %664 = add nsw i32 %.0308543, 1
  br label %709

665:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #6
  %666 = sext i32 %.0305544 to i64
  %667 = getelementptr inbounds [5 x %"struct.std::pair"], ptr @cur, i64 0, i64 %666
  %668 = getelementptr inbounds i8, ptr %667, i64 4
  %669 = load i32, ptr %668, align 4, !tbaa !16
  store i32 %669, ptr %50, align 4, !tbaa !5
  br label %681

670:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #6
  %671 = getelementptr inbounds i8, ptr %628, i64 4
  %672 = load i32, ptr %671, align 4, !tbaa !16
  store i32 %672, ptr %50, align 4, !tbaa !5
  %673 = icmp eq i32 %626, %629
  br i1 %673, label %674, label %681

674:                                              ; preds = %670
  %675 = getelementptr inbounds i8, ptr %625, i64 4
  %676 = load i32, ptr %675, align 4, !tbaa !16
  %677 = and i32 %676, %672
  %.not437 = icmp eq i32 %677, 0
  br i1 %.not437, label %678, label %.thread499

678:                                              ; preds = %674
  %679 = add nsw i32 %.0308543, 1
  %680 = or i32 %676, %672
  store i32 %680, ptr %50, align 4, !tbaa !5
  br label %681

681:                                              ; preds = %665, %678, %670
  %682 = phi i32 [ %680, %678 ], [ %672, %670 ], [ %669, %665 ]
  %683 = phi ptr [ %628, %678 ], [ %628, %670 ], [ %667, %665 ]
  %.1309 = phi i32 [ %679, %678 ], [ %.0308543, %670 ], [ %.0308543, %665 ]
  %684 = load i32, ptr %47, align 4, !tbaa !5
  %685 = icmp eq i32 %684, -1
  br i1 %685, label %686, label %693

686:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  store i32 %682, ptr %47, align 4, !tbaa !5
  %687 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %683, ptr noundef nonnull align 4 dereferenceable(4) %47)
  store i64 %687, ptr %51, align 8
  %688 = load i32, ptr %46, align 4, !tbaa !5
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %46, align 4, !tbaa !5
  %690 = sext i32 %688 to i64
  %691 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %690
  %692 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %691, ptr noundef nonnull align 4 dereferenceable(8) %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  br label %707

693:                                              ; preds = %681
  %694 = and i32 %682, %684
  %.not438 = icmp eq i32 %694, 0
  br i1 %.not438, label %695, label %705

695:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #6
  %696 = call i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %683, ptr noundef nonnull align 4 dereferenceable(4) %50)
  store i64 %696, ptr %52, align 8
  %697 = load i32, ptr %46, align 4, !tbaa !5
  %698 = add nsw i32 %697, 1
  store i32 %698, ptr %46, align 4, !tbaa !5
  %699 = sext i32 %697 to i64
  %700 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %699
  %701 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %700, ptr noundef nonnull align 4 dereferenceable(8) %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  %702 = load i32, ptr %50, align 4, !tbaa !5
  %703 = load i32, ptr %47, align 4, !tbaa !5
  %704 = or i32 %703, %702
  store i32 %704, ptr %47, align 4, !tbaa !5
  br label %707

705:                                              ; preds = %693
  %706 = load i32, ptr %683, align 8, !tbaa !14
  br label %.thread499

.thread499:                                       ; preds = %674, %705
  %.lcssa718.sink = phi i32 [ %706, %705 ], [ %626, %674 ]
  %spec.select474 = call i32 @llvm.smin.i32(i32 %.1326.lcssa, i32 %.lcssa718.sink)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  br label %.loopexit510

707:                                              ; preds = %686, %695
  %708 = add nsw i32 %.0305544, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  br label %709

709:                                              ; preds = %707, %663
  %.3 = phi i32 [ %664, %663 ], [ %.1309, %707 ]
  %.2307 = phi i32 [ %.0305544, %663 ], [ %708, %707 ]
  %710 = load i32, ptr @tot2, align 4, !tbaa !5
  %711 = icmp slt i32 %.3, %710
  %712 = icmp slt i32 %.2307, %590
  %713 = select i1 %711, i1 true, i1 %712
  br i1 %713, label %.lr.ph546, label %.loopexit510, !llvm.loop !34

.loopexit510:                                     ; preds = %709, %._crit_edge540, %.thread499, %661
  %.9 = phi i32 [ %spec.select473, %661 ], [ %spec.select474, %.thread499 ], [ %.1326.lcssa, %._crit_edge540 ], [ %.1326.lcssa, %709 ]
  %.pr504 = load i32, ptr %46, align 4, !tbaa !5
  %.not440547 = icmp eq i32 %.pr504, 0
  br i1 %.not440547, label %.critedge11, label %.lr.ph549.preheader

.lr.ph549.preheader:                              ; preds = %.loopexit510
  %714 = sext i32 %.pr504 to i64
  br label %.lr.ph549

.lr.ph549:                                        ; preds = %.lr.ph549.preheader, %717
  %indvars.iv658 = phi i64 [ %714, %.lr.ph549.preheader ], [ %indvars.iv.next659, %717 ]
  %indvars.iv.next659 = add nsw i64 %indvars.iv658, -1
  %715 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @tmp, i64 0, i64 %indvars.iv.next659
  %716 = load i32, ptr %715, align 8, !tbaa !14
  %.not441 = icmp slt i32 %716, %.9
  br i1 %.not441, label %.critedge11, label %717

717:                                              ; preds = %.lr.ph549
  %718 = trunc nsw i64 %indvars.iv.next659 to i32
  store i32 %718, ptr %46, align 4, !tbaa !5
  %.not440 = icmp eq i64 %indvars.iv.next659, 0
  br i1 %.not440, label %.critedge11, label %.lr.ph549, !llvm.loop !35

.critedge11:                                      ; preds = %.lr.ph549, %717, %.loopexit510
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) @tot2, ptr noundef nonnull align 4 dereferenceable(4) %46) #6
  call void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56) @seq2, ptr noundef nonnull align 4 dereferenceable(56) @tmp) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  %719 = load i32, ptr @tot1, align 4, !tbaa !5
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %720
  store i32 %.9338, ptr %721, align 8, !tbaa !14
  %722 = load i32, ptr @tot2, align 4, !tbaa !5
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %723
  store i32 %.9, ptr %724, align 8, !tbaa !14
  %725 = icmp sgt i32 %719, 0
  br i1 %725, label %.lr.ph553.preheader, label %._crit_edge568

.lr.ph553.preheader:                              ; preds = %.critedge11
  %wide.trip.count = zext nneg i32 %719 to i64
  %min.iters.check = icmp ult i32 %719, 9
  br i1 %min.iters.check, label %.lr.ph553.preheader780, label %vector.ph

.lr.ph553.preheader780:                           ; preds = %middle.block, %.lr.ph553.preheader
  %indvars.iv661.ph = phi i64 [ 0, %.lr.ph553.preheader ], [ %n.vec, %middle.block ]
  %.0303551.ph = phi i32 [ 0, %.lr.ph553.preheader ], [ %734, %middle.block ]
  br label %.lr.ph553

vector.ph:                                        ; preds = %.lr.ph553.preheader
  %n.mod.vf = and i64 %wide.trip.count, 7
  %726 = icmp eq i64 %n.mod.vf, 0
  %727 = select i1 %726, i64 8, i64 %n.mod.vf
  %n.vec = sub nsw i64 %wide.trip.count, %727
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %731, %vector.body ]
  %vec.phi747 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %732, %vector.body ]
  %728 = or disjoint i64 %index, 4
  %729 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %index, i32 1
  %730 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %728, i32 1
  %wide.vec = load <8 x i32>, ptr %729, align 4, !tbaa !16
  %wide.vec748 = load <8 x i32>, ptr %730, align 4, !tbaa !16
  %strided.vec = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec749 = shufflevector <8 x i32> %wide.vec748, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %731 = or <4 x i32> %strided.vec, %vec.phi
  %732 = or <4 x i32> %strided.vec749, %vec.phi747
  %index.next = add nuw i64 %index, 8
  %733 = icmp eq i64 %index.next, %n.vec
  br i1 %733, label %middle.block, label %vector.body, !llvm.loop !36

middle.block:                                     ; preds = %vector.body
  %bin.rdx = or <4 x i32> %732, %731
  %734 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %bin.rdx)
  br label %.lr.ph553.preheader780

.preheader509:                                    ; preds = %.lr.ph553
  br i1 %725, label %.preheader508.lr.ph, label %._crit_edge568

.preheader508.lr.ph:                              ; preds = %.preheader509
  %ans.promoted = load i64, ptr @ans, align 8, !tbaa !9
  %735 = load i32, ptr @c, align 4
  %notmask = shl nsw i32 -1, %735
  br label %.preheader508

.lr.ph553:                                        ; preds = %.lr.ph553.preheader780, %.lr.ph553
  %indvars.iv661 = phi i64 [ %indvars.iv.next662, %.lr.ph553 ], [ %indvars.iv661.ph, %.lr.ph553.preheader780 ]
  %.0303551 = phi i32 [ %738, %.lr.ph553 ], [ %.0303551.ph, %.lr.ph553.preheader780 ]
  %indvars.iv.next662 = add nuw nsw i64 %indvars.iv661, 1
  %736 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv661, i32 1
  %737 = load i32, ptr %736, align 4, !tbaa !16
  %738 = or i32 %737, %.0303551
  %exitcond.not = icmp eq i64 %indvars.iv.next662, %wide.trip.count
  br i1 %exitcond.not, label %.preheader509, label %.lr.ph553, !llvm.loop !37

.preheader508:                                    ; preds = %.preheader508.lr.ph, %767
  %indvars.iv668 = phi i64 [ %720, %.preheader508.lr.ph ], [ %indvars.iv.next669, %767 ]
  %.0566 = phi i32 [ 0, %.preheader508.lr.ph ], [ %.1.lcssa, %767 ]
  %.1304564 = phi i32 [ %738, %.preheader508.lr.ph ], [ %771, %767 ]
  %739 = phi i64 [ %ans.promoted, %.preheader508.lr.ph ], [ %768, %767 ]
  %indvars.iv.next669 = add nsw i64 %indvars.iv668, -1
  %740 = icmp slt i32 %.0566, %722
  br i1 %740, label %.lr.ph557.preheader, label %.critedge13

.lr.ph557.preheader:                              ; preds = %.preheader508
  %741 = sext i32 %.0566 to i64
  br label %.lr.ph557

._crit_edge568:                                   ; preds = %767, %.critedge11, %.preheader509
  %indvars.iv.next674 = add nsw i64 %indvars.iv673, 1
  %.not431.not = icmp slt i64 %indvars.iv673, %429
  br i1 %.not431.not, label %.preheader512, label %447, !llvm.loop !38

.lr.ph557:                                        ; preds = %.lr.ph557.preheader, %745
  %indvars.iv664 = phi i64 [ %741, %.lr.ph557.preheader ], [ %indvars.iv.next665, %745 ]
  %.2555 = phi i32 [ %.1304564, %.lr.ph557.preheader ], [ %746, %745 ]
  %742 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %indvars.iv664, i32 1
  %743 = load i32, ptr %742, align 4, !tbaa !16
  %744 = and i32 %743, %.2555
  %.not442 = icmp eq i32 %744, 0
  br i1 %.not442, label %745, label %.critedge13.loopexit.split.loop.exit722

745:                                              ; preds = %.lr.ph557
  %indvars.iv.next665 = add nsw i64 %indvars.iv664, 1
  %746 = or i32 %743, %.2555
  %exitcond667.not = icmp eq i64 %indvars.iv.next665, %723
  br i1 %exitcond667.not, label %.critedge13, label %.lr.ph557, !llvm.loop !39

.critedge13.loopexit.split.loop.exit722:          ; preds = %.lr.ph557
  %747 = trunc nsw i64 %indvars.iv664 to i32
  br label %.critedge13

.critedge13:                                      ; preds = %745, %.critedge13.loopexit.split.loop.exit722, %.preheader508
  %.2.lcssa = phi i32 [ %.1304564, %.preheader508 ], [ %.2555, %.critedge13.loopexit.split.loop.exit722 ], [ %746, %745 ]
  %.1.lcssa = phi i32 [ %.0566, %.preheader508 ], [ %747, %.critedge13.loopexit.split.loop.exit722 ], [ %722, %745 ]
  %.not443 = icmp ne i32 %.1.lcssa, 0
  %748 = xor i32 %notmask, %.2.lcssa
  %749 = icmp eq i32 %748, -1
  %or.cond637 = select i1 %.not443, i1 %749, i1 false
  br i1 %or.cond637, label %750, label %767

750:                                              ; preds = %.critedge13
  %751 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv.next669
  %752 = load i32, ptr %751, align 8, !tbaa !14
  %753 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv668
  %754 = load i32, ptr %753, align 8, !tbaa !14
  %755 = sub nsw i32 %752, %754
  %756 = sext i32 %.1.lcssa to i64
  %757 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %756
  %758 = load i32, ptr %757, align 8, !tbaa !14
  %759 = add nsw i32 %.1.lcssa, -1
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq2, i64 0, i64 %760
  %762 = load i32, ptr %761, align 8, !tbaa !14
  %763 = sub nsw i32 %758, %762
  %764 = mul nsw i32 %763, %755
  %765 = sext i32 %764 to i64
  %766 = add nsw i64 %739, %765
  store i64 %766, ptr @ans, align 8, !tbaa !9
  br label %767

767:                                              ; preds = %.critedge13, %750
  %768 = phi i64 [ %739, %.critedge13 ], [ %766, %750 ]
  %769 = getelementptr inbounds [7 x %"struct.std::pair"], ptr @seq1, i64 0, i64 %indvars.iv.next669, i32 1
  %770 = load i32, ptr %769, align 4, !tbaa !16
  %771 = xor i32 %770, %.2.lcssa
  %772 = icmp sgt i64 %indvars.iv668, 1
  br i1 %772, label %.preheader508, label %._crit_edge568, !llvm.loop !40

773:                                              ; preds = %4, %._crit_edge576, %._crit_edge633, %58
  ret void
}

; 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 uwtable
declare dso_local i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIiiEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6uniqueIPSt4pairIiiEET_S3_S3_(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapISt4pairIiiELm7EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S3_S7_(ptr noundef nonnull align 4 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(56)) local_unnamed_addr #4

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

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

; 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 i32 @llvm.vector.reduce.or.v4i32(<4 x i32>) #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 = { 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 #3 = { 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 #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 = !{!10, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !6, i64 0}
!15 = !{!"_ZTSSt4pairIiiE", !6, i64 0, !6, i64 4}
!16 = !{!15, !6, i64 4}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12, !23, !24}
!23 = !{!"llvm.loop.isvectorized", i32 1}
!24 = !{!"llvm.loop.unroll.runtime.disable"}
!25 = distinct !{!25, !12, !24, !23}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12, !23, !24}
!37 = distinct !{!37, !12, !24, !23}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}


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