; LLVM IR from fcimeson/cbTSP :: cbLKH/SRC (BridgeGain)

; 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.Node = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double, double, double, double, double, double, i8, i8, i8 }
%struct.Segment = type { i8, ptr, ptr, ptr, ptr, i32, i32, ptr }
%struct.Candidate = type { ptr, i32, i32 }

@Dimension = external dso_local global i32, align 4
@Reversed = external dso_local global i16, align 2
@C = external dso_local global ptr, align 8
@MaxBreadth = external dso_local global i32, align 4
@c = external dso_local global ptr, align 8

; Function Attrs: nounwind uwtable
define dso_local i64 @BridgeGain(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef %8, i64 noundef %9) #0 {
  %11 = alloca i64, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store ptr %5, ptr %17, align 8, !tbaa !5
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store i32 %8, ptr %20, align 4, !tbaa !9
  store i64 %9, ptr %21, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  store ptr null, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %48 = load i32, ptr %20, align 4, !tbaa !9
  switch i32 %48, label %91 [
    i32 3, label %49
    i32 4, label %63
    i32 0, label %77
    i32 7, label %77
  ]

49:                                               ; preds = %10
  %50 = load ptr, ptr %16, align 8, !tbaa !5
  %51 = load ptr, ptr %15, align 8, !tbaa !5
  %52 = call i32 @SegmentSize(ptr noundef %50, ptr noundef %51)
  %53 = mul nsw i32 2, %52
  %54 = load i32, ptr @Dimension, align 4, !tbaa !9
  %55 = icmp sle i32 %53, %54
  br i1 %55, label %56, label %59

56:                                               ; preds = %49
  %57 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %57, ptr %30, align 8, !tbaa !5
  %58 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %58, ptr %31, align 8, !tbaa !5
  br label %62

59:                                               ; preds = %49
  %60 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %60, ptr %30, align 8, !tbaa !5
  %61 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %61, ptr %31, align 8, !tbaa !5
  br label %62

62:                                               ; preds = %59, %56
  br label %91

63:                                               ; preds = %10
  %64 = load ptr, ptr %13, align 8, !tbaa !5
  %65 = load ptr, ptr %16, align 8, !tbaa !5
  %66 = call i32 @SegmentSize(ptr noundef %64, ptr noundef %65)
  %67 = mul nsw i32 2, %66
  %68 = load i32, ptr @Dimension, align 4, !tbaa !9
  %69 = icmp sle i32 %67, %68
  br i1 %69, label %70, label %73

70:                                               ; preds = %63
  %71 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %71, ptr %30, align 8, !tbaa !5
  %72 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %72, ptr %31, align 8, !tbaa !5
  br label %76

73:                                               ; preds = %63
  %74 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %74, ptr %30, align 8, !tbaa !5
  %75 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %75, ptr %31, align 8, !tbaa !5
  br label %76

76:                                               ; preds = %73, %70
  br label %91

77:                                               ; preds = %10, %10
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = load ptr, ptr %14, align 8, !tbaa !5
  %80 = call i32 @SegmentSize(ptr noundef %78, ptr noundef %79)
  %81 = mul nsw i32 2, %80
  %82 = load i32, ptr @Dimension, align 4, !tbaa !9
  %83 = icmp sle i32 %81, %82
  br i1 %83, label %84, label %87

84:                                               ; preds = %77
  %85 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %85, ptr %30, align 8, !tbaa !5
  %86 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %86, ptr %31, align 8, !tbaa !5
  br label %90

87:                                               ; preds = %77
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %88, ptr %30, align 8, !tbaa !5
  %89 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %89, ptr %31, align 8, !tbaa !5
  br label %90

90:                                               ; preds = %87, %84
  br label %91

91:                                               ; preds = %90, %76, %62, %10
  %92 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %92, ptr %22, align 8, !tbaa !5
  br label %93

93:                                               ; preds = %1261, %91
  %94 = load ptr, ptr %22, align 8, !tbaa !5
  %95 = load ptr, ptr %31, align 8, !tbaa !5
  %96 = icmp ne ptr %94, %95
  br i1 %96, label %97, label %1263

97:                                               ; preds = %93
  %98 = load i16, ptr @Reversed, align 2, !tbaa !13
  %99 = sext i16 %98 to i32
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.Node, ptr %100, i32 0, i32 45
  %102 = load ptr, ptr %101, align 8, !tbaa !15
  %103 = getelementptr inbounds %struct.Segment, ptr %102, i32 0, i32 0
  %104 = load i8, ptr %103, align 8, !tbaa !18
  %105 = sext i8 %104 to i32
  %106 = icmp eq i32 %99, %105
  br i1 %106, label %107, label %111

107:                                              ; preds = %97
  %108 = load ptr, ptr %22, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.Node, ptr %108, i32 0, i32 16
  %110 = load ptr, ptr %109, align 8, !tbaa !20
  br label %115

111:                                              ; preds = %97
  %112 = load ptr, ptr %22, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.Node, ptr %112, i32 0, i32 15
  %114 = load ptr, ptr %113, align 8, !tbaa !21
  br label %115

115:                                              ; preds = %111, %107
  %116 = phi ptr [ %110, %107 ], [ %114, %111 ]
  store ptr %116, ptr %23, align 8, !tbaa !5
  %117 = load ptr, ptr %22, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = icmp eq ptr %117, %118
  br i1 %119, label %120, label %124

120:                                              ; preds = %115
  %121 = load ptr, ptr %23, align 8, !tbaa !5
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = icmp eq ptr %121, %122
  br i1 %123, label %197, label %124

124:                                              ; preds = %120, %115
  %125 = load ptr, ptr %22, align 8, !tbaa !5
  %126 = load ptr, ptr %13, align 8, !tbaa !5
  %127 = icmp eq ptr %125, %126
  br i1 %127, label %128, label %132

128:                                              ; preds = %124
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = icmp eq ptr %129, %130
  br i1 %131, label %197, label %132

132:                                              ; preds = %128, %124
  %133 = load ptr, ptr %22, align 8, !tbaa !5
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = icmp eq ptr %133, %134
  br i1 %135, label %136, label %140

136:                                              ; preds = %132
  %137 = load ptr, ptr %23, align 8, !tbaa !5
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = icmp eq ptr %137, %138
  br i1 %139, label %197, label %140

140:                                              ; preds = %136, %132
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = load ptr, ptr %15, align 8, !tbaa !5
  %143 = icmp eq ptr %141, %142
  br i1 %143, label %144, label %148

144:                                              ; preds = %140
  %145 = load ptr, ptr %23, align 8, !tbaa !5
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = icmp eq ptr %145, %146
  br i1 %147, label %197, label %148

148:                                              ; preds = %144, %140
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = load ptr, ptr %16, align 8, !tbaa !5
  %151 = icmp eq ptr %149, %150
  br i1 %151, label %152, label %156

152:                                              ; preds = %148
  %153 = load ptr, ptr %23, align 8, !tbaa !5
  %154 = load ptr, ptr %17, align 8, !tbaa !5
  %155 = icmp eq ptr %153, %154
  br i1 %155, label %197, label %156

156:                                              ; preds = %152, %148
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = load ptr, ptr %17, align 8, !tbaa !5
  %159 = icmp eq ptr %157, %158
  br i1 %159, label %160, label %164

160:                                              ; preds = %156
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = load ptr, ptr %16, align 8, !tbaa !5
  %163 = icmp eq ptr %161, %162
  br i1 %163, label %197, label %164

164:                                              ; preds = %160, %156
  %165 = load ptr, ptr %22, align 8, !tbaa !5
  %166 = load ptr, ptr %18, align 8, !tbaa !5
  %167 = icmp eq ptr %165, %166
  br i1 %167, label %168, label %172

168:                                              ; preds = %164
  %169 = load ptr, ptr %23, align 8, !tbaa !5
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = icmp eq ptr %169, %170
  br i1 %171, label %197, label %172

172:                                              ; preds = %168, %164
  %173 = load ptr, ptr %22, align 8, !tbaa !5
  %174 = load ptr, ptr %19, align 8, !tbaa !5
  %175 = icmp eq ptr %173, %174
  br i1 %175, label %176, label %180

176:                                              ; preds = %172
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = icmp eq ptr %177, %178
  br i1 %179, label %197, label %180

180:                                              ; preds = %176, %172
  %181 = load ptr, ptr %22, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.Node, ptr %181, i32 0, i32 26
  %183 = load ptr, ptr %182, align 8, !tbaa !22
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = icmp eq ptr %183, %184
  br i1 %185, label %197, label %186

186:                                              ; preds = %180
  %187 = load ptr, ptr %22, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.Node, ptr %187, i32 0, i32 27
  %189 = load ptr, ptr %188, align 8, !tbaa !23
  %190 = load ptr, ptr %23, align 8, !tbaa !5
  %191 = icmp eq ptr %189, %190
  br i1 %191, label %197, label %192

192:                                              ; preds = %186
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = load ptr, ptr %23, align 8, !tbaa !5
  %195 = call i32 @IsCommonEdge(ptr noundef %193, ptr noundef %194)
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %198

197:                                              ; preds = %192, %186, %180, %176, %168, %160, %152, %144, %136, %128, %120
  br label %1261

198:                                              ; preds = %192
  %199 = load i64, ptr %21, align 8, !tbaa !11
  %200 = load ptr, ptr @C, align 8, !tbaa !5
  %201 = load ptr, ptr %22, align 8, !tbaa !5
  %202 = load ptr, ptr %23, align 8, !tbaa !5
  %203 = call i32 %200(ptr noundef %201, ptr noundef %202)
  %204 = sext i32 %203 to i64
  %205 = add nsw i64 %199, %204
  store i64 %205, ptr %35, align 8, !tbaa !11
  store i32 0, ptr %44, align 4, !tbaa !9
  %206 = load ptr, ptr %23, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.Node, ptr %206, i32 0, i32 43
  %208 = load ptr, ptr %207, align 8, !tbaa !24
  store ptr %208, ptr %32, align 8, !tbaa !5
  br label %209

209:                                              ; preds = %1257, %198
  %210 = load ptr, ptr %32, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.Candidate, ptr %210, i32 0, i32 0
  %212 = load ptr, ptr %211, align 8, !tbaa !25
  store ptr %212, ptr %24, align 8, !tbaa !5
  %213 = icmp ne ptr %212, null
  br i1 %213, label %214, label %1260

214:                                              ; preds = %209
  %215 = load ptr, ptr %24, align 8, !tbaa !5
  %216 = load ptr, ptr %23, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.Node, ptr %216, i32 0, i32 15
  %218 = load ptr, ptr %217, align 8, !tbaa !21
  %219 = icmp eq ptr %215, %218
  br i1 %219, label %232, label %220

220:                                              ; preds = %214
  %221 = load ptr, ptr %24, align 8, !tbaa !5
  %222 = load ptr, ptr %23, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.Node, ptr %222, i32 0, i32 16
  %224 = load ptr, ptr %223, align 8, !tbaa !20
  %225 = icmp eq ptr %221, %224
  br i1 %225, label %232, label %226

226:                                              ; preds = %220
  %227 = load ptr, ptr %30, align 8, !tbaa !5
  %228 = load ptr, ptr %24, align 8, !tbaa !5
  %229 = load ptr, ptr %31, align 8, !tbaa !5
  %230 = call i32 @Between_SL(ptr noundef %227, ptr noundef %228, ptr noundef %229)
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %233

232:                                              ; preds = %226, %220, %214
  br label %1257

233:                                              ; preds = %226
  %234 = load i64, ptr %35, align 8, !tbaa !11
  %235 = load ptr, ptr %32, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.Candidate, ptr %235, i32 0, i32 1
  %237 = load i32, ptr %236, align 8, !tbaa !27
  %238 = sext i32 %237 to i64
  %239 = sub nsw i64 %234, %238
  store i64 %239, ptr %36, align 8, !tbaa !11
  %240 = load i32, ptr %44, align 4, !tbaa !9
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr %44, align 4, !tbaa !9
  %242 = load i32, ptr @MaxBreadth, align 4, !tbaa !9
  %243 = icmp sgt i32 %241, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %233
  br label %1260

245:                                              ; preds = %233
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %246

246:                                              ; preds = %1253, %245
  %247 = load i32, ptr %43, align 4, !tbaa !9
  %248 = icmp sle i32 %247, 2
  br i1 %248, label %249, label %1256

249:                                              ; preds = %246
  %250 = load i32, ptr %43, align 4, !tbaa !9
  %251 = icmp eq i32 %250, 1
  br i1 %251, label %252, label %272

252:                                              ; preds = %249
  %253 = load i16, ptr @Reversed, align 2, !tbaa !13
  %254 = sext i16 %253 to i32
  %255 = load ptr, ptr %24, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.Node, ptr %255, i32 0, i32 45
  %257 = load ptr, ptr %256, align 8, !tbaa !15
  %258 = getelementptr inbounds %struct.Segment, ptr %257, i32 0, i32 0
  %259 = load i8, ptr %258, align 8, !tbaa !18
  %260 = sext i8 %259 to i32
  %261 = icmp eq i32 %254, %260
  br i1 %261, label %262, label %266

262:                                              ; preds = %252
  %263 = load ptr, ptr %24, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.Node, ptr %263, i32 0, i32 16
  %265 = load ptr, ptr %264, align 8, !tbaa !20
  br label %270

266:                                              ; preds = %252
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.Node, ptr %267, i32 0, i32 15
  %269 = load ptr, ptr %268, align 8, !tbaa !21
  br label %270

270:                                              ; preds = %266, %262
  %271 = phi ptr [ %265, %262 ], [ %269, %266 ]
  br label %292

272:                                              ; preds = %249
  %273 = load i16, ptr @Reversed, align 2, !tbaa !13
  %274 = sext i16 %273 to i32
  %275 = load ptr, ptr %24, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.Node, ptr %275, i32 0, i32 45
  %277 = load ptr, ptr %276, align 8, !tbaa !15
  %278 = getelementptr inbounds %struct.Segment, ptr %277, i32 0, i32 0
  %279 = load i8, ptr %278, align 8, !tbaa !18
  %280 = sext i8 %279 to i32
  %281 = icmp eq i32 %274, %280
  br i1 %281, label %282, label %286

282:                                              ; preds = %272
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.Node, ptr %283, i32 0, i32 15
  %285 = load ptr, ptr %284, align 8, !tbaa !21
  br label %290

286:                                              ; preds = %272
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.Node, ptr %287, i32 0, i32 16
  %289 = load ptr, ptr %288, align 8, !tbaa !20
  br label %290

290:                                              ; preds = %286, %282
  %291 = phi ptr [ %285, %282 ], [ %289, %286 ]
  br label %292

292:                                              ; preds = %290, %270
  %293 = phi ptr [ %271, %270 ], [ %291, %290 ]
  store ptr %293, ptr %25, align 8, !tbaa !5
  %294 = load ptr, ptr %25, align 8, !tbaa !5
  %295 = load ptr, ptr %23, align 8, !tbaa !5
  %296 = icmp eq ptr %294, %295
  br i1 %296, label %378, label %297

297:                                              ; preds = %292
  %298 = load ptr, ptr %24, align 8, !tbaa !5
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = icmp eq ptr %298, %299
  br i1 %300, label %301, label %305

301:                                              ; preds = %297
  %302 = load ptr, ptr %25, align 8, !tbaa !5
  %303 = load ptr, ptr %13, align 8, !tbaa !5
  %304 = icmp eq ptr %302, %303
  br i1 %304, label %378, label %305

305:                                              ; preds = %301, %297
  %306 = load ptr, ptr %24, align 8, !tbaa !5
  %307 = load ptr, ptr %13, align 8, !tbaa !5
  %308 = icmp eq ptr %306, %307
  br i1 %308, label %309, label %313

309:                                              ; preds = %305
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = icmp eq ptr %310, %311
  br i1 %312, label %378, label %313

313:                                              ; preds = %309, %305
  %314 = load ptr, ptr %24, align 8, !tbaa !5
  %315 = load ptr, ptr %14, align 8, !tbaa !5
  %316 = icmp eq ptr %314, %315
  br i1 %316, label %317, label %321

317:                                              ; preds = %313
  %318 = load ptr, ptr %25, align 8, !tbaa !5
  %319 = load ptr, ptr %15, align 8, !tbaa !5
  %320 = icmp eq ptr %318, %319
  br i1 %320, label %378, label %321

321:                                              ; preds = %317, %313
  %322 = load ptr, ptr %24, align 8, !tbaa !5
  %323 = load ptr, ptr %15, align 8, !tbaa !5
  %324 = icmp eq ptr %322, %323
  br i1 %324, label %325, label %329

325:                                              ; preds = %321
  %326 = load ptr, ptr %25, align 8, !tbaa !5
  %327 = load ptr, ptr %14, align 8, !tbaa !5
  %328 = icmp eq ptr %326, %327
  br i1 %328, label %378, label %329

329:                                              ; preds = %325, %321
  %330 = load ptr, ptr %24, align 8, !tbaa !5
  %331 = load ptr, ptr %16, align 8, !tbaa !5
  %332 = icmp eq ptr %330, %331
  br i1 %332, label %333, label %337

333:                                              ; preds = %329
  %334 = load ptr, ptr %25, align 8, !tbaa !5
  %335 = load ptr, ptr %17, align 8, !tbaa !5
  %336 = icmp eq ptr %334, %335
  br i1 %336, label %378, label %337

337:                                              ; preds = %333, %329
  %338 = load ptr, ptr %24, align 8, !tbaa !5
  %339 = load ptr, ptr %17, align 8, !tbaa !5
  %340 = icmp eq ptr %338, %339
  br i1 %340, label %341, label %345

341:                                              ; preds = %337
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  %343 = load ptr, ptr %16, align 8, !tbaa !5
  %344 = icmp eq ptr %342, %343
  br i1 %344, label %378, label %345

345:                                              ; preds = %341, %337
  %346 = load ptr, ptr %24, align 8, !tbaa !5
  %347 = load ptr, ptr %18, align 8, !tbaa !5
  %348 = icmp eq ptr %346, %347
  br i1 %348, label %349, label %353

349:                                              ; preds = %345
  %350 = load ptr, ptr %25, align 8, !tbaa !5
  %351 = load ptr, ptr %19, align 8, !tbaa !5
  %352 = icmp eq ptr %350, %351
  br i1 %352, label %378, label %353

353:                                              ; preds = %349, %345
  %354 = load ptr, ptr %24, align 8, !tbaa !5
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = icmp eq ptr %354, %355
  br i1 %356, label %357, label %361

357:                                              ; preds = %353
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = icmp eq ptr %358, %359
  br i1 %360, label %378, label %361

361:                                              ; preds = %357, %353
  %362 = load ptr, ptr %24, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.Node, ptr %362, i32 0, i32 26
  %364 = load ptr, ptr %363, align 8, !tbaa !22
  %365 = load ptr, ptr %25, align 8, !tbaa !5
  %366 = icmp eq ptr %364, %365
  br i1 %366, label %378, label %367

367:                                              ; preds = %361
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.Node, ptr %368, i32 0, i32 27
  %370 = load ptr, ptr %369, align 8, !tbaa !23
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = icmp eq ptr %370, %371
  br i1 %372, label %378, label %373

373:                                              ; preds = %367
  %374 = load ptr, ptr %24, align 8, !tbaa !5
  %375 = load ptr, ptr %25, align 8, !tbaa !5
  %376 = call i32 @IsCommonEdge(ptr noundef %374, ptr noundef %375)
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %373, %367, %361, %357, %349, %341, %333, %325, %317, %309, %301, %292
  br label %1253

379:                                              ; preds = %373
  %380 = load i64, ptr %36, align 8, !tbaa !11
  %381 = load ptr, ptr @C, align 8, !tbaa !5
  %382 = load ptr, ptr %24, align 8, !tbaa !5
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = call i32 %381(ptr noundef %382, ptr noundef %383)
  %385 = sext i32 %384 to i64
  %386 = add nsw i64 %380, %385
  store i64 %386, ptr %37, align 8, !tbaa !11
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = call i32 @Forbidden(ptr noundef %387, ptr noundef %388)
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %593, label %391

391:                                              ; preds = %379
  %392 = load ptr, ptr @c, align 8, !tbaa !5
  %393 = icmp ne ptr %392, null
  br i1 %393, label %394, label %403

394:                                              ; preds = %391
  %395 = load i64, ptr %37, align 8, !tbaa !11
  %396 = load ptr, ptr @c, align 8, !tbaa !5
  %397 = load ptr, ptr %25, align 8, !tbaa !5
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  %399 = call i32 %396(ptr noundef %397, ptr noundef %398)
  %400 = sext i32 %399 to i64
  %401 = sub nsw i64 %395, %400
  %402 = icmp sgt i64 %401, 0
  br i1 %402, label %403, label %593

403:                                              ; preds = %394, %391
  %404 = load i64, ptr %37, align 8, !tbaa !11
  %405 = load ptr, ptr @C, align 8, !tbaa !5
  %406 = load ptr, ptr %25, align 8, !tbaa !5
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = call i32 %405(ptr noundef %406, ptr noundef %407)
  %409 = sext i32 %408 to i64
  %410 = sub nsw i64 %404, %409
  store i64 %410, ptr %42, align 8, !tbaa !11
  %411 = icmp sgt i64 %410, 0
  br i1 %411, label %412, label %593

412:                                              ; preds = %403
  %413 = load i32, ptr %20, align 4, !tbaa !9
  switch i32 %413, label %592 [
    i32 0, label %414
    i32 3, label %436
    i32 4, label %488
    i32 7, label %540
  ]

414:                                              ; preds = %412
  %415 = load i32, ptr %43, align 4, !tbaa !9
  %416 = icmp eq i32 %415, 1
  br i1 %416, label %417, label %427

417:                                              ; preds = %414
  %418 = load ptr, ptr %12, align 8, !tbaa !5
  %419 = load ptr, ptr %13, align 8, !tbaa !5
  %420 = load ptr, ptr %15, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %418, ptr noundef %419, ptr noundef %420)
  %421 = load ptr, ptr %24, align 8, !tbaa !5
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %421, ptr noundef %422, ptr noundef %423)
  %424 = load ptr, ptr %12, align 8, !tbaa !5
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = load ptr, ptr %13, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %424, ptr noundef %425, ptr noundef %426)
  br label %434

427:                                              ; preds = %414
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = load ptr, ptr %23, align 8, !tbaa !5
  %430 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %428, ptr noundef %429, ptr noundef %430)
  %431 = load ptr, ptr %12, align 8, !tbaa !5
  %432 = load ptr, ptr %13, align 8, !tbaa !5
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %431, ptr noundef %432, ptr noundef %433)
  br label %434

434:                                              ; preds = %427, %417
  %435 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %435, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

436:                                              ; preds = %412
  %437 = load i32, ptr %43, align 4, !tbaa !9
  %438 = icmp eq i32 %437, 1
  %439 = zext i1 %438 to i32
  %440 = load ptr, ptr %13, align 8, !tbaa !5
  %441 = load ptr, ptr %22, align 8, !tbaa !5
  %442 = load ptr, ptr %17, align 8, !tbaa !5
  %443 = call i32 @Between_SL(ptr noundef %440, ptr noundef %441, ptr noundef %442)
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %452, label %445

445:                                              ; preds = %436
  %446 = load ptr, ptr %13, align 8, !tbaa !5
  %447 = load ptr, ptr %24, align 8, !tbaa !5
  %448 = load ptr, ptr %17, align 8, !tbaa !5
  %449 = call i32 @Between_SL(ptr noundef %446, ptr noundef %447, ptr noundef %448)
  %450 = icmp ne i32 %449, 0
  %451 = xor i1 %450, true
  br label %452

452:                                              ; preds = %445, %436
  %453 = phi i1 [ false, %436 ], [ %451, %445 ]
  %454 = zext i1 %453 to i32
  %455 = icmp eq i32 %439, %454
  br i1 %455, label %456, label %466

456:                                              ; preds = %452
  %457 = load ptr, ptr %12, align 8, !tbaa !5
  %458 = load ptr, ptr %13, align 8, !tbaa !5
  %459 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %457, ptr noundef %458, ptr noundef %459)
  %460 = load ptr, ptr %22, align 8, !tbaa !5
  %461 = load ptr, ptr %23, align 8, !tbaa !5
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %460, ptr noundef %461, ptr noundef %462)
  %463 = load ptr, ptr %16, align 8, !tbaa !5
  %464 = load ptr, ptr %17, align 8, !tbaa !5
  %465 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %463, ptr noundef %464, ptr noundef %465)
  br label %479

466:                                              ; preds = %452
  %467 = load ptr, ptr %12, align 8, !tbaa !5
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %467, ptr noundef %468, ptr noundef %469)
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = load ptr, ptr %25, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %470, ptr noundef %471, ptr noundef %472)
  %473 = load ptr, ptr %16, align 8, !tbaa !5
  %474 = load ptr, ptr %17, align 8, !tbaa !5
  %475 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %473, ptr noundef %474, ptr noundef %475)
  %476 = load ptr, ptr %23, align 8, !tbaa !5
  %477 = load ptr, ptr %25, align 8, !tbaa !5
  %478 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %476, ptr noundef %477, ptr noundef %478)
  br label %479

479:                                              ; preds = %466, %456
  %480 = load ptr, ptr %19, align 8, !tbaa !5
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %486

482:                                              ; preds = %479
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = load ptr, ptr %19, align 8, !tbaa !5
  %485 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %483, ptr noundef %484, ptr noundef %485)
  br label %486

486:                                              ; preds = %482, %479
  %487 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %487, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

488:                                              ; preds = %412
  %489 = load i32, ptr %43, align 4, !tbaa !9
  %490 = icmp eq i32 %489, 1
  %491 = zext i1 %490 to i32
  %492 = load ptr, ptr %14, align 8, !tbaa !5
  %493 = load ptr, ptr %22, align 8, !tbaa !5
  %494 = load ptr, ptr %16, align 8, !tbaa !5
  %495 = call i32 @Between_SL(ptr noundef %492, ptr noundef %493, ptr noundef %494)
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %504, label %497

497:                                              ; preds = %488
  %498 = load ptr, ptr %14, align 8, !tbaa !5
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = load ptr, ptr %16, align 8, !tbaa !5
  %501 = call i32 @Between_SL(ptr noundef %498, ptr noundef %499, ptr noundef %500)
  %502 = icmp ne i32 %501, 0
  %503 = xor i1 %502, true
  br label %504

504:                                              ; preds = %497, %488
  %505 = phi i1 [ false, %488 ], [ %503, %497 ]
  %506 = zext i1 %505 to i32
  %507 = icmp eq i32 %491, %506
  br i1 %507, label %508, label %518

508:                                              ; preds = %504
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  %510 = load ptr, ptr %13, align 8, !tbaa !5
  %511 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %509, ptr noundef %510, ptr noundef %511)
  %512 = load ptr, ptr %22, align 8, !tbaa !5
  %513 = load ptr, ptr %23, align 8, !tbaa !5
  %514 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %512, ptr noundef %513, ptr noundef %514)
  %515 = load ptr, ptr %16, align 8, !tbaa !5
  %516 = load ptr, ptr %17, align 8, !tbaa !5
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %515, ptr noundef %516, ptr noundef %517)
  br label %531

518:                                              ; preds = %504
  %519 = load ptr, ptr %12, align 8, !tbaa !5
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  %521 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %519, ptr noundef %520, ptr noundef %521)
  %522 = load ptr, ptr %22, align 8, !tbaa !5
  %523 = load ptr, ptr %23, align 8, !tbaa !5
  %524 = load ptr, ptr %25, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %522, ptr noundef %523, ptr noundef %524)
  %525 = load ptr, ptr %16, align 8, !tbaa !5
  %526 = load ptr, ptr %17, align 8, !tbaa !5
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %525, ptr noundef %526, ptr noundef %527)
  %528 = load ptr, ptr %23, align 8, !tbaa !5
  %529 = load ptr, ptr %25, align 8, !tbaa !5
  %530 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %528, ptr noundef %529, ptr noundef %530)
  br label %531

531:                                              ; preds = %518, %508
  %532 = load ptr, ptr %19, align 8, !tbaa !5
  %533 = icmp ne ptr %532, null
  br i1 %533, label %534, label %538

534:                                              ; preds = %531
  %535 = load ptr, ptr %18, align 8, !tbaa !5
  %536 = load ptr, ptr %19, align 8, !tbaa !5
  %537 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %535, ptr noundef %536, ptr noundef %537)
  br label %538

538:                                              ; preds = %534, %531
  %539 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %539, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

540:                                              ; preds = %412
  %541 = load i32, ptr %43, align 4, !tbaa !9
  %542 = icmp eq i32 %541, 1
  %543 = zext i1 %542 to i32
  %544 = load ptr, ptr %15, align 8, !tbaa !5
  %545 = load ptr, ptr %22, align 8, !tbaa !5
  %546 = load ptr, ptr %17, align 8, !tbaa !5
  %547 = call i32 @Between_SL(ptr noundef %544, ptr noundef %545, ptr noundef %546)
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %556, label %549

549:                                              ; preds = %540
  %550 = load ptr, ptr %15, align 8, !tbaa !5
  %551 = load ptr, ptr %24, align 8, !tbaa !5
  %552 = load ptr, ptr %17, align 8, !tbaa !5
  %553 = call i32 @Between_SL(ptr noundef %550, ptr noundef %551, ptr noundef %552)
  %554 = icmp ne i32 %553, 0
  %555 = xor i1 %554, true
  br label %556

556:                                              ; preds = %549, %540
  %557 = phi i1 [ false, %540 ], [ %555, %549 ]
  %558 = zext i1 %557 to i32
  %559 = icmp eq i32 %543, %558
  br i1 %559, label %560, label %570

560:                                              ; preds = %556
  %561 = load ptr, ptr %16, align 8, !tbaa !5
  %562 = load ptr, ptr %17, align 8, !tbaa !5
  %563 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %561, ptr noundef %562, ptr noundef %563)
  %564 = load ptr, ptr %22, align 8, !tbaa !5
  %565 = load ptr, ptr %23, align 8, !tbaa !5
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %564, ptr noundef %565, ptr noundef %566)
  %567 = load ptr, ptr %14, align 8, !tbaa !5
  %568 = load ptr, ptr %15, align 8, !tbaa !5
  %569 = load ptr, ptr %16, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %567, ptr noundef %568, ptr noundef %569)
  br label %583

570:                                              ; preds = %556
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = load ptr, ptr %17, align 8, !tbaa !5
  %573 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %571, ptr noundef %572, ptr noundef %573)
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load ptr, ptr %23, align 8, !tbaa !5
  %576 = load ptr, ptr %25, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %574, ptr noundef %575, ptr noundef %576)
  %577 = load ptr, ptr %14, align 8, !tbaa !5
  %578 = load ptr, ptr %15, align 8, !tbaa !5
  %579 = load ptr, ptr %16, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %577, ptr noundef %578, ptr noundef %579)
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  %581 = load ptr, ptr %25, align 8, !tbaa !5
  %582 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %580, ptr noundef %581, ptr noundef %582)
  br label %583

583:                                              ; preds = %570, %560
  %584 = load ptr, ptr %19, align 8, !tbaa !5
  %585 = icmp ne ptr %584, null
  br i1 %585, label %586, label %590

586:                                              ; preds = %583
  %587 = load ptr, ptr %18, align 8, !tbaa !5
  %588 = load ptr, ptr %19, align 8, !tbaa !5
  %589 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %587, ptr noundef %588, ptr noundef %589)
  br label %590

590:                                              ; preds = %586, %583
  %591 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %591, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

592:                                              ; preds = %412
  br label %593

593:                                              ; preds = %592, %403, %394, %379
  %594 = load i32, ptr %20, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %597

596:                                              ; preds = %593
  br label %1253

597:                                              ; preds = %593
  store i32 0, ptr %45, align 4, !tbaa !9
  %598 = load ptr, ptr %25, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.Node, ptr %598, i32 0, i32 43
  %600 = load ptr, ptr %599, align 8, !tbaa !24
  store ptr %600, ptr %33, align 8, !tbaa !5
  br label %601

601:                                              ; preds = %1249, %597
  %602 = load ptr, ptr %33, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.Candidate, ptr %602, i32 0, i32 0
  %604 = load ptr, ptr %603, align 8, !tbaa !25
  store ptr %604, ptr %26, align 8, !tbaa !5
  %605 = icmp ne ptr %604, null
  br i1 %605, label %606, label %1252

606:                                              ; preds = %601
  %607 = load ptr, ptr %26, align 8, !tbaa !5
  %608 = load ptr, ptr %25, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.Node, ptr %608, i32 0, i32 15
  %610 = load ptr, ptr %609, align 8, !tbaa !21
  %611 = icmp eq ptr %607, %610
  br i1 %611, label %626, label %612

612:                                              ; preds = %606
  %613 = load ptr, ptr %26, align 8, !tbaa !5
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.Node, ptr %614, i32 0, i32 16
  %616 = load ptr, ptr %615, align 8, !tbaa !20
  %617 = icmp eq ptr %613, %616
  br i1 %617, label %626, label %618

618:                                              ; preds = %612
  %619 = load ptr, ptr %26, align 8, !tbaa !5
  %620 = load ptr, ptr %22, align 8, !tbaa !5
  %621 = icmp eq ptr %619, %620
  br i1 %621, label %626, label %622

622:                                              ; preds = %618
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  %625 = icmp eq ptr %623, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %622, %618, %612, %606
  br label %1249

627:                                              ; preds = %622
  %628 = load i32, ptr %43, align 4, !tbaa !9
  %629 = icmp eq i32 %628, 1
  br i1 %629, label %636, label %630

630:                                              ; preds = %627
  %631 = load ptr, ptr %30, align 8, !tbaa !5
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load ptr, ptr %31, align 8, !tbaa !5
  %634 = call i32 @Between_SL(ptr noundef %631, ptr noundef %632, ptr noundef %633)
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %656

636:                                              ; preds = %630, %627
  %637 = load i16, ptr @Reversed, align 2, !tbaa !13
  %638 = sext i16 %637 to i32
  %639 = load ptr, ptr %26, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.Node, ptr %639, i32 0, i32 45
  %641 = load ptr, ptr %640, align 8, !tbaa !15
  %642 = getelementptr inbounds %struct.Segment, ptr %641, i32 0, i32 0
  %643 = load i8, ptr %642, align 8, !tbaa !18
  %644 = sext i8 %643 to i32
  %645 = icmp eq i32 %638, %644
  br i1 %645, label %646, label %650

646:                                              ; preds = %636
  %647 = load ptr, ptr %26, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.Node, ptr %647, i32 0, i32 15
  %649 = load ptr, ptr %648, align 8, !tbaa !21
  br label %654

650:                                              ; preds = %636
  %651 = load ptr, ptr %26, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.Node, ptr %651, i32 0, i32 16
  %653 = load ptr, ptr %652, align 8, !tbaa !20
  br label %654

654:                                              ; preds = %650, %646
  %655 = phi ptr [ %649, %646 ], [ %653, %650 ]
  br label %676

656:                                              ; preds = %630
  %657 = load i16, ptr @Reversed, align 2, !tbaa !13
  %658 = sext i16 %657 to i32
  %659 = load ptr, ptr %26, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.Node, ptr %659, i32 0, i32 45
  %661 = load ptr, ptr %660, align 8, !tbaa !15
  %662 = getelementptr inbounds %struct.Segment, ptr %661, i32 0, i32 0
  %663 = load i8, ptr %662, align 8, !tbaa !18
  %664 = sext i8 %663 to i32
  %665 = icmp eq i32 %658, %664
  br i1 %665, label %666, label %670

666:                                              ; preds = %656
  %667 = load ptr, ptr %26, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.Node, ptr %667, i32 0, i32 16
  %669 = load ptr, ptr %668, align 8, !tbaa !20
  br label %674

670:                                              ; preds = %656
  %671 = load ptr, ptr %26, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.Node, ptr %671, i32 0, i32 15
  %673 = load ptr, ptr %672, align 8, !tbaa !21
  br label %674

674:                                              ; preds = %670, %666
  %675 = phi ptr [ %669, %666 ], [ %673, %670 ]
  br label %676

676:                                              ; preds = %674, %654
  %677 = phi ptr [ %655, %654 ], [ %675, %674 ]
  store ptr %677, ptr %27, align 8, !tbaa !5
  %678 = load ptr, ptr %26, align 8, !tbaa !5
  %679 = load ptr, ptr %12, align 8, !tbaa !5
  %680 = icmp eq ptr %678, %679
  br i1 %680, label %681, label %685

681:                                              ; preds = %676
  %682 = load ptr, ptr %27, align 8, !tbaa !5
  %683 = load ptr, ptr %13, align 8, !tbaa !5
  %684 = icmp eq ptr %682, %683
  br i1 %684, label %726, label %685

685:                                              ; preds = %681, %676
  %686 = load ptr, ptr %26, align 8, !tbaa !5
  %687 = load ptr, ptr %13, align 8, !tbaa !5
  %688 = icmp eq ptr %686, %687
  br i1 %688, label %689, label %693

689:                                              ; preds = %685
  %690 = load ptr, ptr %27, align 8, !tbaa !5
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = icmp eq ptr %690, %691
  br i1 %692, label %726, label %693

693:                                              ; preds = %689, %685
  %694 = load ptr, ptr %26, align 8, !tbaa !5
  %695 = load ptr, ptr %14, align 8, !tbaa !5
  %696 = icmp eq ptr %694, %695
  br i1 %696, label %697, label %701

697:                                              ; preds = %693
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = load ptr, ptr %15, align 8, !tbaa !5
  %700 = icmp eq ptr %698, %699
  br i1 %700, label %726, label %701

701:                                              ; preds = %697, %693
  %702 = load ptr, ptr %26, align 8, !tbaa !5
  %703 = load ptr, ptr %15, align 8, !tbaa !5
  %704 = icmp eq ptr %702, %703
  br i1 %704, label %705, label %709

705:                                              ; preds = %701
  %706 = load ptr, ptr %27, align 8, !tbaa !5
  %707 = load ptr, ptr %14, align 8, !tbaa !5
  %708 = icmp eq ptr %706, %707
  br i1 %708, label %726, label %709

709:                                              ; preds = %705, %701
  %710 = load ptr, ptr %26, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.Node, ptr %710, i32 0, i32 26
  %712 = load ptr, ptr %711, align 8, !tbaa !22
  %713 = load ptr, ptr %27, align 8, !tbaa !5
  %714 = icmp eq ptr %712, %713
  br i1 %714, label %726, label %715

715:                                              ; preds = %709
  %716 = load ptr, ptr %26, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.Node, ptr %716, i32 0, i32 27
  %718 = load ptr, ptr %717, align 8, !tbaa !23
  %719 = load ptr, ptr %27, align 8, !tbaa !5
  %720 = icmp eq ptr %718, %719
  br i1 %720, label %726, label %721

721:                                              ; preds = %715
  %722 = load ptr, ptr %26, align 8, !tbaa !5
  %723 = load ptr, ptr %27, align 8, !tbaa !5
  %724 = call i32 @IsCommonEdge(ptr noundef %722, ptr noundef %723)
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %727

726:                                              ; preds = %721, %715, %709, %705, %697, %689, %681
  br label %1249

727:                                              ; preds = %721
  %728 = load i64, ptr %37, align 8, !tbaa !11
  %729 = load ptr, ptr %33, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.Candidate, ptr %729, i32 0, i32 1
  %731 = load i32, ptr %730, align 8, !tbaa !27
  %732 = sext i32 %731 to i64
  %733 = sub nsw i64 %728, %732
  store i64 %733, ptr %38, align 8, !tbaa !11
  %734 = load i64, ptr %38, align 8, !tbaa !11
  %735 = load ptr, ptr @C, align 8, !tbaa !5
  %736 = load ptr, ptr %26, align 8, !tbaa !5
  %737 = load ptr, ptr %27, align 8, !tbaa !5
  %738 = call i32 %735(ptr noundef %736, ptr noundef %737)
  %739 = sext i32 %738 to i64
  %740 = add nsw i64 %734, %739
  store i64 %740, ptr %39, align 8, !tbaa !11
  %741 = load ptr, ptr %27, align 8, !tbaa !5
  %742 = load ptr, ptr %22, align 8, !tbaa !5
  %743 = call i32 @Forbidden(ptr noundef %741, ptr noundef %742)
  %744 = icmp ne i32 %743, 0
  br i1 %744, label %794, label %745

745:                                              ; preds = %727
  %746 = load ptr, ptr @c, align 8, !tbaa !5
  %747 = icmp ne ptr %746, null
  br i1 %747, label %748, label %757

748:                                              ; preds = %745
  %749 = load i64, ptr %39, align 8, !tbaa !11
  %750 = load ptr, ptr @c, align 8, !tbaa !5
  %751 = load ptr, ptr %27, align 8, !tbaa !5
  %752 = load ptr, ptr %22, align 8, !tbaa !5
  %753 = call i32 %750(ptr noundef %751, ptr noundef %752)
  %754 = sext i32 %753 to i64
  %755 = sub nsw i64 %749, %754
  %756 = icmp sgt i64 %755, 0
  br i1 %756, label %757, label %794

757:                                              ; preds = %748, %745
  %758 = load i64, ptr %39, align 8, !tbaa !11
  %759 = load ptr, ptr @C, align 8, !tbaa !5
  %760 = load ptr, ptr %27, align 8, !tbaa !5
  %761 = load ptr, ptr %22, align 8, !tbaa !5
  %762 = call i32 %759(ptr noundef %760, ptr noundef %761)
  %763 = sext i32 %762 to i64
  %764 = sub nsw i64 %758, %763
  store i64 %764, ptr %42, align 8, !tbaa !11
  %765 = icmp sgt i64 %764, 0
  br i1 %765, label %766, label %794

766:                                              ; preds = %757
  %767 = load i32, ptr %43, align 4, !tbaa !9
  %768 = icmp eq i32 %767, 1
  br i1 %768, label %769, label %782

769:                                              ; preds = %766
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = load ptr, ptr %13, align 8, !tbaa !5
  %772 = load ptr, ptr %15, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %770, ptr noundef %771, ptr noundef %772)
  %773 = load ptr, ptr %24, align 8, !tbaa !5
  %774 = load ptr, ptr %25, align 8, !tbaa !5
  %775 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %773, ptr noundef %774, ptr noundef %775)
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  %777 = load ptr, ptr %14, align 8, !tbaa !5
  %778 = load ptr, ptr %13, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %776, ptr noundef %777, ptr noundef %778)
  %779 = load ptr, ptr %26, align 8, !tbaa !5
  %780 = load ptr, ptr %27, align 8, !tbaa !5
  %781 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %779, ptr noundef %780, ptr noundef %781)
  br label %792

782:                                              ; preds = %766
  %783 = load ptr, ptr %22, align 8, !tbaa !5
  %784 = load ptr, ptr %23, align 8, !tbaa !5
  %785 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %783, ptr noundef %784, ptr noundef %785)
  %786 = load ptr, ptr %12, align 8, !tbaa !5
  %787 = load ptr, ptr %13, align 8, !tbaa !5
  %788 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %786, ptr noundef %787, ptr noundef %788)
  %789 = load ptr, ptr %26, align 8, !tbaa !5
  %790 = load ptr, ptr %27, align 8, !tbaa !5
  %791 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %789, ptr noundef %790, ptr noundef %791)
  br label %792

792:                                              ; preds = %782, %769
  %793 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %793, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

794:                                              ; preds = %757, %748, %727
  %795 = load i32, ptr %45, align 4, !tbaa !9
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr %45, align 4, !tbaa !9
  %797 = load i32, ptr @MaxBreadth, align 4, !tbaa !9
  %798 = icmp sgt i32 %796, %797
  br i1 %798, label %799, label %800

799:                                              ; preds = %794
  br label %1252

800:                                              ; preds = %794
  store i32 0, ptr %46, align 4, !tbaa !9
  %801 = load ptr, ptr %27, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.Node, ptr %801, i32 0, i32 43
  %803 = load ptr, ptr %802, align 8, !tbaa !24
  store ptr %803, ptr %34, align 8, !tbaa !5
  br label %804

804:                                              ; preds = %1245, %800
  %805 = load ptr, ptr %34, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.Candidate, ptr %805, i32 0, i32 0
  %807 = load ptr, ptr %806, align 8, !tbaa !25
  store ptr %807, ptr %28, align 8, !tbaa !5
  %808 = icmp ne ptr %807, null
  br i1 %808, label %809, label %1248

809:                                              ; preds = %804
  %810 = load ptr, ptr %28, align 8, !tbaa !5
  %811 = load ptr, ptr %27, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.Node, ptr %811, i32 0, i32 15
  %813 = load ptr, ptr %812, align 8, !tbaa !21
  %814 = icmp eq ptr %810, %813
  br i1 %814, label %821, label %815

815:                                              ; preds = %809
  %816 = load ptr, ptr %28, align 8, !tbaa !5
  %817 = load ptr, ptr %27, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.Node, ptr %817, i32 0, i32 16
  %819 = load ptr, ptr %818, align 8, !tbaa !20
  %820 = icmp eq ptr %816, %819
  br i1 %820, label %821, label %822

821:                                              ; preds = %815, %809
  br label %1245

822:                                              ; preds = %815
  %823 = load i32, ptr %43, align 4, !tbaa !9
  %824 = icmp eq i32 %823, 1
  br i1 %824, label %825, label %939

825:                                              ; preds = %822
  %826 = load ptr, ptr %30, align 8, !tbaa !5
  %827 = load ptr, ptr %26, align 8, !tbaa !5
  %828 = load ptr, ptr %22, align 8, !tbaa !5
  %829 = call i32 @Between_SL(ptr noundef %826, ptr noundef %827, ptr noundef %828)
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %837

831:                                              ; preds = %825
  %832 = load ptr, ptr %26, align 8, !tbaa !5
  %833 = load ptr, ptr %28, align 8, !tbaa !5
  %834 = load ptr, ptr %22, align 8, !tbaa !5
  %835 = call i32 @Between_SL(ptr noundef %832, ptr noundef %833, ptr noundef %834)
  %836 = icmp ne i32 %835, 0
  br i1 %836, label %897, label %917

837:                                              ; preds = %825
  %838 = load ptr, ptr %23, align 8, !tbaa !5
  %839 = load ptr, ptr %26, align 8, !tbaa !5
  %840 = load ptr, ptr %31, align 8, !tbaa !5
  %841 = call i32 @Between_SL(ptr noundef %838, ptr noundef %839, ptr noundef %840)
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %843, label %855

843:                                              ; preds = %837
  %844 = load ptr, ptr %30, align 8, !tbaa !5
  %845 = load ptr, ptr %28, align 8, !tbaa !5
  %846 = load ptr, ptr %22, align 8, !tbaa !5
  %847 = call i32 @Between_SL(ptr noundef %844, ptr noundef %845, ptr noundef %846)
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %897, label %849

849:                                              ; preds = %843
  %850 = load ptr, ptr %26, align 8, !tbaa !5
  %851 = load ptr, ptr %28, align 8, !tbaa !5
  %852 = load ptr, ptr %31, align 8, !tbaa !5
  %853 = call i32 @Between_SL(ptr noundef %850, ptr noundef %851, ptr noundef %852)
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %897, label %917

855:                                              ; preds = %837
  %856 = load i16, ptr @Reversed, align 2, !tbaa !13
  %857 = sext i16 %856 to i32
  %858 = load ptr, ptr %31, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.Node, ptr %858, i32 0, i32 45
  %860 = load ptr, ptr %859, align 8, !tbaa !15
  %861 = getelementptr inbounds %struct.Segment, ptr %860, i32 0, i32 0
  %862 = load i8, ptr %861, align 8, !tbaa !18
  %863 = sext i8 %862 to i32
  %864 = icmp eq i32 %857, %863
  br i1 %864, label %865, label %869

865:                                              ; preds = %855
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.Node, ptr %866, i32 0, i32 16
  %868 = load ptr, ptr %867, align 8, !tbaa !20
  br label %873

869:                                              ; preds = %855
  %870 = load ptr, ptr %31, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.Node, ptr %870, i32 0, i32 15
  %872 = load ptr, ptr %871, align 8, !tbaa !21
  br label %873

873:                                              ; preds = %869, %865
  %874 = phi ptr [ %868, %865 ], [ %872, %869 ]
  %875 = load ptr, ptr %26, align 8, !tbaa !5
  %876 = load ptr, ptr %24, align 8, !tbaa !5
  %877 = call i32 @Between_SL(ptr noundef %874, ptr noundef %875, ptr noundef %876)
  %878 = icmp ne i32 %877, 0
  br i1 %878, label %879, label %891

879:                                              ; preds = %873
  %880 = load ptr, ptr %30, align 8, !tbaa !5
  %881 = load ptr, ptr %28, align 8, !tbaa !5
  %882 = load ptr, ptr %31, align 8, !tbaa !5
  %883 = call i32 @Between_SL(ptr noundef %880, ptr noundef %881, ptr noundef %882)
  %884 = icmp ne i32 %883, 0
  br i1 %884, label %897, label %885

885:                                              ; preds = %879
  %886 = load ptr, ptr %26, align 8, !tbaa !5
  %887 = load ptr, ptr %28, align 8, !tbaa !5
  %888 = load ptr, ptr %24, align 8, !tbaa !5
  %889 = call i32 @Between_SL(ptr noundef %886, ptr noundef %887, ptr noundef %888)
  %890 = icmp ne i32 %889, 0
  br i1 %890, label %897, label %917

891:                                              ; preds = %873
  %892 = load ptr, ptr %25, align 8, !tbaa !5
  %893 = load ptr, ptr %28, align 8, !tbaa !5
  %894 = load ptr, ptr %27, align 8, !tbaa !5
  %895 = call i32 @Between_SL(ptr noundef %892, ptr noundef %893, ptr noundef %894)
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %917, label %897

897:                                              ; preds = %891, %885, %879, %849, %843, %831
  %898 = load i16, ptr @Reversed, align 2, !tbaa !13
  %899 = sext i16 %898 to i32
  %900 = load ptr, ptr %28, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.Node, ptr %900, i32 0, i32 45
  %902 = load ptr, ptr %901, align 8, !tbaa !15
  %903 = getelementptr inbounds %struct.Segment, ptr %902, i32 0, i32 0
  %904 = load i8, ptr %903, align 8, !tbaa !18
  %905 = sext i8 %904 to i32
  %906 = icmp eq i32 %899, %905
  br i1 %906, label %907, label %911

907:                                              ; preds = %897
  %908 = load ptr, ptr %28, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.Node, ptr %908, i32 0, i32 15
  %910 = load ptr, ptr %909, align 8, !tbaa !21
  br label %915

911:                                              ; preds = %897
  %912 = load ptr, ptr %28, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.Node, ptr %912, i32 0, i32 16
  %914 = load ptr, ptr %913, align 8, !tbaa !20
  br label %915

915:                                              ; preds = %911, %907
  %916 = phi ptr [ %910, %907 ], [ %914, %911 ]
  br label %937

917:                                              ; preds = %891, %885, %849, %831
  %918 = load i16, ptr @Reversed, align 2, !tbaa !13
  %919 = sext i16 %918 to i32
  %920 = load ptr, ptr %28, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.Node, ptr %920, i32 0, i32 45
  %922 = load ptr, ptr %921, align 8, !tbaa !15
  %923 = getelementptr inbounds %struct.Segment, ptr %922, i32 0, i32 0
  %924 = load i8, ptr %923, align 8, !tbaa !18
  %925 = sext i8 %924 to i32
  %926 = icmp eq i32 %919, %925
  br i1 %926, label %927, label %931

927:                                              ; preds = %917
  %928 = load ptr, ptr %28, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.Node, ptr %928, i32 0, i32 16
  %930 = load ptr, ptr %929, align 8, !tbaa !20
  br label %935

931:                                              ; preds = %917
  %932 = load ptr, ptr %28, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.Node, ptr %932, i32 0, i32 15
  %934 = load ptr, ptr %933, align 8, !tbaa !21
  br label %935

935:                                              ; preds = %931, %927
  %936 = phi ptr [ %930, %927 ], [ %934, %931 ]
  br label %937

937:                                              ; preds = %935, %915
  %938 = phi ptr [ %916, %915 ], [ %936, %935 ]
  store ptr %938, ptr %29, align 8, !tbaa !5
  br label %1089

939:                                              ; preds = %822
  %940 = load ptr, ptr %30, align 8, !tbaa !5
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  %942 = load ptr, ptr %22, align 8, !tbaa !5
  %943 = call i32 @Between_SL(ptr noundef %940, ptr noundef %941, ptr noundef %942)
  %944 = icmp ne i32 %943, 0
  br i1 %944, label %945, label %957

945:                                              ; preds = %939
  %946 = load ptr, ptr %30, align 8, !tbaa !5
  %947 = load ptr, ptr %28, align 8, !tbaa !5
  %948 = load ptr, ptr %27, align 8, !tbaa !5
  %949 = call i32 @Between_SL(ptr noundef %946, ptr noundef %947, ptr noundef %948)
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %1067, label %951

951:                                              ; preds = %945
  %952 = load ptr, ptr %23, align 8, !tbaa !5
  %953 = load ptr, ptr %28, align 8, !tbaa !5
  %954 = load ptr, ptr %31, align 8, !tbaa !5
  %955 = call i32 @Between_SL(ptr noundef %952, ptr noundef %953, ptr noundef %954)
  %956 = icmp ne i32 %955, 0
  br i1 %956, label %1067, label %1047

957:                                              ; preds = %939
  %958 = load ptr, ptr %23, align 8, !tbaa !5
  %959 = load ptr, ptr %26, align 8, !tbaa !5
  %960 = load ptr, ptr %31, align 8, !tbaa !5
  %961 = call i32 @Between_SL(ptr noundef %958, ptr noundef %959, ptr noundef %960)
  %962 = icmp ne i32 %961, 0
  br i1 %962, label %963, label %969

963:                                              ; preds = %957
  %964 = load ptr, ptr %23, align 8, !tbaa !5
  %965 = load ptr, ptr %28, align 8, !tbaa !5
  %966 = load ptr, ptr %27, align 8, !tbaa !5
  %967 = call i32 @Between_SL(ptr noundef %964, ptr noundef %965, ptr noundef %966)
  %968 = icmp ne i32 %967, 0
  br i1 %968, label %1067, label %1047

969:                                              ; preds = %957
  %970 = load i16, ptr @Reversed, align 2, !tbaa !13
  %971 = sext i16 %970 to i32
  %972 = load ptr, ptr %31, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.Node, ptr %972, i32 0, i32 45
  %974 = load ptr, ptr %973, align 8, !tbaa !15
  %975 = getelementptr inbounds %struct.Segment, ptr %974, i32 0, i32 0
  %976 = load i8, ptr %975, align 8, !tbaa !18
  %977 = sext i8 %976 to i32
  %978 = icmp eq i32 %971, %977
  br i1 %978, label %979, label %983

979:                                              ; preds = %969
  %980 = load ptr, ptr %31, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.Node, ptr %980, i32 0, i32 16
  %982 = load ptr, ptr %981, align 8, !tbaa !20
  br label %987

983:                                              ; preds = %969
  %984 = load ptr, ptr %31, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.Node, ptr %984, i32 0, i32 15
  %986 = load ptr, ptr %985, align 8, !tbaa !21
  br label %987

987:                                              ; preds = %983, %979
  %988 = phi ptr [ %982, %979 ], [ %986, %983 ]
  %989 = load ptr, ptr %26, align 8, !tbaa !5
  %990 = load ptr, ptr %25, align 8, !tbaa !5
  %991 = call i32 @Between_SL(ptr noundef %988, ptr noundef %989, ptr noundef %990)
  %992 = icmp ne i32 %991, 0
  br i1 %992, label %993, label %1041

993:                                              ; preds = %987
  %994 = load i16, ptr @Reversed, align 2, !tbaa !13
  %995 = sext i16 %994 to i32
  %996 = load ptr, ptr %31, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.Node, ptr %996, i32 0, i32 45
  %998 = load ptr, ptr %997, align 8, !tbaa !15
  %999 = getelementptr inbounds %struct.Segment, ptr %998, i32 0, i32 0
  %1000 = load i8, ptr %999, align 8, !tbaa !18
  %1001 = sext i8 %1000 to i32
  %1002 = icmp eq i32 %995, %1001
  br i1 %1002, label %1003, label %1007

1003:                                             ; preds = %993
  %1004 = load ptr, ptr %31, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.Node, ptr %1004, i32 0, i32 16
  %1006 = load ptr, ptr %1005, align 8, !tbaa !20
  br label %1011

1007:                                             ; preds = %993
  %1008 = load ptr, ptr %31, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.Node, ptr %1008, i32 0, i32 15
  %1010 = load ptr, ptr %1009, align 8, !tbaa !21
  br label %1011

1011:                                             ; preds = %1007, %1003
  %1012 = phi ptr [ %1006, %1003 ], [ %1010, %1007 ]
  %1013 = load ptr, ptr %28, align 8, !tbaa !5
  %1014 = load ptr, ptr %26, align 8, !tbaa !5
  %1015 = call i32 @Between_SL(ptr noundef %1012, ptr noundef %1013, ptr noundef %1014)
  %1016 = icmp ne i32 %1015, 0
  br i1 %1016, label %1067, label %1017

1017:                                             ; preds = %1011
  %1018 = load ptr, ptr %24, align 8, !tbaa !5
  %1019 = load ptr, ptr %28, align 8, !tbaa !5
  %1020 = load i16, ptr @Reversed, align 2, !tbaa !13
  %1021 = sext i16 %1020 to i32
  %1022 = load ptr, ptr %30, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.Node, ptr %1022, i32 0, i32 45
  %1024 = load ptr, ptr %1023, align 8, !tbaa !15
  %1025 = getelementptr inbounds %struct.Segment, ptr %1024, i32 0, i32 0
  %1026 = load i8, ptr %1025, align 8, !tbaa !18
  %1027 = sext i8 %1026 to i32
  %1028 = icmp eq i32 %1021, %1027
  br i1 %1028, label %1029, label %1033

1029:                                             ; preds = %1017
  %1030 = load ptr, ptr %30, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.Node, ptr %1030, i32 0, i32 15
  %1032 = load ptr, ptr %1031, align 8, !tbaa !21
  br label %1037

1033:                                             ; preds = %1017
  %1034 = load ptr, ptr %30, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.Node, ptr %1034, i32 0, i32 16
  %1036 = load ptr, ptr %1035, align 8, !tbaa !20
  br label %1037

1037:                                             ; preds = %1033, %1029
  %1038 = phi ptr [ %1032, %1029 ], [ %1036, %1033 ]
  %1039 = call i32 @Between_SL(ptr noundef %1018, ptr noundef %1019, ptr noundef %1038)
  %1040 = icmp ne i32 %1039, 0
  br i1 %1040, label %1067, label %1047

1041:                                             ; preds = %987
  %1042 = load ptr, ptr %24, align 8, !tbaa !5
  %1043 = load ptr, ptr %28, align 8, !tbaa !5
  %1044 = load ptr, ptr %26, align 8, !tbaa !5
  %1045 = call i32 @Between_SL(ptr noundef %1042, ptr noundef %1043, ptr noundef %1044)
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1067, label %1047

1047:                                             ; preds = %1041, %1037, %963, %951
  %1048 = load i16, ptr @Reversed, align 2, !tbaa !13
  %1049 = sext i16 %1048 to i32
  %1050 = load ptr, ptr %28, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.Node, ptr %1050, i32 0, i32 45
  %1052 = load ptr, ptr %1051, align 8, !tbaa !15
  %1053 = getelementptr inbounds %struct.Segment, ptr %1052, i32 0, i32 0
  %1054 = load i8, ptr %1053, align 8, !tbaa !18
  %1055 = sext i8 %1054 to i32
  %1056 = icmp eq i32 %1049, %1055
  br i1 %1056, label %1057, label %1061

1057:                                             ; preds = %1047
  %1058 = load ptr, ptr %28, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.Node, ptr %1058, i32 0, i32 15
  %1060 = load ptr, ptr %1059, align 8, !tbaa !21
  br label %1065

1061:                                             ; preds = %1047
  %1062 = load ptr, ptr %28, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.Node, ptr %1062, i32 0, i32 16
  %1064 = load ptr, ptr %1063, align 8, !tbaa !20
  br label %1065

1065:                                             ; preds = %1061, %1057
  %1066 = phi ptr [ %1060, %1057 ], [ %1064, %1061 ]
  br label %1087

1067:                                             ; preds = %1041, %1037, %1011, %963, %951, %945
  %1068 = load i16, ptr @Reversed, align 2, !tbaa !13
  %1069 = sext i16 %1068 to i32
  %1070 = load ptr, ptr %28, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.Node, ptr %1070, i32 0, i32 45
  %1072 = load ptr, ptr %1071, align 8, !tbaa !15
  %1073 = getelementptr inbounds %struct.Segment, ptr %1072, i32 0, i32 0
  %1074 = load i8, ptr %1073, align 8, !tbaa !18
  %1075 = sext i8 %1074 to i32
  %1076 = icmp eq i32 %1069, %1075
  br i1 %1076, label %1077, label %1081

1077:                                             ; preds = %1067
  %1078 = load ptr, ptr %28, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.Node, ptr %1078, i32 0, i32 16
  %1080 = load ptr, ptr %1079, align 8, !tbaa !20
  br label %1085

1081:                                             ; preds = %1067
  %1082 = load ptr, ptr %28, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.Node, ptr %1082, i32 0, i32 15
  %1084 = load ptr, ptr %1083, align 8, !tbaa !21
  br label %1085

1085:                                             ; preds = %1081, %1077
  %1086 = phi ptr [ %1080, %1077 ], [ %1084, %1081 ]
  br label %1087

1087:                                             ; preds = %1085, %1065
  %1088 = phi ptr [ %1066, %1065 ], [ %1086, %1085 ]
  store ptr %1088, ptr %29, align 8, !tbaa !5
  br label %1089

1089:                                             ; preds = %1087, %937
  %1090 = load ptr, ptr %29, align 8, !tbaa !5
  %1091 = load ptr, ptr %22, align 8, !tbaa !5
  %1092 = icmp eq ptr %1090, %1091
  br i1 %1092, label %1149, label %1093

1093:                                             ; preds = %1089
  %1094 = load ptr, ptr %28, align 8, !tbaa !5
  %1095 = load ptr, ptr %22, align 8, !tbaa !5
  %1096 = icmp eq ptr %1094, %1095
  br i1 %1096, label %1097, label %1101

1097:                                             ; preds = %1093
  %1098 = load ptr, ptr %29, align 8, !tbaa !5
  %1099 = load ptr, ptr %23, align 8, !tbaa !5
  %1100 = icmp eq ptr %1098, %1099
  br i1 %1100, label %1149, label %1101

1101:                                             ; preds = %1097, %1093
  %1102 = load ptr, ptr %28, align 8, !tbaa !5
  %1103 = load ptr, ptr %24, align 8, !tbaa !5
  %1104 = icmp eq ptr %1102, %1103
  br i1 %1104, label %1105, label %1109

1105:                                             ; preds = %1101
  %1106 = load ptr, ptr %29, align 8, !tbaa !5
  %1107 = load ptr, ptr %25, align 8, !tbaa !5
  %1108 = icmp eq ptr %1106, %1107
  br i1 %1108, label %1149, label %1109

1109:                                             ; preds = %1105, %1101
  %1110 = load ptr, ptr %28, align 8, !tbaa !5
  %1111 = load ptr, ptr %25, align 8, !tbaa !5
  %1112 = icmp eq ptr %1110, %1111
  br i1 %1112, label %1113, label %1117

1113:                                             ; preds = %1109
  %1114 = load ptr, ptr %29, align 8, !tbaa !5
  %1115 = load ptr, ptr %24, align 8, !tbaa !5
  %1116 = icmp eq ptr %1114, %1115
  br i1 %1116, label %1149, label %1117

1117:                                             ; preds = %1113, %1109
  %1118 = load ptr, ptr %28, align 8, !tbaa !5
  %1119 = load ptr, ptr %12, align 8, !tbaa !5
  %1120 = icmp eq ptr %1118, %1119
  br i1 %1120, label %1121, label %1125

1121:                                             ; preds = %1117
  %1122 = load ptr, ptr %29, align 8, !tbaa !5
  %1123 = load ptr, ptr %13, align 8, !tbaa !5
  %1124 = icmp eq ptr %1122, %1123
  br i1 %1124, label %1149, label %1125

1125:                                             ; preds = %1121, %1117
  %1126 = load ptr, ptr %28, align 8, !tbaa !5
  %1127 = load ptr, ptr %13, align 8, !tbaa !5
  %1128 = icmp eq ptr %1126, %1127
  br i1 %1128, label %1129, label %1133

1129:                                             ; preds = %1125
  %1130 = load ptr, ptr %29, align 8, !tbaa !5
  %1131 = load ptr, ptr %12, align 8, !tbaa !5
  %1132 = icmp eq ptr %1130, %1131
  br i1 %1132, label %1149, label %1133

1133:                                             ; preds = %1129, %1125
  %1134 = load ptr, ptr %28, align 8, !tbaa !5
  %1135 = load ptr, ptr %14, align 8, !tbaa !5
  %1136 = icmp eq ptr %1134, %1135
  br i1 %1136, label %1137, label %1141

1137:                                             ; preds = %1133
  %1138 = load ptr, ptr %29, align 8, !tbaa !5
  %1139 = load ptr, ptr %15, align 8, !tbaa !5
  %1140 = icmp eq ptr %1138, %1139
  br i1 %1140, label %1149, label %1141

1141:                                             ; preds = %1137, %1133
  %1142 = load ptr, ptr %28, align 8, !tbaa !5
  %1143 = load ptr, ptr %15, align 8, !tbaa !5
  %1144 = icmp eq ptr %1142, %1143
  br i1 %1144, label %1145, label %1150

1145:                                             ; preds = %1141
  %1146 = load ptr, ptr %29, align 8, !tbaa !5
  %1147 = load ptr, ptr %14, align 8, !tbaa !5
  %1148 = icmp eq ptr %1146, %1147
  br i1 %1148, label %1149, label %1150

1149:                                             ; preds = %1145, %1137, %1129, %1121, %1113, %1105, %1097, %1089
  br label %1245

1150:                                             ; preds = %1145, %1141
  %1151 = load ptr, ptr %28, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.Node, ptr %1151, i32 0, i32 26
  %1153 = load ptr, ptr %1152, align 8, !tbaa !22
  %1154 = load ptr, ptr %29, align 8, !tbaa !5
  %1155 = icmp eq ptr %1153, %1154
  br i1 %1155, label %1172, label %1156

1156:                                             ; preds = %1150
  %1157 = load ptr, ptr %28, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.Node, ptr %1157, i32 0, i32 27
  %1159 = load ptr, ptr %1158, align 8, !tbaa !23
  %1160 = load ptr, ptr %29, align 8, !tbaa !5
  %1161 = icmp eq ptr %1159, %1160
  br i1 %1161, label %1172, label %1162

1162:                                             ; preds = %1156
  %1163 = load ptr, ptr %28, align 8, !tbaa !5
  %1164 = load ptr, ptr %29, align 8, !tbaa !5
  %1165 = call i32 @IsCommonEdge(ptr noundef %1163, ptr noundef %1164)
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1172, label %1167

1167:                                             ; preds = %1162
  %1168 = load ptr, ptr %29, align 8, !tbaa !5
  %1169 = load ptr, ptr %22, align 8, !tbaa !5
  %1170 = call i32 @Forbidden(ptr noundef %1168, ptr noundef %1169)
  %1171 = icmp ne i32 %1170, 0
  br i1 %1171, label %1172, label %1173

1172:                                             ; preds = %1167, %1162, %1156, %1150
  br label %1245

1173:                                             ; preds = %1167
  %1174 = load i64, ptr %39, align 8, !tbaa !11
  %1175 = load ptr, ptr %34, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.Candidate, ptr %1175, i32 0, i32 1
  %1177 = load i32, ptr %1176, align 8, !tbaa !27
  %1178 = sext i32 %1177 to i64
  %1179 = sub nsw i64 %1174, %1178
  store i64 %1179, ptr %40, align 8, !tbaa !11
  %1180 = load i64, ptr %40, align 8, !tbaa !11
  %1181 = load ptr, ptr @C, align 8, !tbaa !5
  %1182 = load ptr, ptr %28, align 8, !tbaa !5
  %1183 = load ptr, ptr %29, align 8, !tbaa !5
  %1184 = call i32 %1181(ptr noundef %1182, ptr noundef %1183)
  %1185 = sext i32 %1184 to i64
  %1186 = add nsw i64 %1180, %1185
  store i64 %1186, ptr %41, align 8, !tbaa !11
  %1187 = load ptr, ptr @c, align 8, !tbaa !5
  %1188 = icmp ne ptr %1187, null
  br i1 %1188, label %1189, label %1198

1189:                                             ; preds = %1173
  %1190 = load i64, ptr %41, align 8, !tbaa !11
  %1191 = load ptr, ptr @c, align 8, !tbaa !5
  %1192 = load ptr, ptr %29, align 8, !tbaa !5
  %1193 = load ptr, ptr %22, align 8, !tbaa !5
  %1194 = call i32 %1191(ptr noundef %1192, ptr noundef %1193)
  %1195 = sext i32 %1194 to i64
  %1196 = sub nsw i64 %1190, %1195
  %1197 = icmp sgt i64 %1196, 0
  br i1 %1197, label %1198, label %1238

1198:                                             ; preds = %1189, %1173
  %1199 = load i64, ptr %41, align 8, !tbaa !11
  %1200 = load ptr, ptr @C, align 8, !tbaa !5
  %1201 = load ptr, ptr %29, align 8, !tbaa !5
  %1202 = load ptr, ptr %22, align 8, !tbaa !5
  %1203 = call i32 %1200(ptr noundef %1201, ptr noundef %1202)
  %1204 = sext i32 %1203 to i64
  %1205 = sub nsw i64 %1199, %1204
  store i64 %1205, ptr %42, align 8, !tbaa !11
  %1206 = icmp sgt i64 %1205, 0
  br i1 %1206, label %1207, label %1238

1207:                                             ; preds = %1198
  %1208 = load i32, ptr %43, align 4, !tbaa !9
  %1209 = icmp eq i32 %1208, 1
  br i1 %1209, label %1210, label %1223

1210:                                             ; preds = %1207
  %1211 = load ptr, ptr %12, align 8, !tbaa !5
  %1212 = load ptr, ptr %13, align 8, !tbaa !5
  %1213 = load ptr, ptr %15, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1211, ptr noundef %1212, ptr noundef %1213)
  %1214 = load ptr, ptr %24, align 8, !tbaa !5
  %1215 = load ptr, ptr %25, align 8, !tbaa !5
  %1216 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1214, ptr noundef %1215, ptr noundef %1216)
  %1217 = load ptr, ptr %12, align 8, !tbaa !5
  %1218 = load ptr, ptr %14, align 8, !tbaa !5
  %1219 = load ptr, ptr %13, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1217, ptr noundef %1218, ptr noundef %1219)
  %1220 = load ptr, ptr %26, align 8, !tbaa !5
  %1221 = load ptr, ptr %27, align 8, !tbaa !5
  %1222 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1220, ptr noundef %1221, ptr noundef %1222)
  br label %1233

1223:                                             ; preds = %1207
  %1224 = load ptr, ptr %22, align 8, !tbaa !5
  %1225 = load ptr, ptr %23, align 8, !tbaa !5
  %1226 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1224, ptr noundef %1225, ptr noundef %1226)
  %1227 = load ptr, ptr %12, align 8, !tbaa !5
  %1228 = load ptr, ptr %13, align 8, !tbaa !5
  %1229 = load ptr, ptr %14, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1227, ptr noundef %1228, ptr noundef %1229)
  %1230 = load ptr, ptr %26, align 8, !tbaa !5
  %1231 = load ptr, ptr %27, align 8, !tbaa !5
  %1232 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1230, ptr noundef %1231, ptr noundef %1232)
  br label %1233

1233:                                             ; preds = %1223, %1210
  %1234 = load ptr, ptr %28, align 8, !tbaa !5
  %1235 = load ptr, ptr %29, align 8, !tbaa !5
  %1236 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Flip_SL(ptr noundef %1234, ptr noundef %1235, ptr noundef %1236)
  %1237 = load i64, ptr %42, align 8, !tbaa !11
  store i64 %1237, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

1238:                                             ; preds = %1198, %1189
  %1239 = load i32, ptr %46, align 4, !tbaa !9
  %1240 = add nsw i32 %1239, 1
  store i32 %1240, ptr %46, align 4, !tbaa !9
  %1241 = load i32, ptr @MaxBreadth, align 4, !tbaa !9
  %1242 = icmp sgt i32 %1240, %1241
  br i1 %1242, label %1243, label %1244

1243:                                             ; preds = %1238
  br label %1248

1244:                                             ; preds = %1238
  br label %1245

1245:                                             ; preds = %1244, %1172, %1149, %821
  %1246 = load ptr, ptr %34, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.Candidate, ptr %1246, i32 1
  store ptr %1247, ptr %34, align 8, !tbaa !5
  br label %804, !llvm.loop !28

1248:                                             ; preds = %1243, %804
  br label %1249

1249:                                             ; preds = %1248, %726, %626
  %1250 = load ptr, ptr %33, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.Candidate, ptr %1250, i32 1
  store ptr %1251, ptr %33, align 8, !tbaa !5
  br label %601, !llvm.loop !30

1252:                                             ; preds = %799, %601
  br label %1253

1253:                                             ; preds = %1252, %596, %378
  %1254 = load i32, ptr %43, align 4, !tbaa !9
  %1255 = add nsw i32 %1254, 1
  store i32 %1255, ptr %43, align 4, !tbaa !9
  br label %246, !llvm.loop !31

1256:                                             ; preds = %246
  br label %1257

1257:                                             ; preds = %1256, %232
  %1258 = load ptr, ptr %32, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.Candidate, ptr %1258, i32 1
  store ptr %1259, ptr %32, align 8, !tbaa !5
  br label %209, !llvm.loop !32

1260:                                             ; preds = %244, %209
  br label %1261

1261:                                             ; preds = %1260, %197
  %1262 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %1262, ptr %22, align 8, !tbaa !5
  br label %93, !llvm.loop !33

1263:                                             ; preds = %93
  store i64 0, ptr %11, align 8
  store i32 1, ptr %47, align 4
  br label %1264

1264:                                             ; preds = %1263, %1233, %792, %590, %538, %486, %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  %1265 = load i64, ptr %11, align 8
  ret i64 %1265
}

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

declare i32 @SegmentSize(ptr noundef, ptr noundef) #2

declare i32 @IsCommonEdge(ptr noundef, ptr noundef) #2

declare i32 @Between_SL(ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @Forbidden(ptr noundef, ptr noundef) #2

declare void @Flip_SL(ptr noundef, ptr noundef, ptr noundef) #2

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !6, i64 304}
!16 = !{!"Node", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !17, i64 312, !17, i64 320, !17, i64 328, !17, i64 336, !17, i64 344, !17, i64 352, !7, i64 360, !7, i64 361, !7, i64 362}
!17 = !{!"double", !7, i64 0}
!18 = !{!19, !7, i64 0}
!19 = !{!"Segment", !7, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !6, i64 48}
!20 = !{!16, !6, i64 72}
!21 = !{!16, !6, i64 64}
!22 = !{!16, !6, i64 152}
!23 = !{!16, !6, i64 160}
!24 = !{!16, !6, i64 288}
!25 = !{!26, !6, i64 0}
!26 = !{!"Candidate", !6, i64 0, !10, i64 8, !10, i64 12}
!27 = !{!26, !10, i64 8}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}


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

@Dimension = external dso_local local_unnamed_addr global i32, align 4
@Reversed = external dso_local local_unnamed_addr global i16, align 2
@C = external dso_local local_unnamed_addr global ptr, align 8
@MaxBreadth = external dso_local local_unnamed_addr global i32, align 4
@c = external dso_local local_unnamed_addr global ptr, align 8

; Function Attrs: nounwind uwtable
define dso_local range(i64 0, -9223372036854775808) i64 @BridgeGain(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef %8, i64 noundef %9) local_unnamed_addr #0 {
  switch i32 %8, label %.loopexit619 [
    i32 3, label %11
    i32 4, label %15
    i32 0, label %19
    i32 7, label %19
  ]

11:                                               ; preds = %10
  %12 = tail call i32 @SegmentSize(ptr noundef %4, ptr noundef %3) #2
  %13 = shl nsw i32 %12, 1
  %14 = load i32, ptr @Dimension, align 4, !tbaa !5
  %.not527 = icmp sgt i32 %13, %14
  %. = select i1 %.not527, ptr %5, ptr %3
  %.583 = select i1 %.not527, ptr %2, ptr %4
  br label %23

15:                                               ; preds = %10
  %16 = tail call i32 @SegmentSize(ptr noundef %1, ptr noundef %4) #2
  %17 = shl nsw i32 %16, 1
  %18 = load i32, ptr @Dimension, align 4, !tbaa !5
  %.not526 = icmp sgt i32 %17, %18
  %.584 = select i1 %.not526, ptr %0, ptr %4
  %.585 = select i1 %.not526, ptr %5, ptr %1
  br label %23

19:                                               ; preds = %10, %10
  %20 = tail call i32 @SegmentSize(ptr noundef %1, ptr noundef %2) #2
  %21 = shl nsw i32 %20, 1
  %22 = load i32, ptr @Dimension, align 4, !tbaa !5
  %.not = icmp sgt i32 %21, %22
  %.586 = select i1 %.not, ptr %0, ptr %2
  %.587 = select i1 %.not, ptr %3, ptr %1
  br label %23

23:                                               ; preds = %19, %15, %11
  %.0505 = phi ptr [ %., %11 ], [ %.584, %15 ], [ %.586, %19 ]
  %.0504 = phi ptr [ %.583, %11 ], [ %.585, %15 ], [ %.587, %19 ]
  %.not528678 = icmp eq ptr %.0504, %.0505
  br i1 %.not528678, label %.loopexit619, label %.lr.ph680

.lr.ph680:                                        ; preds = %23
  %.not546 = icmp eq i32 %8, 0
  %24 = getelementptr inbounds i8, ptr %.0505, i64 304
  %25 = getelementptr inbounds i8, ptr %.0505, i64 72
  %26 = getelementptr inbounds i8, ptr %.0505, i64 64
  %27 = getelementptr inbounds i8, ptr %.0504, i64 304
  br label %28

28:                                               ; preds = %.lr.ph680, %.loopexit618
  %.0502679 = phi ptr [ %.0504, %.lr.ph680 ], [ %35, %.loopexit618 ]
  %29 = load i16, ptr @Reversed, align 2, !tbaa !9
  %30 = getelementptr inbounds i8, ptr %.0502679, i64 304
  %31 = load ptr, ptr %30, align 8, !tbaa !11
  %32 = load i8, ptr %31, align 8, !tbaa !15
  %33 = sext i8 %32 to i16
  %34 = icmp eq i16 %29, %33
  %.in.v = select i1 %34, i64 72, i64 64
  %.in = getelementptr inbounds i8, ptr %.0502679, i64 %.in.v
  %35 = load ptr, ptr %.in, align 8, !tbaa !17
  %36 = icmp eq ptr %.0502679, %0
  %37 = icmp eq ptr %35, %1
  %or.cond = select i1 %36, i1 %37, i1 false
  br i1 %or.cond, label %.loopexit618, label %38

38:                                               ; preds = %28
  %39 = icmp eq ptr %.0502679, %1
  %40 = icmp eq ptr %35, %0
  %or.cond588 = select i1 %39, i1 %40, i1 false
  br i1 %or.cond588, label %.loopexit618, label %41

41:                                               ; preds = %38
  %42 = icmp eq ptr %.0502679, %2
  %43 = icmp eq ptr %35, %3
  %or.cond589 = select i1 %42, i1 %43, i1 false
  br i1 %or.cond589, label %.loopexit618, label %44

44:                                               ; preds = %41
  %45 = icmp eq ptr %.0502679, %3
  %46 = icmp eq ptr %35, %2
  %or.cond590 = select i1 %45, i1 %46, i1 false
  br i1 %or.cond590, label %.loopexit618, label %47

47:                                               ; preds = %44
  %48 = icmp eq ptr %.0502679, %4
  %49 = icmp eq ptr %35, %5
  %or.cond591 = select i1 %48, i1 %49, i1 false
  br i1 %or.cond591, label %.loopexit618, label %50

50:                                               ; preds = %47
  %51 = icmp eq ptr %.0502679, %5
  %52 = icmp eq ptr %35, %4
  %or.cond592 = select i1 %51, i1 %52, i1 false
  br i1 %or.cond592, label %.loopexit618, label %53

53:                                               ; preds = %50
  %54 = icmp eq ptr %.0502679, %6
  %55 = icmp eq ptr %35, %7
  %or.cond593 = select i1 %54, i1 %55, i1 false
  br i1 %or.cond593, label %.loopexit618, label %56

56:                                               ; preds = %53
  %57 = icmp eq ptr %.0502679, %7
  %58 = icmp eq ptr %35, %6
  %or.cond594 = select i1 %57, i1 %58, i1 false
  br i1 %or.cond594, label %.loopexit618, label %59

59:                                               ; preds = %56
  %60 = getelementptr inbounds i8, ptr %.0502679, i64 152
  %61 = load ptr, ptr %60, align 8, !tbaa !18
  %62 = icmp eq ptr %61, %35
  br i1 %62, label %.loopexit618, label %63

63:                                               ; preds = %59
  %64 = getelementptr inbounds i8, ptr %.0502679, i64 160
  %65 = load ptr, ptr %64, align 8, !tbaa !19
  %66 = icmp eq ptr %65, %35
  br i1 %66, label %.loopexit618, label %67

67:                                               ; preds = %63
  %68 = tail call i32 @IsCommonEdge(ptr noundef nonnull %.0502679, ptr noundef %35) #2
  %.not529 = icmp eq i32 %68, 0
  br i1 %.not529, label %69, label %.loopexit618

69:                                               ; preds = %67
  %70 = load ptr, ptr @C, align 8, !tbaa !17
  %71 = tail call i32 %70(ptr noundef nonnull %.0502679, ptr noundef %35) #2
  %72 = sext i32 %71 to i64
  %73 = add nsw i64 %72, %9
  %74 = getelementptr inbounds i8, ptr %35, i64 288
  %75 = load ptr, ptr %74, align 8, !tbaa !20
  %76 = load ptr, ptr %75, align 8, !tbaa !21
  %.not530673 = icmp eq ptr %76, null
  br i1 %.not530673, label %.loopexit618, label %.lr.ph676

.lr.ph676:                                        ; preds = %69
  %77 = getelementptr inbounds i8, ptr %35, i64 64
  %78 = getelementptr inbounds i8, ptr %35, i64 72
  br label %79

79:                                               ; preds = %.lr.ph676, %.loopexit617
  %80 = phi ptr [ %76, %.lr.ph676 ], [ %448, %.loopexit617 ]
  %.0498675 = phi i32 [ 0, %.lr.ph676 ], [ %.1499, %.loopexit617 ]
  %.0506674 = phi ptr [ %75, %.lr.ph676 ], [ %447, %.loopexit617 ]
  %81 = load ptr, ptr %77, align 8, !tbaa !23
  %82 = icmp eq ptr %80, %81
  br i1 %82, label %.loopexit617, label %83

83:                                               ; preds = %79
  %84 = load ptr, ptr %78, align 8, !tbaa !24
  %85 = icmp eq ptr %80, %84
  br i1 %85, label %.loopexit617, label %86

86:                                               ; preds = %83
  %87 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %80, ptr noundef %.0505) #2
  %.not531 = icmp eq i32 %87, 0
  br i1 %.not531, label %88, label %.loopexit617

88:                                               ; preds = %86
  %89 = getelementptr inbounds i8, ptr %.0506674, i64 8
  %90 = load i32, ptr %89, align 8, !tbaa !25
  %91 = sext i32 %90 to i64
  %92 = sub i64 %73, %91
  %93 = add nsw i32 %.0498675, 1
  %94 = load i32, ptr @MaxBreadth, align 4, !tbaa !5
  %.not532 = icmp slt i32 %.0498675, %94
  br i1 %.not532, label %.preheader, label %.loopexit618

.preheader:                                       ; preds = %88
  %95 = getelementptr inbounds i8, ptr %80, i64 304
  %96 = icmp eq ptr %80, %0
  %97 = icmp eq ptr %80, %1
  %98 = icmp eq ptr %80, %2
  %99 = icmp eq ptr %80, %3
  %100 = icmp eq ptr %80, %4
  %101 = icmp eq ptr %80, %5
  %102 = icmp eq ptr %80, %6
  %103 = icmp eq ptr %80, %7
  %104 = getelementptr inbounds i8, ptr %80, i64 152
  %105 = getelementptr inbounds i8, ptr %80, i64 160
  br label %106

106:                                              ; preds = %.preheader, %.loopexit616
  %.0500672 = phi i32 [ 1, %.preheader ], [ %446, %.loopexit616 ]
  %107 = icmp eq i32 %.0500672, 1
  %108 = load i16, ptr @Reversed, align 2, !tbaa !9
  %109 = load ptr, ptr %95, align 8, !tbaa !11
  %110 = load i8, ptr %109, align 8, !tbaa !15
  %111 = sext i8 %110 to i16
  %112 = icmp eq i16 %108, %111
  %113 = xor i1 %112, %107
  %.681.v.pn = select i1 %113, i64 64, i64 72
  %.in533 = getelementptr inbounds i8, ptr %80, i64 %.681.v.pn
  %114 = load ptr, ptr %.in533, align 8, !tbaa !17
  %115 = icmp eq ptr %114, %35
  %116 = icmp eq ptr %114, %1
  %or.cond595 = and i1 %96, %116
  %or.cond683 = or i1 %115, %or.cond595
  %117 = icmp eq ptr %114, %0
  %or.cond596 = and i1 %97, %117
  %or.cond684 = or i1 %or.cond683, %or.cond596
  %118 = icmp eq ptr %114, %3
  %or.cond597 = and i1 %98, %118
  %or.cond685 = or i1 %or.cond684, %or.cond597
  %119 = icmp eq ptr %114, %2
  %or.cond598 = and i1 %99, %119
  %or.cond686 = or i1 %or.cond685, %or.cond598
  %120 = icmp eq ptr %114, %5
  %or.cond599 = and i1 %100, %120
  %or.cond687 = or i1 %or.cond686, %or.cond599
  %121 = icmp eq ptr %114, %4
  %or.cond600 = and i1 %101, %121
  %or.cond688 = or i1 %or.cond687, %or.cond600
  %122 = icmp eq ptr %114, %7
  %or.cond601 = and i1 %102, %122
  %or.cond689 = or i1 %or.cond688, %or.cond601
  %123 = icmp eq ptr %114, %6
  %or.cond602 = and i1 %103, %123
  %or.cond690 = or i1 %or.cond689, %or.cond602
  br i1 %or.cond690, label %.loopexit616, label %124

124:                                              ; preds = %106
  %125 = load ptr, ptr %104, align 8, !tbaa !18
  %126 = icmp eq ptr %125, %114
  br i1 %126, label %.loopexit616, label %127

127:                                              ; preds = %124
  %128 = load ptr, ptr %105, align 8, !tbaa !19
  %129 = icmp eq ptr %128, %114
  br i1 %129, label %.loopexit616, label %130

130:                                              ; preds = %127
  %131 = tail call i32 @IsCommonEdge(ptr noundef nonnull %80, ptr noundef %114) #2
  %.not534 = icmp eq i32 %131, 0
  br i1 %.not534, label %132, label %.loopexit616

132:                                              ; preds = %130
  %133 = load ptr, ptr @C, align 8, !tbaa !17
  %134 = tail call i32 %133(ptr noundef nonnull %80, ptr noundef %114) #2
  %135 = sext i32 %134 to i64
  %136 = add nsw i64 %92, %135
  %137 = tail call i32 @Forbidden(ptr noundef %114, ptr noundef %.0502679) #2
  %.not535 = icmp eq i32 %137, 0
  br i1 %.not535, label %138, label %193

138:                                              ; preds = %132
  %139 = load ptr, ptr @c, align 8, !tbaa !17
  %.not536 = icmp eq ptr %139, null
  br i1 %.not536, label %144, label %140

140:                                              ; preds = %138
  %141 = tail call i32 %139(ptr noundef %114, ptr noundef %.0502679) #2
  %142 = sext i32 %141 to i64
  %143 = icmp sgt i64 %136, %142
  br i1 %143, label %144, label %193

144:                                              ; preds = %140, %138
  %145 = load ptr, ptr @C, align 8, !tbaa !17
  %146 = tail call i32 %145(ptr noundef %114, ptr noundef %.0502679) #2
  %147 = sext i32 %146 to i64
  %148 = sub nsw i64 %136, %147
  %149 = icmp sgt i64 %148, 0
  br i1 %149, label %150, label %193

150:                                              ; preds = %144
  switch i32 %8, label %.loopexit616 [
    i32 0, label %151
    i32 3, label %154
    i32 4, label %167
    i32 7, label %180
  ]

151:                                              ; preds = %150
  br i1 %107, label %152, label %153

152:                                              ; preds = %151
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %3) #2
  tail call void @Flip_SL(ptr noundef nonnull %80, ptr noundef %114, ptr noundef %.0502679) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %2, ptr noundef %1) #2
  br label %.loopexit619

153:                                              ; preds = %151
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2
  br label %.loopexit619

154:                                              ; preds = %150
  %155 = zext i1 %107 to i32
  %156 = tail call i32 @Between_SL(ptr noundef %1, ptr noundef %.0502679, ptr noundef %5) #2
  %.not543 = icmp eq i32 %156, 0
  br i1 %.not543, label %157, label %160

157:                                              ; preds = %154
  %158 = tail call i32 @Between_SL(ptr noundef %1, ptr noundef nonnull %80, ptr noundef %5) #2
  %.not544 = icmp eq i32 %158, 0
  %159 = zext i1 %.not544 to i32
  br label %160

160:                                              ; preds = %157, %154
  %161 = phi i32 [ 0, %154 ], [ %159, %157 ]
  %162 = icmp eq i32 %161, %155
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %4, ptr noundef %5, ptr noundef %0) #2
  br label %165

