; LLVM IR from moveit/moveit :: moveit_planners/sbpl/core/sbpl_interface/src/bfs3d (Search)

; 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"

%"class.sbpl_interface::BFS_3D" = type <{ i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, %"class.std::shared_ptr", i8, [7 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14sbpl_interface6BFS_3D6searchEiiPViPiRiS4_(ptr noundef nonnull align 8 dereferenceable(65) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) #1 align 2 {
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store i32 %2, ptr %10, align 4, !tbaa !9
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %17 = load ptr, ptr %8, align 8
  br label %18

18:                                               ; preds = %857, %7
  %19 = load ptr, ptr %13, align 8, !tbaa !5
  %20 = load i32, ptr %19, align 4, !tbaa !9
  %21 = load ptr, ptr %14, align 8, !tbaa !5
  %22 = load i32, ptr %21, align 4, !tbaa !9
  %23 = icmp slt i32 %20, %22
  br i1 %23, label %24, label %858

24:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %25 = load ptr, ptr %12, align 8, !tbaa !5
  %26 = load ptr, ptr %13, align 8, !tbaa !5
  %27 = load i32, ptr %26, align 4, !tbaa !9
  %28 = add nsw i32 %27, 1
  store i32 %28, ptr %26, align 4, !tbaa !9
  %29 = sext i32 %27 to i64
  %30 = getelementptr inbounds i32, ptr %25, i64 %29
  %31 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %31, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  %32 = load ptr, ptr %11, align 8, !tbaa !5
  %33 = load i32, ptr %15, align 4, !tbaa !9
  %34 = sext i32 %33 to i64
  %35 = getelementptr inbounds i32, ptr %32, i64 %34
  %36 = load volatile i32, ptr %35, align 4, !tbaa !9
  %37 = add nsw i32 %36, 1
  store i32 %37, ptr %16, align 4, !tbaa !9
  %38 = load ptr, ptr %11, align 8, !tbaa !5
  %39 = load i32, ptr %15, align 4, !tbaa !9
  %40 = load i32, ptr %9, align 4, !tbaa !9
  %41 = sub nsw i32 0, %40
  %42 = add nsw i32 %39, %41
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds i32, ptr %38, i64 %43
  %45 = load volatile i32, ptr %44, align 4, !tbaa !9
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %47, label %66

47:                                               ; preds = %24
  %48 = load i32, ptr %15, align 4, !tbaa !9
  %49 = load i32, ptr %9, align 4, !tbaa !9
  %50 = sub nsw i32 0, %49
  %51 = add nsw i32 %48, %50
  %52 = load ptr, ptr %12, align 8, !tbaa !5
  %53 = load ptr, ptr %14, align 8, !tbaa !5
  %54 = load i32, ptr %53, align 4, !tbaa !9
  %55 = add nsw i32 %54, 1
  store i32 %55, ptr %53, align 4, !tbaa !9
  %56 = sext i32 %54 to i64
  %57 = getelementptr inbounds i32, ptr %52, i64 %56
  store i32 %51, ptr %57, align 4, !tbaa !9
  %58 = load i32, ptr %16, align 4, !tbaa !9
  %59 = load ptr, ptr %11, align 8, !tbaa !5
  %60 = load i32, ptr %15, align 4, !tbaa !9
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = sub nsw i32 0, %61
  %63 = add nsw i32 %60, %62
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds i32, ptr %59, i64 %64
  store volatile i32 %58, ptr %65, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %66

66:                                               ; preds = %47, %24
  %67 = load ptr, ptr %11, align 8, !tbaa !5
  %68 = load i32, ptr %15, align 4, !tbaa !9
  %69 = add nsw i32 %68, 1
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds i32, ptr %67, i64 %70
  %72 = load volatile i32, ptr %71, align 4, !tbaa !9
  %73 = icmp slt i32 %72, 0
  br i1 %73, label %74, label %89

74:                                               ; preds = %66
  %75 = load i32, ptr %15, align 4, !tbaa !9
  %76 = add nsw i32 %75, 1
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = add nsw i32 %79, 1
  store i32 %80, ptr %78, align 4, !tbaa !9
  %81 = sext i32 %79 to i64
  %82 = getelementptr inbounds i32, ptr %77, i64 %81
  store i32 %76, ptr %82, align 4, !tbaa !9
  %83 = load i32, ptr %16, align 4, !tbaa !9
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = load i32, ptr %15, align 4, !tbaa !9
  %86 = add nsw i32 %85, 1
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds i32, ptr %84, i64 %87
  store volatile i32 %83, ptr %88, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %89

89:                                               ; preds = %74, %66
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = load i32, ptr %15, align 4, !tbaa !9
  %92 = load i32, ptr %9, align 4, !tbaa !9
  %93 = add nsw i32 %91, %92
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds i32, ptr %90, i64 %94
  %96 = load volatile i32, ptr %95, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 0
  br i1 %97, label %98, label %115

98:                                               ; preds = %89
  %99 = load i32, ptr %15, align 4, !tbaa !9
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = add nsw i32 %99, %100
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %103, align 4, !tbaa !9
  %106 = sext i32 %104 to i64
  %107 = getelementptr inbounds i32, ptr %102, i64 %106
  store i32 %101, ptr %107, align 4, !tbaa !9
  %108 = load i32, ptr %16, align 4, !tbaa !9
  %109 = load ptr, ptr %11, align 8, !tbaa !5
  %110 = load i32, ptr %15, align 4, !tbaa !9
  %111 = load i32, ptr %9, align 4, !tbaa !9
  %112 = add nsw i32 %110, %111
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds i32, ptr %109, i64 %113
  store volatile i32 %108, ptr %114, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %115

115:                                              ; preds = %98, %89
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = load i32, ptr %15, align 4, !tbaa !9
  %118 = add nsw i32 %117, -1
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds i32, ptr %116, i64 %119
  %121 = load volatile i32, ptr %120, align 4, !tbaa !9
  %122 = icmp slt i32 %121, 0
  br i1 %122, label %123, label %138

123:                                              ; preds = %115
  %124 = load i32, ptr %15, align 4, !tbaa !9
  %125 = add nsw i32 %124, -1
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %127, align 4, !tbaa !9
  %130 = sext i32 %128 to i64
  %131 = getelementptr inbounds i32, ptr %126, i64 %130
  store i32 %125, ptr %131, align 4, !tbaa !9
  %132 = load i32, ptr %16, align 4, !tbaa !9
  %133 = load ptr, ptr %11, align 8, !tbaa !5
  %134 = load i32, ptr %15, align 4, !tbaa !9
  %135 = add nsw i32 %134, -1
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds i32, ptr %133, i64 %136
  store volatile i32 %132, ptr %137, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %138

138:                                              ; preds = %123, %115
  %139 = load ptr, ptr %11, align 8, !tbaa !5
  %140 = load i32, ptr %15, align 4, !tbaa !9
  %141 = load i32, ptr %9, align 4, !tbaa !9
  %142 = sub nsw i32 0, %141
  %143 = add nsw i32 %140, %142
  %144 = sub nsw i32 %143, 1
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %139, i64 %145
  %147 = load volatile i32, ptr %146, align 4, !tbaa !9
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %149, label %170

149:                                              ; preds = %138
  %150 = load i32, ptr %15, align 4, !tbaa !9
  %151 = load i32, ptr %9, align 4, !tbaa !9
  %152 = sub nsw i32 0, %151
  %153 = add nsw i32 %150, %152
  %154 = sub nsw i32 %153, 1
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = load ptr, ptr %14, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = add nsw i32 %157, 1
  store i32 %158, ptr %156, align 4, !tbaa !9
  %159 = sext i32 %157 to i64
  %160 = getelementptr inbounds i32, ptr %155, i64 %159
  store i32 %154, ptr %160, align 4, !tbaa !9
  %161 = load i32, ptr %16, align 4, !tbaa !9
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = load i32, ptr %15, align 4, !tbaa !9
  %164 = load i32, ptr %9, align 4, !tbaa !9
  %165 = sub nsw i32 0, %164
  %166 = add nsw i32 %163, %165
  %167 = sub nsw i32 %166, 1
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %162, i64 %168
  store volatile i32 %161, ptr %169, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %170

170:                                              ; preds = %149, %138
  %171 = load ptr, ptr %11, align 8, !tbaa !5
  %172 = load i32, ptr %15, align 4, !tbaa !9
  %173 = load i32, ptr %9, align 4, !tbaa !9
  %174 = sub nsw i32 0, %173
  %175 = add nsw i32 %172, %174
  %176 = add nsw i32 %175, 1
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds i32, ptr %171, i64 %177
  %179 = load volatile i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %179, 0
  br i1 %180, label %181, label %202

181:                                              ; preds = %170
  %182 = load i32, ptr %15, align 4, !tbaa !9
  %183 = load i32, ptr %9, align 4, !tbaa !9
  %184 = sub nsw i32 0, %183
  %185 = add nsw i32 %182, %184
  %186 = add nsw i32 %185, 1
  %187 = load ptr, ptr %12, align 8, !tbaa !5
  %188 = load ptr, ptr %14, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr %188, align 4, !tbaa !9
  %191 = sext i32 %189 to i64
  %192 = getelementptr inbounds i32, ptr %187, i64 %191
  store i32 %186, ptr %192, align 4, !tbaa !9
  %193 = load i32, ptr %16, align 4, !tbaa !9
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = load i32, ptr %15, align 4, !tbaa !9
  %196 = load i32, ptr %9, align 4, !tbaa !9
  %197 = sub nsw i32 0, %196
  %198 = add nsw i32 %195, %197
  %199 = add nsw i32 %198, 1
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i32, ptr %194, i64 %200
  store volatile i32 %193, ptr %201, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %202

202:                                              ; preds = %181, %170
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = load i32, ptr %15, align 4, !tbaa !9
  %205 = load i32, ptr %9, align 4, !tbaa !9
  %206 = add nsw i32 %204, %205
  %207 = add nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %203, i64 %208
  %210 = load volatile i32, ptr %209, align 4, !tbaa !9
  %211 = icmp slt i32 %210, 0
  br i1 %211, label %212, label %231

212:                                              ; preds = %202
  %213 = load i32, ptr %15, align 4, !tbaa !9
  %214 = load i32, ptr %9, align 4, !tbaa !9
  %215 = add nsw i32 %213, %214
  %216 = add nsw i32 %215, 1
  %217 = load ptr, ptr %12, align 8, !tbaa !5
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %218, align 4, !tbaa !9
  %221 = sext i32 %219 to i64
  %222 = getelementptr inbounds i32, ptr %217, i64 %221
  store i32 %216, ptr %222, align 4, !tbaa !9
  %223 = load i32, ptr %16, align 4, !tbaa !9
  %224 = load ptr, ptr %11, align 8, !tbaa !5
  %225 = load i32, ptr %15, align 4, !tbaa !9
  %226 = load i32, ptr %9, align 4, !tbaa !9
  %227 = add nsw i32 %225, %226
  %228 = add nsw i32 %227, 1
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %224, i64 %229
  store volatile i32 %223, ptr %230, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %231

231:                                              ; preds = %212, %202
  %232 = load ptr, ptr %11, align 8, !tbaa !5
  %233 = load i32, ptr %15, align 4, !tbaa !9
  %234 = load i32, ptr %9, align 4, !tbaa !9
  %235 = add nsw i32 %233, %234
  %236 = sub nsw i32 %235, 1
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds i32, ptr %232, i64 %237
  %239 = load volatile i32, ptr %238, align 4, !tbaa !9
  %240 = icmp slt i32 %239, 0
  br i1 %240, label %241, label %260

241:                                              ; preds = %231
  %242 = load i32, ptr %15, align 4, !tbaa !9
  %243 = load i32, ptr %9, align 4, !tbaa !9
  %244 = add nsw i32 %242, %243
  %245 = sub nsw i32 %244, 1
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %247, align 4, !tbaa !9
  %250 = sext i32 %248 to i64
  %251 = getelementptr inbounds i32, ptr %246, i64 %250
  store i32 %245, ptr %251, align 4, !tbaa !9
  %252 = load i32, ptr %16, align 4, !tbaa !9
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = load i32, ptr %15, align 4, !tbaa !9
  %255 = load i32, ptr %9, align 4, !tbaa !9
  %256 = add nsw i32 %254, %255
  %257 = sub nsw i32 %256, 1
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds i32, ptr %253, i64 %258
  store volatile i32 %252, ptr %259, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %260

260:                                              ; preds = %241, %231
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = load i32, ptr %15, align 4, !tbaa !9
  %263 = load i32, ptr %10, align 4, !tbaa !9
  %264 = add nsw i32 %262, %263
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds i32, ptr %261, i64 %265
  %267 = load volatile i32, ptr %266, align 4, !tbaa !9
  %268 = icmp slt i32 %267, 0
  br i1 %268, label %269, label %286

269:                                              ; preds = %260
  %270 = load i32, ptr %15, align 4, !tbaa !9
  %271 = load i32, ptr %10, align 4, !tbaa !9
  %272 = add nsw i32 %270, %271
  %273 = load ptr, ptr %12, align 8, !tbaa !5
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %274, align 4, !tbaa !9
  %277 = sext i32 %275 to i64
  %278 = getelementptr inbounds i32, ptr %273, i64 %277
  store i32 %272, ptr %278, align 4, !tbaa !9
  %279 = load i32, ptr %16, align 4, !tbaa !9
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = load i32, ptr %15, align 4, !tbaa !9
  %282 = load i32, ptr %10, align 4, !tbaa !9
  %283 = add nsw i32 %281, %282
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i32, ptr %280, i64 %284
  store volatile i32 %279, ptr %285, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %286

286:                                              ; preds = %269, %260
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load i32, ptr %15, align 4, !tbaa !9
  %289 = load i32, ptr %9, align 4, !tbaa !9
  %290 = sub nsw i32 0, %289
  %291 = add nsw i32 %288, %290
  %292 = load i32, ptr %10, align 4, !tbaa !9
  %293 = add nsw i32 %291, %292
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds i32, ptr %287, i64 %294
  %296 = load volatile i32, ptr %295, align 4, !tbaa !9
  %297 = icmp slt i32 %296, 0
  br i1 %297, label %298, label %321

298:                                              ; preds = %286
  %299 = load i32, ptr %15, align 4, !tbaa !9
  %300 = load i32, ptr %9, align 4, !tbaa !9
  %301 = sub nsw i32 0, %300
  %302 = add nsw i32 %299, %301
  %303 = load i32, ptr %10, align 4, !tbaa !9
  %304 = add nsw i32 %302, %303
  %305 = load ptr, ptr %12, align 8, !tbaa !5
  %306 = load ptr, ptr %14, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %306, align 4, !tbaa !9
  %309 = sext i32 %307 to i64
  %310 = getelementptr inbounds i32, ptr %305, i64 %309
  store i32 %304, ptr %310, align 4, !tbaa !9
  %311 = load i32, ptr %16, align 4, !tbaa !9
  %312 = load ptr, ptr %11, align 8, !tbaa !5
  %313 = load i32, ptr %15, align 4, !tbaa !9
  %314 = load i32, ptr %9, align 4, !tbaa !9
  %315 = sub nsw i32 0, %314
  %316 = add nsw i32 %313, %315
  %317 = load i32, ptr %10, align 4, !tbaa !9
  %318 = add nsw i32 %316, %317
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds i32, ptr %312, i64 %319
  store volatile i32 %311, ptr %320, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %321

321:                                              ; preds = %298, %286
  %322 = load ptr, ptr %11, align 8, !tbaa !5
  %323 = load i32, ptr %15, align 4, !tbaa !9
  %324 = add nsw i32 %323, 1
  %325 = load i32, ptr %10, align 4, !tbaa !9
  %326 = add nsw i32 %324, %325
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds i32, ptr %322, i64 %327
  %329 = load volatile i32, ptr %328, align 4, !tbaa !9
  %330 = icmp slt i32 %329, 0
  br i1 %330, label %331, label %350

331:                                              ; preds = %321
  %332 = load i32, ptr %15, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  %334 = load i32, ptr %10, align 4, !tbaa !9
  %335 = add nsw i32 %333, %334
  %336 = load ptr, ptr %12, align 8, !tbaa !5
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %337, align 4, !tbaa !9
  %340 = sext i32 %338 to i64
  %341 = getelementptr inbounds i32, ptr %336, i64 %340
  store i32 %335, ptr %341, align 4, !tbaa !9
  %342 = load i32, ptr %16, align 4, !tbaa !9
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = load i32, ptr %15, align 4, !tbaa !9
  %345 = add nsw i32 %344, 1
  %346 = load i32, ptr %10, align 4, !tbaa !9
  %347 = add nsw i32 %345, %346
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds i32, ptr %343, i64 %348
  store volatile i32 %342, ptr %349, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %350

350:                                              ; preds = %331, %321
  %351 = load ptr, ptr %11, align 8, !tbaa !5
  %352 = load i32, ptr %15, align 4, !tbaa !9
  %353 = load i32, ptr %9, align 4, !tbaa !9
  %354 = add nsw i32 %352, %353
  %355 = load i32, ptr %10, align 4, !tbaa !9
  %356 = add nsw i32 %354, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds i32, ptr %351, i64 %357
  %359 = load volatile i32, ptr %358, align 4, !tbaa !9
  %360 = icmp slt i32 %359, 0
  br i1 %360, label %361, label %382

361:                                              ; preds = %350
  %362 = load i32, ptr %15, align 4, !tbaa !9
  %363 = load i32, ptr %9, align 4, !tbaa !9
  %364 = add nsw i32 %362, %363
  %365 = load i32, ptr %10, align 4, !tbaa !9
  %366 = add nsw i32 %364, %365
  %367 = load ptr, ptr %12, align 8, !tbaa !5
  %368 = load ptr, ptr %14, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  store i32 %370, ptr %368, align 4, !tbaa !9
  %371 = sext i32 %369 to i64
  %372 = getelementptr inbounds i32, ptr %367, i64 %371
  store i32 %366, ptr %372, align 4, !tbaa !9
  %373 = load i32, ptr %16, align 4, !tbaa !9
  %374 = load ptr, ptr %11, align 8, !tbaa !5
  %375 = load i32, ptr %15, align 4, !tbaa !9
  %376 = load i32, ptr %9, align 4, !tbaa !9
  %377 = add nsw i32 %375, %376
  %378 = load i32, ptr %10, align 4, !tbaa !9
  %379 = add nsw i32 %377, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %374, i64 %380
  store volatile i32 %373, ptr %381, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %382

382:                                              ; preds = %361, %350
  %383 = load ptr, ptr %11, align 8, !tbaa !5
  %384 = load i32, ptr %15, align 4, !tbaa !9
  %385 = add nsw i32 %384, -1
  %386 = load i32, ptr %10, align 4, !tbaa !9
  %387 = add nsw i32 %385, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i32, ptr %383, i64 %388
  %390 = load volatile i32, ptr %389, align 4, !tbaa !9
  %391 = icmp slt i32 %390, 0
  br i1 %391, label %392, label %411

392:                                              ; preds = %382
  %393 = load i32, ptr %15, align 4, !tbaa !9
  %394 = add nsw i32 %393, -1
  %395 = load i32, ptr %10, align 4, !tbaa !9
  %396 = add nsw i32 %394, %395
  %397 = load ptr, ptr %12, align 8, !tbaa !5
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = add nsw i32 %399, 1
  store i32 %400, ptr %398, align 4, !tbaa !9
  %401 = sext i32 %399 to i64
  %402 = getelementptr inbounds i32, ptr %397, i64 %401
  store i32 %396, ptr %402, align 4, !tbaa !9
  %403 = load i32, ptr %16, align 4, !tbaa !9
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load i32, ptr %15, align 4, !tbaa !9
  %406 = add nsw i32 %405, -1
  %407 = load i32, ptr %10, align 4, !tbaa !9
  %408 = add nsw i32 %406, %407
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds i32, ptr %404, i64 %409
  store volatile i32 %403, ptr %410, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %411

411:                                              ; preds = %392, %382
  %412 = load ptr, ptr %11, align 8, !tbaa !5
  %413 = load i32, ptr %15, align 4, !tbaa !9
  %414 = load i32, ptr %9, align 4, !tbaa !9
  %415 = sub nsw i32 0, %414
  %416 = add nsw i32 %413, %415
  %417 = sub nsw i32 %416, 1
  %418 = load i32, ptr %10, align 4, !tbaa !9
  %419 = add nsw i32 %417, %418
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %412, i64 %420
  %422 = load volatile i32, ptr %421, align 4, !tbaa !9
  %423 = icmp slt i32 %422, 0
  br i1 %423, label %424, label %449

424:                                              ; preds = %411
  %425 = load i32, ptr %15, align 4, !tbaa !9
  %426 = load i32, ptr %9, align 4, !tbaa !9
  %427 = sub nsw i32 0, %426
  %428 = add nsw i32 %425, %427
  %429 = sub nsw i32 %428, 1
  %430 = load i32, ptr %10, align 4, !tbaa !9
  %431 = add nsw i32 %429, %430
  %432 = load ptr, ptr %12, align 8, !tbaa !5
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %433, align 4, !tbaa !9
  %436 = sext i32 %434 to i64
  %437 = getelementptr inbounds i32, ptr %432, i64 %436
  store i32 %431, ptr %437, align 4, !tbaa !9
  %438 = load i32, ptr %16, align 4, !tbaa !9
  %439 = load ptr, ptr %11, align 8, !tbaa !5
  %440 = load i32, ptr %15, align 4, !tbaa !9
  %441 = load i32, ptr %9, align 4, !tbaa !9
  %442 = sub nsw i32 0, %441
  %443 = add nsw i32 %440, %442
  %444 = sub nsw i32 %443, 1
  %445 = load i32, ptr %10, align 4, !tbaa !9
  %446 = add nsw i32 %444, %445
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds i32, ptr %439, i64 %447
  store volatile i32 %438, ptr %448, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %449

449:                                              ; preds = %424, %411
  %450 = load ptr, ptr %11, align 8, !tbaa !5
  %451 = load i32, ptr %15, align 4, !tbaa !9
  %452 = load i32, ptr %9, align 4, !tbaa !9
  %453 = sub nsw i32 0, %452
  %454 = add nsw i32 %451, %453
  %455 = add nsw i32 %454, 1
  %456 = load i32, ptr %10, align 4, !tbaa !9
  %457 = add nsw i32 %455, %456
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i32, ptr %450, i64 %458
  %460 = load volatile i32, ptr %459, align 4, !tbaa !9
  %461 = icmp slt i32 %460, 0
  br i1 %461, label %462, label %487

462:                                              ; preds = %449
  %463 = load i32, ptr %15, align 4, !tbaa !9
  %464 = load i32, ptr %9, align 4, !tbaa !9
  %465 = sub nsw i32 0, %464
  %466 = add nsw i32 %463, %465
  %467 = add nsw i32 %466, 1
  %468 = load i32, ptr %10, align 4, !tbaa !9
  %469 = add nsw i32 %467, %468
  %470 = load ptr, ptr %12, align 8, !tbaa !5
  %471 = load ptr, ptr %14, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %471, align 4, !tbaa !9
  %474 = sext i32 %472 to i64
  %475 = getelementptr inbounds i32, ptr %470, i64 %474
  store i32 %469, ptr %475, align 4, !tbaa !9
  %476 = load i32, ptr %16, align 4, !tbaa !9
  %477 = load ptr, ptr %11, align 8, !tbaa !5
  %478 = load i32, ptr %15, align 4, !tbaa !9
  %479 = load i32, ptr %9, align 4, !tbaa !9
  %480 = sub nsw i32 0, %479
  %481 = add nsw i32 %478, %480
  %482 = add nsw i32 %481, 1
  %483 = load i32, ptr %10, align 4, !tbaa !9
  %484 = add nsw i32 %482, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i32, ptr %477, i64 %485
  store volatile i32 %476, ptr %486, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %487

487:                                              ; preds = %462, %449
  %488 = load ptr, ptr %11, align 8, !tbaa !5
  %489 = load i32, ptr %15, align 4, !tbaa !9
  %490 = load i32, ptr %9, align 4, !tbaa !9
  %491 = add nsw i32 %489, %490
  %492 = add nsw i32 %491, 1
  %493 = load i32, ptr %10, align 4, !tbaa !9
  %494 = add nsw i32 %492, %493
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %488, i64 %495
  %497 = load volatile i32, ptr %496, align 4, !tbaa !9
  %498 = icmp slt i32 %497, 0
  br i1 %498, label %499, label %522

499:                                              ; preds = %487
  %500 = load i32, ptr %15, align 4, !tbaa !9
  %501 = load i32, ptr %9, align 4, !tbaa !9
  %502 = add nsw i32 %500, %501
  %503 = add nsw i32 %502, 1
  %504 = load i32, ptr %10, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  %506 = load ptr, ptr %12, align 8, !tbaa !5
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = load i32, ptr %507, align 4, !tbaa !9
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %507, align 4, !tbaa !9
  %510 = sext i32 %508 to i64
  %511 = getelementptr inbounds i32, ptr %506, i64 %510
  store i32 %505, ptr %511, align 4, !tbaa !9
  %512 = load i32, ptr %16, align 4, !tbaa !9
  %513 = load ptr, ptr %11, align 8, !tbaa !5
  %514 = load i32, ptr %15, align 4, !tbaa !9
  %515 = load i32, ptr %9, align 4, !tbaa !9
  %516 = add nsw i32 %514, %515
  %517 = add nsw i32 %516, 1
  %518 = load i32, ptr %10, align 4, !tbaa !9
  %519 = add nsw i32 %517, %518
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds i32, ptr %513, i64 %520
  store volatile i32 %512, ptr %521, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %522

522:                                              ; preds = %499, %487
  %523 = load ptr, ptr %11, align 8, !tbaa !5
  %524 = load i32, ptr %15, align 4, !tbaa !9
  %525 = load i32, ptr %9, align 4, !tbaa !9
  %526 = add nsw i32 %524, %525
  %527 = sub nsw i32 %526, 1
  %528 = load i32, ptr %10, align 4, !tbaa !9
  %529 = add nsw i32 %527, %528
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds i32, ptr %523, i64 %530
  %532 = load volatile i32, ptr %531, align 4, !tbaa !9
  %533 = icmp slt i32 %532, 0
  br i1 %533, label %534, label %557

534:                                              ; preds = %522
  %535 = load i32, ptr %15, align 4, !tbaa !9
  %536 = load i32, ptr %9, align 4, !tbaa !9
  %537 = add nsw i32 %535, %536
  %538 = sub nsw i32 %537, 1
  %539 = load i32, ptr %10, align 4, !tbaa !9
  %540 = add nsw i32 %538, %539
  %541 = load ptr, ptr %12, align 8, !tbaa !5
  %542 = load ptr, ptr %14, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %542, align 4, !tbaa !9
  %545 = sext i32 %543 to i64
  %546 = getelementptr inbounds i32, ptr %541, i64 %545
  store i32 %540, ptr %546, align 4, !tbaa !9
  %547 = load i32, ptr %16, align 4, !tbaa !9
  %548 = load ptr, ptr %11, align 8, !tbaa !5
  %549 = load i32, ptr %15, align 4, !tbaa !9
  %550 = load i32, ptr %9, align 4, !tbaa !9
  %551 = add nsw i32 %549, %550
  %552 = sub nsw i32 %551, 1
  %553 = load i32, ptr %10, align 4, !tbaa !9
  %554 = add nsw i32 %552, %553
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %548, i64 %555
  store volatile i32 %547, ptr %556, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %557

557:                                              ; preds = %534, %522
  %558 = load ptr, ptr %11, align 8, !tbaa !5
  %559 = load i32, ptr %15, align 4, !tbaa !9
  %560 = load i32, ptr %10, align 4, !tbaa !9
  %561 = sub nsw i32 0, %560
  %562 = add nsw i32 %559, %561
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i32, ptr %558, i64 %563
  %565 = load volatile i32, ptr %564, align 4, !tbaa !9
  %566 = icmp slt i32 %565, 0
  br i1 %566, label %567, label %586

567:                                              ; preds = %557
  %568 = load i32, ptr %15, align 4, !tbaa !9
  %569 = load i32, ptr %10, align 4, !tbaa !9
  %570 = sub nsw i32 0, %569
  %571 = add nsw i32 %568, %570
  %572 = load ptr, ptr %12, align 8, !tbaa !5
  %573 = load ptr, ptr %14, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %573, align 4, !tbaa !9
  %576 = sext i32 %574 to i64
  %577 = getelementptr inbounds i32, ptr %572, i64 %576
  store i32 %571, ptr %577, align 4, !tbaa !9
  %578 = load i32, ptr %16, align 4, !tbaa !9
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = load i32, ptr %15, align 4, !tbaa !9
  %581 = load i32, ptr %10, align 4, !tbaa !9
  %582 = sub nsw i32 0, %581
  %583 = add nsw i32 %580, %582
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i32, ptr %579, i64 %584
  store volatile i32 %578, ptr %585, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %586

586:                                              ; preds = %567, %557
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = load i32, ptr %15, align 4, !tbaa !9
  %589 = load i32, ptr %9, align 4, !tbaa !9
  %590 = sub nsw i32 0, %589
  %591 = add nsw i32 %588, %590
  %592 = load i32, ptr %10, align 4, !tbaa !9
  %593 = sub nsw i32 %591, %592
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i32, ptr %587, i64 %594
  %596 = load volatile i32, ptr %595, align 4, !tbaa !9
  %597 = icmp slt i32 %596, 0
  br i1 %597, label %598, label %621

598:                                              ; preds = %586
  %599 = load i32, ptr %15, align 4, !tbaa !9
  %600 = load i32, ptr %9, align 4, !tbaa !9
  %601 = sub nsw i32 0, %600
  %602 = add nsw i32 %599, %601
  %603 = load i32, ptr %10, align 4, !tbaa !9
  %604 = sub nsw i32 %602, %603
  %605 = load ptr, ptr %12, align 8, !tbaa !5
  %606 = load ptr, ptr %14, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr %606, align 4, !tbaa !9
  %609 = sext i32 %607 to i64
  %610 = getelementptr inbounds i32, ptr %605, i64 %609
  store i32 %604, ptr %610, align 4, !tbaa !9
  %611 = load i32, ptr %16, align 4, !tbaa !9
  %612 = load ptr, ptr %11, align 8, !tbaa !5
  %613 = load i32, ptr %15, align 4, !tbaa !9
  %614 = load i32, ptr %9, align 4, !tbaa !9
  %615 = sub nsw i32 0, %614
  %616 = add nsw i32 %613, %615
  %617 = load i32, ptr %10, align 4, !tbaa !9
  %618 = sub nsw i32 %616, %617
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %612, i64 %619
  store volatile i32 %611, ptr %620, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %621

621:                                              ; preds = %598, %586
  %622 = load ptr, ptr %11, align 8, !tbaa !5
  %623 = load i32, ptr %15, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  %625 = load i32, ptr %10, align 4, !tbaa !9
  %626 = sub nsw i32 %624, %625
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds i32, ptr %622, i64 %627
  %629 = load volatile i32, ptr %628, align 4, !tbaa !9
  %630 = icmp slt i32 %629, 0
  br i1 %630, label %631, label %650

631:                                              ; preds = %621
  %632 = load i32, ptr %15, align 4, !tbaa !9
  %633 = add nsw i32 %632, 1
  %634 = load i32, ptr %10, align 4, !tbaa !9
  %635 = sub nsw i32 %633, %634
  %636 = load ptr, ptr %12, align 8, !tbaa !5
  %637 = load ptr, ptr %14, align 8, !tbaa !5
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = add nsw i32 %638, 1
  store i32 %639, ptr %637, align 4, !tbaa !9
  %640 = sext i32 %638 to i64
  %641 = getelementptr inbounds i32, ptr %636, i64 %640
  store i32 %635, ptr %641, align 4, !tbaa !9
  %642 = load i32, ptr %16, align 4, !tbaa !9
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = load i32, ptr %15, align 4, !tbaa !9
  %645 = add nsw i32 %644, 1
  %646 = load i32, ptr %10, align 4, !tbaa !9
  %647 = sub nsw i32 %645, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds i32, ptr %643, i64 %648
  store volatile i32 %642, ptr %649, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %650

650:                                              ; preds = %631, %621
  %651 = load ptr, ptr %11, align 8, !tbaa !5
  %652 = load i32, ptr %15, align 4, !tbaa !9
  %653 = load i32, ptr %9, align 4, !tbaa !9
  %654 = add nsw i32 %652, %653
  %655 = load i32, ptr %10, align 4, !tbaa !9
  %656 = sub nsw i32 %654, %655
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds i32, ptr %651, i64 %657
  %659 = load volatile i32, ptr %658, align 4, !tbaa !9
  %660 = icmp slt i32 %659, 0
  br i1 %660, label %661, label %682

661:                                              ; preds = %650
  %662 = load i32, ptr %15, align 4, !tbaa !9
  %663 = load i32, ptr %9, align 4, !tbaa !9
  %664 = add nsw i32 %662, %663
  %665 = load i32, ptr %10, align 4, !tbaa !9
  %666 = sub nsw i32 %664, %665
  %667 = load ptr, ptr %12, align 8, !tbaa !5
  %668 = load ptr, ptr %14, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = add nsw i32 %669, 1
  store i32 %670, ptr %668, align 4, !tbaa !9
  %671 = sext i32 %669 to i64
  %672 = getelementptr inbounds i32, ptr %667, i64 %671
  store i32 %666, ptr %672, align 4, !tbaa !9
  %673 = load i32, ptr %16, align 4, !tbaa !9
  %674 = load ptr, ptr %11, align 8, !tbaa !5
  %675 = load i32, ptr %15, align 4, !tbaa !9
  %676 = load i32, ptr %9, align 4, !tbaa !9
  %677 = add nsw i32 %675, %676
  %678 = load i32, ptr %10, align 4, !tbaa !9
  %679 = sub nsw i32 %677, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %674, i64 %680
  store volatile i32 %673, ptr %681, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %682

682:                                              ; preds = %661, %650
  %683 = load ptr, ptr %11, align 8, !tbaa !5
  %684 = load i32, ptr %15, align 4, !tbaa !9
  %685 = add nsw i32 %684, -1
  %686 = load i32, ptr %10, align 4, !tbaa !9
  %687 = sub nsw i32 %685, %686
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds i32, ptr %683, i64 %688
  %690 = load volatile i32, ptr %689, align 4, !tbaa !9
  %691 = icmp slt i32 %690, 0
  br i1 %691, label %692, label %711

692:                                              ; preds = %682
  %693 = load i32, ptr %15, align 4, !tbaa !9
  %694 = add nsw i32 %693, -1
  %695 = load i32, ptr %10, align 4, !tbaa !9
  %696 = sub nsw i32 %694, %695
  %697 = load ptr, ptr %12, align 8, !tbaa !5
  %698 = load ptr, ptr %14, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr %698, align 4, !tbaa !9
  %701 = sext i32 %699 to i64
  %702 = getelementptr inbounds i32, ptr %697, i64 %701
  store i32 %696, ptr %702, align 4, !tbaa !9
  %703 = load i32, ptr %16, align 4, !tbaa !9
  %704 = load ptr, ptr %11, align 8, !tbaa !5
  %705 = load i32, ptr %15, align 4, !tbaa !9
  %706 = add nsw i32 %705, -1
  %707 = load i32, ptr %10, align 4, !tbaa !9
  %708 = sub nsw i32 %706, %707
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds i32, ptr %704, i64 %709
  store volatile i32 %703, ptr %710, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %711

711:                                              ; preds = %692, %682
  %712 = load ptr, ptr %11, align 8, !tbaa !5
  %713 = load i32, ptr %15, align 4, !tbaa !9
  %714 = load i32, ptr %9, align 4, !tbaa !9
  %715 = sub nsw i32 0, %714
  %716 = add nsw i32 %713, %715
  %717 = sub nsw i32 %716, 1
  %718 = load i32, ptr %10, align 4, !tbaa !9
  %719 = sub nsw i32 %717, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %712, i64 %720
  %722 = load volatile i32, ptr %721, align 4, !tbaa !9
  %723 = icmp slt i32 %722, 0
  br i1 %723, label %724, label %749

724:                                              ; preds = %711
  %725 = load i32, ptr %15, align 4, !tbaa !9
  %726 = load i32, ptr %9, align 4, !tbaa !9
  %727 = sub nsw i32 0, %726
  %728 = add nsw i32 %725, %727
  %729 = sub nsw i32 %728, 1
  %730 = load i32, ptr %10, align 4, !tbaa !9
  %731 = sub nsw i32 %729, %730
  %732 = load ptr, ptr %12, align 8, !tbaa !5
  %733 = load ptr, ptr %14, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %733, align 4, !tbaa !9
  %736 = sext i32 %734 to i64
  %737 = getelementptr inbounds i32, ptr %732, i64 %736
  store i32 %731, ptr %737, align 4, !tbaa !9
  %738 = load i32, ptr %16, align 4, !tbaa !9
  %739 = load ptr, ptr %11, align 8, !tbaa !5
  %740 = load i32, ptr %15, align 4, !tbaa !9
  %741 = load i32, ptr %9, align 4, !tbaa !9
  %742 = sub nsw i32 0, %741
  %743 = add nsw i32 %740, %742
  %744 = sub nsw i32 %743, 1
  %745 = load i32, ptr %10, align 4, !tbaa !9
  %746 = sub nsw i32 %744, %745
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %739, i64 %747
  store volatile i32 %738, ptr %748, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %749

749:                                              ; preds = %724, %711
  %750 = load ptr, ptr %11, align 8, !tbaa !5
  %751 = load i32, ptr %15, align 4, !tbaa !9
  %752 = load i32, ptr %9, align 4, !tbaa !9
  %753 = sub nsw i32 0, %752
  %754 = add nsw i32 %751, %753
  %755 = add nsw i32 %754, 1
  %756 = load i32, ptr %10, align 4, !tbaa !9
  %757 = sub nsw i32 %755, %756
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds i32, ptr %750, i64 %758
  %760 = load volatile i32, ptr %759, align 4, !tbaa !9
  %761 = icmp slt i32 %760, 0
  br i1 %761, label %762, label %787

762:                                              ; preds = %749
  %763 = load i32, ptr %15, align 4, !tbaa !9
  %764 = load i32, ptr %9, align 4, !tbaa !9
  %765 = sub nsw i32 0, %764
  %766 = add nsw i32 %763, %765
  %767 = add nsw i32 %766, 1
  %768 = load i32, ptr %10, align 4, !tbaa !9
  %769 = sub nsw i32 %767, %768
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = load ptr, ptr %14, align 8, !tbaa !5
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %771, align 4, !tbaa !9
  %774 = sext i32 %772 to i64
  %775 = getelementptr inbounds i32, ptr %770, i64 %774
  store i32 %769, ptr %775, align 4, !tbaa !9
  %776 = load i32, ptr %16, align 4, !tbaa !9
  %777 = load ptr, ptr %11, align 8, !tbaa !5
  %778 = load i32, ptr %15, align 4, !tbaa !9
  %779 = load i32, ptr %9, align 4, !tbaa !9
  %780 = sub nsw i32 0, %779
  %781 = add nsw i32 %778, %780
  %782 = add nsw i32 %781, 1
  %783 = load i32, ptr %10, align 4, !tbaa !9
  %784 = sub nsw i32 %782, %783
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds i32, ptr %777, i64 %785
  store volatile i32 %776, ptr %786, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %787

787:                                              ; preds = %762, %749
  %788 = load ptr, ptr %11, align 8, !tbaa !5
  %789 = load i32, ptr %15, align 4, !tbaa !9
  %790 = load i32, ptr %9, align 4, !tbaa !9
  %791 = add nsw i32 %789, %790
  %792 = add nsw i32 %791, 1
  %793 = load i32, ptr %10, align 4, !tbaa !9
  %794 = sub nsw i32 %792, %793
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %788, i64 %795
  %797 = load volatile i32, ptr %796, align 4, !tbaa !9
  %798 = icmp slt i32 %797, 0
  br i1 %798, label %799, label %822

799:                                              ; preds = %787
  %800 = load i32, ptr %15, align 4, !tbaa !9
  %801 = load i32, ptr %9, align 4, !tbaa !9
  %802 = add nsw i32 %800, %801
  %803 = add nsw i32 %802, 1
  %804 = load i32, ptr %10, align 4, !tbaa !9
  %805 = sub nsw i32 %803, %804
  %806 = load ptr, ptr %12, align 8, !tbaa !5
  %807 = load ptr, ptr %14, align 8, !tbaa !5
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = add nsw i32 %808, 1
  store i32 %809, ptr %807, align 4, !tbaa !9
  %810 = sext i32 %808 to i64
  %811 = getelementptr inbounds i32, ptr %806, i64 %810
  store i32 %805, ptr %811, align 4, !tbaa !9
  %812 = load i32, ptr %16, align 4, !tbaa !9
  %813 = load ptr, ptr %11, align 8, !tbaa !5
  %814 = load i32, ptr %15, align 4, !tbaa !9
  %815 = load i32, ptr %9, align 4, !tbaa !9
  %816 = add nsw i32 %814, %815
  %817 = add nsw i32 %816, 1
  %818 = load i32, ptr %10, align 4, !tbaa !9
  %819 = sub nsw i32 %817, %818
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %813, i64 %820
  store volatile i32 %812, ptr %821, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %822

822:                                              ; preds = %799, %787
  %823 = load ptr, ptr %11, align 8, !tbaa !5
  %824 = load i32, ptr %15, align 4, !tbaa !9
  %825 = load i32, ptr %9, align 4, !tbaa !9
  %826 = add nsw i32 %824, %825
  %827 = sub nsw i32 %826, 1
  %828 = load i32, ptr %10, align 4, !tbaa !9
  %829 = sub nsw i32 %827, %828
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds i32, ptr %823, i64 %830
  %832 = load volatile i32, ptr %831, align 4, !tbaa !9
  %833 = icmp slt i32 %832, 0
  br i1 %833, label %834, label %857

834:                                              ; preds = %822
  %835 = load i32, ptr %15, align 4, !tbaa !9
  %836 = load i32, ptr %9, align 4, !tbaa !9
  %837 = add nsw i32 %835, %836
  %838 = sub nsw i32 %837, 1
  %839 = load i32, ptr %10, align 4, !tbaa !9
  %840 = sub nsw i32 %838, %839
  %841 = load ptr, ptr %12, align 8, !tbaa !5
  %842 = load ptr, ptr %14, align 8, !tbaa !5
  %843 = load i32, ptr %842, align 4, !tbaa !9
  %844 = add nsw i32 %843, 1
  store i32 %844, ptr %842, align 4, !tbaa !9
  %845 = sext i32 %843 to i64
  %846 = getelementptr inbounds i32, ptr %841, i64 %845
  store i32 %840, ptr %846, align 4, !tbaa !9
  %847 = load i32, ptr %16, align 4, !tbaa !9
  %848 = load ptr, ptr %11, align 8, !tbaa !5
  %849 = load i32, ptr %15, align 4, !tbaa !9
  %850 = load i32, ptr %9, align 4, !tbaa !9
  %851 = add nsw i32 %849, %850
  %852 = sub nsw i32 %851, 1
  %853 = load i32, ptr %10, align 4, !tbaa !9
  %854 = sub nsw i32 %852, %853
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %848, i64 %855
  store volatile i32 %847, ptr %856, align 4, !tbaa !9
  call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %857

857:                                              ; preds = %834, %822
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %18, !llvm.loop !11

858:                                              ; preds = %18
  %859 = getelementptr inbounds %"class.sbpl_interface::BFS_3D", ptr %17, i32 0, i32 11
  store volatile i8 0, ptr %859, align 8, !tbaa !13
  ret void
}

declare void @_ZN5boost11this_thread18interruption_pointEv() #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !18, i64 64}
!14 = !{!"_ZTSN14sbpl_interface6BFS_3DE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !18, i64 64}
!15 = !{!"_ZTSSt10shared_ptrIN5boost6threadEE", !16, i64 0}
!16 = !{!"_ZTSSt12__shared_ptrIN5boost6threadELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !17, i64 8}
!17 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!18 = !{!"bool", !7, i64 0}


; 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"

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14sbpl_interface6BFS_3D6searchEiiPViPiRiS4_(ptr noundef nonnull align 8 dereferenceable(65) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr nocapture noundef %4, ptr nocapture noundef nonnull align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull align 4 dereferenceable(4) %6) local_unnamed_addr #0 align 2 {
  %8 = load i32, ptr %5, align 4, !tbaa !5
  %9 = load i32, ptr %6, align 4, !tbaa !5
  %10 = icmp slt i32 %8, %9
  br i1 %10, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7, %305
  %11 = phi i32 [ %306, %305 ], [ %8, %7 ]
  %12 = add nsw i32 %11, 1
  store i32 %12, ptr %5, align 4, !tbaa !5
  %13 = sext i32 %11 to i64
  %14 = getelementptr inbounds i32, ptr %4, i64 %13
  %15 = load i32, ptr %14, align 4, !tbaa !5
  %16 = sext i32 %15 to i64
  %17 = getelementptr inbounds i32, ptr %3, i64 %16
  %18 = load volatile i32, ptr %17, align 4, !tbaa !5
  %19 = add nsw i32 %18, 1
  %20 = sub i32 %15, %1
  %21 = sext i32 %20 to i64
  %22 = getelementptr inbounds i32, ptr %3, i64 %21
  %23 = load volatile i32, ptr %22, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %25, label %30

25:                                               ; preds = %.lr.ph
  %26 = load i32, ptr %6, align 4, !tbaa !5
  %27 = add nsw i32 %26, 1
  store i32 %27, ptr %6, align 4, !tbaa !5
  %28 = sext i32 %26 to i64
  %29 = getelementptr inbounds i32, ptr %4, i64 %28
  store i32 %20, ptr %29, align 4, !tbaa !5
  store volatile i32 %19, ptr %22, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %30

30:                                               ; preds = %25, %.lr.ph
  %31 = add nsw i32 %15, 1
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds i32, ptr %3, i64 %32
  %34 = load volatile i32, ptr %33, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %36, label %41

36:                                               ; preds = %30
  %37 = load i32, ptr %6, align 4, !tbaa !5
  %38 = add nsw i32 %37, 1
  store i32 %38, ptr %6, align 4, !tbaa !5
  %39 = sext i32 %37 to i64
  %40 = getelementptr inbounds i32, ptr %4, i64 %39
  store i32 %31, ptr %40, align 4, !tbaa !5
  store volatile i32 %19, ptr %33, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %41

41:                                               ; preds = %36, %30
  %42 = add nsw i32 %15, %1
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds i32, ptr %3, i64 %43
  %45 = load volatile i32, ptr %44, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %47, label %52

47:                                               ; preds = %41
  %48 = load i32, ptr %6, align 4, !tbaa !5
  %49 = add nsw i32 %48, 1
  store i32 %49, ptr %6, align 4, !tbaa !5
  %50 = sext i32 %48 to i64
  %51 = getelementptr inbounds i32, ptr %4, i64 %50
  store i32 %42, ptr %51, align 4, !tbaa !5
  store volatile i32 %19, ptr %44, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %52

52:                                               ; preds = %47, %41
  %53 = add nsw i32 %15, -1
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds i32, ptr %3, i64 %54
  %56 = load volatile i32, ptr %55, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %58, label %63

58:                                               ; preds = %52
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr %6, align 4, !tbaa !5
  %61 = sext i32 %59 to i64
  %62 = getelementptr inbounds i32, ptr %4, i64 %61
  store i32 %53, ptr %62, align 4, !tbaa !5
  store volatile i32 %19, ptr %55, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %63

63:                                               ; preds = %58, %52
  %64 = add nsw i32 %20, -1
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds i32, ptr %3, i64 %65
  %67 = load volatile i32, ptr %66, align 4, !tbaa !5
  %68 = icmp slt i32 %67, 0
  br i1 %68, label %69, label %74

69:                                               ; preds = %63
  %70 = load i32, ptr %6, align 4, !tbaa !5
  %71 = add nsw i32 %70, 1
  store i32 %71, ptr %6, align 4, !tbaa !5
  %72 = sext i32 %70 to i64
  %73 = getelementptr inbounds i32, ptr %4, i64 %72
  store i32 %64, ptr %73, align 4, !tbaa !5
  store volatile i32 %19, ptr %66, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %74

74:                                               ; preds = %69, %63
  %75 = add nsw i32 %20, 1
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %3, i64 %76
  %78 = load volatile i32, ptr %77, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 0
  br i1 %79, label %80, label %85

80:                                               ; preds = %74
  %81 = load i32, ptr %6, align 4, !tbaa !5
  %82 = add nsw i32 %81, 1
  store i32 %82, ptr %6, align 4, !tbaa !5
  %83 = sext i32 %81 to i64
  %84 = getelementptr inbounds i32, ptr %4, i64 %83
  store i32 %75, ptr %84, align 4, !tbaa !5
  store volatile i32 %19, ptr %77, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %85

85:                                               ; preds = %80, %74
  %86 = add nsw i32 %42, 1
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds i32, ptr %3, i64 %87
  %89 = load volatile i32, ptr %88, align 4, !tbaa !5
  %90 = icmp slt i32 %89, 0
  br i1 %90, label %91, label %96

91:                                               ; preds = %85
  %92 = load i32, ptr %6, align 4, !tbaa !5
  %93 = add nsw i32 %92, 1
  store i32 %93, ptr %6, align 4, !tbaa !5
  %94 = sext i32 %92 to i64
  %95 = getelementptr inbounds i32, ptr %4, i64 %94
  store i32 %86, ptr %95, align 4, !tbaa !5
  store volatile i32 %19, ptr %88, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %96

96:                                               ; preds = %91, %85
  %97 = add nsw i32 %42, -1
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds i32, ptr %3, i64 %98
  %100 = load volatile i32, ptr %99, align 4, !tbaa !5
  %101 = icmp slt i32 %100, 0
  br i1 %101, label %102, label %107

102:                                              ; preds = %96
  %103 = load i32, ptr %6, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr %6, align 4, !tbaa !5
  %105 = sext i32 %103 to i64
  %106 = getelementptr inbounds i32, ptr %4, i64 %105
  store i32 %97, ptr %106, align 4, !tbaa !5
  store volatile i32 %19, ptr %99, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %107

107:                                              ; preds = %102, %96
  %108 = add nsw i32 %15, %2
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds i32, ptr %3, i64 %109
  %111 = load volatile i32, ptr %110, align 4, !tbaa !5
  %112 = icmp slt i32 %111, 0
  br i1 %112, label %113, label %118

113:                                              ; preds = %107
  %114 = load i32, ptr %6, align 4, !tbaa !5
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr %6, align 4, !tbaa !5
  %116 = sext i32 %114 to i64
  %117 = getelementptr inbounds i32, ptr %4, i64 %116
  store i32 %108, ptr %117, align 4, !tbaa !5
  store volatile i32 %19, ptr %110, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %118

118:                                              ; preds = %113, %107
  %119 = add nsw i32 %20, %2
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds i32, ptr %3, i64 %120
  %122 = load volatile i32, ptr %121, align 4, !tbaa !5
  %123 = icmp slt i32 %122, 0
  br i1 %123, label %124, label %129

124:                                              ; preds = %118
  %125 = load i32, ptr %6, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %6, align 4, !tbaa !5
  %127 = sext i32 %125 to i64
  %128 = getelementptr inbounds i32, ptr %4, i64 %127
  store i32 %119, ptr %128, align 4, !tbaa !5
  store volatile i32 %19, ptr %121, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %129

129:                                              ; preds = %124, %118
  %130 = add nsw i32 %31, %2
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i32, ptr %3, i64 %131
  %133 = load volatile i32, ptr %132, align 4, !tbaa !5
  %134 = icmp slt i32 %133, 0
  br i1 %134, label %135, label %140

135:                                              ; preds = %129
  %136 = load i32, ptr %6, align 4, !tbaa !5
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %6, align 4, !tbaa !5
  %138 = sext i32 %136 to i64
  %139 = getelementptr inbounds i32, ptr %4, i64 %138
  store i32 %130, ptr %139, align 4, !tbaa !5
  store volatile i32 %19, ptr %132, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %140

140:                                              ; preds = %135, %129
  %141 = add nsw i32 %42, %2
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds i32, ptr %3, i64 %142
  %144 = load volatile i32, ptr %143, align 4, !tbaa !5
  %145 = icmp slt i32 %144, 0
  br i1 %145, label %146, label %151

146:                                              ; preds = %140
  %147 = load i32, ptr %6, align 4, !tbaa !5
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %6, align 4, !tbaa !5
  %149 = sext i32 %147 to i64
  %150 = getelementptr inbounds i32, ptr %4, i64 %149
  store i32 %141, ptr %150, align 4, !tbaa !5
  store volatile i32 %19, ptr %143, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %151

151:                                              ; preds = %146, %140
  %152 = add nsw i32 %53, %2
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds i32, ptr %3, i64 %153
  %155 = load volatile i32, ptr %154, align 4, !tbaa !5
  %156 = icmp slt i32 %155, 0
  br i1 %156, label %157, label %162

157:                                              ; preds = %151
  %158 = load i32, ptr %6, align 4, !tbaa !5
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %6, align 4, !tbaa !5
  %160 = sext i32 %158 to i64
  %161 = getelementptr inbounds i32, ptr %4, i64 %160
  store i32 %152, ptr %161, align 4, !tbaa !5
  store volatile i32 %19, ptr %154, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %162

162:                                              ; preds = %157, %151
  %163 = add nsw i32 %64, %2
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %3, i64 %164
  %166 = load volatile i32, ptr %165, align 4, !tbaa !5
  %167 = icmp slt i32 %166, 0
  br i1 %167, label %168, label %173

168:                                              ; preds = %162
  %169 = load i32, ptr %6, align 4, !tbaa !5
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %6, align 4, !tbaa !5
  %171 = sext i32 %169 to i64
  %172 = getelementptr inbounds i32, ptr %4, i64 %171
  store i32 %163, ptr %172, align 4, !tbaa !5
  store volatile i32 %19, ptr %165, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %173

173:                                              ; preds = %168, %162
  %174 = add nsw i32 %75, %2
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %3, i64 %175
  %177 = load volatile i32, ptr %176, align 4, !tbaa !5
  %178 = icmp slt i32 %177, 0
  br i1 %178, label %179, label %184

179:                                              ; preds = %173
  %180 = load i32, ptr %6, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %6, align 4, !tbaa !5
  %182 = sext i32 %180 to i64
  %183 = getelementptr inbounds i32, ptr %4, i64 %182
  store i32 %174, ptr %183, align 4, !tbaa !5
  store volatile i32 %19, ptr %176, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %184

184:                                              ; preds = %179, %173
  %185 = add nsw i32 %86, %2
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds i32, ptr %3, i64 %186
  %188 = load volatile i32, ptr %187, align 4, !tbaa !5
  %189 = icmp slt i32 %188, 0
  br i1 %189, label %190, label %195

190:                                              ; preds = %184
  %191 = load i32, ptr %6, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %6, align 4, !tbaa !5
  %193 = sext i32 %191 to i64
  %194 = getelementptr inbounds i32, ptr %4, i64 %193
  store i32 %185, ptr %194, align 4, !tbaa !5
  store volatile i32 %19, ptr %187, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %195

195:                                              ; preds = %190, %184
  %196 = add nsw i32 %97, %2
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i32, ptr %3, i64 %197
  %199 = load volatile i32, ptr %198, align 4, !tbaa !5
  %200 = icmp slt i32 %199, 0
  br i1 %200, label %201, label %206

201:                                              ; preds = %195
  %202 = load i32, ptr %6, align 4, !tbaa !5
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %6, align 4, !tbaa !5
  %204 = sext i32 %202 to i64
  %205 = getelementptr inbounds i32, ptr %4, i64 %204
  store i32 %196, ptr %205, align 4, !tbaa !5
  store volatile i32 %19, ptr %198, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %206

206:                                              ; preds = %201, %195
  %207 = sub i32 %15, %2
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %3, i64 %208
  %210 = load volatile i32, ptr %209, align 4, !tbaa !5
  %211 = icmp slt i32 %210, 0
  br i1 %211, label %212, label %217

212:                                              ; preds = %206
  %213 = load i32, ptr %6, align 4, !tbaa !5
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %6, align 4, !tbaa !5
  %215 = sext i32 %213 to i64
  %216 = getelementptr inbounds i32, ptr %4, i64 %215
  store i32 %207, ptr %216, align 4, !tbaa !5
  store volatile i32 %19, ptr %209, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %217

217:                                              ; preds = %212, %206
  %218 = sub nsw i32 %20, %2
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds i32, ptr %3, i64 %219
  %221 = load volatile i32, ptr %220, align 4, !tbaa !5
  %222 = icmp slt i32 %221, 0
  br i1 %222, label %223, label %228

223:                                              ; preds = %217
  %224 = load i32, ptr %6, align 4, !tbaa !5
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %6, align 4, !tbaa !5
  %226 = sext i32 %224 to i64
  %227 = getelementptr inbounds i32, ptr %4, i64 %226
  store i32 %218, ptr %227, align 4, !tbaa !5
  store volatile i32 %19, ptr %220, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %228

228:                                              ; preds = %223, %217
  %229 = sub nsw i32 %31, %2
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %3, i64 %230
  %232 = load volatile i32, ptr %231, align 4, !tbaa !5
  %233 = icmp slt i32 %232, 0
  br i1 %233, label %234, label %239

234:                                              ; preds = %228
  %235 = load i32, ptr %6, align 4, !tbaa !5
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %6, align 4, !tbaa !5
  %237 = sext i32 %235 to i64
  %238 = getelementptr inbounds i32, ptr %4, i64 %237
  store i32 %229, ptr %238, align 4, !tbaa !5
  store volatile i32 %19, ptr %231, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %239

239:                                              ; preds = %234, %228
  %240 = sub nsw i32 %42, %2
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i32, ptr %3, i64 %241
  %243 = load volatile i32, ptr %242, align 4, !tbaa !5
  %244 = icmp slt i32 %243, 0
  br i1 %244, label %245, label %250

245:                                              ; preds = %239
  %246 = load i32, ptr %6, align 4, !tbaa !5
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %6, align 4, !tbaa !5
  %248 = sext i32 %246 to i64
  %249 = getelementptr inbounds i32, ptr %4, i64 %248
  store i32 %240, ptr %249, align 4, !tbaa !5
  store volatile i32 %19, ptr %242, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %250

250:                                              ; preds = %245, %239
  %251 = sub nsw i32 %53, %2
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %3, i64 %252
  %254 = load volatile i32, ptr %253, align 4, !tbaa !5
  %255 = icmp slt i32 %254, 0
  br i1 %255, label %256, label %261

256:                                              ; preds = %250
  %257 = load i32, ptr %6, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %6, align 4, !tbaa !5
  %259 = sext i32 %257 to i64
  %260 = getelementptr inbounds i32, ptr %4, i64 %259
  store i32 %251, ptr %260, align 4, !tbaa !5
  store volatile i32 %19, ptr %253, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %261

261:                                              ; preds = %256, %250
  %262 = sub nsw i32 %64, %2
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i32, ptr %3, i64 %263
  %265 = load volatile i32, ptr %264, align 4, !tbaa !5
  %266 = icmp slt i32 %265, 0
  br i1 %266, label %267, label %272

267:                                              ; preds = %261
  %268 = load i32, ptr %6, align 4, !tbaa !5
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %6, align 4, !tbaa !5
  %270 = sext i32 %268 to i64
  %271 = getelementptr inbounds i32, ptr %4, i64 %270
  store i32 %262, ptr %271, align 4, !tbaa !5
  store volatile i32 %19, ptr %264, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %272

272:                                              ; preds = %267, %261
  %273 = sub nsw i32 %75, %2
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %3, i64 %274
  %276 = load volatile i32, ptr %275, align 4, !tbaa !5
  %277 = icmp slt i32 %276, 0
  br i1 %277, label %278, label %283

278:                                              ; preds = %272
  %279 = load i32, ptr %6, align 4, !tbaa !5
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %6, align 4, !tbaa !5
  %281 = sext i32 %279 to i64
  %282 = getelementptr inbounds i32, ptr %4, i64 %281
  store i32 %273, ptr %282, align 4, !tbaa !5
  store volatile i32 %19, ptr %275, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %283

283:                                              ; preds = %278, %272
  %284 = sub nsw i32 %86, %2
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds i32, ptr %3, i64 %285
  %287 = load volatile i32, ptr %286, align 4, !tbaa !5
  %288 = icmp slt i32 %287, 0
  br i1 %288, label %289, label %294

289:                                              ; preds = %283
  %290 = load i32, ptr %6, align 4, !tbaa !5
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %6, align 4, !tbaa !5
  %292 = sext i32 %290 to i64
  %293 = getelementptr inbounds i32, ptr %4, i64 %292
  store i32 %284, ptr %293, align 4, !tbaa !5
  store volatile i32 %19, ptr %286, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %294

294:                                              ; preds = %289, %283
  %295 = sub nsw i32 %97, %2
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %3, i64 %296
  %298 = load volatile i32, ptr %297, align 4, !tbaa !5
  %299 = icmp slt i32 %298, 0
  br i1 %299, label %300, label %305

300:                                              ; preds = %294
  %301 = load i32, ptr %6, align 4, !tbaa !5
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %6, align 4, !tbaa !5
  %303 = sext i32 %301 to i64
  %304 = getelementptr inbounds i32, ptr %4, i64 %303
  store i32 %295, ptr %304, align 4, !tbaa !5
  store volatile i32 %19, ptr %297, align 4, !tbaa !5
  tail call void @_ZN5boost11this_thread18interruption_pointEv()
  br label %305

305:                                              ; preds = %300, %294
  %306 = load i32, ptr %5, align 4, !tbaa !5
  %307 = load i32, ptr %6, align 4, !tbaa !5
  %308 = icmp slt i32 %306, %307
  br i1 %308, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %305, %7
  %309 = getelementptr inbounds i8, ptr %0, i64 64
  store volatile i8 0, ptr %309, align 8, !tbaa !11
  ret void
}

declare void @_ZN5boost11this_thread18interruption_pointEv() local_unnamed_addr #1

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 = { "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" }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !17, i64 64}
!12 = !{!"_ZTSN14sbpl_interface6BFS_3DE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !13, i64 24, !13, i64 32, !6, i64 40, !6, i64 44, !14, i64 48, !17, i64 64}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!"_ZTSSt10shared_ptrIN5boost6threadEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrIN5boost6threadELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0}
!17 = !{!"bool", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass