; 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.972 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.973 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.974 = external hidden unnamed_addr constant [51 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 void @mergehulls(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
define dso_local void @divconqrecurse(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) #2 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %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 double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  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 i32 %3, ptr %11, align 4, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  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 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  %24 = load ptr, ptr %9, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.behavior, ptr %24, i32 0, i32 29
  %26 = load i32, ptr %25, align 4, !tbaa !11
  %27 = icmp sgt i32 %26, 2
  br i1 %27, label %28, label %31

28:                                               ; preds = %7
  %29 = load i32, ptr %11, align 4, !tbaa !9
  %30 = call i32 (ptr, ...) @printf(ptr noundef @.str.972, i32 noundef %29)
  br label %31

31:                                               ; preds = %28, %7
  %32 = load i32, ptr %11, align 4, !tbaa !9
  %33 = icmp eq i32 %32, 2
  br i1 %33, label %34, label %268

34:                                               ; preds = %31
  %35 = load ptr, ptr %8, align 8, !tbaa !5
  %36 = load ptr, ptr %9, align 8, !tbaa !5
  %37 = load ptr, ptr %13, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %35, ptr noundef %36, ptr noundef %37)
  %38 = load ptr, ptr %10, align 8, !tbaa !5
  %39 = getelementptr inbounds ptr, ptr %38, i64 0
  %40 = load ptr, ptr %39, align 8, !tbaa !5
  %41 = load ptr, ptr %13, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.otri, ptr %41, i32 0, i32 0
  %43 = load ptr, ptr %42, align 8, !tbaa !14
  %44 = load ptr, ptr %13, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.otri, ptr %44, i32 0, i32 1
  %46 = load i32, ptr %45, align 8, !tbaa !16
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %47
  %49 = load i32, ptr %48, align 4, !tbaa !9
  %50 = add nsw i32 %49, 3
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds ptr, ptr %43, i64 %51
  store ptr %40, ptr %52, align 8, !tbaa !5
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = getelementptr inbounds ptr, ptr %53, i64 1
  %55 = load ptr, ptr %54, align 8, !tbaa !5
  %56 = load ptr, ptr %13, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.otri, ptr %56, i32 0, i32 0
  %58 = load ptr, ptr %57, align 8, !tbaa !14
  %59 = load ptr, ptr %13, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.otri, ptr %59, i32 0, i32 1
  %61 = load i32, ptr %60, align 8, !tbaa !16
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !9
  %65 = add nsw i32 %64, 3
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds ptr, ptr %58, i64 %66
  store ptr %55, ptr %67, align 8, !tbaa !5
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  %70 = load ptr, ptr %14, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %68, ptr noundef %69, ptr noundef %70)
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = getelementptr inbounds ptr, ptr %71, i64 1
  %73 = load ptr, ptr %72, align 8, !tbaa !5
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.otri, ptr %74, i32 0, i32 0
  %76 = load ptr, ptr %75, align 8, !tbaa !14
  %77 = load ptr, ptr %14, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.otri, ptr %77, i32 0, i32 1
  %79 = load i32, ptr %78, align 8, !tbaa !16
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %80
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = add nsw i32 %82, 3
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds ptr, ptr %76, i64 %84
  store ptr %73, ptr %85, align 8, !tbaa !5
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = getelementptr inbounds ptr, ptr %86, i64 0
  %88 = load ptr, ptr %87, align 8, !tbaa !5
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.otri, ptr %89, i32 0, i32 0
  %91 = load ptr, ptr %90, align 8, !tbaa !14
  %92 = load ptr, ptr %14, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.otri, ptr %92, i32 0, i32 1
  %94 = load i32, ptr %93, align 8, !tbaa !16
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = add nsw i32 %97, 3
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds ptr, ptr %91, i64 %99
  store ptr %88, ptr %100, align 8, !tbaa !5
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.otri, ptr %101, i32 0, i32 0
  %103 = load ptr, ptr %102, align 8, !tbaa !14
  %104 = ptrtoint ptr %103 to i64
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.otri, ptr %105, i32 0, i32 1
  %107 = load i32, ptr %106, align 8, !tbaa !16
  %108 = sext i32 %107 to i64
  %109 = or i64 %104, %108
  %110 = inttoptr i64 %109 to ptr
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.otri, ptr %111, i32 0, i32 0
  %113 = load ptr, ptr %112, align 8, !tbaa !14
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.otri, ptr %114, i32 0, i32 1
  %116 = load i32, ptr %115, align 8, !tbaa !16
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds ptr, ptr %113, i64 %117
  store ptr %110, ptr %118, 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 !14
  %122 = ptrtoint ptr %121 to i64
  %123 = load ptr, ptr %13, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.otri, ptr %123, i32 0, i32 1
  %125 = load i32, ptr %124, align 8, !tbaa !16
  %126 = sext i32 %125 to i64
  %127 = or i64 %122, %126
  %128 = inttoptr i64 %127 to ptr
  %129 = load ptr, ptr %14, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.otri, ptr %129, i32 0, i32 0
  %131 = load ptr, ptr %130, align 8, !tbaa !14
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.otri, ptr %132, i32 0, i32 1
  %134 = load i32, ptr %133, align 8, !tbaa !16
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds ptr, ptr %131, i64 %135
  store ptr %128, ptr %136, align 8, !tbaa !5
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.otri, ptr %137, i32 0, i32 1
  %139 = load i32, ptr %138, align 8, !tbaa !16
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = load ptr, ptr %13, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.otri, ptr %143, i32 0, i32 1
  store i32 %142, ptr %144, align 8, !tbaa !16
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.otri, ptr %145, i32 0, i32 1
  %147 = load i32, ptr %146, align 8, !tbaa !16
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %148
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = load ptr, ptr %14, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.otri, ptr %151, i32 0, i32 1
  store i32 %150, ptr %152, align 8, !tbaa !16
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.otri, ptr %153, i32 0, i32 0
  %155 = load ptr, ptr %154, align 8, !tbaa !14
  %156 = ptrtoint ptr %155 to i64
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.otri, ptr %157, i32 0, i32 1
  %159 = load i32, ptr %158, align 8, !tbaa !16
  %160 = sext i32 %159 to i64
  %161 = or i64 %156, %160
  %162 = inttoptr i64 %161 to ptr
  %163 = load ptr, ptr %13, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.otri, ptr %163, i32 0, i32 0
  %165 = load ptr, ptr %164, align 8, !tbaa !14
  %166 = load ptr, ptr %13, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.otri, ptr %166, i32 0, i32 1
  %168 = load i32, ptr %167, align 8, !tbaa !16
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds ptr, ptr %165, i64 %169
  store ptr %162, ptr %170, align 8, !tbaa !5
  %171 = load ptr, ptr %13, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.otri, ptr %171, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8, !tbaa !14
  %174 = ptrtoint ptr %173 to i64
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.otri, ptr %175, i32 0, i32 1
  %177 = load i32, ptr %176, align 8, !tbaa !16
  %178 = sext i32 %177 to i64
  %179 = or i64 %174, %178
  %180 = inttoptr i64 %179 to ptr
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.otri, ptr %181, i32 0, i32 0
  %183 = load ptr, ptr %182, align 8, !tbaa !14
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.otri, ptr %184, i32 0, i32 1
  %186 = load i32, ptr %185, align 8, !tbaa !16
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds ptr, ptr %183, i64 %187
  store ptr %180, ptr %188, align 8, !tbaa !5
  %189 = load ptr, ptr %13, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.otri, ptr %189, i32 0, i32 1
  %191 = load i32, ptr %190, align 8, !tbaa !16
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load ptr, ptr %13, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.otri, ptr %195, i32 0, i32 1
  store i32 %194, ptr %196, align 8, !tbaa !16
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.otri, ptr %197, i32 0, i32 1
  %199 = load i32, ptr %198, align 8, !tbaa !16
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %200
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load ptr, ptr %14, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.otri, ptr %203, i32 0, i32 1
  store i32 %202, ptr %204, align 8, !tbaa !16
  %205 = load ptr, ptr %14, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.otri, ptr %205, i32 0, i32 0
  %207 = load ptr, ptr %206, align 8, !tbaa !14
  %208 = ptrtoint ptr %207 to i64
  %209 = load ptr, ptr %14, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.otri, ptr %209, i32 0, i32 1
  %211 = load i32, ptr %210, align 8, !tbaa !16
  %212 = sext i32 %211 to i64
  %213 = or i64 %208, %212
  %214 = inttoptr i64 %213 to ptr
  %215 = load ptr, ptr %13, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.otri, ptr %215, i32 0, i32 0
  %217 = load ptr, ptr %216, align 8, !tbaa !14
  %218 = load ptr, ptr %13, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.otri, ptr %218, i32 0, i32 1
  %220 = load i32, ptr %219, align 8, !tbaa !16
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %217, i64 %221
  store ptr %214, ptr %222, align 8, !tbaa !5
  %223 = load ptr, ptr %13, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.otri, ptr %223, i32 0, i32 0
  %225 = load ptr, ptr %224, align 8, !tbaa !14
  %226 = ptrtoint ptr %225 to i64
  %227 = load ptr, ptr %13, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.otri, ptr %227, i32 0, i32 1
  %229 = load i32, ptr %228, align 8, !tbaa !16
  %230 = sext i32 %229 to i64
  %231 = or i64 %226, %230
  %232 = inttoptr i64 %231 to ptr
  %233 = load ptr, ptr %14, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.otri, ptr %233, i32 0, i32 0
  %235 = load ptr, ptr %234, align 8, !tbaa !14
  %236 = load ptr, ptr %14, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.otri, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %237, align 8, !tbaa !16
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds ptr, ptr %235, i64 %239
  store ptr %232, ptr %240, align 8, !tbaa !5
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.behavior, ptr %241, i32 0, i32 29
  %243 = load i32, ptr %242, align 4, !tbaa !11
  %244 = icmp sgt i32 %243, 2
  br i1 %244, label %245, label %254