164:                                              ; preds = %160
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef %114) #2
  tail call void @Flip_SL(ptr noundef %4, ptr noundef %5, ptr noundef %0) #2
  tail call void @Flip_SL(ptr noundef %35, ptr noundef %114, ptr noundef %.0502679) #2
  br label %165

165:                                              ; preds = %164, %163
  %.not545 = icmp eq ptr %7, null
  br i1 %.not545, label %.loopexit619, label %166

166:                                              ; preds = %165
  tail call void @Flip_SL(ptr noundef %6, ptr noundef nonnull %7, ptr noundef %0) #2
  br label %.loopexit619

167:                                              ; preds = %150
  %168 = zext i1 %107 to i32
  %169 = tail call i32 @Between_SL(ptr noundef %2, ptr noundef %.0502679, ptr noundef %4) #2
  %.not540 = icmp eq i32 %169, 0
  br i1 %.not540, label %170, label %173

170:                                              ; preds = %167
  %171 = tail call i32 @Between_SL(ptr noundef %2, ptr noundef nonnull %80, ptr noundef %4) #2
  %.not541 = icmp eq i32 %171, 0
  %172 = zext i1 %.not541 to i32
  br label %173

173:                                              ; preds = %170, %167
  %174 = phi i32 [ 0, %167 ], [ %172, %170 ]
  %175 = icmp eq i32 %174, %168
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2
  br i1 %175, label %176, label %177

176:                                              ; preds = %173
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %4, ptr noundef %5, ptr noundef %0) #2
  br label %178

177:                                              ; preds = %173
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef %114) #2
  tail call void @Flip_SL(ptr noundef %4, ptr noundef %5, ptr noundef %0) #2
  tail call void @Flip_SL(ptr noundef %35, ptr noundef %114, ptr noundef %.0502679) #2
  br label %178

178:                                              ; preds = %177, %176
  %.not542 = icmp eq ptr %7, null
  br i1 %.not542, label %.loopexit619, label %179

179:                                              ; preds = %178
  tail call void @Flip_SL(ptr noundef %6, ptr noundef nonnull %7, ptr noundef %0) #2
  br label %.loopexit619

180:                                              ; preds = %150
  %181 = zext i1 %107 to i32
  %182 = tail call i32 @Between_SL(ptr noundef %3, ptr noundef %.0502679, ptr noundef %5) #2
  %.not537 = icmp eq i32 %182, 0
  br i1 %.not537, label %183, label %186

183:                                              ; preds = %180
  %184 = tail call i32 @Between_SL(ptr noundef %3, ptr noundef nonnull %80, ptr noundef %5) #2
  %.not538 = icmp eq i32 %184, 0
  %185 = zext i1 %.not538 to i32
  br label %186

186:                                              ; preds = %183, %180
  %187 = phi i32 [ 0, %180 ], [ %185, %183 ]
  %188 = icmp eq i32 %187, %181
  tail call void @Flip_SL(ptr noundef %4, ptr noundef %5, ptr noundef %0) #2
  br i1 %188, label %189, label %190

189:                                              ; preds = %186
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %2, ptr noundef %3, ptr noundef %4) #2
  br label %191

190:                                              ; preds = %186
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef %114) #2
  tail call void @Flip_SL(ptr noundef %2, ptr noundef %3, ptr noundef %4) #2
  tail call void @Flip_SL(ptr noundef %35, ptr noundef %114, ptr noundef %.0502679) #2
  br label %191

191:                                              ; preds = %190, %189
  %.not539 = icmp eq ptr %7, null
  br i1 %.not539, label %.loopexit619, label %192

192:                                              ; preds = %191
  tail call void @Flip_SL(ptr noundef %6, ptr noundef nonnull %7, ptr noundef %0) #2
  br label %.loopexit619

193:                                              ; preds = %144, %140, %132
  br i1 %.not546, label %194, label %.loopexit616

194:                                              ; preds = %193
  %195 = getelementptr inbounds i8, ptr %114, i64 288
  %196 = load ptr, ptr %195, align 8, !tbaa !20
  %197 = load ptr, ptr %196, align 8, !tbaa !21
  %.not547667 = icmp eq ptr %197, null
  br i1 %.not547667, label %.loopexit616, label %.lr.ph670

.lr.ph670:                                        ; preds = %194
  %198 = getelementptr inbounds i8, ptr %114, i64 64
  %199 = getelementptr inbounds i8, ptr %114, i64 72
  br label %200

200:                                              ; preds = %.lr.ph670, %.loopexit
  %201 = phi ptr [ %197, %.lr.ph670 ], [ %445, %.loopexit ]
  %.0496669 = phi i32 [ 0, %.lr.ph670 ], [ %.1497, %.loopexit ]
  %.0507668 = phi ptr [ %196, %.lr.ph670 ], [ %444, %.loopexit ]
  %202 = load ptr, ptr %198, align 8, !tbaa !23
  %203 = icmp eq ptr %201, %202
  br i1 %203, label %.loopexit, label %204

204:                                              ; preds = %200
  %205 = load ptr, ptr %199, align 8, !tbaa !24
  %206 = icmp eq ptr %201, %205
  %207 = icmp eq ptr %201, %.0502679
  %or.cond603 = or i1 %207, %206
  %208 = icmp eq ptr %201, %35
  %or.cond604 = select i1 %or.cond603, i1 true, i1 %208
  br i1 %or.cond604, label %.loopexit, label %209

209:                                              ; preds = %204
  br i1 %107, label %._crit_edge, label %210

._crit_edge:                                      ; preds = %209
  %.pre = load i16, ptr @Reversed, align 2, !tbaa !9
  br label %212

210:                                              ; preds = %209
  %211 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %201, ptr noundef %.0505) #2
  %.not548 = icmp eq i32 %211, 0
  %.pre737 = load i16, ptr @Reversed, align 2, !tbaa !9
  br i1 %.not548, label %219, label %212

212:                                              ; preds = %._crit_edge, %210
  %213 = phi i16 [ %.pre, %._crit_edge ], [ %.pre737, %210 ]
  %214 = getelementptr inbounds i8, ptr %201, i64 304
  %215 = load ptr, ptr %214, align 8, !tbaa !11
  %216 = load i8, ptr %215, align 8, !tbaa !15
  %217 = sext i8 %216 to i16
  %218 = icmp eq i16 %213, %217
  %.788 = select i1 %218, i64 64, i64 72
  br label %225

219:                                              ; preds = %210
  %220 = getelementptr inbounds i8, ptr %201, i64 304
  %221 = load ptr, ptr %220, align 8, !tbaa !11
  %222 = load i8, ptr %221, align 8, !tbaa !15
  %223 = sext i8 %222 to i16
  %224 = icmp eq i16 %.pre737, %223
  %.789 = select i1 %224, i64 72, i64 64
  br label %225

225:                                              ; preds = %219, %212
  %.sink = phi i64 [ %.788, %212 ], [ %.789, %219 ]
  %226 = getelementptr inbounds i8, ptr %201, i64 %.sink
  %227 = load ptr, ptr %226, align 8, !tbaa !17
  %228 = icmp eq ptr %201, %0
  %229 = icmp eq ptr %227, %1
  %or.cond605 = select i1 %228, i1 %229, i1 false
  br i1 %or.cond605, label %.loopexit, label %230

230:                                              ; preds = %225
  %231 = icmp eq ptr %201, %1
  %232 = icmp eq ptr %227, %0
  %or.cond606 = select i1 %231, i1 %232, i1 false
  br i1 %or.cond606, label %.loopexit, label %233

233:                                              ; preds = %230
  %234 = icmp eq ptr %201, %2
  %235 = icmp eq ptr %227, %3
  %or.cond607 = select i1 %234, i1 %235, i1 false
  br i1 %or.cond607, label %.loopexit, label %236

236:                                              ; preds = %233
  %237 = icmp eq ptr %201, %3
  %238 = icmp eq ptr %227, %2
  %or.cond608 = select i1 %237, i1 %238, i1 false
  br i1 %or.cond608, label %.loopexit, label %239

239:                                              ; preds = %236
  %240 = getelementptr inbounds i8, ptr %201, i64 152
  %241 = load ptr, ptr %240, align 8, !tbaa !18
  %242 = icmp eq ptr %241, %227
  br i1 %242, label %.loopexit, label %243

243:                                              ; preds = %239
  %244 = getelementptr inbounds i8, ptr %201, i64 160
  %245 = load ptr, ptr %244, align 8, !tbaa !19
  %246 = icmp eq ptr %245, %227
  br i1 %246, label %.loopexit, label %247

247:                                              ; preds = %243
  %248 = tail call i32 @IsCommonEdge(ptr noundef nonnull %201, ptr noundef %227) #2
  %.not550 = icmp eq i32 %248, 0
  br i1 %.not550, label %249, label %.loopexit

249:                                              ; preds = %247
  %250 = getelementptr inbounds i8, ptr %.0507668, i64 8
  %251 = load i32, ptr %250, align 8, !tbaa !25
  %252 = sext i32 %251 to i64
  %253 = sub nsw i64 %136, %252
  %254 = load ptr, ptr @C, align 8, !tbaa !17
  %255 = tail call i32 %254(ptr noundef nonnull %201, ptr noundef %227) #2
  %256 = sext i32 %255 to i64
  %257 = add nsw i64 %253, %256
  %258 = tail call i32 @Forbidden(ptr noundef %227, ptr noundef %.0502679) #2
  %.not551 = icmp eq i32 %258, 0
  br i1 %.not551, label %259, label %274

259:                                              ; preds = %249
  %260 = load ptr, ptr @c, align 8, !tbaa !17
  %.not552 = icmp eq ptr %260, null
  br i1 %.not552, label %265, label %261

261:                                              ; preds = %259
  %262 = tail call i32 %260(ptr noundef %227, ptr noundef %.0502679) #2
  %263 = sext i32 %262 to i64
  %264 = icmp sgt i64 %257, %263
  br i1 %264, label %265, label %274

265:                                              ; preds = %261, %259
  %266 = load ptr, ptr @C, align 8, !tbaa !17
  %267 = tail call i32 %266(ptr noundef %227, ptr noundef %.0502679) #2
  %268 = sext i32 %267 to i64
  %269 = sub nsw i64 %257, %268
  %270 = icmp sgt i64 %269, 0
  br i1 %270, label %271, label %274

271:                                              ; preds = %265
  br i1 %107, label %272, label %273

272:                                              ; preds = %271
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %3) #2
  tail call void @Flip_SL(ptr noundef nonnull %80, ptr noundef nonnull %114, ptr noundef %.0502679) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %2, ptr noundef %1) #2
  tail call void @Flip_SL(ptr noundef nonnull %201, ptr noundef %227, ptr noundef %.0502679) #2
  br label %.loopexit619

273:                                              ; preds = %271
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2
  tail call void @Flip_SL(ptr noundef nonnull %201, ptr noundef %227, ptr noundef %.0502679) #2
  br label %.loopexit619

274:                                              ; preds = %265, %261, %249
  %275 = add nsw i32 %.0496669, 1
  %276 = load i32, ptr @MaxBreadth, align 4, !tbaa !5
  %.not553 = icmp slt i32 %.0496669, %276
  br i1 %.not553, label %277, label %.loopexit616

277:                                              ; preds = %274
  %278 = getelementptr inbounds i8, ptr %227, i64 288
  %279 = load ptr, ptr %278, align 8, !tbaa !20
  %280 = load ptr, ptr %279, align 8, !tbaa !21
  %.not554663 = icmp eq ptr %280, null
  br i1 %.not554663, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %277
  %281 = getelementptr inbounds i8, ptr %227, i64 64
  %282 = getelementptr inbounds i8, ptr %227, i64 72
  br label %283

283:                                              ; preds = %.lr.ph, %441
  %284 = phi ptr [ %280, %.lr.ph ], [ %443, %441 ]
  %.0665 = phi i32 [ 0, %.lr.ph ], [ %.1, %441 ]
  %.0508664 = phi ptr [ %279, %.lr.ph ], [ %442, %441 ]
  %285 = load ptr, ptr %281, align 8, !tbaa !23
  %286 = icmp eq ptr %284, %285
  br i1 %286, label %441, label %287

287:                                              ; preds = %283
  %288 = load ptr, ptr %282, align 8, !tbaa !24
  %289 = icmp eq ptr %284, %288
  br i1 %289, label %441, label %290

290:                                              ; preds = %287
  %291 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %201, ptr noundef %.0502679) #2
  %.not568 = icmp eq i32 %291, 0
  br i1 %107, label %292, label %329

292:                                              ; preds = %290
  br i1 %.not568, label %295, label %293

293:                                              ; preds = %292
  %294 = tail call i32 @Between_SL(ptr noundef nonnull %201, ptr noundef nonnull %284, ptr noundef %.0502679) #2
  %.not577 = icmp eq i32 %294, 0
  br i1 %.not577, label %322, label %315

295:                                              ; preds = %292
  %296 = tail call i32 @Between_SL(ptr noundef %35, ptr noundef nonnull %201, ptr noundef %.0505) #2
  %.not569 = icmp eq i32 %296, 0
  br i1 %.not569, label %301, label %297

297:                                              ; preds = %295
  %298 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %284, ptr noundef %.0502679) #2
  %.not575 = icmp eq i32 %298, 0
  br i1 %.not575, label %299, label %315

299:                                              ; preds = %297
  %300 = tail call i32 @Between_SL(ptr noundef nonnull %201, ptr noundef nonnull %284, ptr noundef %.0505) #2
  %.not576 = icmp eq i32 %300, 0
  br i1 %.not576, label %322, label %315

301:                                              ; preds = %295
  %302 = load i16, ptr @Reversed, align 2, !tbaa !9
  %303 = load ptr, ptr %24, align 8, !tbaa !11
  %304 = load i8, ptr %303, align 8, !tbaa !15
  %305 = sext i8 %304 to i16
  %306 = icmp eq i16 %302, %305
  %.in570.v = select i1 %306, i64 72, i64 64
  %.in570 = getelementptr inbounds i8, ptr %.0505, i64 %.in570.v
  %307 = load ptr, ptr %.in570, align 8, !tbaa !17
  %308 = tail call i32 @Between_SL(ptr noundef %307, ptr noundef nonnull %201, ptr noundef nonnull %80) #2
  %.not571 = icmp eq i32 %308, 0
  br i1 %.not571, label %313, label %309

309:                                              ; preds = %301
  %310 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %284, ptr noundef nonnull %.0505) #2
  %.not573 = icmp eq i32 %310, 0
  br i1 %.not573, label %311, label %315

311:                                              ; preds = %309
  %312 = tail call i32 @Between_SL(ptr noundef nonnull %201, ptr noundef nonnull %284, ptr noundef nonnull %80) #2
  %.not574 = icmp eq i32 %312, 0
  br i1 %.not574, label %322, label %315

313:                                              ; preds = %301
  %314 = tail call i32 @Between_SL(ptr noundef %114, ptr noundef nonnull %284, ptr noundef nonnull %227) #2
  %.not572 = icmp eq i32 %314, 0
  br i1 %.not572, label %315, label %322

