; LLVM IR from MIT-SPARK/Kimera-VIO :: third_party/triangle/src (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, float, float, float, float }

@plus1mod3 = external dso_local global [3 x i32], align 4
@minus1mod3 = external dso_local global [3 x i32], align 4
@.str.62 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.64 = 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

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

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

; 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 float @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 float, align 4
  %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 4, 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.62, 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.63)
  %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.63)
  %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 %1138

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

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 float @counterclockwise(ptr noundef %280, ptr noundef %281, ptr noundef %284, ptr noundef %287, ptr noundef %290)
  store float %291, ptr %21, align 4, !tbaa !17
  %292 = load float, ptr %21, align 4, !tbaa !17
  %293 = fpext float %292 to double
  %294 = fcmp oeq double %293, 0.000000e+00
  br i1 %294, label %295, label %632

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

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

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

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

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

1055:                                             ; preds = %827
  %1056 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1057 = load ptr, ptr %1056, align 8, !tbaa !14
  %1058 = load ptr, ptr %14, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.otri, ptr %1058, i32 0, i32 0
  store ptr %1057, ptr %1059, align 8, !tbaa !14
  %1060 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1061 = load i32, ptr %1060, align 8, !tbaa !16
  %1062 = load ptr, ptr %14, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.otri, ptr %1062, i32 0, i32 1
  store i32 %1061, ptr %1063, align 8, !tbaa !16
  br label %1078

1064:                                             ; preds = %827
  %1065 = load ptr, ptr %13, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.otri, ptr %1065, i32 0, i32 0
  %1067 = load ptr, ptr %1066, align 8, !tbaa !14
  %1068 = load ptr, ptr %14, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.otri, ptr %1068, i32 0, i32 0
  store ptr %1067, ptr %1069, align 8, !tbaa !14
  %1070 = load ptr, ptr %13, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.otri, ptr %1070, i32 0, i32 1
  %1072 = load i32, ptr %1071, align 8, !tbaa !16
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1073
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = load ptr, ptr %14, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.otri, ptr %1076, i32 0, i32 1
  store i32 %1075, ptr %1077, align 8, !tbaa !16
  br label %1078

1078:                                             ; preds = %1064, %1055
  br label %1079

1079:                                             ; preds = %1078, %295
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.behavior, ptr %1080, i32 0, i32 29
  %1082 = load i32, ptr %1081, align 4, !tbaa !11
  %1083 = icmp sgt i32 %1082, 2
  br i1 %1083, label %1084, label %1097

1084:                                             ; preds = %1079
  %1085 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  %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 %15)
  %1088 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  %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 %16)
  %1091 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  %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 %17)
  %1094 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  %1095 = load ptr, ptr %8, align 8, !tbaa !5
  %1096 = load ptr, ptr %9, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1095, ptr noundef %1096, ptr noundef %18)
  br label %1097

1097:                                             ; preds = %1084, %1079
  store i32 1, ptr %23, align 4
  br label %1138

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

1124:                                             ; preds = %1098
  %1125 = load i32, ptr %22, align 4, !tbaa !9
  %1126 = load i32, ptr %11, align 4, !tbaa !9
  %1127 = load i32, ptr %22, align 4, !tbaa !9
  %1128 = sub nsw i32 %1126, %1127
  %1129 = call i32 (ptr, ...) @printf(ptr noundef @.str.64, i32 noundef %1125, i32 noundef %1128)
  br label %1130

1130:                                             ; preds = %1124, %1098
  %1131 = load ptr, ptr %8, align 8, !tbaa !5
  %1132 = load ptr, ptr %9, align 8, !tbaa !5
  %1133 = load ptr, ptr %13, align 8, !tbaa !5
  %1134 = load ptr, ptr %14, align 8, !tbaa !5
  %1135 = load i32, ptr %12, align 4, !tbaa !9
  call void @mergehulls(ptr noundef %1131, ptr noundef %1132, ptr noundef %1133, ptr noundef %19, ptr noundef %20, ptr noundef %1134, i32 noundef %1135)
  br label %1136

1136:                                             ; preds = %1130
  br label %1137

1137:                                             ; preds = %1136
  store i32 0, ptr %23, align 4
  br label %1138

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

1140:                                             ; preds = %1138, %1138
  ret void

1141:                                             ; preds = %1138
  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 140, !13, i64 144, !13, i64 148}
!13 = !{!"float", !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.62 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.64 = 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: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

; 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 float @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.62, 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.63)
  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.63)
  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 float @counterclockwise(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %122, ptr noundef %124, ptr noundef %126)
  %128 = fcmp oeq float %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 float %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.63)
  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.63)
  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.63)
  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.63)
  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.64, 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 140, !10, i64 144, !10, i64 148}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"float", !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