245:                                              ; preds = %34
  %246 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %247 = load ptr, ptr %8, align 8, !tbaa !5
  %248 = load ptr, ptr %9, align 8, !tbaa !5
  %249 = load ptr, ptr %13, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %247, ptr noundef %248, ptr noundef %249)
  %250 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %251, ptr noundef %252, ptr noundef %253)
  br label %254

254:                                              ; preds = %245, %34
  %255 = load ptr, ptr %14, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.otri, ptr %255, i32 0, i32 0
  %257 = load ptr, ptr %256, align 8, !tbaa !14
  %258 = load ptr, ptr %13, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.otri, ptr %258, i32 0, i32 0
  store ptr %257, ptr %259, align 8, !tbaa !14
  %260 = load ptr, ptr %14, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.otri, ptr %260, i32 0, i32 1
  %262 = load i32, ptr %261, align 8, !tbaa !16
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.otri, ptr %266, i32 0, i32 1
  store i32 %265, ptr %267, align 8, !tbaa !16
  store i32 1, ptr %23, align 4
  br label %1135

268:                                              ; preds = %31
  %269 = load i32, ptr %11, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 3
  br i1 %270, label %271, label %1095

271:                                              ; preds = %268
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %272, ptr noundef %273, ptr noundef %15)
  %274 = load ptr, ptr %8, align 8, !tbaa !5
  %275 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %274, ptr noundef %275, ptr noundef %16)
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %276, ptr noundef %277, ptr noundef %17)
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = load ptr, ptr %9, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %278, ptr noundef %279, ptr noundef %18)
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = load ptr, ptr %9, align 8, !tbaa !5
  %282 = load ptr, ptr %10, align 8, !tbaa !5
  %283 = getelementptr inbounds ptr, ptr %282, i64 0
  %284 = load ptr, ptr %283, align 8, !tbaa !5
  %285 = load ptr, ptr %10, align 8, !tbaa !5
  %286 = getelementptr inbounds ptr, ptr %285, i64 1
  %287 = load ptr, ptr %286, align 8, !tbaa !5
  %288 = load ptr, ptr %10, align 8, !tbaa !5
  %289 = getelementptr inbounds ptr, ptr %288, i64 2
  %290 = load ptr, ptr %289, align 8, !tbaa !5
  %291 = call double @counterclockwise(ptr noundef %280, ptr noundef %281, ptr noundef %284, ptr noundef %287, ptr noundef %290)
  store double %291, ptr %21, align 8, !tbaa !17
  %292 = load double, ptr %21, align 8, !tbaa !17
  %293 = fcmp oeq double %292, 0.000000e+00
  br i1 %293, label %294, label %631

294:                                              ; preds = %271
  %295 = load ptr, ptr %10, align 8, !tbaa !5
  %296 = getelementptr inbounds ptr, ptr %295, i64 0
  %297 = load ptr, ptr %296, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %299 = load ptr, ptr %298, align 8, !tbaa !14
  %300 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %301 = load i32, ptr %300, align 8, !tbaa !16
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = add nsw i32 %304, 3
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds ptr, ptr %299, i64 %306
  store ptr %297, ptr %307, align 8, !tbaa !5
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = getelementptr inbounds ptr, ptr %308, i64 1
  %310 = load ptr, ptr %309, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %312 = load ptr, ptr %311, align 8, !tbaa !14
  %313 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %314 = load i32, ptr %313, align 8, !tbaa !16
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = add nsw i32 %317, 3
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds ptr, ptr %312, i64 %319
  store ptr %310, ptr %320, align 8, !tbaa !5
  %321 = load ptr, ptr %10, align 8, !tbaa !5
  %322 = getelementptr inbounds ptr, ptr %321, i64 1
  %323 = load ptr, ptr %322, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %325 = load ptr, ptr %324, align 8, !tbaa !14
  %326 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %327 = load i32, ptr %326, align 8, !tbaa !16
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %328
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = add nsw i32 %330, 3
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds ptr, ptr %325, i64 %332
  store ptr %323, ptr %333, align 8, !tbaa !5
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = getelementptr inbounds ptr, ptr %334, i64 0
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %338 = load ptr, ptr %337, align 8, !tbaa !14
  %339 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %340 = load i32, ptr %339, align 8, !tbaa !16
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = add nsw i32 %343, 3
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds ptr, ptr %338, i64 %345
  store ptr %336, ptr %346, align 8, !tbaa !5
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = getelementptr inbounds ptr, ptr %347, i64 2
  %349 = load ptr, ptr %348, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %351 = load ptr, ptr %350, align 8, !tbaa !14
  %352 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %353 = load i32, ptr %352, align 8, !tbaa !16
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %354
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = add nsw i32 %356, 3
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds ptr, ptr %351, i64 %358
  store ptr %349, ptr %359, align 8, !tbaa !5
  %360 = load ptr, ptr %10, align 8, !tbaa !5
  %361 = getelementptr inbounds ptr, ptr %360, i64 1
  %362 = load ptr, ptr %361, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %364 = load ptr, ptr %363, align 8, !tbaa !14
  %365 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %366 = load i32, ptr %365, align 8, !tbaa !16
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = add nsw i32 %369, 3
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds ptr, ptr %364, i64 %371
  store ptr %362, ptr %372, align 8, !tbaa !5
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = getelementptr inbounds ptr, ptr %373, i64 1
  %375 = load ptr, ptr %374, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %377 = load ptr, ptr %376, align 8, !tbaa !14
  %378 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %379 = load i32, ptr %378, align 8, !tbaa !16
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = add nsw i32 %382, 3
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds ptr, ptr %377, i64 %384
  store ptr %375, ptr %385, align 8, !tbaa !5
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds ptr, ptr %386, i64 2
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !14
  %391 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %392 = load i32, ptr %391, align 8, !tbaa !16
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = add nsw i32 %395, 3
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds ptr, ptr %390, i64 %397
  store ptr %388, ptr %398, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %400 = load ptr, ptr %399, align 8, !tbaa !14
  %401 = ptrtoint ptr %400 to i64
  %402 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %403 = load i32, ptr %402, align 8, !tbaa !16
  %404 = sext i32 %403 to i64
  %405 = or i64 %401, %404
  %406 = inttoptr i64 %405 to ptr
  %407 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %408 = load ptr, ptr %407, align 8, !tbaa !14
  %409 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %410 = load i32, ptr %409, align 8, !tbaa !16
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds ptr, ptr %408, i64 %411
  store ptr %406, ptr %412, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %414 = load ptr, ptr %413, align 8, !tbaa !14
  %415 = ptrtoint ptr %414 to i64
  %416 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %417 = load i32, ptr %416, align 8, !tbaa !16
  %418 = sext i32 %417 to i64
  %419 = or i64 %415, %418
  %420 = inttoptr i64 %419 to ptr
  %421 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8, !tbaa !14
  %423 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %424 = load i32, ptr %423, align 8, !tbaa !16
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds ptr, ptr %422, i64 %425
  store ptr %420, ptr %426, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %428 = load ptr, ptr %427, align 8, !tbaa !14
  %429 = ptrtoint ptr %428 to i64
  %430 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %431 = load i32, ptr %430, align 8, !tbaa !16
  %432 = sext i32 %431 to i64
  %433 = or i64 %429, %432
  %434 = inttoptr i64 %433 to ptr
  %435 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8, !tbaa !14
  %437 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %438 = load i32, ptr %437, align 8, !tbaa !16
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds ptr, ptr %436, i64 %439
  store ptr %434, ptr %440, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %442 = load ptr, ptr %441, align 8, !tbaa !14
  %443 = ptrtoint ptr %442 to i64
  %444 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %445 = load i32, ptr %444, align 8, !tbaa !16
  %446 = sext i32 %445 to i64
  %447 = or i64 %443, %446
  %448 = inttoptr i64 %447 to ptr
  %449 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %450 = load ptr, ptr %449, align 8, !tbaa !14
  %451 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %452 = load i32, ptr %451, align 8, !tbaa !16
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds ptr, ptr %450, i64 %453
  store ptr %448, ptr %454, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %456 = load i32, ptr %455, align 8, !tbaa !16
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %457
  %459 = load i32, ptr %458, align 4, !tbaa !9
  %460 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %459, ptr %460, align 8, !tbaa !16
  %461 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %462 = load i32, ptr %461, align 8, !tbaa !16
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %463
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %465, ptr %466, align 8, !tbaa !16
  %467 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %468 = load i32, ptr %467, align 8, !tbaa !16
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %471, ptr %472, align 8, !tbaa !16
  %473 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %474 = load i32, ptr %473, align 8, !tbaa !16
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %477, ptr %478, align 8, !tbaa !16
  %479 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %480 = load ptr, ptr %479, align 8, !tbaa !14
  %481 = ptrtoint ptr %480 to i64
  %482 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %483 = load i32, ptr %482, align 8, !tbaa !16
  %484 = sext i32 %483 to i64
  %485 = or i64 %481, %484
  %486 = inttoptr i64 %485 to ptr
  %487 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %488 = load ptr, ptr %487, align 8, !tbaa !14
  %489 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %490 = load i32, ptr %489, align 8, !tbaa !16
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds ptr, ptr %488, i64 %491
  store ptr %486, ptr %492, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %494 = load ptr, ptr %493, align 8, !tbaa !14
  %495 = ptrtoint ptr %494 to i64
  %496 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %497 = load i32, ptr %496, align 8, !tbaa !16
  %498 = sext i32 %497 to i64
  %499 = or i64 %495, %498
  %500 = inttoptr i64 %499 to ptr
  %501 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %502 = load ptr, ptr %501, align 8, !tbaa !14
  %503 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %504 = load i32, ptr %503, align 8, !tbaa !16
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds ptr, ptr %502, i64 %505
  store ptr %500, ptr %506, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %508 = load ptr, ptr %507, align 8, !tbaa !14
  %509 = ptrtoint ptr %508 to i64
  %510 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %511 = load i32, ptr %510, align 8, !tbaa !16
  %512 = sext i32 %511 to i64
  %513 = or i64 %509, %512
  %514 = inttoptr i64 %513 to ptr
  %515 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %516 = load ptr, ptr %515, align 8, !tbaa !14
  %517 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %518 = load i32, ptr %517, align 8, !tbaa !16
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds ptr, ptr %516, i64 %519
  store ptr %514, ptr %520, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %522 = load ptr, ptr %521, align 8, !tbaa !14
  %523 = ptrtoint ptr %522 to i64
  %524 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %525 = load i32, ptr %524, align 8, !tbaa !16
  %526 = sext i32 %525 to i64
  %527 = or i64 %523, %526
  %528 = inttoptr i64 %527 to ptr
  %529 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %530 = load ptr, ptr %529, align 8, !tbaa !14
  %531 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %532 = load i32, ptr %531, align 8, !tbaa !16
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds ptr, ptr %530, i64 %533
  store ptr %528, ptr %534, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %536 = load i32, ptr %535, align 8, !tbaa !16
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %537
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %539, ptr %540, align 8, !tbaa !16
  %541 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %542 = load i32, ptr %541, align 8, !tbaa !16
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %543
  %545 = load i32, ptr %544, align 4, !tbaa !9
  %546 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %545, ptr %546, align 8, !tbaa !16
  %547 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %548 = load i32, ptr %547, align 8, !tbaa !16
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %549
  %551 = load i32, ptr %550, align 4, !tbaa !9
  %552 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %551, ptr %552, align 8, !tbaa !16
  %553 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %554 = load i32, ptr %553, align 8, !tbaa !16
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %557, ptr %558, align 8, !tbaa !16
  %559 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !14
  %561 = ptrtoint ptr %560 to i64
  %562 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %563 = load i32, ptr %562, align 8, !tbaa !16
  %564 = sext i32 %563 to i64
  %565 = or i64 %561, %564
  %566 = inttoptr i64 %565 to ptr
  %567 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %568 = load ptr, ptr %567, align 8, !tbaa !14
  %569 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %570 = load i32, ptr %569, align 8, !tbaa !16
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds ptr, ptr %568, i64 %571
  store ptr %566, ptr %572, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %574 = load ptr, ptr %573, align 8, !tbaa !14
  %575 = ptrtoint ptr %574 to i64
  %576 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %577 = load i32, ptr %576, align 8, !tbaa !16
  %578 = sext i32 %577 to i64
  %579 = or i64 %575, %578
  %580 = inttoptr i64 %579 to ptr
  %581 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %582 = load ptr, ptr %581, align 8, !tbaa !14
  %583 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %584 = load i32, ptr %583, align 8, !tbaa !16
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds ptr, ptr %582, i64 %585
  store ptr %580, ptr %586, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %588 = load ptr, ptr %587, align 8, !tbaa !14
  %589 = ptrtoint ptr %588 to i64
  %590 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %591 = load i32, ptr %590, align 8, !tbaa !16
  %592 = sext i32 %591 to i64
  %593 = or i64 %589, %592
  %594 = inttoptr i64 %593 to ptr
  %595 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %596 = load ptr, ptr %595, align 8, !tbaa !14
  %597 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %598 = load i32, ptr %597, align 8, !tbaa !16
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds ptr, ptr %596, i64 %599
  store ptr %594, ptr %600, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %602 = load ptr, ptr %601, align 8, !tbaa !14
  %603 = ptrtoint ptr %602 to i64
  %604 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %605 = load i32, ptr %604, align 8, !tbaa !16
  %606 = sext i32 %605 to i64
  %607 = or i64 %603, %606
  %608 = inttoptr i64 %607 to ptr
  %609 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %610 = load ptr, ptr %609, align 8, !tbaa !14
  %611 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %612 = load i32, ptr %611, align 8, !tbaa !16
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds ptr, ptr %610, i64 %613
  store ptr %608, ptr %614, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !14
  %617 = load ptr, ptr %13, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.otri, ptr %617, i32 0, i32 0
  store ptr %616, ptr %618, align 8, !tbaa !14
  %619 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %620 = load i32, ptr %619, align 8, !tbaa !16
  %621 = load ptr, ptr %13, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.otri, ptr %621, i32 0, i32 1
  store i32 %620, ptr %622, align 8, !tbaa !16
  %623 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %624 = load ptr, ptr %623, align 8, !tbaa !14
  %625 = load ptr, ptr %14, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.otri, ptr %625, i32 0, i32 0
  store ptr %624, ptr %626, align 8, !tbaa !14
  %627 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %628 = load i32, ptr %627, align 8, !tbaa !16
  %629 = load ptr, ptr %14, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.otri, ptr %629, i32 0, i32 1
  store i32 %628, ptr %630, align 8, !tbaa !16
  br label %1076