315:                                              ; preds = %313, %311, %309, %299, %297, %293
  %316 = load i16, ptr @Reversed, align 2, !tbaa !9
  %317 = getelementptr inbounds i8, ptr %284, i64 304
  %318 = load ptr, ptr %317, align 8, !tbaa !11
  %319 = load i8, ptr %318, align 8, !tbaa !15
  %320 = sext i8 %319 to i16
  %321 = icmp eq i16 %316, %320
  %.790 = select i1 %321, i64 64, i64 72
  br label %378

322:                                              ; preds = %313, %311, %299, %293
  %323 = load i16, ptr @Reversed, align 2, !tbaa !9
  %324 = getelementptr inbounds i8, ptr %284, i64 304
  %325 = load ptr, ptr %324, align 8, !tbaa !11
  %326 = load i8, ptr %325, align 8, !tbaa !15
  %327 = sext i8 %326 to i16
  %328 = icmp eq i16 %323, %327
  %.791 = select i1 %328, i64 72, i64 64
  br label %378

329:                                              ; preds = %290
  br i1 %.not568, label %334, label %330

330:                                              ; preds = %329
  %331 = tail call i32 @Between_SL(ptr noundef %.0504, ptr noundef nonnull %284, ptr noundef nonnull %227) #2
  %.not565 = icmp eq i32 %331, 0
  br i1 %.not565, label %332, label %371

332:                                              ; preds = %330
  %333 = tail call i32 @Between_SL(ptr noundef %35, ptr noundef nonnull %284, ptr noundef %.0505) #2
  %.not566 = icmp eq i32 %333, 0
  br i1 %.not566, label %364, label %371

334:                                              ; preds = %329
  %335 = tail call i32 @Between_SL(ptr noundef %35, ptr noundef nonnull %201, ptr noundef %.0505) #2
  %.not556 = icmp eq i32 %335, 0
  br i1 %.not556, label %338, label %336

336:                                              ; preds = %334
  %337 = tail call i32 @Between_SL(ptr noundef %35, ptr noundef nonnull %284, ptr noundef nonnull %227) #2
  %.not564 = icmp eq i32 %337, 0
  br i1 %.not564, label %364, label %371

338:                                              ; preds = %334
  %339 = load i16, ptr @Reversed, align 2, !tbaa !9
  %340 = load ptr, ptr %24, align 8, !tbaa !11
  %341 = load i8, ptr %340, align 8, !tbaa !15
  %342 = sext i8 %341 to i16
  %343 = icmp eq i16 %339, %342
  %.in557 = select i1 %343, ptr %25, ptr %26
  %344 = load ptr, ptr %.in557, align 8, !tbaa !17
  %345 = tail call i32 @Between_SL(ptr noundef %344, ptr noundef nonnull %201, ptr noundef %114) #2
  %.not558 = icmp eq i32 %345, 0
  br i1 %.not558, label %362, label %346

346:                                              ; preds = %338
  %347 = load i16, ptr @Reversed, align 2, !tbaa !9
  %348 = load ptr, ptr %24, align 8, !tbaa !11
  %349 = load i8, ptr %348, align 8, !tbaa !15
  %350 = sext i8 %349 to i16
  %351 = icmp eq i16 %347, %350
  %.in560 = select i1 %351, ptr %25, ptr %26
  %352 = load ptr, ptr %.in560, align 8, !tbaa !17
  %353 = tail call i32 @Between_SL(ptr noundef %352, ptr noundef nonnull %284, ptr noundef nonnull %201) #2
  %.not561 = icmp eq i32 %353, 0
  br i1 %.not561, label %354, label %371

354:                                              ; preds = %346
  %355 = load i16, ptr @Reversed, align 2, !tbaa !9
  %356 = load ptr, ptr %27, align 8, !tbaa !11
  %357 = load i8, ptr %356, align 8, !tbaa !15
  %358 = sext i8 %357 to i16
  %359 = icmp eq i16 %355, %358
  %.in562.v = select i1 %359, i64 64, i64 72
  %.in562 = getelementptr inbounds i8, ptr %.0504, i64 %.in562.v
  %360 = load ptr, ptr %.in562, align 8, !tbaa !17
  %361 = tail call i32 @Between_SL(ptr noundef nonnull %80, ptr noundef nonnull %284, ptr noundef %360) #2
  %.not563 = icmp eq i32 %361, 0
  br i1 %.not563, label %364, label %371

362:                                              ; preds = %338
  %363 = tail call i32 @Between_SL(ptr noundef nonnull %80, ptr noundef nonnull %284, ptr noundef nonnull %201) #2
  %.not559 = icmp eq i32 %363, 0
  br i1 %.not559, label %364, label %371

364:                                              ; preds = %362, %354, %336, %332
  %365 = load i16, ptr @Reversed, align 2, !tbaa !9
  %366 = getelementptr inbounds i8, ptr %284, i64 304
  %367 = load ptr, ptr %366, align 8, !tbaa !11
  %368 = load i8, ptr %367, align 8, !tbaa !15
  %369 = sext i8 %368 to i16
  %370 = icmp eq i16 %365, %369
  %.792 = select i1 %370, i64 64, i64 72
  br label %378

371:                                              ; preds = %362, %354, %346, %336, %332, %330
  %372 = load i16, ptr @Reversed, align 2, !tbaa !9
  %373 = getelementptr inbounds i8, ptr %284, i64 304
  %374 = load ptr, ptr %373, align 8, !tbaa !11
  %375 = load i8, ptr %374, align 8, !tbaa !15
  %376 = sext i8 %375 to i16
  %377 = icmp eq i16 %372, %376
  %.793 = select i1 %377, i64 72, i64 64
  br label %378

378:                                              ; preds = %371, %364, %322, %315
  %.sink787 = phi i64 [ %.790, %315 ], [ %.791, %322 ], [ %.792, %364 ], [ %.793, %371 ]
  %379 = getelementptr inbounds i8, ptr %284, i64 %.sink787
  %.0503 = load ptr, ptr %379, align 8, !tbaa !17
  %380 = icmp eq ptr %.0503, %.0502679
  br i1 %380, label %441, label %381

381:                                              ; preds = %378
  %382 = icmp eq ptr %284, %.0502679
  %383 = icmp eq ptr %.0503, %35
  %or.cond609 = select i1 %382, i1 %383, i1 false
  br i1 %or.cond609, label %441, label %384

384:                                              ; preds = %381
  %385 = icmp eq ptr %284, %80
  %386 = icmp eq ptr %.0503, %114
  %or.cond610 = and i1 %385, %386
  br i1 %or.cond610, label %441, label %387

387:                                              ; preds = %384
  %388 = icmp eq ptr %284, %114
  %389 = icmp eq ptr %.0503, %80
  %or.cond611 = and i1 %388, %389
  br i1 %or.cond611, label %441, label %390

390:                                              ; preds = %387
  %391 = icmp eq ptr %284, %0
  %392 = icmp eq ptr %.0503, %1
  %or.cond612 = and i1 %391, %392
  br i1 %or.cond612, label %441, label %393

393:                                              ; preds = %390
  %394 = icmp eq ptr %284, %1
  %395 = icmp eq ptr %.0503, %0
  %or.cond613 = and i1 %394, %395
  br i1 %or.cond613, label %441, label %396

396:                                              ; preds = %393
  %397 = icmp eq ptr %284, %2
  %398 = icmp eq ptr %.0503, %3
  %or.cond614 = and i1 %397, %398
  br i1 %or.cond614, label %441, label %399

399:                                              ; preds = %396
  %400 = icmp eq ptr %284, %3
  %401 = icmp eq ptr %.0503, %2
  %or.cond615 = and i1 %400, %401
  br i1 %or.cond615, label %441, label %402

402:                                              ; preds = %399
  %403 = getelementptr inbounds i8, ptr %284, i64 152
  %404 = load ptr, ptr %403, align 8, !tbaa !18
  %405 = icmp eq ptr %404, %.0503
  br i1 %405, label %441, label %406

406:                                              ; preds = %402
  %407 = getelementptr inbounds i8, ptr %284, i64 160
  %408 = load ptr, ptr %407, align 8, !tbaa !19
  %409 = icmp eq ptr %408, %.0503
  br i1 %409, label %441, label %410

410:                                              ; preds = %406
  %411 = tail call i32 @IsCommonEdge(ptr noundef nonnull %284, ptr noundef %.0503) #2
  %.not579 = icmp eq i32 %411, 0
  br i1 %.not579, label %412, label %441

412:                                              ; preds = %410
  %413 = tail call i32 @Forbidden(ptr noundef %.0503, ptr noundef %.0502679) #2
  %.not580 = icmp eq i32 %413, 0
  br i1 %.not580, label %414, label %441

414:                                              ; preds = %412
  %415 = getelementptr inbounds i8, ptr %.0508664, i64 8
  %416 = load i32, ptr %415, align 8, !tbaa !25
  %417 = sext i32 %416 to i64
  %418 = sub nsw i64 %257, %417
  %419 = load ptr, ptr @C, align 8, !tbaa !17
  %420 = tail call i32 %419(ptr noundef nonnull %284, ptr noundef %.0503) #2
  %421 = sext i32 %420 to i64
  %422 = add nsw i64 %418, %421
  %423 = load ptr, ptr @c, align 8, !tbaa !17
  %.not581 = icmp eq ptr %423, null
  br i1 %.not581, label %428, label %424

424:                                              ; preds = %414
  %425 = tail call i32 %423(ptr noundef %.0503, ptr noundef %.0502679) #2
  %426 = sext i32 %425 to i64
  %427 = icmp sgt i64 %422, %426
  br i1 %427, label %428, label %438

428:                                              ; preds = %424, %414
  %429 = load ptr, ptr @C, align 8, !tbaa !17
  %430 = tail call i32 %429(ptr noundef %.0503, ptr noundef %.0502679) #2
  %431 = sext i32 %430 to i64
  %432 = sub nsw i64 %422, %431
  %433 = icmp sgt i64 %432, 0
  br i1 %433, label %434, label %438

434:                                              ; preds = %428
  br i1 %107, label %435, label %436

435:                                              ; preds = %434
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %3) #2
  tail call void @Flip_SL(ptr noundef nonnull %80, ptr noundef %114, ptr noundef %.0502679) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %2, ptr noundef %1) #2
  br label %437

436:                                              ; preds = %434
  tail call void @Flip_SL(ptr noundef %.0502679, ptr noundef %35, ptr noundef nonnull %80) #2
  tail call void @Flip_SL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2
  br label %437

437:                                              ; preds = %436, %435
  tail call void @Flip_SL(ptr noundef nonnull %201, ptr noundef nonnull %227, ptr noundef %.0502679) #2
  tail call void @Flip_SL(ptr noundef nonnull %284, ptr noundef %.0503, ptr noundef %.0502679) #2
  br label %.loopexit619

438:                                              ; preds = %428, %424
  %439 = add nsw i32 %.0665, 1
  %440 = load i32, ptr @MaxBreadth, align 4, !tbaa !5
  %.not582 = icmp slt i32 %.0665, %440
  br i1 %.not582, label %441, label %.loopexit

441:                                              ; preds = %399, %396, %393, %390, %387, %384, %381, %438, %402, %406, %410, %412, %378, %283, %287
  %.1 = phi i32 [ %.0665, %283 ], [ %.0665, %287 ], [ %.0665, %378 ], [ %.0665, %402 ], [ %.0665, %406 ], [ %.0665, %410 ], [ %.0665, %412 ], [ %439, %438 ], [ %.0665, %381 ], [ %.0665, %384 ], [ %.0665, %387 ], [ %.0665, %390 ], [ %.0665, %393 ], [ %.0665, %396 ], [ %.0665, %399 ]
  %442 = getelementptr inbounds i8, ptr %.0508664, i64 16
  %443 = load ptr, ptr %442, align 8, !tbaa !21
  %.not554 = icmp eq ptr %443, null
  br i1 %.not554, label %.loopexit, label %283, !llvm.loop !26

.loopexit:                                        ; preds = %438, %441, %277, %236, %233, %230, %225, %239, %243, %247, %200, %204
  %.1497 = phi i32 [ %.0496669, %200 ], [ %.0496669, %204 ], [ %.0496669, %239 ], [ %.0496669, %243 ], [ %.0496669, %247 ], [ %.0496669, %225 ], [ %.0496669, %230 ], [ %.0496669, %233 ], [ %.0496669, %236 ], [ %275, %277 ], [ %275, %441 ], [ %275, %438 ]
  %444 = getelementptr inbounds i8, ptr %.0507668, i64 16
  %445 = load ptr, ptr %444, align 8, !tbaa !21
  %.not547 = icmp eq ptr %445, null
  br i1 %.not547, label %.loopexit616, label %200, !llvm.loop !28

.loopexit616:                                     ; preds = %274, %.loopexit, %194, %150, %193, %106, %124, %127, %130
  %446 = add nuw nsw i32 %.0500672, 1
  %exitcond.not = icmp eq i32 %446, 3
  br i1 %exitcond.not, label %.loopexit617, label %106, !llvm.loop !29

.loopexit617:                                     ; preds = %.loopexit616, %79, %83, %86
  %.1499 = phi i32 [ %.0498675, %79 ], [ %.0498675, %83 ], [ %.0498675, %86 ], [ %93, %.loopexit616 ]
  %447 = getelementptr inbounds i8, ptr %.0506674, i64 16
  %448 = load ptr, ptr %447, align 8, !tbaa !21
  %.not530 = icmp eq ptr %448, null
  br i1 %.not530, label %.loopexit618, label %79, !llvm.loop !30

.loopexit618:                                     ; preds = %88, %.loopexit617, %69, %56, %53, %50, %47, %44, %41, %38, %28, %59, %63, %67
  %.not528 = icmp eq ptr %35, %.0505
  br i1 %.not528, label %.loopexit619, label %28, !llvm.loop !31

.loopexit619:                                     ; preds = %.loopexit618, %10, %23, %272, %273, %191, %192, %178, %179, %165, %166, %152, %153, %437
  %.0501 = phi i64 [ %432, %437 ], [ %148, %153 ], [ %148, %152 ], [ %148, %166 ], [ %148, %165 ], [ %148, %179 ], [ %148, %178 ], [ %148, %192 ], [ %148, %191 ], [ %269, %273 ], [ %269, %272 ], [ 0, %23 ], [ 0, %10 ], [ 0, %.loopexit618 ]
  ret i64 %.0501
}

declare i32 @SegmentSize(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @IsCommonEdge(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @Between_SL(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @Forbidden(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @Flip_SL(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { 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 #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !13, i64 304}
!12 = !{!"Node", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !13, i64 224, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !14, i64 312, !14, i64 320, !14, i64 328, !14, i64 336, !14, i64 344, !14, i64 352, !7, i64 360, !7, i64 361, !7, i64 362}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !7, i64 0}
!16 = !{!"Segment", !7, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !6, i64 40, !6, i64 44, !13, i64 48}
!17 = !{!13, !13, i64 0}
!18 = !{!12, !13, i64 152}
!19 = !{!12, !13, i64 160}
!20 = !{!12, !13, i64 288}
!21 = !{!22, !13, i64 0}
!22 = !{!"Candidate", !13, i64 0, !6, i64 8, !6, i64 12}
!23 = !{!12, !13, i64 64}
!24 = !{!12, !13, i64 72}
!25 = !{!22, !6, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}


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