; LLVM IR from ETH3D/dataset-pipeline :: thirdparty/cork/cork/isct (triangle)

; 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.otri = type { ptr, i32 }
%struct.behavior = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8] }

@plus1mod3 = external dso_local global [3 x i32], align 4
@minus1mod3 = external dso_local global [3 x i32], align 4
@.str.969 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.970 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.971 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

declare i32 @printf(ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
declare dso_local void @printtriangle(ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @maketriangle(ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @counterclockwise(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @incircle(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
define dso_local void @mergehulls(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i32 noundef %6) #2 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %struct.otri, align 8
  %16 = alloca %struct.otri, align 8
  %17 = alloca %struct.otri, align 8
  %18 = alloca %struct.otri, align 8
  %19 = alloca %struct.otri, align 8
  %20 = alloca %struct.otri, align 8
  %21 = alloca %struct.otri, align 8
  %22 = alloca %struct.otri, 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 ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store i32 %6, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 16, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  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 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  %42 = load ptr, ptr %11, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.otri, ptr %42, i32 0, i32 0
  %44 = load ptr, ptr %43, align 8, !tbaa !11
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.otri, ptr %45, i32 0, i32 1
  %47 = load i32, ptr %46, align 8, !tbaa !13
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !9
  %51 = add nsw i32 %50, 3
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds ptr, ptr %44, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %54, ptr %23, align 8, !tbaa !5
  %55 = load ptr, ptr %11, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.otri, ptr %55, i32 0, i32 0
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.otri, ptr %58, i32 0, i32 1
  %60 = load i32, ptr %59, align 8, !tbaa !13
  %61 = add nsw i32 %60, 3
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds ptr, ptr %57, i64 %62
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  store ptr %64, ptr %25, align 8, !tbaa !5
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.otri, ptr %65, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = load ptr, ptr %12, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.otri, ptr %68, i32 0, i32 1
  %70 = load i32, ptr %69, align 8, !tbaa !13
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %71
  %73 = load i32, ptr %72, align 4, !tbaa !9
  %74 = add nsw i32 %73, 3
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds ptr, ptr %67, i64 %75
  %77 = load ptr, ptr %76, align 8, !tbaa !5
  store ptr %77, ptr %24, align 8, !tbaa !5
  %78 = load ptr, ptr %12, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.otri, ptr %78, i32 0, i32 0
  %80 = load ptr, ptr %79, align 8, !tbaa !11
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.otri, ptr %81, i32 0, i32 1
  %83 = load i32, ptr %82, align 8, !tbaa !13
  %84 = add nsw i32 %83, 3
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds ptr, ptr %80, i64 %85
  %87 = load ptr, ptr %86, align 8, !tbaa !5
  store ptr %87, ptr %26, align 8, !tbaa !5
  %88 = load ptr, ptr %9, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.behavior, ptr %88, i32 0, i32 25
  %90 = load i32, ptr %89, align 4, !tbaa !14
  %91 = icmp ne i32 %90, 0
  br i1 %91, label %92, label %416

92:                                               ; preds = %7
  %93 = load i32, ptr %14, align 4, !tbaa !9
  %94 = icmp eq i32 %93, 1
  br i1 %94, label %95, label %416

95:                                               ; preds = %92
  %96 = load ptr, ptr %10, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.otri, ptr %96, i32 0, i32 0
  %98 = load ptr, ptr %97, align 8, !tbaa !11
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.otri, ptr %99, i32 0, i32 1
  %101 = load i32, ptr %100, align 8, !tbaa !13
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %102
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = add nsw i32 %104, 3
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds ptr, ptr %98, i64 %106
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %108, ptr %27, align 8, !tbaa !5
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.otri, ptr %109, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8, !tbaa !11
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.otri, ptr %112, i32 0, i32 1
  %114 = load i32, ptr %113, align 8, !tbaa !13
  %115 = add nsw i32 %114, 3
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds ptr, ptr %111, i64 %116
  %118 = load ptr, ptr %117, align 8, !tbaa !5
  store ptr %118, ptr %29, align 8, !tbaa !5
  %119 = load ptr, ptr %13, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.otri, ptr %119, i32 0, i32 0
  %121 = load ptr, ptr %120, align 8, !tbaa !11
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.otri, ptr %122, i32 0, i32 1
  %124 = load i32, ptr %123, align 8, !tbaa !13
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %125
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = add nsw i32 %127, 3
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds ptr, ptr %121, i64 %129
  %131 = load ptr, ptr %130, align 8, !tbaa !5
  store ptr %131, ptr %28, align 8, !tbaa !5
  %132 = load ptr, ptr %13, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.otri, ptr %132, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8, !tbaa !11
  %135 = load ptr, ptr %13, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.otri, ptr %135, i32 0, i32 1
  %137 = load i32, ptr %136, align 8, !tbaa !13
  %138 = add nsw i32 %137, 3
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds ptr, ptr %134, i64 %139
  %141 = load ptr, ptr %140, align 8, !tbaa !5
  store ptr %141, ptr %30, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %150, %95
  %143 = load ptr, ptr %29, align 8, !tbaa !5
  %144 = getelementptr inbounds double, ptr %143, i64 1
  %145 = load double, ptr %144, align 8, !tbaa !17
  %146 = load ptr, ptr %27, align 8, !tbaa !5
  %147 = getelementptr inbounds double, ptr %146, i64 1
  %148 = load double, ptr %147, align 8, !tbaa !17
  %149 = fcmp olt double %145, %148
  br i1 %149, label %150, label %195

150:                                              ; preds = %142
  %151 = load ptr, ptr %10, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.otri, ptr %151, i32 0, i32 1
  %153 = load i32, ptr %152, align 8, !tbaa !13
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %154
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.otri, ptr %157, i32 0, i32 1
  store i32 %156, ptr %158, align 8, !tbaa !13
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.otri, ptr %159, i32 0, i32 0
  %161 = load ptr, ptr %160, align 8, !tbaa !11
  %162 = load ptr, ptr %10, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.otri, ptr %162, i32 0, i32 1
  %164 = load i32, ptr %163, align 8, !tbaa !13
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds ptr, ptr %161, i64 %165
  %167 = load ptr, ptr %166, align 8, !tbaa !5
  store ptr %167, ptr %41, align 8, !tbaa !5
  %168 = load ptr, ptr %41, align 8, !tbaa !5
  %169 = ptrtoint ptr %168 to i64
  %170 = and i64 %169, 3
  %171 = trunc i64 %170 to i32
  %172 = load ptr, ptr %10, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.otri, ptr %172, i32 0, i32 1
  store i32 %171, ptr %173, align 8, !tbaa !13
  %174 = load ptr, ptr %41, align 8, !tbaa !5
  %175 = ptrtoint ptr %174 to i64
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.otri, ptr %176, i32 0, i32 1
  %178 = load i32, ptr %177, align 8, !tbaa !13
  %179 = sext i32 %178 to i64
  %180 = xor i64 %175, %179
  %181 = inttoptr i64 %180 to ptr
  %182 = load ptr, ptr %10, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.otri, ptr %182, i32 0, i32 0
  store ptr %181, ptr %183, align 8, !tbaa !11
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %184, ptr %27, align 8, !tbaa !5
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.otri, ptr %185, i32 0, i32 0
  %187 = load ptr, ptr %186, align 8, !tbaa !11
  %188 = load ptr, ptr %10, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.otri, ptr %188, i32 0, i32 1
  %190 = load i32, ptr %189, align 8, !tbaa !13
  %191 = add nsw i32 %190, 3
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds ptr, ptr %187, i64 %192
  %194 = load ptr, ptr %193, align 8, !tbaa !5
  store ptr %194, ptr %29, align 8, !tbaa !5
  br label %142, !llvm.loop !18

195:                                              ; preds = %142
  %196 = load ptr, ptr %11, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.otri, ptr %196, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8, !tbaa !11
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.otri, ptr %199, i32 0, i32 1
  %201 = load i32, ptr %200, align 8, !tbaa !13
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds ptr, ptr %198, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !5
  store ptr %204, ptr %41, align 8, !tbaa !5
  %205 = load ptr, ptr %41, align 8, !tbaa !5
  %206 = ptrtoint ptr %205 to i64
  %207 = and i64 %206, 3
  %208 = trunc i64 %207 to i32
  %209 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %208, ptr %209, align 8, !tbaa !13
  %210 = load ptr, ptr %41, align 8, !tbaa !5
  %211 = ptrtoint ptr %210 to i64
  %212 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %213 = load i32, ptr %212, align 8, !tbaa !13
  %214 = sext i32 %213 to i64
  %215 = xor i64 %211, %214
  %216 = inttoptr i64 %215 to ptr
  %217 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %216, ptr %217, align 8, !tbaa !11
  %218 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %219 = load ptr, ptr %218, align 8, !tbaa !11
  %220 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %221 = load i32, ptr %220, align 8, !tbaa !13
  %222 = add nsw i32 %221, 3
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds ptr, ptr %219, i64 %223
  %225 = load ptr, ptr %224, align 8, !tbaa !5
  store ptr %225, ptr %36, align 8, !tbaa !5
  br label %226

226:                                              ; preds = %234, %195
  %227 = load ptr, ptr %36, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 1
  %229 = load double, ptr %228, align 8, !tbaa !17
  %230 = load ptr, ptr %23, align 8, !tbaa !5
  %231 = getelementptr inbounds double, ptr %230, i64 1
  %232 = load double, ptr %231, align 8, !tbaa !17
  %233 = fcmp ogt double %229, %232
  br i1 %233, label %234, label %278

234:                                              ; preds = %226
  %235 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !11
  %237 = load ptr, ptr %11, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.otri, ptr %237, i32 0, i32 0
  store ptr %236, ptr %238, align 8, !tbaa !11
  %239 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %240 = load i32, ptr %239, align 8, !tbaa !13
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %241
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %11, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.otri, ptr %244, i32 0, i32 1
  store i32 %243, ptr %245, align 8, !tbaa !13
  %246 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %246, ptr %25, align 8, !tbaa !5
  %247 = load ptr, ptr %36, align 8, !tbaa !5
  store ptr %247, ptr %23, align 8, !tbaa !5
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.otri, ptr %248, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8, !tbaa !11
  %251 = load ptr, ptr %11, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.otri, ptr %251, i32 0, i32 1
  %253 = load i32, ptr %252, align 8, !tbaa !13
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds ptr, ptr %250, i64 %254
  %256 = load ptr, ptr %255, align 8, !tbaa !5
  store ptr %256, ptr %41, align 8, !tbaa !5
  %257 = load ptr, ptr %41, align 8, !tbaa !5
  %258 = ptrtoint ptr %257 to i64
  %259 = and i64 %258, 3
  %260 = trunc i64 %259 to i32
  %261 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %260, ptr %261, align 8, !tbaa !13
  %262 = load ptr, ptr %41, align 8, !tbaa !5
  %263 = ptrtoint ptr %262 to i64
  %264 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %265 = load i32, ptr %264, align 8, !tbaa !13
  %266 = sext i32 %265 to i64
  %267 = xor i64 %263, %266
  %268 = inttoptr i64 %267 to ptr
  %269 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %268, ptr %269, align 8, !tbaa !11
  %270 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %271 = load ptr, ptr %270, align 8, !tbaa !11
  %272 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %273 = load i32, ptr %272, align 8, !tbaa !13
  %274 = add nsw i32 %273, 3
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds ptr, ptr %271, i64 %275
  %277 = load ptr, ptr %276, align 8, !tbaa !5
  store ptr %277, ptr %36, align 8, !tbaa !5
  br label %226, !llvm.loop !20

278:                                              ; preds = %226
  br label %279

279:                                              ; preds = %287, %278
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = getelementptr inbounds double, ptr %280, i64 1
  %282 = load double, ptr %281, align 8, !tbaa !17
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  %285 = load double, ptr %284, align 8, !tbaa !17
  %286 = fcmp olt double %282, %285
  br i1 %286, label %287, label %332

287:                                              ; preds = %279
  %288 = load ptr, ptr %12, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.otri, ptr %288, i32 0, i32 1
  %290 = load i32, ptr %289, align 8, !tbaa !13
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %291
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = load ptr, ptr %12, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.otri, ptr %294, i32 0, i32 1
  store i32 %293, ptr %295, align 8, !tbaa !13
  %296 = load ptr, ptr %12, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.otri, ptr %296, i32 0, i32 0
  %298 = load ptr, ptr %297, align 8, !tbaa !11
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.otri, ptr %299, i32 0, i32 1
  %301 = load i32, ptr %300, align 8, !tbaa !13
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds ptr, ptr %298, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  store ptr %304, ptr %41, align 8, !tbaa !5
  %305 = load ptr, ptr %41, align 8, !tbaa !5
  %306 = ptrtoint ptr %305 to i64
  %307 = and i64 %306, 3
  %308 = trunc i64 %307 to i32
  %309 = load ptr, ptr %12, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.otri, ptr %309, i32 0, i32 1
  store i32 %308, ptr %310, align 8, !tbaa !13
  %311 = load ptr, ptr %41, align 8, !tbaa !5
  %312 = ptrtoint ptr %311 to i64
  %313 = load ptr, ptr %12, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.otri, ptr %313, i32 0, i32 1
  %315 = load i32, ptr %314, align 8, !tbaa !13
  %316 = sext i32 %315 to i64
  %317 = xor i64 %312, %316
  %318 = inttoptr i64 %317 to ptr
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.otri, ptr %319, i32 0, i32 0
  store ptr %318, ptr %320, align 8, !tbaa !11
  %321 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %321, ptr %24, align 8, !tbaa !5
  %322 = load ptr, ptr %12, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.otri, ptr %322, i32 0, i32 0
  %324 = load ptr, ptr %323, align 8, !tbaa !11
  %325 = load ptr, ptr %12, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.otri, ptr %325, i32 0, i32 1
  %327 = load i32, ptr %326, align 8, !tbaa !13
  %328 = add nsw i32 %327, 3
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds ptr, ptr %324, i64 %329
  %331 = load ptr, ptr %330, align 8, !tbaa !5
  store ptr %331, ptr %26, align 8, !tbaa !5
  br label %279, !llvm.loop !21

332:                                              ; preds = %279
  %333 = load ptr, ptr %13, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.otri, ptr %333, i32 0, i32 0
  %335 = load ptr, ptr %334, align 8, !tbaa !11
  %336 = load ptr, ptr %13, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.otri, ptr %336, i32 0, i32 1
  %338 = load i32, ptr %337, align 8, !tbaa !13
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %335, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  store ptr %341, ptr %41, align 8, !tbaa !5
  %342 = load ptr, ptr %41, align 8, !tbaa !5
  %343 = ptrtoint ptr %342 to i64
  %344 = and i64 %343, 3
  %345 = trunc i64 %344 to i32
  %346 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %345, ptr %346, align 8, !tbaa !13
  %347 = load ptr, ptr %41, align 8, !tbaa !5
  %348 = ptrtoint ptr %347 to i64
  %349 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %350 = load i32, ptr %349, align 8, !tbaa !13
  %351 = sext i32 %350 to i64
  %352 = xor i64 %348, %351
  %353 = inttoptr i64 %352 to ptr
  %354 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %353, ptr %354, align 8, !tbaa !11
  %355 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !11
  %357 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %358 = load i32, ptr %357, align 8, !tbaa !13
  %359 = add nsw i32 %358, 3
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds ptr, ptr %356, i64 %360
  %362 = load ptr, ptr %361, align 8, !tbaa !5
  store ptr %362, ptr %36, align 8, !tbaa !5
  br label %363

363:                                              ; preds = %371, %332
  %364 = load ptr, ptr %36, align 8, !tbaa !5
  %365 = getelementptr inbounds double, ptr %364, i64 1
  %366 = load double, ptr %365, align 8, !tbaa !17
  %367 = load ptr, ptr %28, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = load double, ptr %368, align 8, !tbaa !17
  %370 = fcmp ogt double %366, %369
  br i1 %370, label %371, label %415

371:                                              ; preds = %363
  %372 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %373 = load ptr, ptr %372, align 8, !tbaa !11
  %374 = load ptr, ptr %13, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.otri, ptr %374, i32 0, i32 0
  store ptr %373, ptr %375, align 8, !tbaa !11
  %376 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %377 = load i32, ptr %376, align 8, !tbaa !13
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = load ptr, ptr %13, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.otri, ptr %381, i32 0, i32 1
  store i32 %380, ptr %382, align 8, !tbaa !13
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %383, ptr %30, align 8, !tbaa !5
  %384 = load ptr, ptr %36, align 8, !tbaa !5
  store ptr %384, ptr %28, align 8, !tbaa !5
  %385 = load ptr, ptr %13, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.otri, ptr %385, i32 0, i32 0
  %387 = load ptr, ptr %386, align 8, !tbaa !11
  %388 = load ptr, ptr %13, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.otri, ptr %388, i32 0, i32 1
  %390 = load i32, ptr %389, align 8, !tbaa !13
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds ptr, ptr %387, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  store ptr %393, ptr %41, align 8, !tbaa !5
  %394 = load ptr, ptr %41, align 8, !tbaa !5
  %395 = ptrtoint ptr %394 to i64
  %396 = and i64 %395, 3
  %397 = trunc i64 %396 to i32
  %398 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %397, ptr %398, align 8, !tbaa !13
  %399 = load ptr, ptr %41, align 8, !tbaa !5
  %400 = ptrtoint ptr %399 to i64
  %401 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %402 = load i32, ptr %401, align 8, !tbaa !13
  %403 = sext i32 %402 to i64
  %404 = xor i64 %400, %403
  %405 = inttoptr i64 %404 to ptr
  %406 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %405, ptr %406, align 8, !tbaa !11
  %407 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %408 = load ptr, ptr %407, align 8, !tbaa !11
  %409 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %410 = load i32, ptr %409, align 8, !tbaa !13
  %411 = add nsw i32 %410, 3
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds ptr, ptr %408, i64 %412
  %414 = load ptr, ptr %413, align 8, !tbaa !5
  store ptr %414, ptr %36, align 8, !tbaa !5
  br label %363, !llvm.loop !22

415:                                              ; preds = %363
  br label %416

416:                                              ; preds = %415, %92, %7
  br label %417

417:                                              ; preds = %524, %416
  store i32 0, ptr %37, align 4, !tbaa !9
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = load ptr, ptr %23, align 8, !tbaa !5
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = load ptr, ptr %24, align 8, !tbaa !5
  %423 = call double @counterclockwise(ptr noundef %418, ptr noundef %419, ptr noundef %420, ptr noundef %421, ptr noundef %422)
  %424 = fcmp ogt double %423, 0.000000e+00
  br i1 %424, label %425, label %470

425:                                              ; preds = %417
  %426 = load ptr, ptr %11, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.otri, ptr %426, i32 0, i32 1
  %428 = load i32, ptr %427, align 8, !tbaa !13
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.otri, ptr %432, i32 0, i32 1
  store i32 %431, ptr %433, align 8, !tbaa !13
  %434 = load ptr, ptr %11, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.otri, ptr %434, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8, !tbaa !11
  %437 = load ptr, ptr %11, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.otri, ptr %437, i32 0, i32 1
  %439 = load i32, ptr %438, align 8, !tbaa !13
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds ptr, ptr %436, i64 %440
  %442 = load ptr, ptr %441, align 8, !tbaa !5
  store ptr %442, ptr %41, align 8, !tbaa !5
  %443 = load ptr, ptr %41, align 8, !tbaa !5
  %444 = ptrtoint ptr %443 to i64
  %445 = and i64 %444, 3
  %446 = trunc i64 %445 to i32
  %447 = load ptr, ptr %11, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.otri, ptr %447, i32 0, i32 1
  store i32 %446, ptr %448, align 8, !tbaa !13
  %449 = load ptr, ptr %41, align 8, !tbaa !5
  %450 = ptrtoint ptr %449 to i64
  %451 = load ptr, ptr %11, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.otri, ptr %451, i32 0, i32 1
  %453 = load i32, ptr %452, align 8, !tbaa !13
  %454 = sext i32 %453 to i64
  %455 = xor i64 %450, %454
  %456 = inttoptr i64 %455 to ptr
  %457 = load ptr, ptr %11, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.otri, ptr %457, i32 0, i32 0
  store ptr %456, ptr %458, align 8, !tbaa !11
  %459 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %459, ptr %23, align 8, !tbaa !5
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.otri, ptr %460, i32 0, i32 0
  %462 = load ptr, ptr %461, align 8, !tbaa !11
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.otri, ptr %463, i32 0, i32 1
  %465 = load i32, ptr %464, align 8, !tbaa !13
  %466 = add nsw i32 %465, 3
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds ptr, ptr %462, i64 %467
  %469 = load ptr, ptr %468, align 8, !tbaa !5
  store ptr %469, ptr %25, align 8, !tbaa !5
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %470

470:                                              ; preds = %425, %417
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  %472 = load ptr, ptr %9, align 8, !tbaa !5
  %473 = load ptr, ptr %26, align 8, !tbaa !5
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = load ptr, ptr %23, align 8, !tbaa !5
  %476 = call double @counterclockwise(ptr noundef %471, ptr noundef %472, ptr noundef %473, ptr noundef %474, ptr noundef %475)
  %477 = fcmp ogt double %476, 0.000000e+00
  br i1 %477, label %478, label %523

478:                                              ; preds = %470
  %479 = load ptr, ptr %12, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.otri, ptr %479, i32 0, i32 1
  %481 = load i32, ptr %480, align 8, !tbaa !13
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = load ptr, ptr %12, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.otri, ptr %485, i32 0, i32 1
  store i32 %484, ptr %486, align 8, !tbaa !13
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.otri, ptr %487, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !11
  %490 = load ptr, ptr %12, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.otri, ptr %490, i32 0, i32 1
  %492 = load i32, ptr %491, align 8, !tbaa !13
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds ptr, ptr %489, i64 %493
  %495 = load ptr, ptr %494, align 8, !tbaa !5
  store ptr %495, ptr %41, align 8, !tbaa !5
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  %497 = ptrtoint ptr %496 to i64
  %498 = and i64 %497, 3
  %499 = trunc i64 %498 to i32
  %500 = load ptr, ptr %12, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.otri, ptr %500, i32 0, i32 1
  store i32 %499, ptr %501, align 8, !tbaa !13
  %502 = load ptr, ptr %41, align 8, !tbaa !5
  %503 = ptrtoint ptr %502 to i64
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.otri, ptr %504, i32 0, i32 1
  %506 = load i32, ptr %505, align 8, !tbaa !13
  %507 = sext i32 %506 to i64
  %508 = xor i64 %503, %507
  %509 = inttoptr i64 %508 to ptr
  %510 = load ptr, ptr %12, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.otri, ptr %510, i32 0, i32 0
  store ptr %509, ptr %511, align 8, !tbaa !11
  %512 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %512, ptr %24, align 8, !tbaa !5
  %513 = load ptr, ptr %12, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.otri, ptr %513, i32 0, i32 0
  %515 = load ptr, ptr %514, align 8, !tbaa !11
  %516 = load ptr, ptr %12, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.otri, ptr %516, i32 0, i32 1
  %518 = load i32, ptr %517, align 8, !tbaa !13
  %519 = add nsw i32 %518, 3
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds ptr, ptr %515, i64 %520
  %522 = load ptr, ptr %521, align 8, !tbaa !5
  store ptr %522, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %478, %470
  br label %524

524:                                              ; preds = %523
  %525 = load i32, ptr %37, align 4, !tbaa !9
  %526 = icmp ne i32 %525, 0
  br i1 %526, label %417, label %527, !llvm.loop !23

527:                                              ; preds = %524
  %528 = load ptr, ptr %11, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.otri, ptr %528, i32 0, i32 0
  %530 = load ptr, ptr %529, align 8, !tbaa !11
  %531 = load ptr, ptr %11, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.otri, ptr %531, i32 0, i32 1
  %533 = load i32, ptr %532, align 8, !tbaa !13
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds ptr, ptr %530, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !5
  store ptr %536, ptr %41, align 8, !tbaa !5
  %537 = load ptr, ptr %41, align 8, !tbaa !5
  %538 = ptrtoint ptr %537 to i64
  %539 = and i64 %538, 3
  %540 = trunc i64 %539 to i32
  %541 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %540, ptr %541, align 8, !tbaa !13
  %542 = load ptr, ptr %41, align 8, !tbaa !5
  %543 = ptrtoint ptr %542 to i64
  %544 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %545 = load i32, ptr %544, align 8, !tbaa !13
  %546 = sext i32 %545 to i64
  %547 = xor i64 %543, %546
  %548 = inttoptr i64 %547 to ptr
  %549 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  store ptr %548, ptr %549, align 8, !tbaa !11
  %550 = load ptr, ptr %12, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.otri, ptr %550, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !11
  %553 = load ptr, ptr %12, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.otri, ptr %553, i32 0, i32 1
  %555 = load i32, ptr %554, align 8, !tbaa !13
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %552, i64 %556
  %558 = load ptr, ptr %557, align 8, !tbaa !5
  store ptr %558, ptr %41, align 8, !tbaa !5
  %559 = load ptr, ptr %41, align 8, !tbaa !5
  %560 = ptrtoint ptr %559 to i64
  %561 = and i64 %560, 3
  %562 = trunc i64 %561 to i32
  %563 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %562, ptr %563, align 8, !tbaa !13
  %564 = load ptr, ptr %41, align 8, !tbaa !5
  %565 = ptrtoint ptr %564 to i64
  %566 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %567 = load i32, ptr %566, align 8, !tbaa !13
  %568 = sext i32 %567 to i64
  %569 = xor i64 %565, %568
  %570 = inttoptr i64 %569 to ptr
  %571 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %570, ptr %571, align 8, !tbaa !11
  %572 = load ptr, ptr %8, align 8, !tbaa !5
  %573 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %572, ptr noundef %573, ptr noundef %17)
  %574 = load ptr, ptr %11, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.otri, ptr %574, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !11
  %577 = ptrtoint ptr %576 to i64
  %578 = load ptr, ptr %11, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.otri, ptr %578, i32 0, i32 1
  %580 = load i32, ptr %579, align 8, !tbaa !13
  %581 = sext i32 %580 to i64
  %582 = or i64 %577, %581
  %583 = inttoptr i64 %582 to ptr
  %584 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %585 = load ptr, ptr %584, align 8, !tbaa !11
  %586 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %587 = load i32, ptr %586, align 8, !tbaa !13
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds ptr, ptr %585, i64 %588
  store ptr %583, ptr %589, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %591 = load ptr, ptr %590, align 8, !tbaa !11
  %592 = ptrtoint ptr %591 to i64
  %593 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %594 = load i32, ptr %593, align 8, !tbaa !13
  %595 = sext i32 %594 to i64
  %596 = or i64 %592, %595
  %597 = inttoptr i64 %596 to ptr
  %598 = load ptr, ptr %11, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.otri, ptr %598, i32 0, i32 0
  %600 = load ptr, ptr %599, align 8, !tbaa !11
  %601 = load ptr, ptr %11, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.otri, ptr %601, i32 0, i32 1
  %603 = load i32, ptr %602, align 8, !tbaa !13
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds ptr, ptr %600, i64 %604
  store ptr %597, ptr %605, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %607 = load i32, ptr %606, align 8, !tbaa !13
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %608
  %610 = load i32, ptr %609, align 4, !tbaa !9
  %611 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %610, ptr %611, align 8, !tbaa !13
  %612 = load ptr, ptr %12, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.otri, ptr %612, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !11
  %615 = ptrtoint ptr %614 to i64
  %616 = load ptr, ptr %12, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.otri, ptr %616, i32 0, i32 1
  %618 = load i32, ptr %617, align 8, !tbaa !13
  %619 = sext i32 %618 to i64
  %620 = or i64 %615, %619
  %621 = inttoptr i64 %620 to ptr
  %622 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %623 = load ptr, ptr %622, align 8, !tbaa !11
  %624 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %625 = load i32, ptr %624, align 8, !tbaa !13
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds ptr, ptr %623, i64 %626
  store ptr %621, ptr %627, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %629 = load ptr, ptr %628, align 8, !tbaa !11
  %630 = ptrtoint ptr %629 to i64
  %631 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %632 = load i32, ptr %631, align 8, !tbaa !13
  %633 = sext i32 %632 to i64
  %634 = or i64 %630, %633
  %635 = inttoptr i64 %634 to ptr
  %636 = load ptr, ptr %12, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.otri, ptr %636, i32 0, i32 0
  %638 = load ptr, ptr %637, align 8, !tbaa !11
  %639 = load ptr, ptr %12, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.otri, ptr %639, i32 0, i32 1
  %641 = load i32, ptr %640, align 8, !tbaa !13
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds ptr, ptr %638, i64 %642
  store ptr %635, ptr %643, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %645 = load i32, ptr %644, align 8, !tbaa !13
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %646
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %648, ptr %649, align 8, !tbaa !13
  %650 = load ptr, ptr %24, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %652 = load ptr, ptr %651, align 8, !tbaa !11
  %653 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %654 = load i32, ptr %653, align 8, !tbaa !13
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %655
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = add nsw i32 %657, 3
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds ptr, ptr %652, i64 %659
  store ptr %650, ptr %660, align 8, !tbaa !5
  %661 = load ptr, ptr %23, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %663 = load ptr, ptr %662, align 8, !tbaa !11
  %664 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %665 = load i32, ptr %664, align 8, !tbaa !13
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %666
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = add nsw i32 %668, 3
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds ptr, ptr %663, i64 %670
  store ptr %661, ptr %671, align 8, !tbaa !5
  %672 = load ptr, ptr %9, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.behavior, ptr %672, i32 0, i32 29
  %674 = load i32, ptr %673, align 4, !tbaa !24
  %675 = icmp sgt i32 %674, 2
  br i1 %675, label %676, label %680

676:                                              ; preds = %527
  %677 = call i32 (ptr, ...) @printf(ptr noundef @.str.969)
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %678, ptr noundef %679, ptr noundef %17)
  br label %680

680:                                              ; preds = %676, %527
  %681 = load ptr, ptr %10, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.otri, ptr %681, i32 0, i32 0
  %683 = load ptr, ptr %682, align 8, !tbaa !11
  %684 = load ptr, ptr %10, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.otri, ptr %684, i32 0, i32 1
  %686 = load i32, ptr %685, align 8, !tbaa !13
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %687
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = add nsw i32 %689, 3
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds ptr, ptr %683, i64 %691
  %693 = load ptr, ptr %692, align 8, !tbaa !5
  store ptr %693, ptr %27, align 8, !tbaa !5
  %694 = load ptr, ptr %23, align 8, !tbaa !5
  %695 = load ptr, ptr %27, align 8, !tbaa !5
  %696 = icmp eq ptr %694, %695
  br i1 %696, label %697, label %709

697:                                              ; preds = %680
  %698 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %699 = load ptr, ptr %698, align 8, !tbaa !11
  %700 = load ptr, ptr %10, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.otri, ptr %700, i32 0, i32 0
  store ptr %699, ptr %701, align 8, !tbaa !11
  %702 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %703 = load i32, ptr %702, align 8, !tbaa !13
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %704
  %706 = load i32, ptr %705, align 4, !tbaa !9
  %707 = load ptr, ptr %10, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.otri, ptr %707, i32 0, i32 1
  store i32 %706, ptr %708, align 8, !tbaa !13
  br label %709

709:                                              ; preds = %697, %680
  %710 = load ptr, ptr %13, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.otri, ptr %710, i32 0, i32 0
  %712 = load ptr, ptr %711, align 8, !tbaa !11
  %713 = load ptr, ptr %13, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.otri, ptr %713, i32 0, i32 1
  %715 = load i32, ptr %714, align 8, !tbaa !13
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %716
  %718 = load i32, ptr %717, align 4, !tbaa !9
  %719 = add nsw i32 %718, 3
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds ptr, ptr %712, i64 %720
  %722 = load ptr, ptr %721, align 8, !tbaa !5
  store ptr %722, ptr %28, align 8, !tbaa !5
  %723 = load ptr, ptr %24, align 8, !tbaa !5
  %724 = load ptr, ptr %28, align 8, !tbaa !5
  %725 = icmp eq ptr %723, %724
  br i1 %725, label %726, label %738

726:                                              ; preds = %709
  %727 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %728 = load ptr, ptr %727, align 8, !tbaa !11
  %729 = load ptr, ptr %13, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.otri, ptr %729, i32 0, i32 0
  store ptr %728, ptr %730, align 8, !tbaa !11
  %731 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %732 = load i32, ptr %731, align 8, !tbaa !13
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %733
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = load ptr, ptr %13, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.otri, ptr %736, i32 0, i32 1
  store i32 %735, ptr %737, align 8, !tbaa !13
  br label %738

738:                                              ; preds = %726, %709
  %739 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %739, ptr %31, align 8, !tbaa !5
  %740 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %740, ptr %32, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %742 = load ptr, ptr %741, align 8, !tbaa !11
  %743 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %744 = load i32, ptr %743, align 8, !tbaa !13
  %745 = add nsw i32 %744, 3
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds ptr, ptr %742, i64 %746
  %748 = load ptr, ptr %747, align 8, !tbaa !5
  store ptr %748, ptr %33, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %750 = load ptr, ptr %749, align 8, !tbaa !11
  %751 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %752 = load i32, ptr %751, align 8, !tbaa !13
  %753 = add nsw i32 %752, 3
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds ptr, ptr %750, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !5
  store ptr %756, ptr %34, align 8, !tbaa !5
  br label %757

757:                                              ; preds = %1910, %738
  br label %758

758:                                              ; preds = %757
  %759 = load ptr, ptr %8, align 8, !tbaa !5
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = load ptr, ptr %33, align 8, !tbaa !5
  %762 = load ptr, ptr %31, align 8, !tbaa !5
  %763 = load ptr, ptr %32, align 8, !tbaa !5
  %764 = call double @counterclockwise(ptr noundef %759, ptr noundef %760, ptr noundef %761, ptr noundef %762, ptr noundef %763)
  %765 = fcmp ole double %764, 0.000000e+00
  %766 = zext i1 %765 to i32
  store i32 %766, ptr %39, align 4, !tbaa !9
  %767 = load ptr, ptr %8, align 8, !tbaa !5
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = load ptr, ptr %34, align 8, !tbaa !5
  %770 = load ptr, ptr %31, align 8, !tbaa !5
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  %772 = call double @counterclockwise(ptr noundef %767, ptr noundef %768, ptr noundef %769, ptr noundef %770, ptr noundef %771)
  %773 = fcmp ole double %772, 0.000000e+00
  %774 = zext i1 %773 to i32
  store i32 %774, ptr %40, align 4, !tbaa !9
  %775 = load i32, ptr %39, align 4, !tbaa !9
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %777, label %1102

777:                                              ; preds = %758
  %778 = load i32, ptr %40, align 4, !tbaa !9
  %779 = icmp ne i32 %778, 0
  br i1 %779, label %780, label %1102

780:                                              ; preds = %777
  %781 = load ptr, ptr %8, align 8, !tbaa !5
  %782 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %781, ptr noundef %782, ptr noundef %18)
  %783 = load ptr, ptr %31, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %785 = load ptr, ptr %784, align 8, !tbaa !11
  %786 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %787 = load i32, ptr %786, align 8, !tbaa !13
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %788
  %790 = load i32, ptr %789, align 4, !tbaa !9
  %791 = add nsw i32 %790, 3
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds ptr, ptr %785, i64 %792
  store ptr %783, ptr %793, align 8, !tbaa !5
  %794 = load ptr, ptr %32, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %796 = load ptr, ptr %795, align 8, !tbaa !11
  %797 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %798 = load i32, ptr %797, align 8, !tbaa !13
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %799
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = add nsw i32 %801, 3
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds ptr, ptr %796, i64 %803
  store ptr %794, ptr %804, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %806 = load ptr, ptr %805, align 8, !tbaa !11
  %807 = ptrtoint ptr %806 to i64
  %808 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %809 = load i32, ptr %808, align 8, !tbaa !13
  %810 = sext i32 %809 to i64
  %811 = or i64 %807, %810
  %812 = inttoptr i64 %811 to ptr
  %813 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %814 = load ptr, ptr %813, align 8, !tbaa !11
  %815 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %816 = load i32, ptr %815, align 8, !tbaa !13
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds ptr, ptr %814, i64 %817
  store ptr %812, ptr %818, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %820 = load ptr, ptr %819, align 8, !tbaa !11
  %821 = ptrtoint ptr %820 to i64
  %822 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %823 = load i32, ptr %822, align 8, !tbaa !13
  %824 = sext i32 %823 to i64
  %825 = or i64 %821, %824
  %826 = inttoptr i64 %825 to ptr
  %827 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %828 = load ptr, ptr %827, align 8, !tbaa !11
  %829 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %830 = load i32, ptr %829, align 8, !tbaa !13
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds ptr, ptr %828, i64 %831
  store ptr %826, ptr %832, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %834 = load i32, ptr %833, align 8, !tbaa !13
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %837, ptr %838, align 8, !tbaa !13
  %839 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %840 = load ptr, ptr %839, align 8, !tbaa !11
  %841 = ptrtoint ptr %840 to i64
  %842 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %843 = load i32, ptr %842, align 8, !tbaa !13
  %844 = sext i32 %843 to i64
  %845 = or i64 %841, %844
  %846 = inttoptr i64 %845 to ptr
  %847 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %848 = load ptr, ptr %847, align 8, !tbaa !11
  %849 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %850 = load i32, ptr %849, align 8, !tbaa !13
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds ptr, ptr %848, i64 %851
  store ptr %846, ptr %852, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %854 = load ptr, ptr %853, align 8, !tbaa !11
  %855 = ptrtoint ptr %854 to i64
  %856 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %857 = load i32, ptr %856, align 8, !tbaa !13
  %858 = sext i32 %857 to i64
  %859 = or i64 %855, %858
  %860 = inttoptr i64 %859 to ptr
  %861 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %862 = load ptr, ptr %861, align 8, !tbaa !11
  %863 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %864 = load i32, ptr %863, align 8, !tbaa !13
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds ptr, ptr %862, i64 %865
  store ptr %860, ptr %866, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %868 = load i32, ptr %867, align 8, !tbaa !13
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %869
  %871 = load i32, ptr %870, align 4, !tbaa !9
  %872 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %871, ptr %872, align 8, !tbaa !13
  %873 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %874 = load ptr, ptr %873, align 8, !tbaa !11
  %875 = ptrtoint ptr %874 to i64
  %876 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %877 = load i32, ptr %876, align 8, !tbaa !13
  %878 = sext i32 %877 to i64
  %879 = or i64 %875, %878
  %880 = inttoptr i64 %879 to ptr
  %881 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %882 = load ptr, ptr %881, align 8, !tbaa !11
  %883 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %884 = load i32, ptr %883, align 8, !tbaa !13
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds ptr, ptr %882, i64 %885
  store ptr %880, ptr %886, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %888 = load ptr, ptr %887, align 8, !tbaa !11
  %889 = ptrtoint ptr %888 to i64
  %890 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %891 = load i32, ptr %890, align 8, !tbaa !13
  %892 = sext i32 %891 to i64
  %893 = or i64 %889, %892
  %894 = inttoptr i64 %893 to ptr
  %895 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %896 = load ptr, ptr %895, align 8, !tbaa !11
  %897 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %898 = load i32, ptr %897, align 8, !tbaa !13
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds ptr, ptr %896, i64 %899
  store ptr %894, ptr %900, align 8, !tbaa !5
  %901 = load ptr, ptr %9, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.behavior, ptr %901, i32 0, i32 29
  %903 = load i32, ptr %902, align 4, !tbaa !24
  %904 = icmp sgt i32 %903, 2
  br i1 %904, label %905, label %909

905:                                              ; preds = %780
  %906 = call i32 (ptr, ...) @printf(ptr noundef @.str.970)
  %907 = load ptr, ptr %8, align 8, !tbaa !5
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %907, ptr noundef %908, ptr noundef %18)
  br label %909

909:                                              ; preds = %905, %780
  %910 = load ptr, ptr %9, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.behavior, ptr %910, i32 0, i32 25
  %912 = load i32, ptr %911, align 4, !tbaa !14
  %913 = icmp ne i32 %912, 0
  br i1 %913, label %914, label %1101

914:                                              ; preds = %909
  %915 = load i32, ptr %14, align 4, !tbaa !9
  %916 = icmp eq i32 %915, 1
  br i1 %916, label %917, label %1101

917:                                              ; preds = %914
  %918 = load ptr, ptr %10, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.otri, ptr %918, i32 0, i32 0
  %920 = load ptr, ptr %919, align 8, !tbaa !11
  %921 = load ptr, ptr %10, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.otri, ptr %921, i32 0, i32 1
  %923 = load i32, ptr %922, align 8, !tbaa !13
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %924
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = add nsw i32 %926, 3
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds ptr, ptr %920, i64 %928
  %930 = load ptr, ptr %929, align 8, !tbaa !5
  store ptr %930, ptr %27, align 8, !tbaa !5
  %931 = load ptr, ptr %10, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.otri, ptr %931, i32 0, i32 0
  %933 = load ptr, ptr %932, align 8, !tbaa !11
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.otri, ptr %934, i32 0, i32 1
  %936 = load i32, ptr %935, align 8, !tbaa !13
  %937 = add nsw i32 %936, 3
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds ptr, ptr %933, i64 %938
  %940 = load ptr, ptr %939, align 8, !tbaa !5
  store ptr %940, ptr %29, align 8, !tbaa !5
  %941 = load ptr, ptr %13, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.otri, ptr %941, i32 0, i32 0
  %943 = load ptr, ptr %942, align 8, !tbaa !11
  %944 = load ptr, ptr %13, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.otri, ptr %944, i32 0, i32 1
  %946 = load i32, ptr %945, align 8, !tbaa !13
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %947
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = add nsw i32 %949, 3
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds ptr, ptr %943, i64 %951
  %953 = load ptr, ptr %952, align 8, !tbaa !5
  store ptr %953, ptr %28, align 8, !tbaa !5
  %954 = load ptr, ptr %13, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.otri, ptr %954, i32 0, i32 0
  %956 = load ptr, ptr %955, align 8, !tbaa !11
  %957 = load ptr, ptr %13, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.otri, ptr %957, i32 0, i32 1
  %959 = load i32, ptr %958, align 8, !tbaa !13
  %960 = add nsw i32 %959, 3
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds ptr, ptr %956, i64 %961
  %963 = load ptr, ptr %962, align 8, !tbaa !5
  store ptr %963, ptr %30, align 8, !tbaa !5
  %964 = load ptr, ptr %10, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.otri, ptr %964, i32 0, i32 0
  %966 = load ptr, ptr %965, align 8, !tbaa !11
  %967 = load ptr, ptr %10, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.otri, ptr %967, i32 0, i32 1
  %969 = load i32, ptr %968, align 8, !tbaa !13
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds ptr, ptr %966, i64 %970
  %972 = load ptr, ptr %971, align 8, !tbaa !5
  store ptr %972, ptr %41, align 8, !tbaa !5
  %973 = load ptr, ptr %41, align 8, !tbaa !5
  %974 = ptrtoint ptr %973 to i64
  %975 = and i64 %974, 3
  %976 = trunc i64 %975 to i32
  %977 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %976, ptr %977, align 8, !tbaa !13
  %978 = load ptr, ptr %41, align 8, !tbaa !5
  %979 = ptrtoint ptr %978 to i64
  %980 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %981 = load i32, ptr %980, align 8, !tbaa !13
  %982 = sext i32 %981 to i64
  %983 = xor i64 %979, %982
  %984 = inttoptr i64 %983 to ptr
  %985 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %984, ptr %985, align 8, !tbaa !11
  %986 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %987 = load ptr, ptr %986, align 8, !tbaa !11
  %988 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %989 = load i32, ptr %988, align 8, !tbaa !13
  %990 = add nsw i32 %989, 3
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds ptr, ptr %987, i64 %991
  %993 = load ptr, ptr %992, align 8, !tbaa !5
  store ptr %993, ptr %36, align 8, !tbaa !5
  br label %994

994:                                              ; preds = %1002, %917
  %995 = load ptr, ptr %36, align 8, !tbaa !5
  %996 = getelementptr inbounds double, ptr %995, i64 0
  %997 = load double, ptr %996, align 8, !tbaa !17
  %998 = load ptr, ptr %27, align 8, !tbaa !5
  %999 = getelementptr inbounds double, ptr %998, i64 0
  %1000 = load double, ptr %999, align 8, !tbaa !17
  %1001 = fcmp olt double %997, %1000
  br i1 %1001, label %1002, label %1046

1002:                                             ; preds = %994
  %1003 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1004 = load ptr, ptr %1003, align 8, !tbaa !11
  %1005 = load ptr, ptr %10, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.otri, ptr %1005, i32 0, i32 0
  store ptr %1004, ptr %1006, align 8, !tbaa !11
  %1007 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1008 = load i32, ptr %1007, align 8, !tbaa !13
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1009
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = load ptr, ptr %10, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.otri, ptr %1012, i32 0, i32 1
  store i32 %1011, ptr %1013, align 8, !tbaa !13
  %1014 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %1014, ptr %29, align 8, !tbaa !5
  %1015 = load ptr, ptr %36, align 8, !tbaa !5
  store ptr %1015, ptr %27, align 8, !tbaa !5
  %1016 = load ptr, ptr %10, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.otri, ptr %1016, i32 0, i32 0
  %1018 = load ptr, ptr %1017, align 8, !tbaa !11
  %1019 = load ptr, ptr %10, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.otri, ptr %1019, i32 0, i32 1
  %1021 = load i32, ptr %1020, align 8, !tbaa !13
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds ptr, ptr %1018, i64 %1022
  %1024 = load ptr, ptr %1023, align 8, !tbaa !5
  store ptr %1024, ptr %41, align 8, !tbaa !5
  %1025 = load ptr, ptr %41, align 8, !tbaa !5
  %1026 = ptrtoint ptr %1025 to i64
  %1027 = and i64 %1026, 3
  %1028 = trunc i64 %1027 to i32
  %1029 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %1028, ptr %1029, align 8, !tbaa !13
  %1030 = load ptr, ptr %41, align 8, !tbaa !5
  %1031 = ptrtoint ptr %1030 to i64
  %1032 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1033 = load i32, ptr %1032, align 8, !tbaa !13
  %1034 = sext i32 %1033 to i64
  %1035 = xor i64 %1031, %1034
  %1036 = inttoptr i64 %1035 to ptr
  %1037 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  store ptr %1036, ptr %1037, align 8, !tbaa !11
  %1038 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1039 = load ptr, ptr %1038, align 8, !tbaa !11
  %1040 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1041 = load i32, ptr %1040, align 8, !tbaa !13
  %1042 = add nsw i32 %1041, 3
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds ptr, ptr %1039, i64 %1043
  %1045 = load ptr, ptr %1044, align 8, !tbaa !5
  store ptr %1045, ptr %36, align 8, !tbaa !5
  br label %994, !llvm.loop !25

1046:                                             ; preds = %994
  br label %1047

1047:                                             ; preds = %1055, %1046
  %1048 = load ptr, ptr %30, align 8, !tbaa !5
  %1049 = getelementptr inbounds double, ptr %1048, i64 0
  %1050 = load double, ptr %1049, align 8, !tbaa !17
  %1051 = load ptr, ptr %28, align 8, !tbaa !5
  %1052 = getelementptr inbounds double, ptr %1051, i64 0
  %1053 = load double, ptr %1052, align 8, !tbaa !17
  %1054 = fcmp ogt double %1050, %1053
  br i1 %1054, label %1055, label %1100

1055:                                             ; preds = %1047
  %1056 = load ptr, ptr %13, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.otri, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 8, !tbaa !13
  %1059 = sext i32 %1058 to i64
  %1060 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1059
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  %1062 = load ptr, ptr %13, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.otri, ptr %1062, i32 0, i32 1
  store i32 %1061, ptr %1063, align 8, !tbaa !13
  %1064 = load ptr, ptr %13, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.otri, ptr %1064, i32 0, i32 0
  %1066 = load ptr, ptr %1065, align 8, !tbaa !11
  %1067 = load ptr, ptr %13, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.otri, ptr %1067, i32 0, i32 1
  %1069 = load i32, ptr %1068, align 8, !tbaa !13
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds ptr, ptr %1066, i64 %1070
  %1072 = load ptr, ptr %1071, align 8, !tbaa !5
  store ptr %1072, ptr %41, align 8, !tbaa !5
  %1073 = load ptr, ptr %41, align 8, !tbaa !5
  %1074 = ptrtoint ptr %1073 to i64
  %1075 = and i64 %1074, 3
  %1076 = trunc i64 %1075 to i32
  %1077 = load ptr, ptr %13, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.otri, ptr %1077, i32 0, i32 1
  store i32 %1076, ptr %1078, align 8, !tbaa !13
  %1079 = load ptr, ptr %41, align 8, !tbaa !5
  %1080 = ptrtoint ptr %1079 to i64
  %1081 = load ptr, ptr %13, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.otri, ptr %1081, i32 0, i32 1
  %1083 = load i32, ptr %1082, align 8, !tbaa !13
  %1084 = sext i32 %1083 to i64
  %1085 = xor i64 %1080, %1084
  %1086 = inttoptr i64 %1085 to ptr
  %1087 = load ptr, ptr %13, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.otri, ptr %1087, i32 0, i32 0
  store ptr %1086, ptr %1088, align 8, !tbaa !11
  %1089 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1089, ptr %28, align 8, !tbaa !5
  %1090 = load ptr, ptr %13, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.otri, ptr %1090, i32 0, i32 0
  %1092 = load ptr, ptr %1091, align 8, !tbaa !11
  %1093 = load ptr, ptr %13, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.otri, ptr %1093, i32 0, i32 1
  %1095 = load i32, ptr %1094, align 8, !tbaa !13
  %1096 = add nsw i32 %1095, 3
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds ptr, ptr %1092, i64 %1097
  %1099 = load ptr, ptr %1098, align 8, !tbaa !5
  store ptr %1099, ptr %30, align 8, !tbaa !5
  br label %1047, !llvm.loop !26

1100:                                             ; preds = %1047
  br label %1101

1101:                                             ; preds = %1100, %914, %909
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 16, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #3
  ret void

1102:                                             ; preds = %777, %758
  %1103 = load i32, ptr %39, align 4, !tbaa !9
  %1104 = icmp ne i32 %1103, 0
  br i1 %1104, label %1416, label %1105

1105:                                             ; preds = %1102
  %1106 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1107 = load ptr, ptr %1106, align 8, !tbaa !11
  %1108 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1107, ptr %1108, align 8, !tbaa !11
  %1109 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1110 = load i32, ptr %1109, align 8, !tbaa !13
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1111
  %1113 = load i32, ptr %1112, align 4, !tbaa !9
  %1114 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1113, ptr %1114, align 8, !tbaa !13
  %1115 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1116 = load ptr, ptr %1115, align 8, !tbaa !11
  %1117 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1118 = load i32, ptr %1117, align 8, !tbaa !13
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds ptr, ptr %1116, i64 %1119
  %1121 = load ptr, ptr %1120, align 8, !tbaa !5
  store ptr %1121, ptr %41, align 8, !tbaa !5
  %1122 = load ptr, ptr %41, align 8, !tbaa !5
  %1123 = ptrtoint ptr %1122 to i64
  %1124 = and i64 %1123, 3
  %1125 = trunc i64 %1124 to i32
  %1126 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1125, ptr %1126, align 8, !tbaa !13
  %1127 = load ptr, ptr %41, align 8, !tbaa !5
  %1128 = ptrtoint ptr %1127 to i64
  %1129 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1130 = load i32, ptr %1129, align 8, !tbaa !13
  %1131 = sext i32 %1130 to i64
  %1132 = xor i64 %1128, %1131
  %1133 = inttoptr i64 %1132 to ptr
  %1134 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1133, ptr %1134, align 8, !tbaa !11
  %1135 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1136 = load ptr, ptr %1135, align 8, !tbaa !11
  %1137 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1138 = load i32, ptr %1137, align 8, !tbaa !13
  %1139 = add nsw i32 %1138, 3
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds ptr, ptr %1136, i64 %1140
  %1142 = load ptr, ptr %1141, align 8, !tbaa !5
  store ptr %1142, ptr %35, align 8, !tbaa !5
  %1143 = load ptr, ptr %35, align 8, !tbaa !5
  %1144 = icmp ne ptr %1143, null
  br i1 %1144, label %1145, label %1415

1145:                                             ; preds = %1105
  %1146 = load ptr, ptr %8, align 8, !tbaa !5
  %1147 = load ptr, ptr %9, align 8, !tbaa !5
  %1148 = load ptr, ptr %31, align 8, !tbaa !5
  %1149 = load ptr, ptr %32, align 8, !tbaa !5
  %1150 = load ptr, ptr %33, align 8, !tbaa !5
  %1151 = load ptr, ptr %35, align 8, !tbaa !5
  %1152 = call double @incircle(ptr noundef %1146, ptr noundef %1147, ptr noundef %1148, ptr noundef %1149, ptr noundef %1150, ptr noundef %1151)
  %1153 = fcmp ogt double %1152, 0.000000e+00
  %1154 = zext i1 %1153 to i32
  store i32 %1154, ptr %38, align 4, !tbaa !9
  br label %1155

1155:                                             ; preds = %1413, %1145
  %1156 = load i32, ptr %38, align 4, !tbaa !9
  %1157 = icmp ne i32 %1156, 0
  br i1 %1157, label %1158, label %1414

1158:                                             ; preds = %1155
  %1159 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1160 = load i32, ptr %1159, align 8, !tbaa !13
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1161
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1163, ptr %1164, align 8, !tbaa !13
  %1165 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1166 = load ptr, ptr %1165, align 8, !tbaa !11
  %1167 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1168 = load i32, ptr %1167, align 8, !tbaa !13
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds ptr, ptr %1166, i64 %1169
  %1171 = load ptr, ptr %1170, align 8, !tbaa !5
  store ptr %1171, ptr %41, align 8, !tbaa !5
  %1172 = load ptr, ptr %41, align 8, !tbaa !5
  %1173 = ptrtoint ptr %1172 to i64
  %1174 = and i64 %1173, 3
  %1175 = trunc i64 %1174 to i32
  %1176 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  store i32 %1175, ptr %1176, align 8, !tbaa !13
  %1177 = load ptr, ptr %41, align 8, !tbaa !5
  %1178 = ptrtoint ptr %1177 to i64
  %1179 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1180 = load i32, ptr %1179, align 8, !tbaa !13
  %1181 = sext i32 %1180 to i64
  %1182 = xor i64 %1178, %1181
  %1183 = inttoptr i64 %1182 to ptr
  %1184 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  store ptr %1183, ptr %1184, align 8, !tbaa !11
  %1185 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1186 = load i32, ptr %1185, align 8, !tbaa !13
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1187
  %1189 = load i32, ptr %1188, align 4, !tbaa !9
  %1190 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1189, ptr %1190, align 8, !tbaa !13
  %1191 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1192 = load ptr, ptr %1191, align 8, !tbaa !11
  %1193 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1194 = load i32, ptr %1193, align 8, !tbaa !13
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds ptr, ptr %1192, i64 %1195
  %1197 = load ptr, ptr %1196, align 8, !tbaa !5
  store ptr %1197, ptr %41, align 8, !tbaa !5
  %1198 = load ptr, ptr %41, align 8, !tbaa !5
  %1199 = ptrtoint ptr %1198 to i64
  %1200 = and i64 %1199, 3
  %1201 = trunc i64 %1200 to i32
  %1202 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  store i32 %1201, ptr %1202, align 8, !tbaa !13
  %1203 = load ptr, ptr %41, align 8, !tbaa !5
  %1204 = ptrtoint ptr %1203 to i64
  %1205 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1206 = load i32, ptr %1205, align 8, !tbaa !13
  %1207 = sext i32 %1206 to i64
  %1208 = xor i64 %1204, %1207
  %1209 = inttoptr i64 %1208 to ptr
  %1210 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  store ptr %1209, ptr %1210, align 8, !tbaa !11
  %1211 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %1212 = load ptr, ptr %1211, align 8, !tbaa !11
  %1213 = ptrtoint ptr %1212 to i64
  %1214 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1215 = load i32, ptr %1214, align 8, !tbaa !13
  %1216 = sext i32 %1215 to i64
  %1217 = or i64 %1213, %1216
  %1218 = inttoptr i64 %1217 to ptr
  %1219 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1220 = load ptr, ptr %1219, align 8, !tbaa !11
  %1221 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1222 = load i32, ptr %1221, align 8, !tbaa !13
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds ptr, ptr %1220, i64 %1223
  store ptr %1218, ptr %1224, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1226 = load ptr, ptr %1225, align 8, !tbaa !11
  %1227 = ptrtoint ptr %1226 to i64
  %1228 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1229 = load i32, ptr %1228, align 8, !tbaa !13
  %1230 = sext i32 %1229 to i64
  %1231 = or i64 %1227, %1230
  %1232 = inttoptr i64 %1231 to ptr
  %1233 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %1234 = load ptr, ptr %1233, align 8, !tbaa !11
  %1235 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1236 = load i32, ptr %1235, align 8, !tbaa !13
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds ptr, ptr %1234, i64 %1237
  store ptr %1232, ptr %1238, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1240 = load ptr, ptr %1239, align 8, !tbaa !11
  %1241 = ptrtoint ptr %1240 to i64
  %1242 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1243 = load i32, ptr %1242, align 8, !tbaa !13
  %1244 = sext i32 %1243 to i64
  %1245 = or i64 %1241, %1244
  %1246 = inttoptr i64 %1245 to ptr
  %1247 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1248 = load ptr, ptr %1247, align 8, !tbaa !11
  %1249 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1250 = load i32, ptr %1249, align 8, !tbaa !13
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds ptr, ptr %1248, i64 %1251
  store ptr %1246, ptr %1252, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8, !tbaa !11
  %1255 = ptrtoint ptr %1254 to i64
  %1256 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1257 = load i32, ptr %1256, align 8, !tbaa !13
  %1258 = sext i32 %1257 to i64
  %1259 = or i64 %1255, %1258
  %1260 = inttoptr i64 %1259 to ptr
  %1261 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1262 = load ptr, ptr %1261, align 8, !tbaa !11
  %1263 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1264 = load i32, ptr %1263, align 8, !tbaa !13
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds ptr, ptr %1262, i64 %1265
  store ptr %1260, ptr %1266, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1268 = load i32, ptr %1267, align 8, !tbaa !13
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1269
  %1271 = load i32, ptr %1270, align 4, !tbaa !9
  %1272 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %1271, ptr %1272, align 8, !tbaa !13
  %1273 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1274 = load ptr, ptr %1273, align 8, !tbaa !11
  %1275 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1276 = load i32, ptr %1275, align 8, !tbaa !13
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds ptr, ptr %1274, i64 %1277
  %1279 = load ptr, ptr %1278, align 8, !tbaa !5
  store ptr %1279, ptr %41, align 8, !tbaa !5
  %1280 = load ptr, ptr %41, align 8, !tbaa !5
  %1281 = ptrtoint ptr %1280 to i64
  %1282 = and i64 %1281, 3
  %1283 = trunc i64 %1282 to i32
  %1284 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  store i32 %1283, ptr %1284, align 8, !tbaa !13
  %1285 = load ptr, ptr %41, align 8, !tbaa !5
  %1286 = ptrtoint ptr %1285 to i64
  %1287 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1288 = load i32, ptr %1287, align 8, !tbaa !13
  %1289 = sext i32 %1288 to i64
  %1290 = xor i64 %1286, %1289
  %1291 = inttoptr i64 %1290 to ptr
  %1292 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  store ptr %1291, ptr %1292, align 8, !tbaa !11
  %1293 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1294 = load i32, ptr %1293, align 8, !tbaa !13
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1295
  %1297 = load i32, ptr %1296, align 4, !tbaa !9
  %1298 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1297, ptr %1298, align 8, !tbaa !13
  %1299 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %1300 = load ptr, ptr %1299, align 8, !tbaa !11
  %1301 = ptrtoint ptr %1300 to i64
  %1302 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1303 = load i32, ptr %1302, align 8, !tbaa !13
  %1304 = sext i32 %1303 to i64
  %1305 = or i64 %1301, %1304
  %1306 = inttoptr i64 %1305 to ptr
  %1307 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1308 = load ptr, ptr %1307, align 8, !tbaa !11
  %1309 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1310 = load i32, ptr %1309, align 8, !tbaa !13
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds ptr, ptr %1308, i64 %1311
  store ptr %1306, ptr %1312, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8, !tbaa !11
  %1315 = ptrtoint ptr %1314 to i64
  %1316 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1317 = load i32, ptr %1316, align 8, !tbaa !13
  %1318 = sext i32 %1317 to i64
  %1319 = or i64 %1315, %1318
  %1320 = inttoptr i64 %1319 to ptr
  %1321 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %1322 = load ptr, ptr %1321, align 8, !tbaa !11
  %1323 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1324 = load i32, ptr %1323, align 8, !tbaa !13
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds ptr, ptr %1322, i64 %1325
  store ptr %1320, ptr %1326, align 8, !tbaa !5
  %1327 = load ptr, ptr %31, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1329 = load ptr, ptr %1328, align 8, !tbaa !11
  %1330 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1331 = load i32, ptr %1330, align 8, !tbaa !13
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1332
  %1334 = load i32, ptr %1333, align 4, !tbaa !9
  %1335 = add nsw i32 %1334, 3
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds ptr, ptr %1329, i64 %1336
  store ptr %1327, ptr %1337, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1339 = load ptr, ptr %1338, align 8, !tbaa !11
  %1340 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1341 = load i32, ptr %1340, align 8, !tbaa !13
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1342
  %1344 = load i32, ptr %1343, align 4, !tbaa !9
  %1345 = add nsw i32 %1344, 3
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds ptr, ptr %1339, i64 %1346
  store ptr null, ptr %1347, align 8, !tbaa !5
  %1348 = load ptr, ptr %35, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1350 = load ptr, ptr %1349, align 8, !tbaa !11
  %1351 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1352 = load i32, ptr %1351, align 8, !tbaa !13
  %1353 = add nsw i32 %1352, 3
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds ptr, ptr %1350, i64 %1354
  store ptr %1348, ptr %1355, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1357 = load ptr, ptr %1356, align 8, !tbaa !11
  %1358 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1359 = load i32, ptr %1358, align 8, !tbaa !13
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1360
  %1362 = load i32, ptr %1361, align 4, !tbaa !9
  %1363 = add nsw i32 %1362, 3
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds ptr, ptr %1357, i64 %1364
  store ptr null, ptr %1365, align 8, !tbaa !5
  %1366 = load ptr, ptr %33, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1368 = load ptr, ptr %1367, align 8, !tbaa !11
  %1369 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1370 = load i32, ptr %1369, align 8, !tbaa !13
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1371
  %1373 = load i32, ptr %1372, align 4, !tbaa !9
  %1374 = add nsw i32 %1373, 3
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds ptr, ptr %1368, i64 %1375
  store ptr %1366, ptr %1376, align 8, !tbaa !5
  %1377 = load ptr, ptr %35, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1379 = load ptr, ptr %1378, align 8, !tbaa !11
  %1380 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1381 = load i32, ptr %1380, align 8, !tbaa !13
  %1382 = add nsw i32 %1381, 3
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds ptr, ptr %1379, i64 %1383
  store ptr %1377, ptr %1384, align 8, !tbaa !5
  %1385 = load ptr, ptr %35, align 8, !tbaa !5
  store ptr %1385, ptr %33, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1387 = load ptr, ptr %1386, align 8, !tbaa !11
  %1388 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1387, ptr %1388, align 8, !tbaa !11
  %1389 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1390 = load i32, ptr %1389, align 8, !tbaa !13
  %1391 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1390, ptr %1391, align 8, !tbaa !13
  %1392 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1393 = load ptr, ptr %1392, align 8, !tbaa !11
  %1394 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1395 = load i32, ptr %1394, align 8, !tbaa !13
  %1396 = add nsw i32 %1395, 3
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds ptr, ptr %1393, i64 %1397
  %1399 = load ptr, ptr %1398, align 8, !tbaa !5
  store ptr %1399, ptr %35, align 8, !tbaa !5
  %1400 = load ptr, ptr %35, align 8, !tbaa !5
  %1401 = icmp ne ptr %1400, null
  br i1 %1401, label %1402, label %1412

1402:                                             ; preds = %1158
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = load ptr, ptr %9, align 8, !tbaa !5
  %1405 = load ptr, ptr %31, align 8, !tbaa !5
  %1406 = load ptr, ptr %32, align 8, !tbaa !5
  %1407 = load ptr, ptr %33, align 8, !tbaa !5
  %1408 = load ptr, ptr %35, align 8, !tbaa !5
  %1409 = call double @incircle(ptr noundef %1403, ptr noundef %1404, ptr noundef %1405, ptr noundef %1406, ptr noundef %1407, ptr noundef %1408)
  %1410 = fcmp ogt double %1409, 0.000000e+00
  %1411 = zext i1 %1410 to i32
  store i32 %1411, ptr %38, align 4, !tbaa !9
  br label %1413

1412:                                             ; preds = %1158
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %1413

1413:                                             ; preds = %1412, %1402
  br label %1155, !llvm.loop !27

1414:                                             ; preds = %1155
  br label %1415

1415:                                             ; preds = %1414, %1105
  br label %1416

1416:                                             ; preds = %1415, %1102
  %1417 = load i32, ptr %40, align 4, !tbaa !9
  %1418 = icmp ne i32 %1417, 0
  br i1 %1418, label %1730, label %1419

1419:                                             ; preds = %1416
  %1420 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1421 = load ptr, ptr %1420, align 8, !tbaa !11
  %1422 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1421, ptr %1422, align 8, !tbaa !11
  %1423 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1424 = load i32, ptr %1423, align 8, !tbaa !13
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1425
  %1427 = load i32, ptr %1426, align 4, !tbaa !9
  %1428 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1427, ptr %1428, align 8, !tbaa !13
  %1429 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1430 = load ptr, ptr %1429, align 8, !tbaa !11
  %1431 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1432 = load i32, ptr %1431, align 8, !tbaa !13
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds ptr, ptr %1430, i64 %1433
  %1435 = load ptr, ptr %1434, align 8, !tbaa !5
  store ptr %1435, ptr %41, align 8, !tbaa !5
  %1436 = load ptr, ptr %41, align 8, !tbaa !5
  %1437 = ptrtoint ptr %1436 to i64
  %1438 = and i64 %1437, 3
  %1439 = trunc i64 %1438 to i32
  %1440 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1439, ptr %1440, align 8, !tbaa !13
  %1441 = load ptr, ptr %41, align 8, !tbaa !5
  %1442 = ptrtoint ptr %1441 to i64
  %1443 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1444 = load i32, ptr %1443, align 8, !tbaa !13
  %1445 = sext i32 %1444 to i64
  %1446 = xor i64 %1442, %1445
  %1447 = inttoptr i64 %1446 to ptr
  %1448 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1447, ptr %1448, align 8, !tbaa !11
  %1449 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1450 = load ptr, ptr %1449, align 8, !tbaa !11
  %1451 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1452 = load i32, ptr %1451, align 8, !tbaa !13
  %1453 = add nsw i32 %1452, 3
  %1454 = sext i32 %1453 to i64
  %1455 = getelementptr inbounds ptr, ptr %1450, i64 %1454
  %1456 = load ptr, ptr %1455, align 8, !tbaa !5
  store ptr %1456, ptr %35, align 8, !tbaa !5
  %1457 = load ptr, ptr %35, align 8, !tbaa !5
  %1458 = icmp ne ptr %1457, null
  br i1 %1458, label %1459, label %1729

1459:                                             ; preds = %1419
  %1460 = load ptr, ptr %8, align 8, !tbaa !5
  %1461 = load ptr, ptr %9, align 8, !tbaa !5
  %1462 = load ptr, ptr %31, align 8, !tbaa !5
  %1463 = load ptr, ptr %32, align 8, !tbaa !5
  %1464 = load ptr, ptr %34, align 8, !tbaa !5
  %1465 = load ptr, ptr %35, align 8, !tbaa !5
  %1466 = call double @incircle(ptr noundef %1460, ptr noundef %1461, ptr noundef %1462, ptr noundef %1463, ptr noundef %1464, ptr noundef %1465)
  %1467 = fcmp ogt double %1466, 0.000000e+00
  %1468 = zext i1 %1467 to i32
  store i32 %1468, ptr %38, align 4, !tbaa !9
  br label %1469

1469:                                             ; preds = %1727, %1459
  %1470 = load i32, ptr %38, align 4, !tbaa !9
  %1471 = icmp ne i32 %1470, 0
  br i1 %1471, label %1472, label %1728

1472:                                             ; preds = %1469
  %1473 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1474 = load i32, ptr %1473, align 8, !tbaa !13
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1475
  %1477 = load i32, ptr %1476, align 4, !tbaa !9
  %1478 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1477, ptr %1478, align 8, !tbaa !13
  %1479 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1480 = load ptr, ptr %1479, align 8, !tbaa !11
  %1481 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1482 = load i32, ptr %1481, align 8, !tbaa !13
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds ptr, ptr %1480, i64 %1483
  %1485 = load ptr, ptr %1484, align 8, !tbaa !5
  store ptr %1485, ptr %41, align 8, !tbaa !5
  %1486 = load ptr, ptr %41, align 8, !tbaa !5
  %1487 = ptrtoint ptr %1486 to i64
  %1488 = and i64 %1487, 3
  %1489 = trunc i64 %1488 to i32
  %1490 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  store i32 %1489, ptr %1490, align 8, !tbaa !13
  %1491 = load ptr, ptr %41, align 8, !tbaa !5
  %1492 = ptrtoint ptr %1491 to i64
  %1493 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1494 = load i32, ptr %1493, align 8, !tbaa !13
  %1495 = sext i32 %1494 to i64
  %1496 = xor i64 %1492, %1495
  %1497 = inttoptr i64 %1496 to ptr
  %1498 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  store ptr %1497, ptr %1498, align 8, !tbaa !11
  %1499 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1500 = load i32, ptr %1499, align 8, !tbaa !13
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1501
  %1503 = load i32, ptr %1502, align 4, !tbaa !9
  %1504 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1503, ptr %1504, align 8, !tbaa !13
  %1505 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1506 = load ptr, ptr %1505, align 8, !tbaa !11
  %1507 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1508 = load i32, ptr %1507, align 8, !tbaa !13
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds ptr, ptr %1506, i64 %1509
  %1511 = load ptr, ptr %1510, align 8, !tbaa !5
  store ptr %1511, ptr %41, align 8, !tbaa !5
  %1512 = load ptr, ptr %41, align 8, !tbaa !5
  %1513 = ptrtoint ptr %1512 to i64
  %1514 = and i64 %1513, 3
  %1515 = trunc i64 %1514 to i32
  %1516 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  store i32 %1515, ptr %1516, align 8, !tbaa !13
  %1517 = load ptr, ptr %41, align 8, !tbaa !5
  %1518 = ptrtoint ptr %1517 to i64
  %1519 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1520 = load i32, ptr %1519, align 8, !tbaa !13
  %1521 = sext i32 %1520 to i64
  %1522 = xor i64 %1518, %1521
  %1523 = inttoptr i64 %1522 to ptr
  %1524 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  store ptr %1523, ptr %1524, align 8, !tbaa !11
  %1525 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %1526 = load ptr, ptr %1525, align 8, !tbaa !11
  %1527 = ptrtoint ptr %1526 to i64
  %1528 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1529 = load i32, ptr %1528, align 8, !tbaa !13
  %1530 = sext i32 %1529 to i64
  %1531 = or i64 %1527, %1530
  %1532 = inttoptr i64 %1531 to ptr
  %1533 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1534 = load ptr, ptr %1533, align 8, !tbaa !11
  %1535 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1536 = load i32, ptr %1535, align 8, !tbaa !13
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds ptr, ptr %1534, i64 %1537
  store ptr %1532, ptr %1538, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1540 = load ptr, ptr %1539, align 8, !tbaa !11
  %1541 = ptrtoint ptr %1540 to i64
  %1542 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1543 = load i32, ptr %1542, align 8, !tbaa !13
  %1544 = sext i32 %1543 to i64
  %1545 = or i64 %1541, %1544
  %1546 = inttoptr i64 %1545 to ptr
  %1547 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %1548 = load ptr, ptr %1547, align 8, !tbaa !11
  %1549 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1550 = load i32, ptr %1549, align 8, !tbaa !13
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds ptr, ptr %1548, i64 %1551
  store ptr %1546, ptr %1552, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1554 = load ptr, ptr %1553, align 8, !tbaa !11
  %1555 = ptrtoint ptr %1554 to i64
  %1556 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1557 = load i32, ptr %1556, align 8, !tbaa !13
  %1558 = sext i32 %1557 to i64
  %1559 = or i64 %1555, %1558
  %1560 = inttoptr i64 %1559 to ptr
  %1561 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1562 = load ptr, ptr %1561, align 8, !tbaa !11
  %1563 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1564 = load i32, ptr %1563, align 8, !tbaa !13
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds ptr, ptr %1562, i64 %1565
  store ptr %1560, ptr %1566, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1568 = load ptr, ptr %1567, align 8, !tbaa !11
  %1569 = ptrtoint ptr %1568 to i64
  %1570 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1571 = load i32, ptr %1570, align 8, !tbaa !13
  %1572 = sext i32 %1571 to i64
  %1573 = or i64 %1569, %1572
  %1574 = inttoptr i64 %1573 to ptr
  %1575 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1576 = load ptr, ptr %1575, align 8, !tbaa !11
  %1577 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1578 = load i32, ptr %1577, align 8, !tbaa !13
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds ptr, ptr %1576, i64 %1579
  store ptr %1574, ptr %1580, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1582 = load i32, ptr %1581, align 8, !tbaa !13
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1583
  %1585 = load i32, ptr %1584, align 4, !tbaa !9
  %1586 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %1585, ptr %1586, align 8, !tbaa !13
  %1587 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1588 = load ptr, ptr %1587, align 8, !tbaa !11
  %1589 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1590 = load i32, ptr %1589, align 8, !tbaa !13
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds ptr, ptr %1588, i64 %1591
  %1593 = load ptr, ptr %1592, align 8, !tbaa !5
  store ptr %1593, ptr %41, align 8, !tbaa !5
  %1594 = load ptr, ptr %41, align 8, !tbaa !5
  %1595 = ptrtoint ptr %1594 to i64
  %1596 = and i64 %1595, 3
  %1597 = trunc i64 %1596 to i32
  %1598 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  store i32 %1597, ptr %1598, align 8, !tbaa !13
  %1599 = load ptr, ptr %41, align 8, !tbaa !5
  %1600 = ptrtoint ptr %1599 to i64
  %1601 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1602 = load i32, ptr %1601, align 8, !tbaa !13
  %1603 = sext i32 %1602 to i64
  %1604 = xor i64 %1600, %1603
  %1605 = inttoptr i64 %1604 to ptr
  %1606 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  store ptr %1605, ptr %1606, align 8, !tbaa !11
  %1607 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1608 = load i32, ptr %1607, align 8, !tbaa !13
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1609
  %1611 = load i32, ptr %1610, align 4, !tbaa !9
  %1612 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1611, ptr %1612, align 8, !tbaa !13
  %1613 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %1614 = load ptr, ptr %1613, align 8, !tbaa !11
  %1615 = ptrtoint ptr %1614 to i64
  %1616 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1617 = load i32, ptr %1616, align 8, !tbaa !13
  %1618 = sext i32 %1617 to i64
  %1619 = or i64 %1615, %1618
  %1620 = inttoptr i64 %1619 to ptr
  %1621 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1622 = load ptr, ptr %1621, align 8, !tbaa !11
  %1623 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1624 = load i32, ptr %1623, align 8, !tbaa !13
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds ptr, ptr %1622, i64 %1625
  store ptr %1620, ptr %1626, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1628 = load ptr, ptr %1627, align 8, !tbaa !11
  %1629 = ptrtoint ptr %1628 to i64
  %1630 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1631 = load i32, ptr %1630, align 8, !tbaa !13
  %1632 = sext i32 %1631 to i64
  %1633 = or i64 %1629, %1632
  %1634 = inttoptr i64 %1633 to ptr
  %1635 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %1636 = load ptr, ptr %1635, align 8, !tbaa !11
  %1637 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %1638 = load i32, ptr %1637, align 8, !tbaa !13
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds ptr, ptr %1636, i64 %1639
  store ptr %1634, ptr %1640, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1642 = load ptr, ptr %1641, align 8, !tbaa !11
  %1643 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1644 = load i32, ptr %1643, align 8, !tbaa !13
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1645
  %1647 = load i32, ptr %1646, align 4, !tbaa !9
  %1648 = add nsw i32 %1647, 3
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds ptr, ptr %1642, i64 %1649
  store ptr null, ptr %1650, align 8, !tbaa !5
  %1651 = load ptr, ptr %32, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1653 = load ptr, ptr %1652, align 8, !tbaa !11
  %1654 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1655 = load i32, ptr %1654, align 8, !tbaa !13
  %1656 = sext i32 %1655 to i64
  %1657 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1656
  %1658 = load i32, ptr %1657, align 4, !tbaa !9
  %1659 = add nsw i32 %1658, 3
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds ptr, ptr %1653, i64 %1660
  store ptr %1651, ptr %1661, align 8, !tbaa !5
  %1662 = load ptr, ptr %35, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1664 = load ptr, ptr %1663, align 8, !tbaa !11
  %1665 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1666 = load i32, ptr %1665, align 8, !tbaa !13
  %1667 = add nsw i32 %1666, 3
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds ptr, ptr %1664, i64 %1668
  store ptr %1662, ptr %1669, align 8, !tbaa !5
  %1670 = load ptr, ptr %34, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1672 = load ptr, ptr %1671, align 8, !tbaa !11
  %1673 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1674 = load i32, ptr %1673, align 8, !tbaa !13
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1675
  %1677 = load i32, ptr %1676, align 4, !tbaa !9
  %1678 = add nsw i32 %1677, 3
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds ptr, ptr %1672, i64 %1679
  store ptr %1670, ptr %1680, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1682 = load ptr, ptr %1681, align 8, !tbaa !11
  %1683 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1684 = load i32, ptr %1683, align 8, !tbaa !13
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1685
  %1687 = load i32, ptr %1686, align 4, !tbaa !9
  %1688 = add nsw i32 %1687, 3
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds ptr, ptr %1682, i64 %1689
  store ptr null, ptr %1690, align 8, !tbaa !5
  %1691 = load ptr, ptr %35, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1693 = load ptr, ptr %1692, align 8, !tbaa !11
  %1694 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1695 = load i32, ptr %1694, align 8, !tbaa !13
  %1696 = add nsw i32 %1695, 3
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds ptr, ptr %1693, i64 %1697
  store ptr %1691, ptr %1698, align 8, !tbaa !5
  %1699 = load ptr, ptr %35, align 8, !tbaa !5
  store ptr %1699, ptr %34, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1701 = load ptr, ptr %1700, align 8, !tbaa !11
  %1702 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1701, ptr %1702, align 8, !tbaa !11
  %1703 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1704 = load i32, ptr %1703, align 8, !tbaa !13
  %1705 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1704, ptr %1705, align 8, !tbaa !13
  %1706 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1707 = load ptr, ptr %1706, align 8, !tbaa !11
  %1708 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1709 = load i32, ptr %1708, align 8, !tbaa !13
  %1710 = add nsw i32 %1709, 3
  %1711 = sext i32 %1710 to i64
  %1712 = getelementptr inbounds ptr, ptr %1707, i64 %1711
  %1713 = load ptr, ptr %1712, align 8, !tbaa !5
  store ptr %1713, ptr %35, align 8, !tbaa !5
  %1714 = load ptr, ptr %35, align 8, !tbaa !5
  %1715 = icmp ne ptr %1714, null
  br i1 %1715, label %1716, label %1726

1716:                                             ; preds = %1472
  %1717 = load ptr, ptr %8, align 8, !tbaa !5
  %1718 = load ptr, ptr %9, align 8, !tbaa !5
  %1719 = load ptr, ptr %31, align 8, !tbaa !5
  %1720 = load ptr, ptr %32, align 8, !tbaa !5
  %1721 = load ptr, ptr %34, align 8, !tbaa !5
  %1722 = load ptr, ptr %35, align 8, !tbaa !5
  %1723 = call double @incircle(ptr noundef %1717, ptr noundef %1718, ptr noundef %1719, ptr noundef %1720, ptr noundef %1721, ptr noundef %1722)
  %1724 = fcmp ogt double %1723, 0.000000e+00
  %1725 = zext i1 %1724 to i32
  store i32 %1725, ptr %38, align 4, !tbaa !9
  br label %1727

1726:                                             ; preds = %1472
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %1727

1727:                                             ; preds = %1726, %1716
  br label %1469, !llvm.loop !28

1728:                                             ; preds = %1469
  br label %1729

1729:                                             ; preds = %1728, %1419
  br label %1730

1730:                                             ; preds = %1729, %1416
  %1731 = load i32, ptr %39, align 4, !tbaa !9
  %1732 = icmp ne i32 %1731, 0
  br i1 %1732, label %1745, label %1733

1733:                                             ; preds = %1730
  %1734 = load i32, ptr %40, align 4, !tbaa !9
  %1735 = icmp ne i32 %1734, 0
  br i1 %1735, label %1823, label %1736

1736:                                             ; preds = %1733
  %1737 = load ptr, ptr %8, align 8, !tbaa !5
  %1738 = load ptr, ptr %9, align 8, !tbaa !5
  %1739 = load ptr, ptr %33, align 8, !tbaa !5
  %1740 = load ptr, ptr %31, align 8, !tbaa !5
  %1741 = load ptr, ptr %32, align 8, !tbaa !5
  %1742 = load ptr, ptr %34, align 8, !tbaa !5
  %1743 = call double @incircle(ptr noundef %1737, ptr noundef %1738, ptr noundef %1739, ptr noundef %1740, ptr noundef %1741, ptr noundef %1742)
  %1744 = fcmp ogt double %1743, 0.000000e+00
  br i1 %1744, label %1745, label %1823

1745:                                             ; preds = %1736, %1730
  %1746 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1747 = load ptr, ptr %1746, align 8, !tbaa !11
  %1748 = ptrtoint ptr %1747 to i64
  %1749 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1750 = load i32, ptr %1749, align 8, !tbaa !13
  %1751 = sext i32 %1750 to i64
  %1752 = or i64 %1748, %1751
  %1753 = inttoptr i64 %1752 to ptr
  %1754 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1755 = load ptr, ptr %1754, align 8, !tbaa !11
  %1756 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1757 = load i32, ptr %1756, align 8, !tbaa !13
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds ptr, ptr %1755, i64 %1758
  store ptr %1753, ptr %1759, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1761 = load ptr, ptr %1760, align 8, !tbaa !11
  %1762 = ptrtoint ptr %1761 to i64
  %1763 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1764 = load i32, ptr %1763, align 8, !tbaa !13
  %1765 = sext i32 %1764 to i64
  %1766 = or i64 %1762, %1765
  %1767 = inttoptr i64 %1766 to ptr
  %1768 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1769 = load ptr, ptr %1768, align 8, !tbaa !11
  %1770 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1771 = load i32, ptr %1770, align 8, !tbaa !13
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds ptr, ptr %1769, i64 %1772
  store ptr %1767, ptr %1773, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1775 = load ptr, ptr %1774, align 8, !tbaa !11
  %1776 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  store ptr %1775, ptr %1776, align 8, !tbaa !11
  %1777 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1778 = load i32, ptr %1777, align 8, !tbaa !13
  %1779 = sext i32 %1778 to i64
  %1780 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1779
  %1781 = load i32, ptr %1780, align 4, !tbaa !9
  %1782 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %1781, ptr %1782, align 8, !tbaa !13
  %1783 = load ptr, ptr %31, align 8, !tbaa !5
  %1784 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1785 = load ptr, ptr %1784, align 8, !tbaa !11
  %1786 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1787 = load i32, ptr %1786, align 8, !tbaa !13
  %1788 = sext i32 %1787 to i64
  %1789 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1788
  %1790 = load i32, ptr %1789, align 4, !tbaa !9
  %1791 = add nsw i32 %1790, 3
  %1792 = sext i32 %1791 to i64
  %1793 = getelementptr inbounds ptr, ptr %1785, i64 %1792
  store ptr %1783, ptr %1793, align 8, !tbaa !5
  %1794 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %1794, ptr %32, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1796 = load ptr, ptr %1795, align 8, !tbaa !11
  %1797 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1798 = load i32, ptr %1797, align 8, !tbaa !13
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds ptr, ptr %1796, i64 %1799
  %1801 = load ptr, ptr %1800, align 8, !tbaa !5
  store ptr %1801, ptr %41, align 8, !tbaa !5
  %1802 = load ptr, ptr %41, align 8, !tbaa !5
  %1803 = ptrtoint ptr %1802 to i64
  %1804 = and i64 %1803, 3
  %1805 = trunc i64 %1804 to i32
  %1806 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %1805, ptr %1806, align 8, !tbaa !13
  %1807 = load ptr, ptr %41, align 8, !tbaa !5
  %1808 = ptrtoint ptr %1807 to i64
  %1809 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1810 = load i32, ptr %1809, align 8, !tbaa !13
  %1811 = sext i32 %1810 to i64
  %1812 = xor i64 %1808, %1811
  %1813 = inttoptr i64 %1812 to ptr
  %1814 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %1813, ptr %1814, align 8, !tbaa !11
  %1815 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1816 = load ptr, ptr %1815, align 8, !tbaa !11
  %1817 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1818 = load i32, ptr %1817, align 8, !tbaa !13
  %1819 = add nsw i32 %1818, 3
  %1820 = sext i32 %1819 to i64
  %1821 = getelementptr inbounds ptr, ptr %1816, i64 %1820
  %1822 = load ptr, ptr %1821, align 8, !tbaa !5
  store ptr %1822, ptr %34, align 8, !tbaa !5
  br label %1901

1823:                                             ; preds = %1736, %1733
  %1824 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1825 = load ptr, ptr %1824, align 8, !tbaa !11
  %1826 = ptrtoint ptr %1825 to i64
  %1827 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1828 = load i32, ptr %1827, align 8, !tbaa !13
  %1829 = sext i32 %1828 to i64
  %1830 = or i64 %1826, %1829
  %1831 = inttoptr i64 %1830 to ptr
  %1832 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1833 = load ptr, ptr %1832, align 8, !tbaa !11
  %1834 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1835 = load i32, ptr %1834, align 8, !tbaa !13
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds ptr, ptr %1833, i64 %1836
  store ptr %1831, ptr %1837, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1839 = load ptr, ptr %1838, align 8, !tbaa !11
  %1840 = ptrtoint ptr %1839 to i64
  %1841 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1842 = load i32, ptr %1841, align 8, !tbaa !13
  %1843 = sext i32 %1842 to i64
  %1844 = or i64 %1840, %1843
  %1845 = inttoptr i64 %1844 to ptr
  %1846 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1847 = load ptr, ptr %1846, align 8, !tbaa !11
  %1848 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1849 = load i32, ptr %1848, align 8, !tbaa !13
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds ptr, ptr %1847, i64 %1850
  store ptr %1845, ptr %1851, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1853 = load ptr, ptr %1852, align 8, !tbaa !11
  %1854 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  store ptr %1853, ptr %1854, align 8, !tbaa !11
  %1855 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1856 = load i32, ptr %1855, align 8, !tbaa !13
  %1857 = sext i32 %1856 to i64
  %1858 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1857
  %1859 = load i32, ptr %1858, align 4, !tbaa !9
  %1860 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %1859, ptr %1860, align 8, !tbaa !13
  %1861 = load ptr, ptr %32, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1863 = load ptr, ptr %1862, align 8, !tbaa !11
  %1864 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1865 = load i32, ptr %1864, align 8, !tbaa !13
  %1866 = sext i32 %1865 to i64
  %1867 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1866
  %1868 = load i32, ptr %1867, align 4, !tbaa !9
  %1869 = add nsw i32 %1868, 3
  %1870 = sext i32 %1869 to i64
  %1871 = getelementptr inbounds ptr, ptr %1863, i64 %1870
  store ptr %1861, ptr %1871, align 8, !tbaa !5
  %1872 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %1872, ptr %31, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1874 = load ptr, ptr %1873, align 8, !tbaa !11
  %1875 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1876 = load i32, ptr %1875, align 8, !tbaa !13
  %1877 = sext i32 %1876 to i64
  %1878 = getelementptr inbounds ptr, ptr %1874, i64 %1877
  %1879 = load ptr, ptr %1878, align 8, !tbaa !5
  store ptr %1879, ptr %41, align 8, !tbaa !5
  %1880 = load ptr, ptr %41, align 8, !tbaa !5
  %1881 = ptrtoint ptr %1880 to i64
  %1882 = and i64 %1881, 3
  %1883 = trunc i64 %1882 to i32
  %1884 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %1883, ptr %1884, align 8, !tbaa !13
  %1885 = load ptr, ptr %41, align 8, !tbaa !5
  %1886 = ptrtoint ptr %1885 to i64
  %1887 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1888 = load i32, ptr %1887, align 8, !tbaa !13
  %1889 = sext i32 %1888 to i64
  %1890 = xor i64 %1886, %1889
  %1891 = inttoptr i64 %1890 to ptr
  %1892 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  store ptr %1891, ptr %1892, align 8, !tbaa !11
  %1893 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %1894 = load ptr, ptr %1893, align 8, !tbaa !11
  %1895 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %1896 = load i32, ptr %1895, align 8, !tbaa !13
  %1897 = add nsw i32 %1896, 3
  %1898 = sext i32 %1897 to i64
  %1899 = getelementptr inbounds ptr, ptr %1894, i64 %1898
  %1900 = load ptr, ptr %1899, align 8, !tbaa !5
  store ptr %1900, ptr %33, align 8, !tbaa !5
  br label %1901

1901:                                             ; preds = %1823, %1745
  %1902 = load ptr, ptr %9, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.behavior, ptr %1902, i32 0, i32 29
  %1904 = load i32, ptr %1903, align 4, !tbaa !24
  %1905 = icmp sgt i32 %1904, 2
  br i1 %1905, label %1906, label %1910

1906:                                             ; preds = %1901
  %1907 = call i32 (ptr, ...) @printf(ptr noundef @.str.971)
  %1908 = load ptr, ptr %8, align 8, !tbaa !5
  %1909 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1908, ptr noundef %1909, ptr noundef %17)
  br label %1910