631:                                              ; preds = %271
  %632 = load ptr, ptr %10, align 8, !tbaa !5
  %633 = getelementptr inbounds ptr, ptr %632, i64 0
  %634 = load ptr, ptr %633, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %636 = load ptr, ptr %635, align 8, !tbaa !14
  %637 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %638 = load i32, ptr %637, align 8, !tbaa !16
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %639
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = add nsw i32 %641, 3
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds ptr, ptr %636, i64 %643
  store ptr %634, ptr %644, align 8, !tbaa !5
  %645 = load ptr, ptr %10, align 8, !tbaa !5
  %646 = getelementptr inbounds ptr, ptr %645, i64 0
  %647 = load ptr, ptr %646, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %649 = load ptr, ptr %648, align 8, !tbaa !14
  %650 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %651 = load i32, ptr %650, align 8, !tbaa !16
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %652
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = add nsw i32 %654, 3
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds ptr, ptr %649, i64 %656
  store ptr %647, ptr %657, align 8, !tbaa !5
  %658 = load ptr, ptr %10, align 8, !tbaa !5
  %659 = getelementptr inbounds ptr, ptr %658, i64 0
  %660 = load ptr, ptr %659, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %662 = load ptr, ptr %661, align 8, !tbaa !14
  %663 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %664 = load i32, ptr %663, align 8, !tbaa !16
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %665
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = add nsw i32 %667, 3
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds ptr, ptr %662, i64 %669
  store ptr %660, ptr %670, align 8, !tbaa !5
  %671 = load double, ptr %21, align 8, !tbaa !17
  %672 = fcmp ogt double %671, 0.000000e+00
  br i1 %672, label %673, label %749

673:                                              ; preds = %631
  %674 = load ptr, ptr %10, align 8, !tbaa !5
  %675 = getelementptr inbounds ptr, ptr %674, i64 1
  %676 = load ptr, ptr %675, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %678 = load ptr, ptr %677, align 8, !tbaa !14
  %679 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %680 = load i32, ptr %679, align 8, !tbaa !16
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = add nsw i32 %683, 3
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds ptr, ptr %678, i64 %685
  store ptr %676, ptr %686, align 8, !tbaa !5
  %687 = load ptr, ptr %10, align 8, !tbaa !5
  %688 = getelementptr inbounds ptr, ptr %687, i64 1
  %689 = load ptr, ptr %688, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %691 = load ptr, ptr %690, align 8, !tbaa !14
  %692 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %693 = load i32, ptr %692, align 8, !tbaa !16
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %694
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = add nsw i32 %696, 3
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds ptr, ptr %691, i64 %698
  store ptr %689, ptr %699, align 8, !tbaa !5
  %700 = load ptr, ptr %10, align 8, !tbaa !5
  %701 = getelementptr inbounds ptr, ptr %700, i64 1
  %702 = load ptr, ptr %701, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %704 = load ptr, ptr %703, align 8, !tbaa !14
  %705 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %706 = load i32, ptr %705, align 8, !tbaa !16
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %707
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = add nsw i32 %709, 3
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds ptr, ptr %704, i64 %711
  store ptr %702, ptr %712, align 8, !tbaa !5
  %713 = load ptr, ptr %10, align 8, !tbaa !5
  %714 = getelementptr inbounds ptr, ptr %713, i64 2
  %715 = load ptr, ptr %714, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %717 = load ptr, ptr %716, align 8, !tbaa !14
  %718 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %719 = load i32, ptr %718, align 8, !tbaa !16
  %720 = add nsw i32 %719, 3
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds ptr, ptr %717, i64 %721
  store ptr %715, ptr %722, align 8, !tbaa !5
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = getelementptr inbounds ptr, ptr %723, i64 2
  %725 = load ptr, ptr %724, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %727 = load ptr, ptr %726, align 8, !tbaa !14
  %728 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %729 = load i32, ptr %728, align 8, !tbaa !16
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %730
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = add nsw i32 %732, 3
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds ptr, ptr %727, i64 %734
  store ptr %725, ptr %735, align 8, !tbaa !5
  %736 = load ptr, ptr %10, align 8, !tbaa !5
  %737 = getelementptr inbounds ptr, ptr %736, i64 2
  %738 = load ptr, ptr %737, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %740 = load ptr, ptr %739, align 8, !tbaa !14
  %741 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %742 = load i32, ptr %741, align 8, !tbaa !16
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %743
  %745 = load i32, ptr %744, align 4, !tbaa !9
  %746 = add nsw i32 %745, 3
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds ptr, ptr %740, i64 %747
  store ptr %738, ptr %748, align 8, !tbaa !5
  br label %825