1910:                                             ; preds = %1906, %1901
  br label %757
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !6, i64 0}
!12 = !{!"otri", !6, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = !{!15, !10, i64 100}
!15 = !{!"behavior", !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, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !7, i64 168, !7, i64 2216, !7, i64 4264, !7, i64 6312, !7, i64 8360, !7, i64 10408, !7, i64 12456, !7, i64 14504, !7, i64 16552, !7, i64 18600, !7, i64 20648, !7, i64 22696}
!16 = !{!"double", !7, i64 0}
!17 = !{!16, !16, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = !{!15, !10, i64 116}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.otri = type { ptr, i32 }

@plus1mod3 = external dso_local local_unnamed_addr global [3 x i32], align 4
@minus1mod3 = external dso_local local_unnamed_addr global [3 x i32], align 4
@.str.969 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.970 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.971 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @printtriangle(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @maketriangle(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @counterclockwise(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @incircle(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @mergehulls(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr nocapture noundef %3, ptr nocapture noundef %4, ptr nocapture noundef %5, i32 noundef %6) local_unnamed_addr #2 {
  %8 = alloca %struct.otri, align 8
  %9 = alloca %struct.otri, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #3
  %10 = load ptr, ptr %3, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %3, i64 8
  %12 = load i32, ptr %11, align 8, !tbaa !11
  %13 = sext i32 %12 to i64
  %14 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %13
  %15 = load i32, ptr %14, align 4, !tbaa !12
  %16 = sext i32 %15 to i64
  %17 = getelementptr ptr, ptr %10, i64 %16
  %18 = getelementptr i8, ptr %17, i64 24
  %19 = load ptr, ptr %18, align 8, !tbaa !13
  %20 = getelementptr ptr, ptr %10, i64 %13
  %21 = getelementptr i8, ptr %20, i64 24
  %22 = load ptr, ptr %21, align 8, !tbaa !13
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %4, i64 8
  %25 = load i32, ptr %24, align 8, !tbaa !11
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %26
  %28 = load i32, ptr %27, align 4, !tbaa !12
  %29 = sext i32 %28 to i64
  %30 = getelementptr ptr, ptr %23, i64 %29
  %31 = getelementptr i8, ptr %30, i64 24
  %32 = load ptr, ptr %31, align 8, !tbaa !13
  %33 = getelementptr ptr, ptr %23, i64 %26
  %34 = getelementptr i8, ptr %33, i64 24
  %35 = load ptr, ptr %34, align 8, !tbaa !13
  %36 = getelementptr inbounds i8, ptr %1, i64 100
  %37 = load i32, ptr %36, align 4, !tbaa !14
  %38 = icmp ne i32 %37, 0
  %39 = icmp eq i32 %6, 1
  %or.cond = and i1 %39, %38
  br i1 %or.cond, label %40, label %.loopexit496.preheader

40:                                               ; preds = %7
  %41 = load ptr, ptr %2, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %2, i64 8
  %43 = load i32, ptr %42, align 8, !tbaa !11
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %44
  %46 = load i32, ptr %45, align 4, !tbaa !12
  %47 = sext i32 %46 to i64
  %48 = getelementptr ptr, ptr %41, i64 %47
  %49 = getelementptr i8, ptr %48, i64 24
  %50 = load ptr, ptr %49, align 8, !tbaa !13
  %51 = getelementptr ptr, ptr %41, i64 %44
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %5, i64 8
  %54 = load i32, ptr %53, align 8, !tbaa !11
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %55
  %57 = load i32, ptr %56, align 4, !tbaa !12
  %58 = sext i32 %57 to i64
  %59 = getelementptr ptr, ptr %52, i64 %58
  %60 = getelementptr i8, ptr %59, i64 24
  %61 = load ptr, ptr %60, align 8, !tbaa !13
  %.0422.in498 = getelementptr inbounds i8, ptr %51, i64 24
  %.0422499 = load ptr, ptr %.0422.in498, align 8, !tbaa !13
  %62 = getelementptr inbounds i8, ptr %.0422499, i64 8
  %63 = load double, ptr %62, align 8, !tbaa !17
  %64 = getelementptr inbounds i8, ptr %50, i64 8
  %65 = load double, ptr %64, align 8, !tbaa !17
  %66 = fcmp olt double %63, %65
  br i1 %66, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %40, %.lr.ph
  %67 = phi double [ %84, %.lr.ph ], [ %63, %40 ]
  %68 = phi ptr [ %80, %.lr.ph ], [ %41, %40 ]
  %69 = phi i32 [ %78, %.lr.ph ], [ %43, %40 ]
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %70
  %72 = load i32, ptr %71, align 4, !tbaa !12
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds ptr, ptr %68, i64 %73
  %75 = load ptr, ptr %74, align 8, !tbaa !13
  %76 = ptrtoint ptr %75 to i64
  %77 = trunc i64 %76 to i32
  %78 = and i32 %77, 3
  store i32 %78, ptr %42, align 8, !tbaa !11
  %79 = and i64 %76, -4
  %80 = inttoptr i64 %79 to ptr
  store ptr %80, ptr %2, align 8, !tbaa !5
  %81 = and i64 %76, 3
  %82 = getelementptr inbounds ptr, ptr %80, i64 %81
  %.0422.in = getelementptr inbounds i8, ptr %82, i64 24
  %.0422 = load ptr, ptr %.0422.in, align 8, !tbaa !13
  %83 = getelementptr inbounds i8, ptr %.0422, i64 8
  %84 = load double, ptr %83, align 8, !tbaa !17
  %85 = fcmp olt double %84, %67
  br i1 %85, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !18

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load ptr, ptr %3, align 8, !tbaa !5
  %.pre580 = load i32, ptr %11, align 8, !tbaa !11
  %.pre581 = sext i32 %.pre580 to i64
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %40
  %.pre-phi = phi i64 [ %.pre581, %._crit_edge.loopexit ], [ %13, %40 ]
  %86 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %10, %40 ]
  %87 = getelementptr inbounds ptr, ptr %86, i64 %.pre-phi
  %88 = load ptr, ptr %87, align 8, !tbaa !13
  %89 = ptrtoint ptr %88 to i64
  %90 = and i64 %89, 3
  %91 = and i64 %89, -4
  %92 = inttoptr i64 %91 to ptr
  %93 = getelementptr inbounds ptr, ptr %92, i64 %90
  %.0404.in502 = getelementptr inbounds i8, ptr %93, i64 24
  %.0404503 = load ptr, ptr %.0404.in502, align 8, !tbaa !13
  %94 = getelementptr inbounds i8, ptr %.0404503, i64 8
  %95 = load double, ptr %94, align 8, !tbaa !17
  %96 = getelementptr inbounds i8, ptr %19, i64 8
  %97 = load double, ptr %96, align 8, !tbaa !17
  %98 = fcmp ogt double %95, %97
  br i1 %98, label %.lr.ph509, label %.preheader497

.preheader497:                                    ; preds = %.lr.ph509, %._crit_edge
  %.0439.lcssa = phi ptr [ %19, %._crit_edge ], [ %.0404507, %.lr.ph509 ]
  %.0431.lcssa = phi ptr [ %22, %._crit_edge ], [ %.0439506, %.lr.ph509 ]
  %99 = getelementptr inbounds i8, ptr %35, i64 8
  %100 = load double, ptr %99, align 8, !tbaa !17
  %101 = getelementptr inbounds i8, ptr %32, i64 8
  %102 = load double, ptr %101, align 8, !tbaa !17
  %103 = fcmp olt double %100, %102
  br i1 %103, label %.lr.ph512, label %._crit_edge513

.lr.ph512:                                        ; preds = %.preheader497
  %.promoted516 = load i32, ptr %24, align 8, !tbaa !11
  %.promoted517 = load ptr, ptr %4, align 8, !tbaa !5
  br label %118

.lr.ph509:                                        ; preds = %._crit_edge, %.lr.ph509
  %104 = phi double [ %116, %.lr.ph509 ], [ %95, %._crit_edge ]
  %.0404507 = phi ptr [ %.0404, %.lr.ph509 ], [ %.0404503, %._crit_edge ]
  %.0439506 = phi ptr [ %.0404507, %.lr.ph509 ], [ %19, %._crit_edge ]
  %.sroa.0.0505 = phi ptr [ %113, %.lr.ph509 ], [ %92, %._crit_edge ]
  %.sroa.17.0504 = phi i64 [ %111, %.lr.ph509 ], [ %90, %._crit_edge ]
  store ptr %.sroa.0.0505, ptr %3, align 8, !tbaa !5
  %105 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %.sroa.17.0504
  %106 = load i32, ptr %105, align 4, !tbaa !12
  store i32 %106, ptr %11, align 8, !tbaa !11
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds ptr, ptr %.sroa.0.0505, i64 %107
  %109 = load ptr, ptr %108, align 8, !tbaa !13
  %110 = ptrtoint ptr %109 to i64
  %111 = and i64 %110, 3
  %112 = and i64 %110, -4
  %113 = inttoptr i64 %112 to ptr
  %114 = getelementptr inbounds ptr, ptr %113, i64 %111
  %.0404.in = getelementptr inbounds i8, ptr %114, i64 24
  %.0404 = load ptr, ptr %.0404.in, align 8, !tbaa !13
  %115 = getelementptr inbounds i8, ptr %.0404, i64 8
  %116 = load double, ptr %115, align 8, !tbaa !17
  %117 = fcmp ogt double %116, %104
  br i1 %117, label %.lr.ph509, label %.preheader497, !llvm.loop !20

118:                                              ; preds = %.lr.ph512, %118
  %119 = phi double [ %100, %.lr.ph512 ], [ %138, %118 ]
  %120 = phi ptr [ %.promoted517, %.lr.ph512 ], [ %132, %118 ]
  %121 = phi i32 [ %.promoted516, %.lr.ph512 ], [ %130, %118 ]
  %.0427511 = phi ptr [ %35, %.lr.ph512 ], [ %136, %118 ]
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !12
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds ptr, ptr %120, i64 %125
  %127 = load ptr, ptr %126, align 8, !tbaa !13
  %128 = ptrtoint ptr %127 to i64
  %129 = trunc i64 %128 to i32
  %130 = and i32 %129, 3
  store i32 %130, ptr %24, align 8, !tbaa !11
  %131 = and i64 %128, -4
  %132 = inttoptr i64 %131 to ptr
  store ptr %132, ptr %4, align 8, !tbaa !5
  %133 = and i64 %128, 3
  %134 = getelementptr inbounds ptr, ptr %132, i64 %133
  %135 = getelementptr inbounds i8, ptr %134, i64 24
  %136 = load ptr, ptr %135, align 8, !tbaa !13
  %137 = getelementptr inbounds i8, ptr %136, i64 8
  %138 = load double, ptr %137, align 8, !tbaa !17
  %139 = fcmp olt double %138, %119
  br i1 %139, label %118, label %._crit_edge513, !llvm.loop !21

._crit_edge513:                                   ; preds = %118, %.preheader497
  %.0435.lcssa = phi ptr [ %32, %.preheader497 ], [ %.0427511, %118 ]
  %.0427.lcssa = phi ptr [ %35, %.preheader497 ], [ %136, %118 ]
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = load i32, ptr %53, align 8, !tbaa !11
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds ptr, ptr %140, i64 %142
  %144 = load ptr, ptr %143, align 8, !tbaa !13
  %145 = ptrtoint ptr %144 to i64
  %146 = and i64 %145, 3
  %147 = and i64 %145, -4
  %148 = inttoptr i64 %147 to ptr
  %149 = getelementptr inbounds ptr, ptr %148, i64 %146
  %.1405.in518 = getelementptr inbounds i8, ptr %149, i64 24
  %.1405519 = load ptr, ptr %.1405.in518, align 8, !tbaa !13
  %150 = getelementptr inbounds i8, ptr %.1405519, i64 8
  %151 = load double, ptr %150, align 8, !tbaa !17
  %152 = getelementptr inbounds i8, ptr %61, i64 8
  %153 = load double, ptr %152, align 8, !tbaa !17
  %154 = fcmp ogt double %151, %153
  br i1 %154, label %.lr.ph524, label %.loopexit496.preheader

.lr.ph524:                                        ; preds = %._crit_edge513, %.lr.ph524
  %155 = phi double [ %167, %.lr.ph524 ], [ %151, %._crit_edge513 ]
  %.sroa.0.1521 = phi ptr [ %164, %.lr.ph524 ], [ %148, %._crit_edge513 ]
  %.sroa.17.1520 = phi i64 [ %162, %.lr.ph524 ], [ %146, %._crit_edge513 ]
  store ptr %.sroa.0.1521, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %.sroa.17.1520
  %157 = load i32, ptr %156, align 4, !tbaa !12
  store i32 %157, ptr %53, align 8, !tbaa !11
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds ptr, ptr %.sroa.0.1521, i64 %158
  %160 = load ptr, ptr %159, align 8, !tbaa !13
  %161 = ptrtoint ptr %160 to i64
  %162 = and i64 %161, 3
  %163 = and i64 %161, -4
  %164 = inttoptr i64 %163 to ptr
  %165 = getelementptr inbounds ptr, ptr %164, i64 %162
  %.1405.in = getelementptr inbounds i8, ptr %165, i64 24
  %.1405 = load ptr, ptr %.1405.in, align 8, !tbaa !13
  %166 = getelementptr inbounds i8, ptr %.1405, i64 8
  %167 = load double, ptr %166, align 8, !tbaa !17
  %168 = fcmp ogt double %167, %155
  br i1 %168, label %.lr.ph524, label %.loopexit496.preheader, !llvm.loop !22

.loopexit496.preheader:                           ; preds = %.lr.ph524, %._crit_edge513, %7
  %.2441.ph = phi ptr [ %.0439.lcssa, %._crit_edge513 ], [ %19, %7 ], [ %.0439.lcssa, %.lr.ph524 ]
  %.2437.ph = phi ptr [ %.0435.lcssa, %._crit_edge513 ], [ %32, %7 ], [ %.0435.lcssa, %.lr.ph524 ]
  %.2433.ph = phi ptr [ %.0431.lcssa, %._crit_edge513 ], [ %22, %7 ], [ %.0431.lcssa, %.lr.ph524 ]
  %.2429.ph = phi ptr [ %.0427.lcssa, %._crit_edge513 ], [ %35, %7 ], [ %.0427.lcssa, %.lr.ph524 ]
  br label %.loopexit496

.loopexit496:                                     ; preds = %.loopexit496.preheader, %210
  %.2441 = phi ptr [ %.3442, %210 ], [ %.2441.ph, %.loopexit496.preheader ]
  %.2437 = phi ptr [ %.3438, %210 ], [ %.2437.ph, %.loopexit496.preheader ]
  %.2433 = phi ptr [ %.3434, %210 ], [ %.2433.ph, %.loopexit496.preheader ]
  %.2429 = phi ptr [ %.3430, %210 ], [ %.2429.ph, %.loopexit496.preheader ]
  %169 = tail call double @counterclockwise(ptr noundef %0, ptr noundef %1, ptr noundef %.2441, ptr noundef %.2433, ptr noundef %.2437)
  %170 = fcmp ogt double %169, 0.000000e+00
  br i1 %170, label %171, label %189

171:                                              ; preds = %.loopexit496
  %172 = load i32, ptr %11, align 8, !tbaa !11
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %173
  %175 = load i32, ptr %174, align 4, !tbaa !12
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = sext i32 %175 to i64
  %178 = getelementptr inbounds ptr, ptr %176, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !13
  %180 = ptrtoint ptr %179 to i64
  %181 = trunc i64 %180 to i32
  %182 = and i32 %181, 3
  store i32 %182, ptr %11, align 8, !tbaa !11
  %183 = and i64 %180, -4
  %184 = inttoptr i64 %183 to ptr
  store ptr %184, ptr %3, align 8, !tbaa !5
  %185 = and i64 %180, 3
  %186 = getelementptr inbounds ptr, ptr %184, i64 %185
  %187 = getelementptr inbounds i8, ptr %186, i64 24
  %188 = load ptr, ptr %187, align 8, !tbaa !13
  br label %189

189:                                              ; preds = %171, %.loopexit496
  %.3442 = phi ptr [ %.2433, %171 ], [ %.2441, %.loopexit496 ]
  %.3434 = phi ptr [ %188, %171 ], [ %.2433, %.loopexit496 ]
  %.0402 = phi i32 [ 1, %171 ], [ 0, %.loopexit496 ]
  %190 = tail call double @counterclockwise(ptr noundef %0, ptr noundef %1, ptr noundef %.2429, ptr noundef %.2437, ptr noundef %.3442)
  %191 = fcmp ogt double %190, 0.000000e+00
  br i1 %191, label %192, label %210

192:                                              ; preds = %189
  %193 = load i32, ptr %24, align 8, !tbaa !11
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !12
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = sext i32 %196 to i64
  %199 = getelementptr inbounds ptr, ptr %197, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !13
  %201 = ptrtoint ptr %200 to i64
  %202 = trunc i64 %201 to i32
  %203 = and i32 %202, 3
  store i32 %203, ptr %24, align 8, !tbaa !11
  %204 = and i64 %201, -4
  %205 = inttoptr i64 %204 to ptr
  store ptr %205, ptr %4, align 8, !tbaa !5
  %206 = and i64 %201, 3
  %207 = getelementptr inbounds ptr, ptr %205, i64 %206
  %208 = getelementptr inbounds i8, ptr %207, i64 24
  %209 = load ptr, ptr %208, align 8, !tbaa !13
  br label %210

210:                                              ; preds = %189, %192
  %.3438 = phi ptr [ %.2429, %192 ], [ %.2437, %189 ]
  %.3430 = phi ptr [ %209, %192 ], [ %.2429, %189 ]
  %.1403 = phi i32 [ 1, %192 ], [ %.0402, %189 ]
  %.not = icmp eq i32 %.1403, 0
  br i1 %.not, label %211, label %.loopexit496, !llvm.loop !23

211:                                              ; preds = %210
  %212 = load ptr, ptr %3, align 8, !tbaa !5
  %213 = load i32, ptr %11, align 8, !tbaa !11
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds ptr, ptr %212, i64 %214
  %216 = load ptr, ptr %215, align 8, !tbaa !13
  %217 = ptrtoint ptr %216 to i64
  %218 = trunc i64 %217 to i32
  %219 = and i32 %218, 3
  %220 = and i64 %217, -4
  %221 = inttoptr i64 %220 to ptr
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = load i32, ptr %24, align 8, !tbaa !11
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds ptr, ptr %222, i64 %224
  %226 = load ptr, ptr %225, align 8, !tbaa !13
  %227 = ptrtoint ptr %226 to i64
  %228 = trunc i64 %227 to i32
  %229 = and i32 %228, 3
  %230 = and i64 %227, -4
  %231 = inttoptr i64 %230 to ptr
  call void @maketriangle(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %8)
  %232 = load ptr, ptr %3, align 8, !tbaa !5
  %233 = ptrtoint ptr %232 to i64
  %234 = load i32, ptr %11, align 8, !tbaa !11
  %235 = sext i32 %234 to i64
  %236 = or i64 %235, %233
  %237 = inttoptr i64 %236 to ptr
  %238 = load ptr, ptr %8, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %8, i64 8
  %240 = load i32, ptr %239, align 8, !tbaa !11
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds ptr, ptr %238, i64 %241
  store ptr %237, ptr %242, align 8, !tbaa !13
  %243 = load ptr, ptr %8, align 8, !tbaa !5
  %244 = ptrtoint ptr %243 to i64
  %245 = or i64 %244, %241
  %246 = inttoptr i64 %245 to ptr
  %247 = load ptr, ptr %3, align 8, !tbaa !5
  %248 = getelementptr inbounds ptr, ptr %247, i64 %235
  store ptr %246, ptr %248, align 8, !tbaa !13
  %249 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %241
  %250 = load i32, ptr %249, align 4, !tbaa !12
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = ptrtoint ptr %251 to i64
  %253 = load i32, ptr %24, align 8, !tbaa !11
  %254 = sext i32 %253 to i64
  %255 = or i64 %254, %252
  %256 = inttoptr i64 %255 to ptr
  %257 = load ptr, ptr %8, align 8, !tbaa !5
  %258 = sext i32 %250 to i64
  %259 = getelementptr inbounds ptr, ptr %257, i64 %258
  store ptr %256, ptr %259, align 8, !tbaa !13
  %260 = load ptr, ptr %8, align 8, !tbaa !5
  %261 = ptrtoint ptr %260 to i64
  %262 = or i64 %261, %258
  %263 = inttoptr i64 %262 to ptr
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds ptr, ptr %264, i64 %254
  store ptr %263, ptr %265, align 8, !tbaa !13
  %266 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %258
  %267 = load i32, ptr %266, align 4, !tbaa !12
  store i32 %267, ptr %239, align 8, !tbaa !11
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = sext i32 %267 to i64
  %270 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %269
  %271 = load i32, ptr %270, align 4, !tbaa !12
  %272 = sext i32 %271 to i64
  %273 = getelementptr ptr, ptr %268, i64 %272
  %274 = getelementptr i8, ptr %273, i64 24
  store ptr %.3438, ptr %274, align 8, !tbaa !13
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %269
  %277 = load i32, ptr %276, align 4, !tbaa !12
  %278 = sext i32 %277 to i64
  %279 = getelementptr ptr, ptr %275, i64 %278
  %280 = getelementptr i8, ptr %279, i64 24
  store ptr %.3442, ptr %280, align 8, !tbaa !13
  %281 = getelementptr inbounds i8, ptr %1, i64 116
  %282 = load i32, ptr %281, align 4, !tbaa !24
  %283 = icmp sgt i32 %282, 2
  br i1 %283, label %284, label %286

284:                                              ; preds = %211
  %285 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.969)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  br label %286

286:                                              ; preds = %284, %211
  %287 = load ptr, ptr %2, align 8, !tbaa !5
  %288 = getelementptr inbounds i8, ptr %2, i64 8
  %289 = load i32, ptr %288, align 8, !tbaa !11
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !12
  %293 = sext i32 %292 to i64
  %294 = getelementptr ptr, ptr %287, i64 %293
  %295 = getelementptr i8, ptr %294, i64 24
  %296 = load ptr, ptr %295, align 8, !tbaa !13
  %297 = icmp eq ptr %.3442, %296
  br i1 %297, label %298, label %304

298:                                              ; preds = %286
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %299, ptr %2, align 8, !tbaa !5
  %300 = load i32, ptr %239, align 8, !tbaa !11
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %301
  %303 = load i32, ptr %302, align 4, !tbaa !12
  store i32 %303, ptr %288, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %298, %286
  %305 = load ptr, ptr %5, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %5, i64 8
  %307 = load i32, ptr %306, align 8, !tbaa !11
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !12
  %311 = sext i32 %310 to i64
  %312 = getelementptr ptr, ptr %305, i64 %311
  %313 = getelementptr i8, ptr %312, i64 24
  %314 = load ptr, ptr %313, align 8, !tbaa !13
  %315 = icmp eq ptr %.3438, %314
  br i1 %315, label %316, label %322

316:                                              ; preds = %304
  %317 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %317, ptr %5, align 8, !tbaa !5
  %318 = load i32, ptr %239, align 8, !tbaa !11
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %319
  %321 = load i32, ptr %320, align 4, !tbaa !12
  store i32 %321, ptr %306, align 8, !tbaa !11
  br label %322

322:                                              ; preds = %316, %304
  %323 = and i64 %217, 3
  %324 = getelementptr inbounds ptr, ptr %221, i64 %323
  %325 = getelementptr inbounds i8, ptr %324, i64 24
  %326 = load ptr, ptr %325, align 8, !tbaa !13
  %327 = and i64 %227, 3
  %328 = getelementptr inbounds ptr, ptr %231, i64 %327
  %329 = getelementptr inbounds i8, ptr %328, i64 24
  %330 = load ptr, ptr %329, align 8, !tbaa !13
  %331 = call double @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %326, ptr noundef %.3442, ptr noundef %.3438)
  %332 = fcmp ole double %331, 0.000000e+00
  %333 = call double @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %330, ptr noundef %.3442, ptr noundef %.3438)
  %334 = fcmp ole double %333, 0.000000e+00
  %or.cond3543 = select i1 %332, i1 %334, i1 false
  br i1 %or.cond3543, label %._crit_edge560, label %.lr.ph559

.lr.ph559:                                        ; preds = %322
  %335 = getelementptr inbounds i8, ptr %9, i64 8
  br label %466

._crit_edge560:                                   ; preds = %747, %322
  %.sroa.0197.0.lcssa = phi ptr [ %231, %322 ], [ %.sroa.0197.1, %747 ]
  %.sroa.18.0.lcssa = phi i32 [ %229, %322 ], [ %.sroa.18.3, %747 ]
  %.0419.lcssa = phi ptr [ %.3442, %322 ], [ %.1420, %747 ]
  %.0417.lcssa = phi ptr [ %.3438, %322 ], [ %.1418, %747 ]
  %.sroa.0228.0.lcssa = phi ptr [ %221, %322 ], [ %.sroa.0228.1, %747 ]
  %.sroa.18242.0.lcssa = phi i32 [ %219, %322 ], [ %.sroa.18242.3, %747 ]
  call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = getelementptr inbounds i8, ptr %9, i64 8
  %338 = load i32, ptr %337, align 8, !tbaa !11
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %339
  %341 = load i32, ptr %340, align 4, !tbaa !12
  %342 = sext i32 %341 to i64
  %343 = getelementptr ptr, ptr %336, i64 %342
  %344 = getelementptr i8, ptr %343, i64 24
  store ptr %.0419.lcssa, ptr %344, align 8, !tbaa !13
  %345 = load ptr, ptr %9, align 8, !tbaa !5
  %346 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %339
  %347 = load i32, ptr %346, align 4, !tbaa !12
  %348 = sext i32 %347 to i64
  %349 = getelementptr ptr, ptr %345, i64 %348
  %350 = getelementptr i8, ptr %349, i64 24
  store ptr %.0417.lcssa, ptr %350, align 8, !tbaa !13
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = ptrtoint ptr %351 to i64
  %353 = load i32, ptr %239, align 8, !tbaa !11
  %354 = sext i32 %353 to i64
  %355 = or i64 %354, %352
  %356 = inttoptr i64 %355 to ptr
  %357 = load ptr, ptr %9, align 8, !tbaa !5
  %358 = getelementptr inbounds ptr, ptr %357, i64 %339
  store ptr %356, ptr %358, align 8, !tbaa !13
  %359 = load ptr, ptr %9, align 8, !tbaa !5
  %360 = ptrtoint ptr %359 to i64
  %361 = or i64 %360, %339
  %362 = inttoptr i64 %361 to ptr
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = getelementptr inbounds ptr, ptr %363, i64 %354
  store ptr %362, ptr %364, align 8, !tbaa !13
  %365 = ptrtoint ptr %.sroa.0197.0.lcssa to i64
  %366 = sext i32 %.sroa.18.0.lcssa to i64
  %367 = or i64 %366, %365
  %368 = inttoptr i64 %367 to ptr
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = getelementptr inbounds ptr, ptr %369, i64 %342
  store ptr %368, ptr %370, align 8, !tbaa !13
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = ptrtoint ptr %371 to i64
  %373 = or i64 %372, %342
  %374 = inttoptr i64 %373 to ptr
  %375 = getelementptr inbounds ptr, ptr %.sroa.0197.0.lcssa, i64 %366
  store ptr %374, ptr %375, align 8, !tbaa !13
  %376 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %342
  %377 = load i32, ptr %376, align 4, !tbaa !12
  store i32 %377, ptr %337, align 8, !tbaa !11
  %378 = ptrtoint ptr %.sroa.0228.0.lcssa to i64
  %379 = sext i32 %.sroa.18242.0.lcssa to i64
  %380 = or i64 %379, %378
  %381 = inttoptr i64 %380 to ptr
  %382 = load ptr, ptr %9, align 8, !tbaa !5
  %383 = sext i32 %377 to i64
  %384 = getelementptr inbounds ptr, ptr %382, i64 %383
  store ptr %381, ptr %384, align 8, !tbaa !13
  %385 = load ptr, ptr %9, align 8, !tbaa !5
  %386 = ptrtoint ptr %385 to i64
  %387 = or i64 %386, %383
  %388 = inttoptr i64 %387 to ptr
  %389 = getelementptr inbounds ptr, ptr %.sroa.0228.0.lcssa, i64 %379
  store ptr %388, ptr %389, align 8, !tbaa !13
  %390 = load i32, ptr %281, align 4, !tbaa !24
  %391 = icmp sgt i32 %390, 2
  br i1 %391, label %392, label %394

392:                                              ; preds = %._crit_edge560
  %393 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.970)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  br label %394

394:                                              ; preds = %392, %._crit_edge560
  %395 = load i32, ptr %36, align 4, !tbaa !14
  %396 = icmp ne i32 %395, 0
  %or.cond5 = and i1 %39, %396
  br i1 %or.cond5, label %397, label %.loopexit

397:                                              ; preds = %394
  %398 = load ptr, ptr %2, align 8, !tbaa !5
  %399 = load i32, ptr %288, align 8, !tbaa !11
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %400
  %402 = load i32, ptr %401, align 4, !tbaa !12
  %403 = sext i32 %402 to i64
  %404 = getelementptr ptr, ptr %398, i64 %403
  %405 = getelementptr i8, ptr %404, i64 24
  %406 = load ptr, ptr %405, align 8, !tbaa !13
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = load i32, ptr %306, align 8, !tbaa !11
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !12
  %412 = sext i32 %411 to i64
  %413 = getelementptr ptr, ptr %407, i64 %412
  %414 = getelementptr i8, ptr %413, i64 24
  %415 = load ptr, ptr %414, align 8, !tbaa !13
  %416 = getelementptr ptr, ptr %407, i64 %409
  %417 = getelementptr i8, ptr %416, i64 24
  %418 = load ptr, ptr %417, align 8, !tbaa !13
  %419 = getelementptr inbounds ptr, ptr %398, i64 %400
  %420 = load ptr, ptr %419, align 8, !tbaa !13
  %421 = ptrtoint ptr %420 to i64
  %422 = and i64 %421, 3
  %423 = and i64 %421, -4
  %424 = inttoptr i64 %423 to ptr
  %425 = getelementptr inbounds ptr, ptr %424, i64 %422
  %.2406.in567 = getelementptr inbounds i8, ptr %425, i64 24
  %.2406568 = load ptr, ptr %.2406.in567, align 8, !tbaa !13
  %426 = load double, ptr %.2406568, align 8, !tbaa !17
  %427 = load double, ptr %406, align 8, !tbaa !17
  %428 = fcmp olt double %426, %427
  br i1 %428, label %.lr.ph573, label %.preheader

.preheader:                                       ; preds = %.lr.ph573, %397
  %429 = load double, ptr %418, align 8, !tbaa !17
  %430 = load double, ptr %415, align 8, !tbaa !17
  %431 = fcmp ogt double %429, %430
  br i1 %431, label %.lr.ph575, label %.loopexit

.lr.ph575:                                        ; preds = %.preheader
  %.promoted576 = load i32, ptr %306, align 8, !tbaa !11
  %.promoted577 = load ptr, ptr %5, align 8, !tbaa !5
  br label %445

.lr.ph573:                                        ; preds = %397, %.lr.ph573
  %432 = phi double [ %443, %.lr.ph573 ], [ %426, %397 ]
  %.sroa.0.2570 = phi ptr [ %441, %.lr.ph573 ], [ %424, %397 ]
  %.sroa.17.2569 = phi i64 [ %439, %.lr.ph573 ], [ %422, %397 ]
  store ptr %.sroa.0.2570, ptr %2, align 8, !tbaa !5
  %433 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %.sroa.17.2569
  %434 = load i32, ptr %433, align 4, !tbaa !12
  store i32 %434, ptr %288, align 8, !tbaa !11
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds ptr, ptr %.sroa.0.2570, i64 %435
  %437 = load ptr, ptr %436, align 8, !tbaa !13
  %438 = ptrtoint ptr %437 to i64
  %439 = and i64 %438, 3
  %440 = and i64 %438, -4
  %441 = inttoptr i64 %440 to ptr
  %442 = getelementptr inbounds ptr, ptr %441, i64 %439
  %.2406.in = getelementptr inbounds i8, ptr %442, i64 24
  %.2406 = load ptr, ptr %.2406.in, align 8, !tbaa !13
  %443 = load double, ptr %.2406, align 8, !tbaa !17
  %444 = fcmp olt double %443, %432
  br i1 %444, label %.lr.ph573, label %.preheader, !llvm.loop !25

445:                                              ; preds = %.lr.ph575, %445
  %446 = phi double [ %429, %.lr.ph575 ], [ %464, %445 ]
  %447 = phi ptr [ %.promoted577, %.lr.ph575 ], [ %459, %445 ]
  %448 = phi i32 [ %.promoted576, %.lr.ph575 ], [ %457, %445 ]
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %449
  %451 = load i32, ptr %450, align 4, !tbaa !12
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds ptr, ptr %447, i64 %452
  %454 = load ptr, ptr %453, align 8, !tbaa !13
  %455 = ptrtoint ptr %454 to i64
  %456 = trunc i64 %455 to i32
  %457 = and i32 %456, 3
  store i32 %457, ptr %306, align 8, !tbaa !11
  %458 = and i64 %455, -4
  %459 = inttoptr i64 %458 to ptr
  store ptr %459, ptr %5, align 8, !tbaa !5
  %460 = and i64 %455, 3
  %461 = getelementptr inbounds ptr, ptr %459, i64 %460
  %462 = getelementptr inbounds i8, ptr %461, i64 24
  %463 = load ptr, ptr %462, align 8, !tbaa !13
  %464 = load double, ptr %463, align 8, !tbaa !17
  %465 = fcmp ogt double %464, %446
  br i1 %465, label %445, label %.loopexit, !llvm.loop !26

.loopexit:                                        ; preds = %445, %.preheader, %394
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #3
  ret void

466:                                              ; preds = %.lr.ph559, %747
  %467 = phi i1 [ %334, %.lr.ph559 ], [ %751, %747 ]
  %468 = phi i1 [ %332, %.lr.ph559 ], [ %749, %747 ]
  %.sroa.18242.0557 = phi i32 [ %219, %.lr.ph559 ], [ %.sroa.18242.3, %747 ]
  %.sroa.0228.0556 = phi ptr [ %221, %.lr.ph559 ], [ %.sroa.0228.1, %747 ]
  %.0409555 = phi ptr [ %330, %.lr.ph559 ], [ %.3412, %747 ]
  %.0413554 = phi ptr [ %326, %.lr.ph559 ], [ %.3416, %747 ]
  %.0417550 = phi ptr [ %.3438, %.lr.ph559 ], [ %.1418, %747 ]
  %.0419546 = phi ptr [ %.3442, %.lr.ph559 ], [ %.1420, %747 ]
  %.sroa.18.0545 = phi i32 [ %229, %.lr.ph559 ], [ %.sroa.18.3, %747 ]
  %.sroa.0197.0544 = phi ptr [ %231, %.lr.ph559 ], [ %.sroa.0197.1, %747 ]
  br i1 %468, label %.thread490, label %469

469:                                              ; preds = %466
  store ptr %.sroa.0228.0556, ptr %9, align 8, !tbaa !5
  %470 = sext i32 %.sroa.18242.0557 to i64
  %471 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %470
  %472 = load i32, ptr %471, align 4, !tbaa !12
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %473
  %475 = load ptr, ptr %474, align 8, !tbaa !13
  %476 = ptrtoint ptr %475 to i64
  %477 = trunc i64 %476 to i32
  %478 = and i32 %477, 3
  store i32 %478, ptr %335, align 8, !tbaa !11
  %479 = and i64 %476, -4
  %480 = inttoptr i64 %479 to ptr
  store ptr %480, ptr %9, align 8, !tbaa !5
  %481 = and i64 %476, 3
  %482 = getelementptr inbounds ptr, ptr %480, i64 %481
  %483 = getelementptr inbounds i8, ptr %482, i64 24
  %484 = load ptr, ptr %483, align 8, !tbaa !13
  %.not447 = icmp eq ptr %484, null
  br i1 %.not447, label %.thread475, label %485

485:                                              ; preds = %469
  %486 = call double @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.0419546, ptr noundef %.0417550, ptr noundef %.0413554, ptr noundef nonnull %484)
  %487 = fcmp ule double %486, 0.000000e+00
  br i1 %487, label %._crit_edge531, label %.lr.ph530