749:                                              ; preds = %631
  %750 = load ptr, ptr %10, align 8, !tbaa !5
  %751 = getelementptr inbounds ptr, ptr %750, i64 2
  %752 = load ptr, ptr %751, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %754 = load ptr, ptr %753, align 8, !tbaa !14
  %755 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %756 = load i32, ptr %755, align 8, !tbaa !16
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %757
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = add nsw i32 %759, 3
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds ptr, ptr %754, i64 %761
  store ptr %752, ptr %762, align 8, !tbaa !5
  %763 = load ptr, ptr %10, align 8, !tbaa !5
  %764 = getelementptr inbounds ptr, ptr %763, i64 2
  %765 = load ptr, ptr %764, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %767 = load ptr, ptr %766, align 8, !tbaa !14
  %768 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %769 = load i32, ptr %768, align 8, !tbaa !16
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %770
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = add nsw i32 %772, 3
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds ptr, ptr %767, i64 %774
  store ptr %765, ptr %775, align 8, !tbaa !5
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  %777 = getelementptr inbounds ptr, ptr %776, i64 2
  %778 = load ptr, ptr %777, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %780 = load ptr, ptr %779, align 8, !tbaa !14
  %781 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %782 = load i32, ptr %781, align 8, !tbaa !16
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = add nsw i32 %785, 3
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds ptr, ptr %780, i64 %787
  store ptr %778, ptr %788, align 8, !tbaa !5
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds ptr, ptr %789, i64 1
  %791 = load ptr, ptr %790, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %793 = load ptr, ptr %792, align 8, !tbaa !14
  %794 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %795 = load i32, ptr %794, align 8, !tbaa !16
  %796 = add nsw i32 %795, 3
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds ptr, ptr %793, i64 %797
  store ptr %791, ptr %798, align 8, !tbaa !5
  %799 = load ptr, ptr %10, align 8, !tbaa !5
  %800 = getelementptr inbounds ptr, ptr %799, i64 1
  %801 = load ptr, ptr %800, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %803 = load ptr, ptr %802, align 8, !tbaa !14
  %804 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %805 = load i32, ptr %804, align 8, !tbaa !16
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = add nsw i32 %808, 3
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds ptr, ptr %803, i64 %810
  store ptr %801, ptr %811, align 8, !tbaa !5
  %812 = load ptr, ptr %10, align 8, !tbaa !5
  %813 = getelementptr inbounds ptr, ptr %812, i64 1
  %814 = load ptr, ptr %813, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %816 = load ptr, ptr %815, align 8, !tbaa !14
  %817 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %818 = load i32, ptr %817, align 8, !tbaa !16
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %819
  %821 = load i32, ptr %820, align 4, !tbaa !9
  %822 = add nsw i32 %821, 3
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds ptr, ptr %816, i64 %823
  store ptr %814, ptr %824, align 8, !tbaa !5
  br label %825

825:                                              ; preds = %749, %673
  %826 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %827 = load ptr, ptr %826, align 8, !tbaa !14
  %828 = ptrtoint ptr %827 to i64
  %829 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %830 = load i32, ptr %829, align 8, !tbaa !16
  %831 = sext i32 %830 to i64
  %832 = or i64 %828, %831
  %833 = inttoptr i64 %832 to ptr
  %834 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %835 = load ptr, ptr %834, align 8, !tbaa !14
  %836 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %837 = load i32, ptr %836, align 8, !tbaa !16
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds ptr, ptr %835, i64 %838
  store ptr %833, ptr %839, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %841 = load ptr, ptr %840, align 8, !tbaa !14
  %842 = ptrtoint ptr %841 to i64
  %843 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %844 = load i32, ptr %843, align 8, !tbaa !16
  %845 = sext i32 %844 to i64
  %846 = or i64 %842, %845
  %847 = inttoptr i64 %846 to ptr
  %848 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %849 = load ptr, ptr %848, align 8, !tbaa !14
  %850 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %851 = load i32, ptr %850, align 8, !tbaa !16
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds ptr, ptr %849, i64 %852
  store ptr %847, ptr %853, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %855 = load i32, ptr %854, align 8, !tbaa !16
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %856
  %858 = load i32, ptr %857, align 4, !tbaa !9
  %859 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %858, ptr %859, align 8, !tbaa !16
  %860 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %861 = load ptr, ptr %860, align 8, !tbaa !14
  %862 = ptrtoint ptr %861 to i64
  %863 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %864 = load i32, ptr %863, align 8, !tbaa !16
  %865 = sext i32 %864 to i64
  %866 = or i64 %862, %865
  %867 = inttoptr i64 %866 to ptr
  %868 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %869 = load ptr, ptr %868, align 8, !tbaa !14
  %870 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %871 = load i32, ptr %870, align 8, !tbaa !16
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds ptr, ptr %869, i64 %872
  store ptr %867, ptr %873, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %875 = load ptr, ptr %874, align 8, !tbaa !14
  %876 = ptrtoint ptr %875 to i64
  %877 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %878 = load i32, ptr %877, align 8, !tbaa !16
  %879 = sext i32 %878 to i64
  %880 = or i64 %876, %879
  %881 = inttoptr i64 %880 to ptr
  %882 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %883 = load ptr, ptr %882, align 8, !tbaa !14
  %884 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %885 = load i32, ptr %884, align 8, !tbaa !16
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds ptr, ptr %883, i64 %886
  store ptr %881, ptr %887, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %889 = load i32, ptr %888, align 8, !tbaa !16
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %890
  %892 = load i32, ptr %891, align 4, !tbaa !9
  %893 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  store i32 %892, ptr %893, align 8, !tbaa !16
  %894 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %895 = load ptr, ptr %894, align 8, !tbaa !14
  %896 = ptrtoint ptr %895 to i64
  %897 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %898 = load i32, ptr %897, align 8, !tbaa !16
  %899 = sext i32 %898 to i64
  %900 = or i64 %896, %899
  %901 = inttoptr i64 %900 to ptr
  %902 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %903 = load ptr, ptr %902, align 8, !tbaa !14
  %904 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %905 = load i32, ptr %904, align 8, !tbaa !16
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds ptr, ptr %903, i64 %906
  store ptr %901, ptr %907, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 0
  %909 = load ptr, ptr %908, align 8, !tbaa !14
  %910 = ptrtoint ptr %909 to i64
  %911 = getelementptr inbounds %struct.otri, ptr %15, i32 0, i32 1
  %912 = load i32, ptr %911, align 8, !tbaa !16
  %913 = sext i32 %912 to i64
  %914 = or i64 %910, %913
  %915 = inttoptr i64 %914 to ptr
  %916 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %917 = load ptr, ptr %916, align 8, !tbaa !14
  %918 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %919 = load i32, ptr %918, align 8, !tbaa !16
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds ptr, ptr %917, i64 %920
  store ptr %915, ptr %921, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %923 = load i32, ptr %922, align 8, !tbaa !16
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %924
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %926, ptr %927, align 8, !tbaa !16
  %928 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %929 = load i32, ptr %928, align 8, !tbaa !16
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %930
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %932, ptr %933, align 8, !tbaa !16
  %934 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %935 = load ptr, ptr %934, align 8, !tbaa !14
  %936 = ptrtoint ptr %935 to i64
  %937 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %938 = load i32, ptr %937, align 8, !tbaa !16
  %939 = sext i32 %938 to i64
  %940 = or i64 %936, %939
  %941 = inttoptr i64 %940 to ptr
  %942 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %943 = load ptr, ptr %942, align 8, !tbaa !14
  %944 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %945 = load i32, ptr %944, align 8, !tbaa !16
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds ptr, ptr %943, i64 %946
  store ptr %941, ptr %947, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %949 = load ptr, ptr %948, align 8, !tbaa !14
  %950 = ptrtoint ptr %949 to i64
  %951 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %952 = load i32, ptr %951, align 8, !tbaa !16
  %953 = sext i32 %952 to i64
  %954 = or i64 %950, %953
  %955 = inttoptr i64 %954 to ptr
  %956 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %957 = load ptr, ptr %956, align 8, !tbaa !14
  %958 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %959 = load i32, ptr %958, align 8, !tbaa !16
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds ptr, ptr %957, i64 %960
  store ptr %955, ptr %961, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %963 = load i32, ptr %962, align 8, !tbaa !16
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %964
  %966 = load i32, ptr %965, align 4, !tbaa !9
  %967 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %966, ptr %967, align 8, !tbaa !16
  %968 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %969 = load i32, ptr %968, align 8, !tbaa !16
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %970
  %972 = load i32, ptr %971, align 4, !tbaa !9
  %973 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %972, ptr %973, align 8, !tbaa !16
  %974 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %975 = load ptr, ptr %974, align 8, !tbaa !14
  %976 = ptrtoint ptr %975 to i64
  %977 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %978 = load i32, ptr %977, align 8, !tbaa !16
  %979 = sext i32 %978 to i64
  %980 = or i64 %976, %979
  %981 = inttoptr i64 %980 to ptr
  %982 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %983 = load ptr, ptr %982, align 8, !tbaa !14
  %984 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %985 = load i32, ptr %984, align 8, !tbaa !16
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds ptr, ptr %983, i64 %986
  store ptr %981, ptr %987, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %989 = load ptr, ptr %988, align 8, !tbaa !14
  %990 = ptrtoint ptr %989 to i64
  %991 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %992 = load i32, ptr %991, align 8, !tbaa !16
  %993 = sext i32 %992 to i64
  %994 = or i64 %990, %993
  %995 = inttoptr i64 %994 to ptr
  %996 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %997 = load ptr, ptr %996, align 8, !tbaa !14
  %998 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %999 = load i32, ptr %998, align 8, !tbaa !16
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds ptr, ptr %997, i64 %1000
  store ptr %995, ptr %1001, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1003 = load i32, ptr %1002, align 8, !tbaa !16
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1004
  %1006 = load i32, ptr %1005, align 4, !tbaa !9
  %1007 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %1006, ptr %1007, align 8, !tbaa !16
  %1008 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1009 = load i32, ptr %1008, align 8, !tbaa !16
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1010
  %1012 = load i32, ptr %1011, align 4, !tbaa !9
  %1013 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1012, ptr %1013, align 8, !tbaa !16
  %1014 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1015 = load ptr, ptr %1014, align 8, !tbaa !14
  %1016 = ptrtoint ptr %1015 to i64
  %1017 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1018 = load i32, ptr %1017, align 8, !tbaa !16
  %1019 = sext i32 %1018 to i64
  %1020 = or i64 %1016, %1019
  %1021 = inttoptr i64 %1020 to ptr
  %1022 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1023 = load ptr, ptr %1022, align 8, !tbaa !14
  %1024 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1025 = load i32, ptr %1024, align 8, !tbaa !16
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds ptr, ptr %1023, i64 %1026
  store ptr %1021, ptr %1027, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1029 = load ptr, ptr %1028, align 8, !tbaa !14
  %1030 = ptrtoint ptr %1029 to i64
  %1031 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1032 = load i32, ptr %1031, align 8, !tbaa !16
  %1033 = sext i32 %1032 to i64
  %1034 = or i64 %1030, %1033
  %1035 = inttoptr i64 %1034 to ptr
  %1036 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1037 = load ptr, ptr %1036, align 8, !tbaa !14
  %1038 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1039 = load i32, ptr %1038, align 8, !tbaa !16
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds ptr, ptr %1037, i64 %1040
  store ptr %1035, ptr %1041, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1043 = load ptr, ptr %1042, align 8, !tbaa !14
  %1044 = load ptr, ptr %13, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.otri, ptr %1044, i32 0, i32 0
  store ptr %1043, ptr %1045, align 8, !tbaa !14
  %1046 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 8, !tbaa !16
  %1048 = load ptr, ptr %13, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.otri, ptr %1048, i32 0, i32 1
  store i32 %1047, ptr %1049, align 8, !tbaa !16
  %1050 = load double, ptr %21, align 8, !tbaa !17
  %1051 = fcmp ogt double %1050, 0.000000e+00
  br i1 %1051, label %1052, label %1061