.lr.ph530:                                        ; preds = %485
  %488 = ptrtoint ptr %.sroa.0228.0556 to i64
  br label %489

489:                                              ; preds = %.lr.ph530, %568
  %.sroa.18242.1528 = phi i32 [ %.sroa.18242.0557, %.lr.ph530 ], [ %523, %568 ]
  %.0407527 = phi ptr [ %484, %.lr.ph530 ], [ %567, %568 ]
  %.1414526 = phi ptr [ %.0413554, %.lr.ph530 ], [ %.0407527, %568 ]
  %490 = load i32, ptr %335, align 8, !tbaa !11
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %491
  %493 = load i32, ptr %492, align 4, !tbaa !12
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = sext i32 %493 to i64
  %496 = getelementptr inbounds ptr, ptr %494, i64 %495
  %497 = load ptr, ptr %496, align 8, !tbaa !13
  %498 = ptrtoint ptr %497 to i64
  %499 = and i64 %498, 3
  %500 = and i64 %498, -4
  %501 = inttoptr i64 %500 to ptr
  %502 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %495
  %503 = load i32, ptr %502, align 4, !tbaa !12
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds ptr, ptr %494, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !13
  %507 = ptrtoint ptr %506 to i64
  %508 = trunc i64 %507 to i32
  %509 = and i32 %508, 3
  %510 = and i64 %507, 3
  %511 = and i64 %507, -4
  %512 = inttoptr i64 %511 to ptr
  store ptr %497, ptr %505, align 8, !tbaa !13
  %513 = ptrtoint ptr %494 to i64
  %514 = or i64 %513, %504
  %515 = inttoptr i64 %514 to ptr
  %516 = getelementptr inbounds ptr, ptr %501, i64 %499
  store ptr %515, ptr %516, align 8, !tbaa !13
  %517 = sext i32 %.sroa.18242.1528 to i64
  %518 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %517
  store ptr %506, ptr %518, align 8, !tbaa !13
  %519 = or i64 %517, %488
  %520 = inttoptr i64 %519 to ptr
  %521 = getelementptr inbounds ptr, ptr %512, i64 %510
  store ptr %520, ptr %521, align 8, !tbaa !13
  %522 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %517
  %523 = load i32, ptr %522, align 4, !tbaa !12
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %524
  %526 = load ptr, ptr %525, align 8, !tbaa !13
  %527 = ptrtoint ptr %526 to i64
  %528 = and i64 %527, 3
  %529 = and i64 %527, -4
  %530 = inttoptr i64 %529 to ptr
  %531 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %504
  %532 = load i32, ptr %531, align 4, !tbaa !12
  %533 = load ptr, ptr %9, align 8, !tbaa !5
  %534 = sext i32 %532 to i64
  %535 = getelementptr inbounds ptr, ptr %533, i64 %534
  store ptr %526, ptr %535, align 8, !tbaa !13
  %536 = ptrtoint ptr %533 to i64
  %537 = or i64 %536, %534
  %538 = inttoptr i64 %537 to ptr
  %539 = getelementptr inbounds ptr, ptr %530, i64 %528
  store ptr %538, ptr %539, align 8, !tbaa !13
  %540 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %524
  %541 = load i32, ptr %540, align 4, !tbaa !12
  %542 = add nsw i32 %541, 3
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %543
  store ptr %.0419546, ptr %544, align 8, !tbaa !13
  %545 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %524
  %546 = load i32, ptr %545, align 4, !tbaa !12
  %547 = add nsw i32 %546, 3
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %548
  store ptr null, ptr %549, align 8, !tbaa !13
  %550 = add nsw i32 %523, 3
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %551
  store ptr %.0407527, ptr %552, align 8, !tbaa !13
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %534
  %555 = load i32, ptr %554, align 4, !tbaa !12
  %556 = sext i32 %555 to i64
  %557 = getelementptr ptr, ptr %553, i64 %556
  %558 = getelementptr i8, ptr %557, i64 24
  store ptr null, ptr %558, align 8, !tbaa !13
  %559 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %534
  %560 = load i32, ptr %559, align 4, !tbaa !12
  %561 = sext i32 %560 to i64
  %562 = getelementptr ptr, ptr %553, i64 %561
  %563 = getelementptr i8, ptr %562, i64 24
  store ptr %.1414526, ptr %563, align 8, !tbaa !13
  %564 = getelementptr ptr, ptr %553, i64 %534
  %565 = getelementptr i8, ptr %564, i64 24
  store ptr %.0407527, ptr %565, align 8, !tbaa !13
  store ptr %512, ptr %9, align 8, !tbaa !5
  store i32 %509, ptr %335, align 8, !tbaa !11
  %566 = getelementptr inbounds i8, ptr %521, i64 24
  %567 = load ptr, ptr %566, align 8, !tbaa !13
  %.not449 = icmp eq ptr %567, null
  br i1 %.not449, label %._crit_edge531, label %568