1052:                                             ; preds = %825
  %1053 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1054 = load ptr, ptr %1053, align 8, !tbaa !14
  %1055 = load ptr, ptr %14, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.otri, ptr %1055, i32 0, i32 0
  store ptr %1054, ptr %1056, align 8, !tbaa !14
  %1057 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 8, !tbaa !16
  %1059 = load ptr, ptr %14, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.otri, ptr %1059, i32 0, i32 1
  store i32 %1058, ptr %1060, align 8, !tbaa !16
  br label %1075

1061:                                             ; preds = %825
  %1062 = load ptr, ptr %13, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.otri, ptr %1062, i32 0, i32 0
  %1064 = load ptr, ptr %1063, align 8, !tbaa !14
  %1065 = load ptr, ptr %14, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.otri, ptr %1065, i32 0, i32 0
  store ptr %1064, ptr %1066, align 8, !tbaa !14
  %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 !16
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1070
  %1072 = load i32, ptr %1071, align 4, !tbaa !9
  %1073 = load ptr, ptr %14, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.otri, ptr %1073, i32 0, i32 1
  store i32 %1072, ptr %1074, align 8, !tbaa !16
  br label %1075

1075:                                             ; preds = %1061, %1052
  br label %1076

1076:                                             ; preds = %1075, %294
  %1077 = load ptr, ptr %9, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.behavior, ptr %1077, i32 0, i32 29
  %1079 = load i32, ptr %1078, align 4, !tbaa !11
  %1080 = icmp sgt i32 %1079, 2
  br i1 %1080, label %1081, label %1094

1081:                                             ; preds = %1076
  %1082 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %1083 = load ptr, ptr %8, align 8, !tbaa !5
  %1084 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1083, ptr noundef %1084, ptr noundef %15)
  %1085 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %1086 = load ptr, ptr %8, align 8, !tbaa !5
  %1087 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1086, ptr noundef %1087, ptr noundef %16)
  %1088 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %1089 = load ptr, ptr %8, align 8, !tbaa !5
  %1090 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1089, ptr noundef %1090, ptr noundef %17)
  %1091 = call i32 (ptr, ...) @printf(ptr noundef @.str.973)
  %1092 = load ptr, ptr %8, align 8, !tbaa !5
  %1093 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1092, ptr noundef %1093, ptr noundef %18)
  br label %1094

1094:                                             ; preds = %1081, %1076
  store i32 1, ptr %23, align 4
  br label %1135

1095:                                             ; preds = %268
  %1096 = load i32, ptr %11, align 4, !tbaa !9
  %1097 = ashr i32 %1096, 1
  store i32 %1097, ptr %22, align 4, !tbaa !9
  %1098 = load ptr, ptr %8, align 8, !tbaa !5
  %1099 = load ptr, ptr %9, align 8, !tbaa !5
  %1100 = load ptr, ptr %10, align 8, !tbaa !5
  %1101 = load i32, ptr %22, align 4, !tbaa !9
  %1102 = load i32, ptr %12, align 4, !tbaa !9
  %1103 = sub nsw i32 1, %1102
  %1104 = load ptr, ptr %13, align 8, !tbaa !5
  call void @divconqrecurse(ptr noundef %1098, ptr noundef %1099, ptr noundef %1100, i32 noundef %1101, i32 noundef %1103, ptr noundef %1104, ptr noundef %19)
  %1105 = load ptr, ptr %8, align 8, !tbaa !5
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = load i32, ptr %22, align 4, !tbaa !9
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds ptr, ptr %1107, i64 %1109
  %1111 = load i32, ptr %11, align 4, !tbaa !9
  %1112 = load i32, ptr %22, align 4, !tbaa !9
  %1113 = sub nsw i32 %1111, %1112
  %1114 = load i32, ptr %12, align 4, !tbaa !9
  %1115 = sub nsw i32 1, %1114
  %1116 = load ptr, ptr %14, align 8, !tbaa !5
  call void @divconqrecurse(ptr noundef %1105, ptr noundef %1106, ptr noundef %1110, i32 noundef %1113, i32 noundef %1115, ptr noundef %20, ptr noundef %1116)
  %1117 = load ptr, ptr %9, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.behavior, ptr %1117, i32 0, i32 29
  %1119 = load i32, ptr %1118, align 4, !tbaa !11
  %1120 = icmp sgt i32 %1119, 1
  br i1 %1120, label %1121, label %1127

1121:                                             ; preds = %1095
  %1122 = load i32, ptr %22, align 4, !tbaa !9
  %1123 = load i32, ptr %11, align 4, !tbaa !9
  %1124 = load i32, ptr %22, align 4, !tbaa !9
  %1125 = sub nsw i32 %1123, %1124
  %1126 = call i32 (ptr, ...) @printf(ptr noundef @.str.974, i32 noundef %1122, i32 noundef %1125)
  br label %1127

1127:                                             ; preds = %1121, %1095
  %1128 = load ptr, ptr %8, align 8, !tbaa !5
  %1129 = load ptr, ptr %9, align 8, !tbaa !5
  %1130 = load ptr, ptr %13, align 8, !tbaa !5
  %1131 = load ptr, ptr %14, align 8, !tbaa !5
  %1132 = load i32, ptr %12, align 4, !tbaa !9
  call void @mergehulls(ptr noundef %1128, ptr noundef %1129, ptr noundef %1130, ptr noundef %19, ptr noundef %20, ptr noundef %1131, i32 noundef %1132)
  br label %1133

1133:                                             ; preds = %1127
  br label %1134

1134:                                             ; preds = %1133
  store i32 0, ptr %23, align 4
  br label %1135

1135:                                             ; preds = %1134, %1094, %254
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  %1136 = load i32, ptr %23, align 4
  switch i32 %1136, label %1138 [
    i32 0, label %1137
    i32 1, label %1137
  ]

1137:                                             ; preds = %1135, %1135
  ret void