568:                                              ; preds = %489
  %569 = call double @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.0419546, ptr noundef %.0417550, ptr noundef nonnull %.0407527, ptr noundef nonnull %567)
  %570 = fcmp ule double %569, 0.000000e+00
  br i1 %570, label %._crit_edge531, label %489, !llvm.loop !27

._crit_edge531:                                   ; preds = %489, %568, %485
  %.1414.lcssa = phi ptr [ %.0413554, %485 ], [ %.0407527, %568 ], [ %.0407527, %489 ]
  %.sroa.18242.1.lcssa = phi i32 [ %.sroa.18242.0557, %485 ], [ %523, %568 ], [ %523, %489 ]
  br i1 %467, label %.thread472, label %571

.thread490:                                       ; preds = %466
  br i1 %467, label %.thread469.thread493, label %571

.thread475:                                       ; preds = %469
  br i1 %467, label %.thread472, label %571

571:                                              ; preds = %.thread490, %.thread475, %._crit_edge531
  %.sroa.18242.2483 = phi i32 [ %.sroa.18242.0557, %.thread475 ], [ %.sroa.18242.1.lcssa, %._crit_edge531 ], [ %.sroa.18242.0557, %.thread490 ]
  %.2415479 = phi ptr [ %.0413554, %.thread475 ], [ %.1414.lcssa, %._crit_edge531 ], [ %.0413554, %.thread490 ]
  store ptr %.sroa.0197.0544, ptr %9, align 8, !tbaa !5
  %572 = sext i32 %.sroa.18.0545 to i64
  %573 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !12
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %575
  %577 = load ptr, ptr %576, align 8, !tbaa !13
  %578 = ptrtoint ptr %577 to i64
  %579 = trunc i64 %578 to i32
  %580 = and i32 %579, 3
  store i32 %580, ptr %335, align 8, !tbaa !11
  %581 = and i64 %578, -4
  %582 = inttoptr i64 %581 to ptr
  store ptr %582, ptr %9, align 8, !tbaa !5
  %583 = and i64 %578, 3
  %584 = getelementptr inbounds ptr, ptr %582, i64 %583
  %585 = getelementptr inbounds i8, ptr %584, i64 24
  %586 = load ptr, ptr %585, align 8, !tbaa !13
  %.not450 = icmp eq ptr %586, null
  br i1 %.not450, label %.thread, label %587

587:                                              ; preds = %571
  %588 = call double @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.0419546, ptr noundef %.0417550, ptr noundef %.0409555, ptr noundef nonnull %586)
  %589 = fcmp ule double %588, 0.000000e+00
  br i1 %589, label %._crit_edge540.thread, label %.lr.ph539

.lr.ph539:                                        ; preds = %587
  %590 = ptrtoint ptr %.sroa.0197.0544 to i64
  br label %591

591:                                              ; preds = %.lr.ph539, %670
  %.1408537 = phi ptr [ %586, %.lr.ph539 ], [ %669, %670 ]
  %.1410536 = phi ptr [ %.0409555, %.lr.ph539 ], [ %.1408537, %670 ]
  %.sroa.18.1535 = phi i32 [ %.sroa.18.0545, %.lr.ph539 ], [ %625, %670 ]
  %592 = load i32, ptr %335, align 8, !tbaa !11
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !12
  %596 = load ptr, ptr %9, align 8, !tbaa !5
  %597 = sext i32 %595 to i64
  %598 = getelementptr inbounds ptr, ptr %596, i64 %597
  %599 = load ptr, ptr %598, align 8, !tbaa !13
  %600 = ptrtoint ptr %599 to i64
  %601 = and i64 %600, 3
  %602 = and i64 %600, -4
  %603 = inttoptr i64 %602 to ptr
  %604 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %597
  %605 = load i32, ptr %604, align 4, !tbaa !12
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds ptr, ptr %596, i64 %606
  %608 = load ptr, ptr %607, align 8, !tbaa !13
  %609 = ptrtoint ptr %608 to i64
  %610 = trunc i64 %609 to i32
  %611 = and i32 %610, 3
  %612 = and i64 %609, 3
  %613 = and i64 %609, -4
  %614 = inttoptr i64 %613 to ptr
  store ptr %599, ptr %607, align 8, !tbaa !13
  %615 = ptrtoint ptr %596 to i64
  %616 = or i64 %615, %606
  %617 = inttoptr i64 %616 to ptr
  %618 = getelementptr inbounds ptr, ptr %603, i64 %601
  store ptr %617, ptr %618, align 8, !tbaa !13
  %619 = sext i32 %.sroa.18.1535 to i64
  %620 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %619
  store ptr %608, ptr %620, align 8, !tbaa !13
  %621 = or i64 %619, %590
  %622 = inttoptr i64 %621 to ptr
  %623 = getelementptr inbounds ptr, ptr %614, i64 %612
  store ptr %622, ptr %623, align 8, !tbaa !13
  %624 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %619
  %625 = load i32, ptr %624, align 4, !tbaa !12
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %626
  %628 = load ptr, ptr %627, align 8, !tbaa !13
  %629 = ptrtoint ptr %628 to i64
  %630 = and i64 %629, 3
  %631 = and i64 %629, -4
  %632 = inttoptr i64 %631 to ptr
  %633 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %606
  %634 = load i32, ptr %633, align 4, !tbaa !12
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = sext i32 %634 to i64
  %637 = getelementptr inbounds ptr, ptr %635, i64 %636
  store ptr %628, ptr %637, align 8, !tbaa !13
  %638 = ptrtoint ptr %635 to i64
  %639 = or i64 %638, %636
  %640 = inttoptr i64 %639 to ptr
  %641 = getelementptr inbounds ptr, ptr %632, i64 %630
  store ptr %640, ptr %641, align 8, !tbaa !13
  %642 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %626
  %643 = load i32, ptr %642, align 4, !tbaa !12
  %644 = add nsw i32 %643, 3
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %645
  store ptr null, ptr %646, align 8, !tbaa !13
  %647 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %626
  %648 = load i32, ptr %647, align 4, !tbaa !12
  %649 = add nsw i32 %648, 3
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %650
  store ptr %.0417550, ptr %651, align 8, !tbaa !13
  %652 = add nsw i32 %625, 3
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %653
  store ptr %.1408537, ptr %654, align 8, !tbaa !13
  %655 = load ptr, ptr %9, align 8, !tbaa !5
  %656 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %636
  %657 = load i32, ptr %656, align 4, !tbaa !12
  %658 = sext i32 %657 to i64
  %659 = getelementptr ptr, ptr %655, i64 %658
  %660 = getelementptr i8, ptr %659, i64 24
  store ptr %.1410536, ptr %660, align 8, !tbaa !13
  %661 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %636
  %662 = load i32, ptr %661, align 4, !tbaa !12
  %663 = sext i32 %662 to i64
  %664 = getelementptr ptr, ptr %655, i64 %663
  %665 = getelementptr i8, ptr %664, i64 24
  store ptr null, ptr %665, align 8, !tbaa !13
  %666 = getelementptr ptr, ptr %655, i64 %636
  %667 = getelementptr i8, ptr %666, i64 24
  store ptr %.1408537, ptr %667, align 8, !tbaa !13
  store ptr %614, ptr %9, align 8, !tbaa !5
  store i32 %611, ptr %335, align 8, !tbaa !11
  %668 = getelementptr inbounds i8, ptr %623, i64 24
  %669 = load ptr, ptr %668, align 8, !tbaa !13
  %.not452 = icmp eq ptr %669, null
  br i1 %.not452, label %._crit_edge540, label %670