1138:                                             ; preds = %1135
  unreachable
}

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, !10, i64 116}
!12 = !{!"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, !13, i64 136, !13, i64 144, !13, i64 152, !13, 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}
!13 = !{!"double", !7, i64 0}
!14 = !{!15, !6, i64 0}
!15 = !{!"otri", !6, i64 0, !10, i64 8}
!16 = !{!15, !10, i64 8}
!17 = !{!13, !13, i64 0}


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

%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.972 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.973 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.974 = external hidden unnamed_addr constant [51 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 void @mergehulls(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @divconqrecurse(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #2 {
  %8 = alloca %struct.otri, align 8
  %9 = alloca %struct.otri, align 8
  %10 = alloca %struct.otri, align 8
  %11 = alloca %struct.otri, align 8
  %12 = alloca %struct.otri, align 8
  %13 = 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
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #3
  %14 = getelementptr inbounds i8, ptr %1, i64 116
  %15 = load i32, ptr %14, align 4, !tbaa !5
  %16 = icmp sgt i32 %15, 2
  br i1 %16, label %17, label %19

17:                                               ; preds = %7
  %18 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.972, i32 noundef %3)
  br label %19

19:                                               ; preds = %17, %7
  switch i32 %3, label %464 [
    i32 2, label %20
    i32 3, label %121
  ]

20:                                               ; preds = %19
  tail call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %5)
  %21 = load ptr, ptr %2, align 8, !tbaa !11
  %22 = load ptr, ptr %5, align 8, !tbaa !13
  %23 = getelementptr inbounds i8, ptr %5, i64 8
  %24 = load i32, ptr %23, align 8, !tbaa !15
  %25 = sext i32 %24 to i64
  %26 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %25
  %27 = load i32, ptr %26, align 4, !tbaa !16
  %28 = sext i32 %27 to i64
  %29 = getelementptr ptr, ptr %22, i64 %28
  %30 = getelementptr i8, ptr %29, i64 24
  store ptr %21, ptr %30, align 8, !tbaa !11
  %31 = getelementptr inbounds i8, ptr %2, i64 8
  %32 = load ptr, ptr %31, align 8, !tbaa !11
  %33 = load ptr, ptr %5, align 8, !tbaa !13
  %34 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %25
  %35 = load i32, ptr %34, align 4, !tbaa !16
  %36 = sext i32 %35 to i64
  %37 = getelementptr ptr, ptr %33, i64 %36
  %38 = getelementptr i8, ptr %37, i64 24
  store ptr %32, ptr %38, align 8, !tbaa !11
  tail call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %6)
  %39 = load ptr, ptr %31, align 8, !tbaa !11
  %40 = load ptr, ptr %6, align 8, !tbaa !13
  %41 = getelementptr inbounds i8, ptr %6, i64 8
  %42 = load i32, ptr %41, align 8, !tbaa !15
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %43
  %45 = load i32, ptr %44, align 4, !tbaa !16
  %46 = sext i32 %45 to i64
  %47 = getelementptr ptr, ptr %40, i64 %46
  %48 = getelementptr i8, ptr %47, i64 24
  store ptr %39, ptr %48, align 8, !tbaa !11
  %49 = load ptr, ptr %2, align 8, !tbaa !11
  %50 = load ptr, ptr %6, align 8, !tbaa !13
  %51 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %43
  %52 = load i32, ptr %51, align 4, !tbaa !16
  %53 = sext i32 %52 to i64
  %54 = getelementptr ptr, ptr %50, i64 %53
  %55 = getelementptr i8, ptr %54, i64 24
  store ptr %49, ptr %55, align 8, !tbaa !11
  %56 = load ptr, ptr %6, align 8, !tbaa !13
  %57 = ptrtoint ptr %56 to i64
  %58 = or i64 %57, %43
  %59 = inttoptr i64 %58 to ptr
  %60 = load ptr, ptr %5, align 8, !tbaa !13
  %61 = load i32, ptr %23, align 8, !tbaa !15
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds ptr, ptr %60, i64 %62
  store ptr %59, ptr %63, align 8, !tbaa !11
  %64 = load ptr, ptr %5, align 8, !tbaa !13
  %65 = ptrtoint ptr %64 to i64
  %66 = or i64 %65, %62
  %67 = inttoptr i64 %66 to ptr
  %68 = load ptr, ptr %6, align 8, !tbaa !13
  %69 = getelementptr inbounds ptr, ptr %68, i64 %43
  store ptr %67, ptr %69, align 8, !tbaa !11
  %70 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %62
  %71 = load i32, ptr %70, align 4, !tbaa !16
  store i32 %71, ptr %23, align 8, !tbaa !15
  %72 = load i32, ptr %41, align 8, !tbaa !15
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %73
  %75 = load i32, ptr %74, align 4, !tbaa !16
  store i32 %75, ptr %41, align 8, !tbaa !15
  %76 = load ptr, ptr %6, align 8, !tbaa !13
  %77 = ptrtoint ptr %76 to i64
  %78 = sext i32 %75 to i64
  %79 = or i64 %77, %78
  %80 = inttoptr i64 %79 to ptr
  %81 = load ptr, ptr %5, align 8, !tbaa !13
  %82 = load i32, ptr %23, align 8, !tbaa !15
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds ptr, ptr %81, i64 %83
  store ptr %80, ptr %84, align 8, !tbaa !11
  %85 = load ptr, ptr %5, align 8, !tbaa !13
  %86 = ptrtoint ptr %85 to i64
  %87 = or i64 %86, %83
  %88 = inttoptr i64 %87 to ptr
  %89 = load ptr, ptr %6, align 8, !tbaa !13
  %90 = getelementptr inbounds ptr, ptr %89, i64 %78
  store ptr %88, ptr %90, align 8, !tbaa !11
  %91 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %83
  %92 = load i32, ptr %91, align 4, !tbaa !16
  store i32 %92, ptr %23, align 8, !tbaa !15
  %93 = load i32, ptr %41, align 8, !tbaa !15
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %94
  %96 = load i32, ptr %95, align 4, !tbaa !16
  store i32 %96, ptr %41, align 8, !tbaa !15
  %97 = load ptr, ptr %6, align 8, !tbaa !13
  %98 = ptrtoint ptr %97 to i64
  %99 = sext i32 %96 to i64
  %100 = or i64 %98, %99
  %101 = inttoptr i64 %100 to ptr
  %102 = load ptr, ptr %5, align 8, !tbaa !13
  %103 = load i32, ptr %23, align 8, !tbaa !15
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds ptr, ptr %102, i64 %104
  store ptr %101, ptr %105, align 8, !tbaa !11
  %106 = load ptr, ptr %5, align 8, !tbaa !13
  %107 = ptrtoint ptr %106 to i64
  %108 = or i64 %107, %104
  %109 = inttoptr i64 %108 to ptr
  %110 = load ptr, ptr %6, align 8, !tbaa !13
  %111 = getelementptr inbounds ptr, ptr %110, i64 %99
  store ptr %109, ptr %111, align 8, !tbaa !11
  %112 = load i32, ptr %14, align 4, !tbaa !5
  %113 = icmp sgt i32 %112, 2
  br i1 %113, label %114, label %117

114:                                              ; preds = %20
  %115 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  tail call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %5)
  %116 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  tail call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %6)
  %.pre = load i32, ptr %41, align 8, !tbaa !15
  %.pre151 = sext i32 %.pre to i64
  br label %117

117:                                              ; preds = %114, %20
  %.pre-phi152 = phi i64 [ %.pre151, %114 ], [ %99, %20 ]
  %118 = load ptr, ptr %6, align 8, !tbaa !13
  store ptr %118, ptr %5, align 8, !tbaa !13
  %119 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %.pre-phi152
  %120 = load i32, ptr %119, align 4, !tbaa !16
  store i32 %120, ptr %23, align 8, !tbaa !15
  br label %475

121:                                              ; preds = %19
  call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %10)
  call void @maketriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %11)
  %122 = load ptr, ptr %2, align 8, !tbaa !11
  %123 = getelementptr inbounds i8, ptr %2, i64 8
  %124 = load ptr, ptr %123, align 8, !tbaa !11
  %125 = getelementptr inbounds i8, ptr %2, i64 16
  %126 = load ptr, ptr %125, align 8, !tbaa !11
  %127 = call double @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %122, ptr noundef %124, ptr noundef %126)
  %128 = fcmp oeq double %127, 0.000000e+00
  %129 = load ptr, ptr %2, align 8, !tbaa !11
  %130 = load ptr, ptr %8, align 8, !tbaa !13
  %131 = getelementptr inbounds i8, ptr %8, i64 8
  %132 = load i32, ptr %131, align 8, !tbaa !15
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !16
  %136 = sext i32 %135 to i64
  %137 = getelementptr ptr, ptr %130, i64 %136
  %138 = getelementptr i8, ptr %137, i64 24
  store ptr %129, ptr %138, align 8, !tbaa !11
  br i1 %128, label %139, label %283