670:                                              ; preds = %591
  %671 = call double @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.0419546, ptr noundef %.0417550, ptr noundef nonnull %.1408537, ptr noundef nonnull %669)
  %672 = fcmp ule double %671, 0.000000e+00
  br i1 %672, label %._crit_edge540, label %591, !llvm.loop !28

._crit_edge540:                                   ; preds = %591, %670
  br i1 %468, label %.thread469.thread493, label %673

._crit_edge540.thread:                            ; preds = %587
  br i1 %468, label %.thread469.thread493, label %.thread462

.thread:                                          ; preds = %571
  br i1 %468, label %.thread469.thread493, label %.thread462

673:                                              ; preds = %._crit_edge540
  br i1 %467, label %.thread472, label %.thread462

.thread462:                                       ; preds = %._crit_edge540.thread, %.thread, %673
  %.sroa.18.2458467 = phi i32 [ %625, %673 ], [ %.sroa.18.0545, %.thread ], [ %.sroa.18.0545, %._crit_edge540.thread ]
  %.2411460465 = phi ptr [ %.1408537, %673 ], [ %.0409555, %.thread ], [ %.0409555, %._crit_edge540.thread ]
  %674 = call double @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.2415479, ptr noundef %.0419546, ptr noundef %.0417550, ptr noundef %.2411460465)
  %675 = fcmp ogt double %674, 0.000000e+00
  br i1 %675, label %.thread469.thread493, label %.thread472

.thread469.thread493:                             ; preds = %._crit_edge540.thread, %.thread490, %.thread, %.thread462, %._crit_edge540
  %.sroa.18242.2482 = phi i32 [ %.sroa.18242.2483, %.thread ], [ %.sroa.18242.2483, %.thread462 ], [ %.sroa.18242.2483, %._crit_edge540 ], [ %.sroa.18242.0557, %.thread490 ], [ %.sroa.18242.2483, %._crit_edge540.thread ]
  %.2415478 = phi ptr [ %.2415479, %.thread ], [ %.2415479, %.thread462 ], [ %.2415479, %._crit_edge540 ], [ %.0413554, %.thread490 ], [ %.2415479, %._crit_edge540.thread ]
  %.2411461 = phi ptr [ %.0409555, %.thread ], [ %.2411460465, %.thread462 ], [ %.1408537, %._crit_edge540 ], [ %.0409555, %.thread490 ], [ %.0409555, %._crit_edge540.thread ]
  %.sroa.18.2459 = phi i32 [ %.sroa.18.0545, %.thread ], [ %.sroa.18.2458467, %.thread462 ], [ %625, %._crit_edge540 ], [ %.sroa.18.0545, %.thread490 ], [ %.sroa.18.0545, %._crit_edge540.thread ]
  %676 = ptrtoint ptr %.sroa.0197.0544 to i64
  %677 = sext i32 %.sroa.18.2459 to i64
  %678 = or i64 %677, %676
  %679 = inttoptr i64 %678 to ptr
  %680 = load ptr, ptr %8, align 8, !tbaa !5
  %681 = load i32, ptr %239, align 8, !tbaa !11
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds ptr, ptr %680, i64 %682
  store ptr %679, ptr %683, align 8, !tbaa !13
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = ptrtoint ptr %684 to i64
  %686 = or i64 %685, %682
  %687 = inttoptr i64 %686 to ptr
  %688 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %677
  store ptr %687, ptr %688, align 8, !tbaa !13
  store ptr %.sroa.0197.0544, ptr %8, align 8, !tbaa !5
  %689 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %677
  %690 = load i32, ptr %689, align 4, !tbaa !12
  store i32 %690, ptr %239, align 8, !tbaa !11
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %691
  %693 = load i32, ptr %692, align 4, !tbaa !12
  %694 = add nsw i32 %693, 3
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds ptr, ptr %.sroa.0197.0544, i64 %695
  store ptr %.0419546, ptr %696, align 8, !tbaa !13
  %697 = load ptr, ptr %8, align 8, !tbaa !5
  %698 = getelementptr inbounds ptr, ptr %697, i64 %691
  %699 = load ptr, ptr %698, align 8, !tbaa !13
  %700 = ptrtoint ptr %699 to i64
  %701 = trunc i64 %700 to i32
  %702 = and i32 %701, 3
  %703 = and i64 %700, -4
  %704 = inttoptr i64 %703 to ptr
  %705 = and i64 %700, 3
  %706 = getelementptr inbounds ptr, ptr %704, i64 %705
  %707 = getelementptr inbounds i8, ptr %706, i64 24
  %708 = load ptr, ptr %707, align 8, !tbaa !13
  br label %742

.thread472:                                       ; preds = %._crit_edge531, %.thread475, %.thread462, %673
  %.sroa.18242.2485 = phi i32 [ %.sroa.18242.2483, %.thread462 ], [ %.sroa.18242.2483, %673 ], [ %.sroa.18242.0557, %.thread475 ], [ %.sroa.18242.1.lcssa, %._crit_edge531 ]
  %.2415481 = phi ptr [ %.2415479, %.thread462 ], [ %.2415479, %673 ], [ %.0413554, %.thread475 ], [ %.1414.lcssa, %._crit_edge531 ]
  %.sroa.18.2458468 = phi i32 [ %.sroa.18.2458467, %.thread462 ], [ %625, %673 ], [ %.sroa.18.0545, %.thread475 ], [ %.sroa.18.0545, %._crit_edge531 ]
  %.2411460466 = phi ptr [ %.2411460465, %.thread462 ], [ %.1408537, %673 ], [ %.0409555, %.thread475 ], [ %.0409555, %._crit_edge531 ]
  %709 = ptrtoint ptr %.sroa.0228.0556 to i64
  %710 = sext i32 %.sroa.18242.2485 to i64
  %711 = or i64 %710, %709
  %712 = inttoptr i64 %711 to ptr
  %713 = load ptr, ptr %8, align 8, !tbaa !5
  %714 = load i32, ptr %239, align 8, !tbaa !11
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds ptr, ptr %713, i64 %715
  store ptr %712, ptr %716, align 8, !tbaa !13
  %717 = load ptr, ptr %8, align 8, !tbaa !5
  %718 = ptrtoint ptr %717 to i64
  %719 = or i64 %718, %715
  %720 = inttoptr i64 %719 to ptr
  %721 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %710
  store ptr %720, ptr %721, align 8, !tbaa !13
  store ptr %.sroa.0228.0556, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %710
  %723 = load i32, ptr %722, align 4, !tbaa !12
  store i32 %723, ptr %239, align 8, !tbaa !11
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %724
  %726 = load i32, ptr %725, align 4, !tbaa !12
  %727 = add nsw i32 %726, 3
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds ptr, ptr %.sroa.0228.0556, i64 %728
  store ptr %.0417550, ptr %729, align 8, !tbaa !13
  %730 = load ptr, ptr %8, align 8, !tbaa !5
  %731 = getelementptr inbounds ptr, ptr %730, i64 %724
  %732 = load ptr, ptr %731, align 8, !tbaa !13
  %733 = ptrtoint ptr %732 to i64
  %734 = trunc i64 %733 to i32
  %735 = and i32 %734, 3
  %736 = and i64 %733, -4
  %737 = inttoptr i64 %736 to ptr
  %738 = and i64 %733, 3
  %739 = getelementptr inbounds ptr, ptr %737, i64 %738
  %740 = getelementptr inbounds i8, ptr %739, i64 24
  %741 = load ptr, ptr %740, align 8, !tbaa !13
  br label %742

742:                                              ; preds = %.thread472, %.thread469.thread493
  %.sroa.0197.1 = phi ptr [ %704, %.thread469.thread493 ], [ %.sroa.0197.0544, %.thread472 ]
  %.sroa.18.3 = phi i32 [ %702, %.thread469.thread493 ], [ %.sroa.18.2458468, %.thread472 ]
  %.1420 = phi ptr [ %.0419546, %.thread469.thread493 ], [ %.2415481, %.thread472 ]
  %.1418 = phi ptr [ %.2411461, %.thread469.thread493 ], [ %.0417550, %.thread472 ]
  %.3416 = phi ptr [ %.2415478, %.thread469.thread493 ], [ %741, %.thread472 ]
  %.3412 = phi ptr [ %708, %.thread469.thread493 ], [ %.2411460466, %.thread472 ]
  %.sroa.0228.1 = phi ptr [ %.sroa.0228.0556, %.thread469.thread493 ], [ %737, %.thread472 ]
  %.sroa.18242.3 = phi i32 [ %.sroa.18242.2482, %.thread469.thread493 ], [ %735, %.thread472 ]
  %743 = load i32, ptr %281, align 4, !tbaa !24
  %744 = icmp sgt i32 %743, 2
  br i1 %744, label %745, label %747

745:                                              ; preds = %742
  %746 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.971)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  br label %747

747:                                              ; preds = %745, %742
  %748 = call double @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %.3416, ptr noundef %.1420, ptr noundef %.1418)
  %749 = fcmp ole double %748, 0.000000e+00
  %750 = call double @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %.3412, ptr noundef %.1420, ptr noundef %.1418)
  %751 = fcmp ole double %750, 0.000000e+00
  %or.cond3 = select i1 %749, i1 %751, i1 false
  br i1 %or.cond3, label %._crit_edge560, label %466
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"otri", !7, i64 0, !10, i64 8}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !10, i64 8}
!12 = !{!10, !10, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !10, i64 100}
!15 = !{!"behavior", !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, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !8, i64 168, !8, i64 2216, !8, i64 4264, !8, i64 6312, !8, i64 8360, !8, i64 10408, !8, i64 12456, !8, i64 14504, !8, i64 16552, !8, i64 18600, !8, i64 20648, !8, i64 22696}
!16 = !{!"double", !8, i64 0}
!17 = !{!16, !16, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = !{!15, !10, i64 116}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}


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