139:                                              ; preds = %121
  %140 = load ptr, ptr %123, align 8, !tbaa !11
  %141 = load ptr, ptr %8, align 8, !tbaa !13
  %142 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %133
  %143 = load i32, ptr %142, align 4, !tbaa !16
  %144 = sext i32 %143 to i64
  %145 = getelementptr ptr, ptr %141, i64 %144
  %146 = getelementptr i8, ptr %145, i64 24
  store ptr %140, ptr %146, align 8, !tbaa !11
  %147 = load ptr, ptr %9, align 8, !tbaa !13
  %148 = getelementptr inbounds i8, ptr %9, i64 8
  %149 = load i32, ptr %148, align 8, !tbaa !15
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %150
  %152 = load i32, ptr %151, align 4, !tbaa !16
  %153 = sext i32 %152 to i64
  %154 = getelementptr ptr, ptr %147, i64 %153
  %155 = getelementptr i8, ptr %154, i64 24
  store ptr %140, ptr %155, align 8, !tbaa !11
  %156 = load ptr, ptr %2, align 8, !tbaa !11
  %157 = load ptr, ptr %9, align 8, !tbaa !13
  %158 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %150
  %159 = load i32, ptr %158, align 4, !tbaa !16
  %160 = sext i32 %159 to i64
  %161 = getelementptr ptr, ptr %157, i64 %160
  %162 = getelementptr i8, ptr %161, i64 24
  store ptr %156, ptr %162, align 8, !tbaa !11
  %163 = load ptr, ptr %125, align 8, !tbaa !11
  %164 = load ptr, ptr %10, align 8, !tbaa !13
  %165 = getelementptr inbounds i8, ptr %10, i64 8
  %166 = load i32, ptr %165, align 8, !tbaa !15
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !16
  %170 = sext i32 %169 to i64
  %171 = getelementptr ptr, ptr %164, i64 %170
  %172 = getelementptr i8, ptr %171, i64 24
  store ptr %163, ptr %172, align 8, !tbaa !11
  %173 = load ptr, ptr %123, align 8, !tbaa !11
  %174 = load ptr, ptr %10, align 8, !tbaa !13
  %175 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %167
  %176 = load i32, ptr %175, align 4, !tbaa !16
  %177 = sext i32 %176 to i64
  %178 = getelementptr ptr, ptr %174, i64 %177
  %179 = getelementptr i8, ptr %178, i64 24
  store ptr %173, ptr %179, align 8, !tbaa !11
  %180 = load ptr, ptr %11, align 8, !tbaa !13
  %181 = getelementptr inbounds i8, ptr %11, i64 8
  %182 = load i32, ptr %181, align 8, !tbaa !15
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %183
  %185 = load i32, ptr %184, align 4, !tbaa !16
  %186 = sext i32 %185 to i64
  %187 = getelementptr ptr, ptr %180, i64 %186
  %188 = getelementptr i8, ptr %187, i64 24
  store ptr %173, ptr %188, align 8, !tbaa !11
  %189 = load ptr, ptr %125, align 8, !tbaa !11
  %190 = load ptr, ptr %11, align 8, !tbaa !13
  %191 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %183
  %192 = load i32, ptr %191, align 4, !tbaa !16
  %193 = sext i32 %192 to i64
  %194 = getelementptr ptr, ptr %190, i64 %193
  %195 = getelementptr i8, ptr %194, i64 24
  store ptr %189, ptr %195, align 8, !tbaa !11
  %196 = load ptr, ptr %9, align 8, !tbaa !13
  %197 = ptrtoint ptr %196 to i64
  %198 = or i64 %197, %150
  %199 = inttoptr i64 %198 to ptr
  %200 = load ptr, ptr %8, align 8, !tbaa !13
  %201 = getelementptr inbounds ptr, ptr %200, i64 %133
  store ptr %199, ptr %201, align 8, !tbaa !11
  %202 = load ptr, ptr %8, align 8, !tbaa !13
  %203 = ptrtoint ptr %202 to i64
  %204 = or i64 %203, %133
  %205 = inttoptr i64 %204 to ptr
  %206 = load ptr, ptr %9, align 8, !tbaa !13
  %207 = getelementptr inbounds ptr, ptr %206, i64 %150
  store ptr %205, ptr %207, align 8, !tbaa !11
  %208 = load ptr, ptr %11, align 8, !tbaa !13
  %209 = ptrtoint ptr %208 to i64
  %210 = or i64 %209, %183
  %211 = inttoptr i64 %210 to ptr
  %212 = load ptr, ptr %10, align 8, !tbaa !13
  %213 = getelementptr inbounds ptr, ptr %212, i64 %167
  store ptr %211, ptr %213, align 8, !tbaa !11
  %214 = load ptr, ptr %10, align 8, !tbaa !13
  %215 = ptrtoint ptr %214 to i64
  %216 = or i64 %215, %167
  %217 = inttoptr i64 %216 to ptr
  %218 = load ptr, ptr %11, align 8, !tbaa !13
  %219 = getelementptr inbounds ptr, ptr %218, i64 %183
  store ptr %217, ptr %219, align 8, !tbaa !11
  %220 = load ptr, ptr %11, align 8, !tbaa !13
  %221 = ptrtoint ptr %220 to i64
  %222 = or i64 %221, %193
  %223 = inttoptr i64 %222 to ptr
  %224 = load ptr, ptr %8, align 8, !tbaa !13
  %225 = getelementptr inbounds ptr, ptr %224, i64 %136
  store ptr %223, ptr %225, align 8, !tbaa !11
  %226 = load ptr, ptr %8, align 8, !tbaa !13
  %227 = ptrtoint ptr %226 to i64
  %228 = or i64 %227, %136
  %229 = inttoptr i64 %228 to ptr
  %230 = load ptr, ptr %11, align 8, !tbaa !13
  %231 = getelementptr inbounds ptr, ptr %230, i64 %193
  store ptr %229, ptr %231, align 8, !tbaa !11
  %232 = load ptr, ptr %10, align 8, !tbaa !13
  %233 = ptrtoint ptr %232 to i64
  %234 = or i64 %233, %170
  %235 = inttoptr i64 %234 to ptr
  %236 = load ptr, ptr %9, align 8, !tbaa !13
  %237 = getelementptr inbounds ptr, ptr %236, i64 %160
  store ptr %235, ptr %237, align 8, !tbaa !11
  %238 = load ptr, ptr %9, align 8, !tbaa !13
  %239 = ptrtoint ptr %238 to i64
  %240 = or i64 %239, %160
  %241 = inttoptr i64 %240 to ptr
  %242 = load ptr, ptr %10, align 8, !tbaa !13
  %243 = getelementptr inbounds ptr, ptr %242, i64 %170
  store ptr %241, ptr %243, align 8, !tbaa !11
  %244 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %136
  %245 = load i32, ptr %244, align 4, !tbaa !16
  store i32 %245, ptr %131, align 8, !tbaa !15
  %246 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %160
  %247 = load i32, ptr %246, align 4, !tbaa !16
  store i32 %247, ptr %148, align 8, !tbaa !15
  %248 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %170
  %249 = load i32, ptr %248, align 4, !tbaa !16
  store i32 %249, ptr %165, align 8, !tbaa !15
  %250 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %193
  %251 = load i32, ptr %250, align 4, !tbaa !16
  store i32 %251, ptr %181, align 8, !tbaa !15
  %252 = load ptr, ptr %9, align 8, !tbaa !13
  %253 = ptrtoint ptr %252 to i64
  %254 = sext i32 %247 to i64
  %255 = or i64 %253, %254
  %256 = inttoptr i64 %255 to ptr
  %257 = load ptr, ptr %8, align 8, !tbaa !13
  %258 = sext i32 %245 to i64
  %259 = getelementptr inbounds ptr, ptr %257, i64 %258
  store ptr %256, ptr %259, align 8, !tbaa !11
  %260 = load ptr, ptr %8, align 8, !tbaa !13
  %261 = ptrtoint ptr %260 to i64
  %262 = or i64 %261, %258
  %263 = inttoptr i64 %262 to ptr
  %264 = load ptr, ptr %9, align 8, !tbaa !13
  %265 = getelementptr inbounds ptr, ptr %264, i64 %254
  store ptr %263, ptr %265, align 8, !tbaa !11
  %266 = load ptr, ptr %11, align 8, !tbaa !13
  %267 = ptrtoint ptr %266 to i64
  %268 = sext i32 %251 to i64
  %269 = or i64 %267, %268
  %270 = inttoptr i64 %269 to ptr
  %271 = load ptr, ptr %10, align 8, !tbaa !13
  %272 = sext i32 %249 to i64
  %273 = getelementptr inbounds ptr, ptr %271, i64 %272
  store ptr %270, ptr %273, align 8, !tbaa !11
  %274 = load ptr, ptr %10, align 8, !tbaa !13
  %275 = ptrtoint ptr %274 to i64
  %276 = or i64 %275, %272
  %277 = inttoptr i64 %276 to ptr
  %278 = load ptr, ptr %11, align 8, !tbaa !13
  %279 = getelementptr inbounds ptr, ptr %278, i64 %268
  store ptr %277, ptr %279, align 8, !tbaa !11
  %280 = load ptr, ptr %9, align 8, !tbaa !13
  store ptr %280, ptr %5, align 8, !tbaa !13
  %281 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %247, ptr %281, align 8, !tbaa !15
  %282 = load ptr, ptr %10, align 8, !tbaa !13
  store ptr %282, ptr %6, align 8, !tbaa !13
  br label %455

283:                                              ; preds = %121
  %284 = load ptr, ptr %9, align 8, !tbaa !13
  %285 = getelementptr inbounds i8, ptr %9, i64 8
  %286 = load i32, ptr %285, align 8, !tbaa !15
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !16
  %290 = sext i32 %289 to i64
  %291 = getelementptr ptr, ptr %284, i64 %290
  %292 = getelementptr i8, ptr %291, i64 24
  store ptr %129, ptr %292, align 8, !tbaa !11
  %293 = load ptr, ptr %2, align 8, !tbaa !11
  %294 = load ptr, ptr %11, align 8, !tbaa !13
  %295 = getelementptr inbounds i8, ptr %11, i64 8
  %296 = load i32, ptr %295, align 8, !tbaa !15
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !16
  %300 = sext i32 %299 to i64
  %301 = getelementptr ptr, ptr %294, i64 %300
  %302 = getelementptr i8, ptr %301, i64 24
  store ptr %293, ptr %302, align 8, !tbaa !11
  %303 = fcmp ogt double %127, 0.000000e+00
  %304 = load ptr, ptr %8, align 8, !tbaa !13
  %305 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %133
  %306 = load i32, ptr %305, align 4, !tbaa !16
  %307 = sext i32 %306 to i64
  %308 = getelementptr ptr, ptr %304, i64 %307
  %309 = getelementptr i8, ptr %308, i64 24
  %310 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %287
  %311 = getelementptr inbounds i8, ptr %10, i64 8
  br i1 %303, label %312, label %332

312:                                              ; preds = %283
  %313 = load ptr, ptr %123, align 8, !tbaa !11
  store ptr %313, ptr %309, align 8, !tbaa !11
  %314 = load ptr, ptr %9, align 8, !tbaa !13
  %315 = load i32, ptr %310, align 4, !tbaa !16
  %316 = sext i32 %315 to i64
  %317 = getelementptr ptr, ptr %314, i64 %316
  %318 = getelementptr i8, ptr %317, i64 24
  store ptr %313, ptr %318, align 8, !tbaa !11
  %319 = load ptr, ptr %123, align 8, !tbaa !11
  %320 = load ptr, ptr %10, align 8, !tbaa !13
  %321 = load i32, ptr %311, align 8, !tbaa !15
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !16
  %325 = sext i32 %324 to i64
  %326 = getelementptr ptr, ptr %320, i64 %325
  %327 = getelementptr i8, ptr %326, i64 24
  store ptr %319, ptr %327, align 8, !tbaa !11
  %328 = load ptr, ptr %125, align 8, !tbaa !11
  %329 = load ptr, ptr %8, align 8, !tbaa !13
  %330 = getelementptr ptr, ptr %329, i64 %133
  %331 = getelementptr i8, ptr %330, i64 24
  store ptr %328, ptr %331, align 8, !tbaa !11
  br label %352

332:                                              ; preds = %283
  %333 = load ptr, ptr %125, align 8, !tbaa !11
  store ptr %333, ptr %309, align 8, !tbaa !11
  %334 = load ptr, ptr %9, align 8, !tbaa !13
  %335 = load i32, ptr %310, align 4, !tbaa !16
  %336 = sext i32 %335 to i64
  %337 = getelementptr ptr, ptr %334, i64 %336
  %338 = getelementptr i8, ptr %337, i64 24
  store ptr %333, ptr %338, align 8, !tbaa !11
  %339 = load ptr, ptr %125, align 8, !tbaa !11
  %340 = load ptr, ptr %10, align 8, !tbaa !13
  %341 = load i32, ptr %311, align 8, !tbaa !15
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %342
  %344 = load i32, ptr %343, align 4, !tbaa !16
  %345 = sext i32 %344 to i64
  %346 = getelementptr ptr, ptr %340, i64 %345
  %347 = getelementptr i8, ptr %346, i64 24
  store ptr %339, ptr %347, align 8, !tbaa !11
  %348 = load ptr, ptr %123, align 8, !tbaa !11
  %349 = load ptr, ptr %8, align 8, !tbaa !13
  %350 = getelementptr ptr, ptr %349, i64 %133
  %351 = getelementptr i8, ptr %350, i64 24
  store ptr %348, ptr %351, align 8, !tbaa !11
  br label %352

352:                                              ; preds = %332, %312
  %.sink168 = phi i64 [ %342, %332 ], [ %322, %312 ]
  %.sink161 = phi ptr [ %348, %332 ], [ %328, %312 ]
  %.sink.in = phi ptr [ %123, %332 ], [ %125, %312 ]
  %.sink164 = load ptr, ptr %10, align 8, !tbaa !13
  %353 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %.sink168
  %354 = load i32, ptr %353, align 4, !tbaa !16
  %355 = sext i32 %354 to i64
  %356 = getelementptr ptr, ptr %.sink164, i64 %355
  %357 = getelementptr i8, ptr %356, i64 24
  store ptr %.sink161, ptr %357, align 8, !tbaa !11
  %.sink = load ptr, ptr %.sink.in, align 8, !tbaa !11
  %.sink155 = load ptr, ptr %11, align 8, !tbaa !13
  %358 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %297
  %359 = load i32, ptr %358, align 4, !tbaa !16
  %360 = sext i32 %359 to i64
  %361 = getelementptr ptr, ptr %.sink155, i64 %360
  %362 = getelementptr i8, ptr %361, i64 24
  store ptr %.sink, ptr %362, align 8, !tbaa !11
  %363 = load ptr, ptr %9, align 8, !tbaa !13
  %364 = ptrtoint ptr %363 to i64
  %365 = or i64 %364, %287
  %366 = inttoptr i64 %365 to ptr
  %367 = load ptr, ptr %8, align 8, !tbaa !13
  %368 = getelementptr inbounds ptr, ptr %367, i64 %133
  store ptr %366, ptr %368, align 8, !tbaa !11
  %369 = load ptr, ptr %8, align 8, !tbaa !13
  %370 = ptrtoint ptr %369 to i64
  %371 = or i64 %370, %133
  %372 = inttoptr i64 %371 to ptr
  %373 = load ptr, ptr %9, align 8, !tbaa !13
  %374 = getelementptr inbounds ptr, ptr %373, i64 %287
  store ptr %372, ptr %374, align 8, !tbaa !11
  %375 = load ptr, ptr %10, align 8, !tbaa !13
  %376 = ptrtoint ptr %375 to i64
  %377 = getelementptr inbounds i8, ptr %10, i64 8
  %378 = or i64 %.sink168, %376
  %379 = inttoptr i64 %378 to ptr
  %380 = load ptr, ptr %8, align 8, !tbaa !13
  %381 = getelementptr inbounds ptr, ptr %380, i64 %136
  store ptr %379, ptr %381, align 8, !tbaa !11
  %382 = load ptr, ptr %8, align 8, !tbaa !13
  %383 = ptrtoint ptr %382 to i64
  %384 = or i64 %383, %136
  %385 = inttoptr i64 %384 to ptr
  %386 = load ptr, ptr %10, align 8, !tbaa !13
  %387 = getelementptr inbounds ptr, ptr %386, i64 %.sink168
  store ptr %385, ptr %387, align 8, !tbaa !11
  %388 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %136
  %389 = load i32, ptr %388, align 4, !tbaa !16
  store i32 %389, ptr %131, align 8, !tbaa !15
  %390 = load ptr, ptr %11, align 8, !tbaa !13
  %391 = ptrtoint ptr %390 to i64
  %392 = or i64 %391, %297
  %393 = inttoptr i64 %392 to ptr
  %394 = load ptr, ptr %8, align 8, !tbaa !13
  %395 = sext i32 %389 to i64
  %396 = getelementptr inbounds ptr, ptr %394, i64 %395
  store ptr %393, ptr %396, align 8, !tbaa !11
  %397 = load ptr, ptr %8, align 8, !tbaa !13
  %398 = ptrtoint ptr %397 to i64
  %399 = or i64 %398, %395
  %400 = inttoptr i64 %399 to ptr
  %401 = load ptr, ptr %11, align 8, !tbaa !13
  %402 = getelementptr inbounds ptr, ptr %401, i64 %297
  store ptr %400, ptr %402, align 8, !tbaa !11
  %403 = load ptr, ptr %10, align 8, !tbaa !13
  %404 = ptrtoint ptr %403 to i64
  %405 = or i64 %355, %404
  %406 = inttoptr i64 %405 to ptr
  %407 = load ptr, ptr %9, align 8, !tbaa !13
  %408 = getelementptr inbounds ptr, ptr %407, i64 %290
  store ptr %406, ptr %408, align 8, !tbaa !11
  %409 = load ptr, ptr %9, align 8, !tbaa !13
  %410 = ptrtoint ptr %409 to i64
  %411 = or i64 %410, %290
  %412 = inttoptr i64 %411 to ptr
  %413 = load ptr, ptr %10, align 8, !tbaa !13
  %414 = getelementptr inbounds ptr, ptr %413, i64 %355
  store ptr %412, ptr %414, align 8, !tbaa !11
  %415 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %290
  %416 = load i32, ptr %415, align 4, !tbaa !16
  store i32 %416, ptr %285, align 8, !tbaa !15
  %417 = load ptr, ptr %11, align 8, !tbaa !13
  %418 = ptrtoint ptr %417 to i64
  %419 = or i64 %360, %418
  %420 = inttoptr i64 %419 to ptr
  %421 = load ptr, ptr %9, align 8, !tbaa !13
  %422 = sext i32 %416 to i64
  %423 = getelementptr inbounds ptr, ptr %421, i64 %422
  store ptr %420, ptr %423, align 8, !tbaa !11
  %424 = load ptr, ptr %9, align 8, !tbaa !13
  %425 = ptrtoint ptr %424 to i64
  %426 = or i64 %425, %422
  %427 = inttoptr i64 %426 to ptr
  %428 = load ptr, ptr %11, align 8, !tbaa !13
  %429 = getelementptr inbounds ptr, ptr %428, i64 %360
  store ptr %427, ptr %429, align 8, !tbaa !11
  %430 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %355
  %431 = load i32, ptr %430, align 4, !tbaa !16
  store i32 %431, ptr %377, align 8, !tbaa !15
  %432 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %360
  %433 = load i32, ptr %432, align 4, !tbaa !16
  store i32 %433, ptr %295, align 8, !tbaa !15
  %434 = load ptr, ptr %11, align 8, !tbaa !13
  %435 = ptrtoint ptr %434 to i64
  %436 = sext i32 %433 to i64
  %437 = or i64 %435, %436
  %438 = inttoptr i64 %437 to ptr
  %439 = load ptr, ptr %10, align 8, !tbaa !13
  %440 = sext i32 %431 to i64
  %441 = getelementptr inbounds ptr, ptr %439, i64 %440
  store ptr %438, ptr %441, align 8, !tbaa !11
  %442 = load ptr, ptr %10, align 8, !tbaa !13
  %443 = ptrtoint ptr %442 to i64
  %444 = or i64 %443, %440
  %445 = inttoptr i64 %444 to ptr
  %446 = load ptr, ptr %11, align 8, !tbaa !13
  %447 = getelementptr inbounds ptr, ptr %446, i64 %436
  store ptr %445, ptr %447, align 8, !tbaa !11
  %448 = load ptr, ptr %9, align 8, !tbaa !13
  store ptr %448, ptr %5, align 8, !tbaa !13
  %449 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %416, ptr %449, align 8, !tbaa !15
  br i1 %303, label %450, label %452

450:                                              ; preds = %352
  %451 = load ptr, ptr %10, align 8, !tbaa !13
  store ptr %451, ptr %6, align 8, !tbaa !13
  br label %455

452:                                              ; preds = %352
  store ptr %448, ptr %6, align 8, !tbaa !13
  %453 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %422
  %454 = load i32, ptr %453, align 4, !tbaa !16
  br label %455

455:                                              ; preds = %450, %452, %139
  %.sink159 = phi i32 [ %431, %450 ], [ %454, %452 ], [ %249, %139 ]
  %456 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %.sink159, ptr %456, align 8, !tbaa !15
  %457 = load i32, ptr %14, align 4, !tbaa !5
  %458 = icmp sgt i32 %457, 2
  br i1 %458, label %459, label %475

459:                                              ; preds = %455
  %460 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  %461 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  %462 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %10)
  %463 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.973)
  call void @printtriangle(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %11)
  br label %475

464:                                              ; preds = %19
  %465 = ashr i32 %3, 1
  %466 = sub nsw i32 1, %4
  call void @divconqrecurse(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %465, i32 noundef %466, ptr noundef %5, ptr noundef nonnull %12)
  %467 = sext i32 %465 to i64
  %468 = getelementptr inbounds ptr, ptr %2, i64 %467
  %469 = sub nsw i32 %3, %465
  call void @divconqrecurse(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %468, i32 noundef %469, i32 noundef %466, ptr noundef nonnull %13, ptr noundef %6)
  %470 = load i32, ptr %14, align 4, !tbaa !5
  %471 = icmp sgt i32 %470, 1
  br i1 %471, label %472, label %474

472:                                              ; preds = %464
  %473 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.974, i32 noundef %465, i32 noundef %469)
  br label %474

474:                                              ; preds = %472, %464
  call void @mergehulls(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %5, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %6, i32 noundef %4)
  br label %475

475:                                              ; preds = %455, %459, %474, %117
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #3
  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
}

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 116}
!6 = !{!"behavior", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !10, i64 136, !10, i64 144, !10, i64 152, !10, 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}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"otri", !12, i64 0, !7, i64 8}
!15 = !{!14, !7, i64 8}
!16 = !{!7, !7, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass