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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.otri = type { ptr, i32 }
%struct.osub = type { ptr, i32 }
%struct.behavior = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8], [2048 x i8] }
%struct.mesh = type { %struct.memorypool, %struct.memorypool, %struct.memorypool, %struct.memorypool, %struct.memorypool, %struct.memorypool, %struct.memorypool, %struct.memorypool, [4096 x ptr], [4096 x ptr], [4096 x i32], i32, ptr, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.otri }
%struct.memorypool = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i64, i64, i32, i32 }
%struct.badsubseg = type { ptr, ptr, ptr }
%struct.flipstacker = type { ptr, ptr }

@plus1mod3 = external dso_local global [3 x i32], align 4
@minus1mod3 = external dso_local global [3 x i32], align 4
@.str.945 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.954 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.955 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.957 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.958 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.959 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.960 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.961 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.962 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.963 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.964 = external hidden unnamed_addr constant [18 x i8], align 1

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @poolalloc(ptr noundef) #2

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @insertvertex(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6) #2 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.otri, align 8
  %17 = alloca %struct.otri, align 8
  %18 = alloca %struct.otri, align 8
  %19 = alloca %struct.otri, align 8
  %20 = alloca %struct.otri, align 8
  %21 = alloca %struct.otri, align 8
  %22 = alloca %struct.otri, align 8
  %23 = alloca %struct.otri, align 8
  %24 = alloca %struct.otri, align 8
  %25 = alloca %struct.otri, align 8
  %26 = alloca %struct.otri, align 8
  %27 = alloca %struct.otri, align 8
  %28 = alloca %struct.otri, align 8
  %29 = alloca %struct.otri, align 8
  %30 = alloca %struct.osub, align 8
  %31 = alloca %struct.osub, align 8
  %32 = alloca %struct.osub, align 8
  %33 = alloca %struct.osub, align 8
  %34 = alloca %struct.osub, align 8
  %35 = alloca %struct.osub, align 8
  %36 = alloca %struct.osub, align 8
  %37 = alloca %struct.osub, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store i32 %5, ptr %14, align 4, !tbaa !9
  store i32 %6, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.behavior, ptr %59, i32 0, i32 29
  %61 = load i32, ptr %60, align 4, !tbaa !11
  %62 = icmp sgt i32 %61, 1
  br i1 %62, label %63, label %71

63:                                               ; preds = %7
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = getelementptr inbounds double, ptr %64, i64 0
  %66 = load double, ptr %65, align 8, !tbaa !14
  %67 = load ptr, ptr %11, align 8, !tbaa !5
  %68 = getelementptr inbounds double, ptr %67, i64 1
  %69 = load double, ptr %68, align 8, !tbaa !14
  %70 = call i32 (ptr, ...) @printf(ptr noundef @.str.957, double noundef %66, double noundef %69)
  br label %71

71:                                               ; preds = %63, %7
  %72 = load ptr, ptr %13, align 8, !tbaa !5
  %73 = icmp eq ptr %72, null
  br i1 %73, label %74, label %126

74:                                               ; preds = %71
  %75 = load ptr, ptr %12, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.otri, ptr %75, i32 0, i32 0
  %77 = load ptr, ptr %76, align 8, !tbaa !15
  %78 = load ptr, ptr %9, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.mesh, ptr %78, i32 0, i32 48
  %80 = load ptr, ptr %79, align 8, !tbaa !17
  %81 = icmp eq ptr %77, %80
  br i1 %81, label %82, label %112

82:                                               ; preds = %74
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.mesh, ptr %83, i32 0, i32 48
  %85 = load ptr, ptr %84, align 8, !tbaa !17
  %86 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %85, ptr %86, align 8, !tbaa !15
  %87 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 0, ptr %87, align 8, !tbaa !21
  %88 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %89 = load ptr, ptr %88, align 8, !tbaa !15
  %90 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %91 = load i32, ptr %90, align 8, !tbaa !21
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds ptr, ptr %89, i64 %92
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  store ptr %94, ptr %56, align 8, !tbaa !5
  %95 = load ptr, ptr %56, align 8, !tbaa !5
  %96 = ptrtoint ptr %95 to i64
  %97 = and i64 %96, 3
  %98 = trunc i64 %97 to i32
  %99 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %98, ptr %99, align 8, !tbaa !21
  %100 = load ptr, ptr %56, align 8, !tbaa !5
  %101 = ptrtoint ptr %100 to i64
  %102 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %103 = load i32, ptr %102, align 8, !tbaa !21
  %104 = sext i32 %103 to i64
  %105 = xor i64 %101, %104
  %106 = inttoptr i64 %105 to ptr
  %107 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %106, ptr %107, align 8, !tbaa !15
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  %111 = call i32 @locate(ptr noundef %108, ptr noundef %109, ptr noundef %110, ptr noundef %16)
  store i32 %111, ptr %51, align 4, !tbaa !9
  br label %125

112:                                              ; preds = %74
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.otri, ptr %113, i32 0, i32 0
  %115 = load ptr, ptr %114, align 8, !tbaa !15
  %116 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %115, ptr %116, align 8, !tbaa !15
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.otri, ptr %117, i32 0, i32 1
  %119 = load i32, ptr %118, align 8, !tbaa !21
  %120 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %119, ptr %120, align 8, !tbaa !21
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = call i32 @preciselocate(ptr noundef %121, ptr noundef %122, ptr noundef %123, ptr noundef %16, i32 noundef 1)
  store i32 %124, ptr %51, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %112, %82
  br label %135

126:                                              ; preds = %71
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.otri, ptr %127, i32 0, i32 0
  %129 = load ptr, ptr %128, align 8, !tbaa !15
  %130 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %129, ptr %130, align 8, !tbaa !15
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.otri, ptr %131, i32 0, i32 1
  %133 = load i32, ptr %132, align 8, !tbaa !21
  %134 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %133, ptr %134, align 8, !tbaa !21
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %126, %125
  %136 = load i32, ptr %51, align 4, !tbaa !9
  %137 = icmp eq i32 %136, 2
  br i1 %137, label %138, label %157

138:                                              ; preds = %135
  %139 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.otri, ptr %141, i32 0, i32 0
  store ptr %140, ptr %142, align 8, !tbaa !15
  %143 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %144 = load i32, ptr %143, align 8, !tbaa !21
  %145 = load ptr, ptr %12, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.otri, ptr %145, i32 0, i32 1
  store i32 %144, ptr %146, align 8, !tbaa !21
  %147 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %148 = load ptr, ptr %147, align 8, !tbaa !15
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.mesh, ptr %149, i32 0, i32 52
  %151 = getelementptr inbounds %struct.otri, ptr %150, i32 0, i32 0
  store ptr %148, ptr %151, align 8, !tbaa !22
  %152 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %153 = load i32, ptr %152, align 8, !tbaa !21
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.mesh, ptr %154, i32 0, i32 52
  %156 = getelementptr inbounds %struct.otri, ptr %155, i32 0, i32 1
  store i32 %153, ptr %156, align 8, !tbaa !23
  store i32 3, ptr %8, align 4
  store i32 1, ptr %58, align 4
  br label %2807

157:                                              ; preds = %135
  %158 = load i32, ptr %51, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %163, label %160

160:                                              ; preds = %157
  %161 = load i32, ptr %51, align 4, !tbaa !9
  %162 = icmp eq i32 %161, 3
  br i1 %162, label %163, label %1208

163:                                              ; preds = %160, %157
  %164 = load ptr, ptr %9, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.mesh, ptr %164, i32 0, i32 35
  %166 = load i32, ptr %165, align 8, !tbaa !24
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %325

168:                                              ; preds = %163
  %169 = load ptr, ptr %13, align 8, !tbaa !5
  %170 = icmp eq ptr %169, null
  br i1 %170, label %171, label %325

171:                                              ; preds = %168
  %172 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8, !tbaa !15
  %174 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %175 = load i32, ptr %174, align 8, !tbaa !21
  %176 = add nsw i32 6, %175
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds ptr, ptr %173, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !5
  store ptr %179, ptr %57, align 8, !tbaa !5
  %180 = load ptr, ptr %57, align 8, !tbaa !5
  %181 = ptrtoint ptr %180 to i64
  %182 = and i64 %181, 1
  %183 = trunc i64 %182 to i32
  %184 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 1
  store i32 %183, ptr %184, align 8, !tbaa !25
  %185 = load ptr, ptr %57, align 8, !tbaa !5
  %186 = ptrtoint ptr %185 to i64
  %187 = and i64 %186, -4
  %188 = inttoptr i64 %187 to ptr
  %189 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 0
  store ptr %188, ptr %189, align 8, !tbaa !27
  %190 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 0
  %191 = load ptr, ptr %190, align 8, !tbaa !27
  %192 = load ptr, ptr %9, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.mesh, ptr %192, i32 0, i32 50
  %194 = load ptr, ptr %193, align 8, !tbaa !28
  %195 = icmp ne ptr %191, %194
  br i1 %195, label %196, label %324

196:                                              ; preds = %171
  %197 = load i32, ptr %14, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %305

199:                                              ; preds = %196
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.behavior, ptr %200, i32 0, i32 32
  %202 = load i32, ptr %201, align 8, !tbaa !29
  %203 = icmp ne i32 %202, 2
  %204 = zext i1 %203 to i32
  store i32 %204, ptr %54, align 4, !tbaa !9
  %205 = load i32, ptr %54, align 4, !tbaa !9
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %207, label %240

207:                                              ; preds = %199
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.behavior, ptr %208, i32 0, i32 32
  %210 = load i32, ptr %209, align 8, !tbaa !29
  %211 = icmp eq i32 %210, 1
  br i1 %211, label %212, label %240

212:                                              ; preds = %207
  %213 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %214 = load ptr, ptr %213, align 8, !tbaa !15
  %215 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %216 = load i32, ptr %215, align 8, !tbaa !21
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds ptr, ptr %214, i64 %217
  %219 = load ptr, ptr %218, align 8, !tbaa !5
  store ptr %219, ptr %56, align 8, !tbaa !5
  %220 = load ptr, ptr %56, align 8, !tbaa !5
  %221 = ptrtoint ptr %220 to i64
  %222 = and i64 %221, 3
  %223 = trunc i64 %222 to i32
  %224 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 1
  store i32 %223, ptr %224, align 8, !tbaa !21
  %225 = load ptr, ptr %56, align 8, !tbaa !5
  %226 = ptrtoint ptr %225 to i64
  %227 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 1
  %228 = load i32, ptr %227, align 8, !tbaa !21
  %229 = sext i32 %228 to i64
  %230 = xor i64 %226, %229
  %231 = inttoptr i64 %230 to ptr
  %232 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 0
  store ptr %231, ptr %232, align 8, !tbaa !15
  %233 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 0
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  %235 = load ptr, ptr %9, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.mesh, ptr %235, i32 0, i32 48
  %237 = load ptr, ptr %236, align 8, !tbaa !17
  %238 = icmp ne ptr %234, %237
  %239 = zext i1 %238 to i32
  store i32 %239, ptr %54, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %212, %207, %199
  %241 = load i32, ptr %54, align 4, !tbaa !9
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %243, label %304

243:                                              ; preds = %240
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.mesh, ptr %244, i32 0, i32 4
  %246 = call ptr @poolalloc(ptr noundef %245)
  store ptr %246, ptr %38, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 0
  %248 = load ptr, ptr %247, align 8, !tbaa !27
  %249 = ptrtoint ptr %248 to i64
  %250 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 1
  %251 = load i32, ptr %250, align 8, !tbaa !25
  %252 = sext i32 %251 to i64
  %253 = or i64 %249, %252
  %254 = inttoptr i64 %253 to ptr
  %255 = load ptr, ptr %38, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.badsubseg, ptr %255, i32 0, i32 0
  store ptr %254, ptr %256, align 8, !tbaa !30
  %257 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8, !tbaa !27
  %259 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 1
  %260 = load i32, ptr %259, align 8, !tbaa !25
  %261 = add nsw i32 2, %260
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds ptr, ptr %258, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = load ptr, ptr %38, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.badsubseg, ptr %265, i32 0, i32 1
  store ptr %264, ptr %266, align 8, !tbaa !32
  %267 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 0
  %268 = load ptr, ptr %267, align 8, !tbaa !27
  %269 = getelementptr inbounds %struct.osub, ptr %34, i32 0, i32 1
  %270 = load i32, ptr %269, align 8, !tbaa !25
  %271 = sub nsw i32 3, %270
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds ptr, ptr %268, i64 %272
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  %275 = load ptr, ptr %38, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.badsubseg, ptr %275, i32 0, i32 2
  store ptr %274, ptr %276, align 8, !tbaa !33
  %277 = load ptr, ptr %10, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.behavior, ptr %277, i32 0, i32 29
  %279 = load i32, ptr %278, align 4, !tbaa !11
  %280 = icmp sgt i32 %279, 2
  br i1 %280, label %281, label %303

281:                                              ; preds = %243
  %282 = load ptr, ptr %38, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.badsubseg, ptr %282, i32 0, i32 1
  %284 = load ptr, ptr %283, align 8, !tbaa !32
  %285 = getelementptr inbounds double, ptr %284, i64 0
  %286 = load double, ptr %285, align 8, !tbaa !14
  %287 = load ptr, ptr %38, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.badsubseg, ptr %287, i32 0, i32 1
  %289 = load ptr, ptr %288, align 8, !tbaa !32
  %290 = getelementptr inbounds double, ptr %289, i64 1
  %291 = load double, ptr %290, align 8, !tbaa !14
  %292 = load ptr, ptr %38, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.badsubseg, ptr %292, i32 0, i32 2
  %294 = load ptr, ptr %293, align 8, !tbaa !33
  %295 = getelementptr inbounds double, ptr %294, i64 0
  %296 = load double, ptr %295, align 8, !tbaa !14
  %297 = load ptr, ptr %38, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.badsubseg, ptr %297, i32 0, i32 2
  %299 = load ptr, ptr %298, align 8, !tbaa !33
  %300 = getelementptr inbounds double, ptr %299, i64 1
  %301 = load double, ptr %300, align 8, !tbaa !14
  %302 = call i32 (ptr, ...) @printf(ptr noundef @.str.945, double noundef %286, double noundef %291, double noundef %296, double noundef %301)
  br label %303

303:                                              ; preds = %281, %243
  br label %304

304:                                              ; preds = %303, %240
  br label %305

305:                                              ; preds = %304, %196
  %306 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %307 = load ptr, ptr %306, align 8, !tbaa !15
  %308 = load ptr, ptr %12, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.otri, ptr %308, i32 0, i32 0
  store ptr %307, ptr %309, align 8, !tbaa !15
  %310 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %311 = load i32, ptr %310, align 8, !tbaa !21
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.otri, ptr %312, i32 0, i32 1
  store i32 %311, ptr %313, align 8, !tbaa !21
  %314 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %315 = load ptr, ptr %314, align 8, !tbaa !15
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.mesh, ptr %316, i32 0, i32 52
  %318 = getelementptr inbounds %struct.otri, ptr %317, i32 0, i32 0
  store ptr %315, ptr %318, align 8, !tbaa !22
  %319 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %320 = load i32, ptr %319, align 8, !tbaa !21
  %321 = load ptr, ptr %9, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.mesh, ptr %321, i32 0, i32 52
  %323 = getelementptr inbounds %struct.otri, ptr %322, i32 0, i32 1
  store i32 %320, ptr %323, align 8, !tbaa !23
  store i32 2, ptr %8, align 4
  store i32 1, ptr %58, align 4
  br label %2807

324:                                              ; preds = %171
  br label %325

325:                                              ; preds = %324, %168, %163
  %326 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %327 = load ptr, ptr %326, align 8, !tbaa !15
  %328 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  store ptr %327, ptr %328, align 8, !tbaa !15
  %329 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %330 = load i32, ptr %329, align 8, !tbaa !21
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  store i32 %333, ptr %334, align 8, !tbaa !21
  %335 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8, !tbaa !15
  %337 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %338 = load i32, ptr %337, align 8, !tbaa !21
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %336, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  store ptr %341, ptr %56, align 8, !tbaa !5
  %342 = load ptr, ptr %56, align 8, !tbaa !5
  %343 = ptrtoint ptr %342 to i64
  %344 = and i64 %343, 3
  %345 = trunc i64 %344 to i32
  %346 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  store i32 %345, ptr %346, align 8, !tbaa !21
  %347 = load ptr, ptr %56, align 8, !tbaa !5
  %348 = ptrtoint ptr %347 to i64
  %349 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %350 = load i32, ptr %349, align 8, !tbaa !21
  %351 = sext i32 %350 to i64
  %352 = xor i64 %348, %351
  %353 = inttoptr i64 %352 to ptr
  %354 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  store ptr %353, ptr %354, align 8, !tbaa !15
  %355 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !15
  %357 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %358 = load i32, ptr %357, align 8, !tbaa !21
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds ptr, ptr %356, i64 %359
  %361 = load ptr, ptr %360, align 8, !tbaa !5
  store ptr %361, ptr %56, align 8, !tbaa !5
  %362 = load ptr, ptr %56, align 8, !tbaa !5
  %363 = ptrtoint ptr %362 to i64
  %364 = and i64 %363, 3
  %365 = trunc i64 %364 to i32
  %366 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  store i32 %365, ptr %366, align 8, !tbaa !21
  %367 = load ptr, ptr %56, align 8, !tbaa !5
  %368 = ptrtoint ptr %367 to i64
  %369 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %370 = load i32, ptr %369, align 8, !tbaa !21
  %371 = sext i32 %370 to i64
  %372 = xor i64 %368, %371
  %373 = inttoptr i64 %372 to ptr
  %374 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  store ptr %373, ptr %374, align 8, !tbaa !15
  %375 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %376 = load ptr, ptr %375, align 8, !tbaa !15
  %377 = load ptr, ptr %9, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.mesh, ptr %377, i32 0, i32 48
  %379 = load ptr, ptr %378, align 8, !tbaa !17
  %380 = icmp ne ptr %376, %379
  %381 = zext i1 %380 to i32
  store i32 %381, ptr %53, align 4, !tbaa !9
  %382 = load i32, ptr %53, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %413

384:                                              ; preds = %325
  %385 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %386 = load i32, ptr %385, align 8, !tbaa !21
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  store i32 %389, ptr %390, align 8, !tbaa !21
  %391 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %392 = load ptr, ptr %391, align 8, !tbaa !15
  %393 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %394 = load i32, ptr %393, align 8, !tbaa !21
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds ptr, ptr %392, i64 %395
  %397 = load ptr, ptr %396, align 8, !tbaa !5
  store ptr %397, ptr %56, align 8, !tbaa !5
  %398 = load ptr, ptr %56, align 8, !tbaa !5
  %399 = ptrtoint ptr %398 to i64
  %400 = and i64 %399, 3
  %401 = trunc i64 %400 to i32
  %402 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  store i32 %401, ptr %402, align 8, !tbaa !21
  %403 = load ptr, ptr %56, align 8, !tbaa !5
  %404 = ptrtoint ptr %403 to i64
  %405 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %406 = load i32, ptr %405, align 8, !tbaa !21
  %407 = sext i32 %406 to i64
  %408 = xor i64 %404, %407
  %409 = inttoptr i64 %408 to ptr
  %410 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  store ptr %409, ptr %410, align 8, !tbaa !15
  %411 = load ptr, ptr %9, align 8, !tbaa !5
  %412 = load ptr, ptr %10, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %411, ptr noundef %412, ptr noundef %24)
  br label %418

413:                                              ; preds = %325
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.mesh, ptr %414, i32 0, i32 28
  %416 = load i64, ptr %415, align 8, !tbaa !34
  %417 = add nsw i64 %416, 1
  store i64 %417, ptr %415, align 8, !tbaa !34
  br label %418

418:                                              ; preds = %413, %384
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = load ptr, ptr %10, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %419, ptr noundef %420, ptr noundef %23)
  %421 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8, !tbaa !15
  %423 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %424 = load i32, ptr %423, align 8, !tbaa !21
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = add nsw i32 %427, 3
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds ptr, ptr %422, i64 %429
  %431 = load ptr, ptr %430, align 8, !tbaa !5
  store ptr %431, ptr %42, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8, !tbaa !15
  %434 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %435 = load i32, ptr %434, align 8, !tbaa !21
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = add nsw i32 %438, 3
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds ptr, ptr %433, i64 %440
  %442 = load ptr, ptr %441, align 8, !tbaa !5
  store ptr %442, ptr %41, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %444 = load ptr, ptr %443, align 8, !tbaa !15
  %445 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %446 = load i32, ptr %445, align 8, !tbaa !21
  %447 = add nsw i32 %446, 3
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds ptr, ptr %444, i64 %448
  %450 = load ptr, ptr %449, align 8, !tbaa !5
  store ptr %450, ptr %43, align 8, !tbaa !5
  %451 = load ptr, ptr %43, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %453 = load ptr, ptr %452, align 8, !tbaa !15
  %454 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %455 = load i32, ptr %454, align 8, !tbaa !21
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %456
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = add nsw i32 %458, 3
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds ptr, ptr %453, i64 %460
  store ptr %451, ptr %461, align 8, !tbaa !5
  %462 = load ptr, ptr %42, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !15
  %465 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %466 = load i32, ptr %465, align 8, !tbaa !21
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = add nsw i32 %469, 3
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds ptr, ptr %464, i64 %471
  store ptr %462, ptr %472, align 8, !tbaa !5
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %475 = load ptr, ptr %474, align 8, !tbaa !15
  %476 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %477 = load i32, ptr %476, align 8, !tbaa !21
  %478 = add nsw i32 %477, 3
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds ptr, ptr %475, i64 %479
  store ptr %473, ptr %480, align 8, !tbaa !5
  %481 = load ptr, ptr %11, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %483 = load ptr, ptr %482, align 8, !tbaa !15
  %484 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %485 = load i32, ptr %484, align 8, !tbaa !21
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = add nsw i32 %488, 3
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds ptr, ptr %483, i64 %490
  store ptr %481, ptr %491, align 8, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %518, %418
  %493 = load i32, ptr %55, align 4, !tbaa !9
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.mesh, ptr %494, i32 0, i32 27
  %496 = load i32, ptr %495, align 8, !tbaa !35
  %497 = icmp slt i32 %493, %496
  br i1 %497, label %498, label %521

498:                                              ; preds = %492
  %499 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !15
  %501 = load ptr, ptr %9, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.mesh, ptr %501, i32 0, i32 33
  %503 = load i32, ptr %502, align 8, !tbaa !36
  %504 = load i32, ptr %55, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %500, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !14
  %509 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %510 = load ptr, ptr %509, align 8, !tbaa !15
  %511 = load ptr, ptr %9, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.mesh, ptr %511, i32 0, i32 33
  %513 = load i32, ptr %512, align 8, !tbaa !36
  %514 = load i32, ptr %55, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %510, i64 %516
  store double %508, ptr %517, align 8, !tbaa !14
  br label %518

518:                                              ; preds = %498
  %519 = load i32, ptr %55, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %55, align 4, !tbaa !9
  br label %492, !llvm.loop !37

521:                                              ; preds = %492
  %522 = load ptr, ptr %10, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.behavior, ptr %522, i32 0, i32 3
  %524 = load i32, ptr %523, align 4, !tbaa !39
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %542

526:                                              ; preds = %521
  %527 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !15
  %529 = load ptr, ptr %9, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.mesh, ptr %529, i32 0, i32 34
  %531 = load i32, ptr %530, align 4, !tbaa !40
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %528, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !14
  %535 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %536 = load ptr, ptr %535, align 8, !tbaa !15
  %537 = load ptr, ptr %9, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.mesh, ptr %537, i32 0, i32 34
  %539 = load i32, ptr %538, align 4, !tbaa !40
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %536, i64 %540
  store double %534, ptr %541, align 8, !tbaa !14
  br label %542

542:                                              ; preds = %526, %521
  %543 = load i32, ptr %53, align 4, !tbaa !9
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %545, label %649

545:                                              ; preds = %542
  %546 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8, !tbaa !15
  %548 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %549 = load i32, ptr %548, align 8, !tbaa !21
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %550
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = add nsw i32 %552, 3
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds ptr, ptr %547, i64 %554
  %556 = load ptr, ptr %555, align 8, !tbaa !5
  store ptr %556, ptr %44, align 8, !tbaa !5
  %557 = load ptr, ptr %42, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %559 = load ptr, ptr %558, align 8, !tbaa !15
  %560 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %561 = load i32, ptr %560, align 8, !tbaa !21
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = add nsw i32 %564, 3
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds ptr, ptr %559, i64 %566
  store ptr %557, ptr %567, align 8, !tbaa !5
  %568 = load ptr, ptr %44, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %570 = load ptr, ptr %569, align 8, !tbaa !15
  %571 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %572 = load i32, ptr %571, align 8, !tbaa !21
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %573
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = add nsw i32 %575, 3
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds ptr, ptr %570, i64 %577
  store ptr %568, ptr %578, align 8, !tbaa !5
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %581 = load ptr, ptr %580, align 8, !tbaa !15
  %582 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %583 = load i32, ptr %582, align 8, !tbaa !21
  %584 = add nsw i32 %583, 3
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds ptr, ptr %581, i64 %585
  store ptr %579, ptr %586, align 8, !tbaa !5
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8, !tbaa !15
  %590 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %591 = load i32, ptr %590, align 8, !tbaa !21
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %592
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = add nsw i32 %594, 3
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds ptr, ptr %589, i64 %596
  store ptr %587, ptr %597, align 8, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %624, %545
  %599 = load i32, ptr %55, align 4, !tbaa !9
  %600 = load ptr, ptr %9, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.mesh, ptr %600, i32 0, i32 27
  %602 = load i32, ptr %601, align 8, !tbaa !35
  %603 = icmp slt i32 %599, %602
  br i1 %603, label %604, label %627

604:                                              ; preds = %598
  %605 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !15
  %607 = load ptr, ptr %9, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.mesh, ptr %607, i32 0, i32 33
  %609 = load i32, ptr %608, align 8, !tbaa !36
  %610 = load i32, ptr %55, align 4, !tbaa !9
  %611 = add nsw i32 %609, %610
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %606, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !14
  %615 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !15
  %617 = load ptr, ptr %9, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.mesh, ptr %617, i32 0, i32 33
  %619 = load i32, ptr %618, align 8, !tbaa !36
  %620 = load i32, ptr %55, align 4, !tbaa !9
  %621 = add nsw i32 %619, %620
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %616, i64 %622
  store double %614, ptr %623, align 8, !tbaa !14
  br label %624

624:                                              ; preds = %604
  %625 = load i32, ptr %55, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %55, align 4, !tbaa !9
  br label %598, !llvm.loop !41

627:                                              ; preds = %598
  %628 = load ptr, ptr %10, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.behavior, ptr %628, i32 0, i32 3
  %630 = load i32, ptr %629, align 4, !tbaa !39
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %648

632:                                              ; preds = %627
  %633 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %634 = load ptr, ptr %633, align 8, !tbaa !15
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.mesh, ptr %635, i32 0, i32 34
  %637 = load i32, ptr %636, align 4, !tbaa !40
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %634, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !14
  %641 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %642 = load ptr, ptr %641, align 8, !tbaa !15
  %643 = load ptr, ptr %9, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.mesh, ptr %643, i32 0, i32 34
  %645 = load i32, ptr %644, align 4, !tbaa !40
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %642, i64 %646
  store double %640, ptr %647, align 8, !tbaa !14
  br label %648

648:                                              ; preds = %632, %627
  br label %649

649:                                              ; preds = %648, %542
  %650 = load ptr, ptr %9, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.mesh, ptr %650, i32 0, i32 35
  %652 = load i32, ptr %651, align 8, !tbaa !24
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %791

654:                                              ; preds = %649
  %655 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %656 = load ptr, ptr %655, align 8, !tbaa !15
  %657 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %658 = load i32, ptr %657, align 8, !tbaa !21
  %659 = add nsw i32 6, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds ptr, ptr %656, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  store ptr %662, ptr %57, align 8, !tbaa !5
  %663 = load ptr, ptr %57, align 8, !tbaa !5
  %664 = ptrtoint ptr %663 to i64
  %665 = and i64 %664, 1
  %666 = trunc i64 %665 to i32
  %667 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  store i32 %666, ptr %667, align 8, !tbaa !25
  %668 = load ptr, ptr %57, align 8, !tbaa !5
  %669 = ptrtoint ptr %668 to i64
  %670 = and i64 %669, -4
  %671 = inttoptr i64 %670 to ptr
  %672 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  store ptr %671, ptr %672, align 8, !tbaa !27
  %673 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %674 = load ptr, ptr %673, align 8, !tbaa !27
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.mesh, ptr %675, i32 0, i32 50
  %677 = load ptr, ptr %676, align 8, !tbaa !28
  %678 = icmp ne ptr %674, %677
  br i1 %678, label %679, label %720

679:                                              ; preds = %654
  %680 = load ptr, ptr %9, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.mesh, ptr %680, i32 0, i32 50
  %682 = load ptr, ptr %681, align 8, !tbaa !28
  %683 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %684 = load ptr, ptr %683, align 8, !tbaa !15
  %685 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %686 = load i32, ptr %685, align 8, !tbaa !21
  %687 = add nsw i32 6, %686
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds ptr, ptr %684, i64 %688
  store ptr %682, ptr %689, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %691 = load ptr, ptr %690, align 8, !tbaa !27
  %692 = ptrtoint ptr %691 to i64
  %693 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %694 = load i32, ptr %693, align 8, !tbaa !25
  %695 = sext i32 %694 to i64
  %696 = or i64 %692, %695
  %697 = inttoptr i64 %696 to ptr
  %698 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %699 = load ptr, ptr %698, align 8, !tbaa !15
  %700 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %701 = load i32, ptr %700, align 8, !tbaa !21
  %702 = add nsw i32 6, %701
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds ptr, ptr %699, i64 %703
  store ptr %697, ptr %704, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %706 = load ptr, ptr %705, align 8, !tbaa !15
  %707 = ptrtoint ptr %706 to i64
  %708 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %709 = load i32, ptr %708, align 8, !tbaa !21
  %710 = sext i32 %709 to i64
  %711 = or i64 %707, %710
  %712 = inttoptr i64 %711 to ptr
  %713 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %714 = load ptr, ptr %713, align 8, !tbaa !27
  %715 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %716 = load i32, ptr %715, align 8, !tbaa !25
  %717 = add nsw i32 6, %716
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds ptr, ptr %714, i64 %718
  store ptr %712, ptr %719, align 8, !tbaa !5
  br label %720

720:                                              ; preds = %679, %654
  %721 = load i32, ptr %53, align 4, !tbaa !9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %790

723:                                              ; preds = %720
  %724 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %725 = load ptr, ptr %724, align 8, !tbaa !15
  %726 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %727 = load i32, ptr %726, align 8, !tbaa !21
  %728 = add nsw i32 6, %727
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds ptr, ptr %725, i64 %729
  %731 = load ptr, ptr %730, align 8, !tbaa !5
  store ptr %731, ptr %57, align 8, !tbaa !5
  %732 = load ptr, ptr %57, align 8, !tbaa !5
  %733 = ptrtoint ptr %732 to i64
  %734 = and i64 %733, 1
  %735 = trunc i64 %734 to i32
  %736 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  store i32 %735, ptr %736, align 8, !tbaa !25
  %737 = load ptr, ptr %57, align 8, !tbaa !5
  %738 = ptrtoint ptr %737 to i64
  %739 = and i64 %738, -4
  %740 = inttoptr i64 %739 to ptr
  %741 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  store ptr %740, ptr %741, align 8, !tbaa !27
  %742 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %743 = load ptr, ptr %742, align 8, !tbaa !27
  %744 = load ptr, ptr %9, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.mesh, ptr %744, i32 0, i32 50
  %746 = load ptr, ptr %745, align 8, !tbaa !28
  %747 = icmp ne ptr %743, %746
  br i1 %747, label %748, label %789

748:                                              ; preds = %723
  %749 = load ptr, ptr %9, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.mesh, ptr %749, i32 0, i32 50
  %751 = load ptr, ptr %750, align 8, !tbaa !28
  %752 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %753 = load ptr, ptr %752, align 8, !tbaa !15
  %754 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %755 = load i32, ptr %754, align 8, !tbaa !21
  %756 = add nsw i32 6, %755
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds ptr, ptr %753, i64 %757
  store ptr %751, ptr %758, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %760 = load ptr, ptr %759, align 8, !tbaa !27
  %761 = ptrtoint ptr %760 to i64
  %762 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  %763 = load i32, ptr %762, align 8, !tbaa !25
  %764 = sext i32 %763 to i64
  %765 = or i64 %761, %764
  %766 = inttoptr i64 %765 to ptr
  %767 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %768 = load ptr, ptr %767, align 8, !tbaa !15
  %769 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %770 = load i32, ptr %769, align 8, !tbaa !21
  %771 = add nsw i32 6, %770
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds ptr, ptr %768, i64 %772
  store ptr %766, ptr %773, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %775 = load ptr, ptr %774, align 8, !tbaa !15
  %776 = ptrtoint ptr %775 to i64
  %777 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %778 = load i32, ptr %777, align 8, !tbaa !21
  %779 = sext i32 %778 to i64
  %780 = or i64 %776, %779
  %781 = inttoptr i64 %780 to ptr
  %782 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %783 = load ptr, ptr %782, align 8, !tbaa !27
  %784 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  %785 = load i32, ptr %784, align 8, !tbaa !25
  %786 = add nsw i32 6, %785
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds ptr, ptr %783, i64 %787
  store ptr %781, ptr %788, align 8, !tbaa !5
  br label %789

789:                                              ; preds = %748, %723
  br label %790

790:                                              ; preds = %789, %720
  br label %791

791:                                              ; preds = %790, %649
  %792 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %793 = load ptr, ptr %792, align 8, !tbaa !15
  %794 = ptrtoint ptr %793 to i64
  %795 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %796 = load i32, ptr %795, align 8, !tbaa !21
  %797 = sext i32 %796 to i64
  %798 = or i64 %794, %797
  %799 = inttoptr i64 %798 to ptr
  %800 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %801 = load ptr, ptr %800, align 8, !tbaa !15
  %802 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %803 = load i32, ptr %802, align 8, !tbaa !21
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds ptr, ptr %801, i64 %804
  store ptr %799, ptr %805, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %807 = load ptr, ptr %806, align 8, !tbaa !15
  %808 = ptrtoint ptr %807 to i64
  %809 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %810 = load i32, ptr %809, align 8, !tbaa !21
  %811 = sext i32 %810 to i64
  %812 = or i64 %808, %811
  %813 = inttoptr i64 %812 to ptr
  %814 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %815 = load ptr, ptr %814, align 8, !tbaa !15
  %816 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %817 = load i32, ptr %816, align 8, !tbaa !21
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds ptr, ptr %815, i64 %818
  store ptr %813, ptr %819, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %821 = load i32, ptr %820, align 8, !tbaa !21
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %822
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  store i32 %824, ptr %825, align 8, !tbaa !21
  %826 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %827 = load ptr, ptr %826, align 8, !tbaa !15
  %828 = ptrtoint ptr %827 to i64
  %829 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %830 = load i32, ptr %829, align 8, !tbaa !21
  %831 = sext i32 %830 to i64
  %832 = or i64 %828, %831
  %833 = inttoptr i64 %832 to ptr
  %834 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %835 = load ptr, ptr %834, align 8, !tbaa !15
  %836 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %837 = load i32, ptr %836, align 8, !tbaa !21
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds ptr, ptr %835, i64 %838
  store ptr %833, ptr %839, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %841 = load ptr, ptr %840, align 8, !tbaa !15
  %842 = ptrtoint ptr %841 to i64
  %843 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %844 = load i32, ptr %843, align 8, !tbaa !21
  %845 = sext i32 %844 to i64
  %846 = or i64 %842, %845
  %847 = inttoptr i64 %846 to ptr
  %848 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %849 = load ptr, ptr %848, align 8, !tbaa !15
  %850 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %851 = load i32, ptr %850, align 8, !tbaa !21
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds ptr, ptr %849, i64 %852
  store ptr %847, ptr %853, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %855 = load i32, ptr %854, align 8, !tbaa !21
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %856
  %858 = load i32, ptr %857, align 4, !tbaa !9
  %859 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  store i32 %858, ptr %859, align 8, !tbaa !21
  %860 = load i32, ptr %53, align 4, !tbaa !9
  %861 = icmp ne i32 %860, 0
  br i1 %861, label %862, label %959

862:                                              ; preds = %791
  %863 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  %864 = load ptr, ptr %863, align 8, !tbaa !15
  %865 = ptrtoint ptr %864 to i64
  %866 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %867 = load i32, ptr %866, align 8, !tbaa !21
  %868 = sext i32 %867 to i64
  %869 = or i64 %865, %868
  %870 = inttoptr i64 %869 to ptr
  %871 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %872 = load ptr, ptr %871, align 8, !tbaa !15
  %873 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %874 = load i32, ptr %873, align 8, !tbaa !21
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds ptr, ptr %872, i64 %875
  store ptr %870, ptr %876, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %878 = load ptr, ptr %877, align 8, !tbaa !15
  %879 = ptrtoint ptr %878 to i64
  %880 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %881 = load i32, ptr %880, align 8, !tbaa !21
  %882 = sext i32 %881 to i64
  %883 = or i64 %879, %882
  %884 = inttoptr i64 %883 to ptr
  %885 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  %886 = load ptr, ptr %885, align 8, !tbaa !15
  %887 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %888 = load i32, ptr %887, align 8, !tbaa !21
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds ptr, ptr %886, i64 %889
  store ptr %884, ptr %890, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %892 = load i32, ptr %891, align 8, !tbaa !21
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %893
  %895 = load i32, ptr %894, align 4, !tbaa !9
  %896 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  store i32 %895, ptr %896, align 8, !tbaa !21
  %897 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %898 = load ptr, ptr %897, align 8, !tbaa !15
  %899 = ptrtoint ptr %898 to i64
  %900 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %901 = load i32, ptr %900, align 8, !tbaa !21
  %902 = sext i32 %901 to i64
  %903 = or i64 %899, %902
  %904 = inttoptr i64 %903 to ptr
  %905 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %906 = load ptr, ptr %905, align 8, !tbaa !15
  %907 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %908 = load i32, ptr %907, align 8, !tbaa !21
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds ptr, ptr %906, i64 %909
  store ptr %904, ptr %910, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %912 = load ptr, ptr %911, align 8, !tbaa !15
  %913 = ptrtoint ptr %912 to i64
  %914 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %915 = load i32, ptr %914, align 8, !tbaa !21
  %916 = sext i32 %915 to i64
  %917 = or i64 %913, %916
  %918 = inttoptr i64 %917 to ptr
  %919 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %920 = load ptr, ptr %919, align 8, !tbaa !15
  %921 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %922 = load i32, ptr %921, align 8, !tbaa !21
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds ptr, ptr %920, i64 %923
  store ptr %918, ptr %924, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %926 = load i32, ptr %925, align 8, !tbaa !21
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %927
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  store i32 %929, ptr %930, align 8, !tbaa !21
  %931 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %932 = load ptr, ptr %931, align 8, !tbaa !15
  %933 = ptrtoint ptr %932 to i64
  %934 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %935 = load i32, ptr %934, align 8, !tbaa !21
  %936 = sext i32 %935 to i64
  %937 = or i64 %933, %936
  %938 = inttoptr i64 %937 to ptr
  %939 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %940 = load ptr, ptr %939, align 8, !tbaa !15
  %941 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %942 = load i32, ptr %941, align 8, !tbaa !21
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds ptr, ptr %940, i64 %943
  store ptr %938, ptr %944, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %946 = load ptr, ptr %945, align 8, !tbaa !15
  %947 = ptrtoint ptr %946 to i64
  %948 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 1
  %949 = load i32, ptr %948, align 8, !tbaa !21
  %950 = sext i32 %949 to i64
  %951 = or i64 %947, %950
  %952 = inttoptr i64 %951 to ptr
  %953 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8, !tbaa !15
  %955 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %956 = load i32, ptr %955, align 8, !tbaa !21
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds ptr, ptr %954, i64 %957
  store ptr %952, ptr %958, align 8, !tbaa !5
  br label %959

959:                                              ; preds = %862, %791
  %960 = load ptr, ptr %13, align 8, !tbaa !5
  %961 = icmp ne ptr %960, null
  br i1 %961, label %962, label %1150

962:                                              ; preds = %959
  %963 = load ptr, ptr %11, align 8, !tbaa !5
  %964 = load ptr, ptr %13, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.osub, ptr %964, i32 0, i32 0
  %966 = load ptr, ptr %965, align 8, !tbaa !27
  %967 = load ptr, ptr %13, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.osub, ptr %967, i32 0, i32 1
  %969 = load i32, ptr %968, align 8, !tbaa !25
  %970 = sub nsw i32 3, %969
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds ptr, ptr %966, i64 %971
  store ptr %963, ptr %972, align 8, !tbaa !5
  %973 = load ptr, ptr %13, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.osub, ptr %973, i32 0, i32 0
  %975 = load ptr, ptr %974, align 8, !tbaa !27
  %976 = load ptr, ptr %13, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.osub, ptr %976, i32 0, i32 1
  %978 = load i32, ptr %977, align 8, !tbaa !25
  %979 = add nsw i32 4, %978
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds ptr, ptr %975, i64 %980
  %982 = load ptr, ptr %981, align 8, !tbaa !5
  store ptr %982, ptr %46, align 8, !tbaa !5
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.osub, ptr %983, i32 0, i32 0
  %985 = load ptr, ptr %984, align 8, !tbaa !27
  %986 = load ptr, ptr %13, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.osub, ptr %986, i32 0, i32 1
  %988 = load i32, ptr %987, align 8, !tbaa !25
  %989 = sub nsw i32 5, %988
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds ptr, ptr %985, i64 %990
  %992 = load ptr, ptr %991, align 8, !tbaa !5
  store ptr %992, ptr %47, align 8, !tbaa !5
  %993 = load ptr, ptr %13, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.osub, ptr %993, i32 0, i32 1
  %995 = load i32, ptr %994, align 8, !tbaa !25
  %996 = sub nsw i32 1, %995
  %997 = load ptr, ptr %13, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.osub, ptr %997, i32 0, i32 1
  store i32 %996, ptr %998, align 8, !tbaa !25
  %999 = load ptr, ptr %13, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.osub, ptr %999, i32 0, i32 0
  %1001 = load ptr, ptr %1000, align 8, !tbaa !27
  %1002 = load ptr, ptr %13, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.osub, ptr %1002, i32 0, i32 1
  %1004 = load i32, ptr %1003, align 8, !tbaa !25
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds ptr, ptr %1001, i64 %1005
  %1007 = load ptr, ptr %1006, align 8, !tbaa !5
  store ptr %1007, ptr %57, align 8, !tbaa !5
  %1008 = load ptr, ptr %57, align 8, !tbaa !5
  %1009 = ptrtoint ptr %1008 to i64
  %1010 = and i64 %1009, 1
  %1011 = trunc i64 %1010 to i32
  %1012 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 1
  store i32 %1011, ptr %1012, align 8, !tbaa !25
  %1013 = load ptr, ptr %57, align 8, !tbaa !5
  %1014 = ptrtoint ptr %1013 to i64
  %1015 = and i64 %1014, -4
  %1016 = inttoptr i64 %1015 to ptr
  %1017 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 0
  store ptr %1016, ptr %1017, align 8, !tbaa !27
  %1018 = load ptr, ptr %9, align 8, !tbaa !5
  %1019 = load ptr, ptr %10, align 8, !tbaa !5
  %1020 = load ptr, ptr %13, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.osub, ptr %1020, i32 0, i32 0
  %1022 = load ptr, ptr %1021, align 8, !tbaa !27
  %1023 = getelementptr inbounds ptr, ptr %1022, i64 8
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  call void @insertsubseg(ptr noundef %1018, ptr noundef %1019, ptr noundef %23, i32 noundef %1024)
  %1025 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1026 = load ptr, ptr %1025, align 8, !tbaa !15
  %1027 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1028 = load i32, ptr %1027, align 8, !tbaa !21
  %1029 = add nsw i32 6, %1028
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds ptr, ptr %1026, i64 %1030
  %1032 = load ptr, ptr %1031, align 8, !tbaa !5
  store ptr %1032, ptr %57, align 8, !tbaa !5
  %1033 = load ptr, ptr %57, align 8, !tbaa !5
  %1034 = ptrtoint ptr %1033 to i64
  %1035 = and i64 %1034, 1
  %1036 = trunc i64 %1035 to i32
  %1037 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  store i32 %1036, ptr %1037, align 8, !tbaa !25
  %1038 = load ptr, ptr %57, align 8, !tbaa !5
  %1039 = ptrtoint ptr %1038 to i64
  %1040 = and i64 %1039, -4
  %1041 = inttoptr i64 %1040 to ptr
  %1042 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  store ptr %1041, ptr %1042, align 8, !tbaa !27
  %1043 = load ptr, ptr %46, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1045 = load ptr, ptr %1044, align 8, !tbaa !27
  %1046 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 8, !tbaa !25
  %1048 = add nsw i32 4, %1047
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds ptr, ptr %1045, i64 %1049
  store ptr %1043, ptr %1050, align 8, !tbaa !5
  %1051 = load ptr, ptr %47, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1053 = load ptr, ptr %1052, align 8, !tbaa !27
  %1054 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1055 = load i32, ptr %1054, align 8, !tbaa !25
  %1056 = sub nsw i32 5, %1055
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds ptr, ptr %1053, i64 %1057
  store ptr %1051, ptr %1058, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1060 = load ptr, ptr %1059, align 8, !tbaa !27
  %1061 = ptrtoint ptr %1060 to i64
  %1062 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1063 = load i32, ptr %1062, align 8, !tbaa !25
  %1064 = sext i32 %1063 to i64
  %1065 = or i64 %1061, %1064
  %1066 = inttoptr i64 %1065 to ptr
  %1067 = load ptr, ptr %13, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.osub, ptr %1067, i32 0, i32 0
  %1069 = load ptr, ptr %1068, align 8, !tbaa !27
  %1070 = load ptr, ptr %13, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.osub, ptr %1070, i32 0, i32 1
  %1072 = load i32, ptr %1071, align 8, !tbaa !25
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds ptr, ptr %1069, i64 %1073
  store ptr %1066, ptr %1074, align 8, !tbaa !5
  %1075 = load ptr, ptr %13, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.osub, ptr %1075, i32 0, i32 0
  %1077 = load ptr, ptr %1076, align 8, !tbaa !27
  %1078 = ptrtoint ptr %1077 to i64
  %1079 = load ptr, ptr %13, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.osub, ptr %1079, i32 0, i32 1
  %1081 = load i32, ptr %1080, align 8, !tbaa !25
  %1082 = sext i32 %1081 to i64
  %1083 = or i64 %1078, %1082
  %1084 = inttoptr i64 %1083 to ptr
  %1085 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1086 = load ptr, ptr %1085, align 8, !tbaa !27
  %1087 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1088 = load i32, ptr %1087, align 8, !tbaa !25
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds ptr, ptr %1086, i64 %1089
  store ptr %1084, ptr %1090, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1092 = load i32, ptr %1091, align 8, !tbaa !25
  %1093 = sub nsw i32 1, %1092
  %1094 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  store i32 %1093, ptr %1094, align 8, !tbaa !25
  %1095 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 0
  %1096 = load ptr, ptr %1095, align 8, !tbaa !27
  %1097 = ptrtoint ptr %1096 to i64
  %1098 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 1
  %1099 = load i32, ptr %1098, align 8, !tbaa !25
  %1100 = sext i32 %1099 to i64
  %1101 = or i64 %1097, %1100
  %1102 = inttoptr i64 %1101 to ptr
  %1103 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1104 = load ptr, ptr %1103, align 8, !tbaa !27
  %1105 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1106 = load i32, ptr %1105, align 8, !tbaa !25
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds ptr, ptr %1104, i64 %1107
  store ptr %1102, ptr %1108, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 0
  %1110 = load ptr, ptr %1109, align 8, !tbaa !27
  %1111 = ptrtoint ptr %1110 to i64
  %1112 = getelementptr inbounds %struct.osub, ptr %37, i32 0, i32 1
  %1113 = load i32, ptr %1112, align 8, !tbaa !25
  %1114 = sext i32 %1113 to i64
  %1115 = or i64 %1111, %1114
  %1116 = inttoptr i64 %1115 to ptr
  %1117 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 0
  %1118 = load ptr, ptr %1117, align 8, !tbaa !27
  %1119 = getelementptr inbounds %struct.osub, ptr %36, i32 0, i32 1
  %1120 = load i32, ptr %1119, align 8, !tbaa !25
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds ptr, ptr %1118, i64 %1121
  store ptr %1116, ptr %1122, align 8, !tbaa !5
  %1123 = load ptr, ptr %13, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.osub, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 8, !tbaa !25
  %1126 = sub nsw i32 1, %1125
  %1127 = load ptr, ptr %13, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.osub, ptr %1127, i32 0, i32 1
  store i32 %1126, ptr %1128, align 8, !tbaa !25
  %1129 = load ptr, ptr %11, align 8, !tbaa !5
  %1130 = load ptr, ptr %9, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.mesh, ptr %1130, i32 0, i32 30
  %1132 = load i32, ptr %1131, align 4, !tbaa !42
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds i32, ptr %1129, i64 %1133
  %1135 = load i32, ptr %1134, align 4, !tbaa !9
  %1136 = icmp eq i32 %1135, 0
  br i1 %1136, label %1137, label %1149

1137:                                             ; preds = %962
  %1138 = load ptr, ptr %13, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.osub, ptr %1138, i32 0, i32 0
  %1140 = load ptr, ptr %1139, align 8, !tbaa !27
  %1141 = getelementptr inbounds ptr, ptr %1140, i64 8
  %1142 = load i32, ptr %1141, align 4, !tbaa !9
  %1143 = load ptr, ptr %11, align 8, !tbaa !5
  %1144 = load ptr, ptr %9, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.mesh, ptr %1144, i32 0, i32 30
  %1146 = load i32, ptr %1145, align 4, !tbaa !42
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1143, i64 %1147
  store i32 %1142, ptr %1148, align 4, !tbaa !9
  br label %1149

1149:                                             ; preds = %1137, %962
  br label %1150

1150:                                             ; preds = %1149, %959
  %1151 = load ptr, ptr %9, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.mesh, ptr %1151, i32 0, i32 36
  %1153 = load i32, ptr %1152, align 4, !tbaa !43
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1179

1155:                                             ; preds = %1150
  %1156 = load ptr, ptr %9, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.mesh, ptr %1156, i32 0, i32 6
  call void @poolrestart(ptr noundef %1157)
  %1158 = load ptr, ptr %9, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.mesh, ptr %1158, i32 0, i32 6
  %1160 = call ptr @poolalloc(ptr noundef %1159)
  %1161 = load ptr, ptr %9, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.mesh, ptr %1161, i32 0, i32 12
  store ptr %1160, ptr %1162, align 8, !tbaa !44
  %1163 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1164 = load ptr, ptr %1163, align 8, !tbaa !15
  %1165 = ptrtoint ptr %1164 to i64
  %1166 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1167 = load i32, ptr %1166, align 8, !tbaa !21
  %1168 = sext i32 %1167 to i64
  %1169 = or i64 %1165, %1168
  %1170 = inttoptr i64 %1169 to ptr
  %1171 = load ptr, ptr %9, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.mesh, ptr %1171, i32 0, i32 12
  %1173 = load ptr, ptr %1172, align 8, !tbaa !44
  %1174 = getelementptr inbounds %struct.flipstacker, ptr %1173, i32 0, i32 0
  store ptr %1170, ptr %1174, align 8, !tbaa !45
  %1175 = load ptr, ptr %9, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.mesh, ptr %1175, i32 0, i32 12
  %1177 = load ptr, ptr %1176, align 8, !tbaa !44
  %1178 = getelementptr inbounds %struct.flipstacker, ptr %1177, i32 0, i32 1
  store ptr @insertvertex, ptr %1178, align 8, !tbaa !47
  br label %1179

1179:                                             ; preds = %1155, %1150
  %1180 = load ptr, ptr %10, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.behavior, ptr %1180, i32 0, i32 29
  %1182 = load i32, ptr %1181, align 4, !tbaa !11
  %1183 = icmp sgt i32 %1182, 2
  br i1 %1183, label %1184, label %1201

1184:                                             ; preds = %1179
  %1185 = call i32 (ptr, ...) @printf(ptr noundef @.str.958)
  %1186 = load ptr, ptr %9, align 8, !tbaa !5
  %1187 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1186, ptr noundef %1187, ptr noundef %19)
  %1188 = load i32, ptr %53, align 4, !tbaa !9
  %1189 = icmp ne i32 %1188, 0
  br i1 %1189, label %1190, label %1197

1190:                                             ; preds = %1184
  %1191 = call i32 (ptr, ...) @printf(ptr noundef @.str.959)
  %1192 = load ptr, ptr %9, align 8, !tbaa !5
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1192, ptr noundef %1193, ptr noundef %21)
  %1194 = call i32 (ptr, ...) @printf(ptr noundef @.str.960)
  %1195 = load ptr, ptr %9, align 8, !tbaa !5
  %1196 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1195, ptr noundef %1196, ptr noundef %24)
  br label %1197

1197:                                             ; preds = %1190, %1184
  %1198 = call i32 (ptr, ...) @printf(ptr noundef @.str.961)
  %1199 = load ptr, ptr %9, align 8, !tbaa !5
  %1200 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1199, ptr noundef %1200, ptr noundef %23)
  br label %1201

1201:                                             ; preds = %1197, %1179
  %1202 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1203 = load i32, ptr %1202, align 8, !tbaa !21
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1204
  %1206 = load i32, ptr %1205, align 4, !tbaa !9
  %1207 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %1206, ptr %1207, align 8, !tbaa !21
  br label %1786

1208:                                             ; preds = %160
  %1209 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1210 = load ptr, ptr %1209, align 8, !tbaa !15
  %1211 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %1210, ptr %1211, align 8, !tbaa !15
  %1212 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1213 = load i32, ptr %1212, align 8, !tbaa !21
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1214
  %1216 = load i32, ptr %1215, align 4, !tbaa !9
  %1217 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %1216, ptr %1217, align 8, !tbaa !21
  %1218 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1219 = load ptr, ptr %1218, align 8, !tbaa !15
  %1220 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  store ptr %1219, ptr %1220, align 8, !tbaa !15
  %1221 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1222 = load i32, ptr %1221, align 8, !tbaa !21
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1223
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  %1226 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  store i32 %1225, ptr %1226, align 8, !tbaa !21
  %1227 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !15
  %1229 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1230 = load i32, ptr %1229, align 8, !tbaa !21
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds ptr, ptr %1228, i64 %1231
  %1233 = load ptr, ptr %1232, align 8, !tbaa !5
  store ptr %1233, ptr %56, align 8, !tbaa !5
  %1234 = load ptr, ptr %56, align 8, !tbaa !5
  %1235 = ptrtoint ptr %1234 to i64
  %1236 = and i64 %1235, 3
  %1237 = trunc i64 %1236 to i32
  %1238 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  store i32 %1237, ptr %1238, align 8, !tbaa !21
  %1239 = load ptr, ptr %56, align 8, !tbaa !5
  %1240 = ptrtoint ptr %1239 to i64
  %1241 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %1242 = load i32, ptr %1241, align 8, !tbaa !21
  %1243 = sext i32 %1242 to i64
  %1244 = xor i64 %1240, %1243
  %1245 = inttoptr i64 %1244 to ptr
  %1246 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  store ptr %1245, ptr %1246, align 8, !tbaa !15
  %1247 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1248 = load ptr, ptr %1247, align 8, !tbaa !15
  %1249 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1250 = load i32, ptr %1249, align 8, !tbaa !21
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds ptr, ptr %1248, i64 %1251
  %1253 = load ptr, ptr %1252, align 8, !tbaa !5
  store ptr %1253, ptr %56, align 8, !tbaa !5
  %1254 = load ptr, ptr %56, align 8, !tbaa !5
  %1255 = ptrtoint ptr %1254 to i64
  %1256 = and i64 %1255, 3
  %1257 = trunc i64 %1256 to i32
  %1258 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  store i32 %1257, ptr %1258, align 8, !tbaa !21
  %1259 = load ptr, ptr %56, align 8, !tbaa !5
  %1260 = ptrtoint ptr %1259 to i64
  %1261 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %1262 = load i32, ptr %1261, align 8, !tbaa !21
  %1263 = sext i32 %1262 to i64
  %1264 = xor i64 %1260, %1263
  %1265 = inttoptr i64 %1264 to ptr
  %1266 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  store ptr %1265, ptr %1266, align 8, !tbaa !15
  %1267 = load ptr, ptr %9, align 8, !tbaa !5
  %1268 = load ptr, ptr %10, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %1267, ptr noundef %1268, ptr noundef %22)
  %1269 = load ptr, ptr %9, align 8, !tbaa !5
  %1270 = load ptr, ptr %10, align 8, !tbaa !5
  call void @maketriangle(ptr noundef %1269, ptr noundef %1270, ptr noundef %23)
  %1271 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1272 = load ptr, ptr %1271, align 8, !tbaa !15
  %1273 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1274 = load i32, ptr %1273, align 8, !tbaa !21
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1275
  %1277 = load i32, ptr %1276, align 4, !tbaa !9
  %1278 = add nsw i32 %1277, 3
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds ptr, ptr %1272, i64 %1279
  %1281 = load ptr, ptr %1280, align 8, !tbaa !5
  store ptr %1281, ptr %42, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1283 = load ptr, ptr %1282, align 8, !tbaa !15
  %1284 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1285 = load i32, ptr %1284, align 8, !tbaa !21
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1286
  %1288 = load i32, ptr %1287, align 4, !tbaa !9
  %1289 = add nsw i32 %1288, 3
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds ptr, ptr %1283, i64 %1290
  %1292 = load ptr, ptr %1291, align 8, !tbaa !5
  store ptr %1292, ptr %41, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1294 = load ptr, ptr %1293, align 8, !tbaa !15
  %1295 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1296 = load i32, ptr %1295, align 8, !tbaa !21
  %1297 = add nsw i32 %1296, 3
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds ptr, ptr %1294, i64 %1298
  %1300 = load ptr, ptr %1299, align 8, !tbaa !5
  store ptr %1300, ptr %43, align 8, !tbaa !5
  %1301 = load ptr, ptr %41, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1303 = load ptr, ptr %1302, align 8, !tbaa !15
  %1304 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1305 = load i32, ptr %1304, align 8, !tbaa !21
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1306
  %1308 = load i32, ptr %1307, align 4, !tbaa !9
  %1309 = add nsw i32 %1308, 3
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds ptr, ptr %1303, i64 %1310
  store ptr %1301, ptr %1311, align 8, !tbaa !5
  %1312 = load ptr, ptr %43, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8, !tbaa !15
  %1315 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1316 = load i32, ptr %1315, align 8, !tbaa !21
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1317
  %1319 = load i32, ptr %1318, align 4, !tbaa !9
  %1320 = add nsw i32 %1319, 3
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds ptr, ptr %1314, i64 %1321
  store ptr %1312, ptr %1322, align 8, !tbaa !5
  %1323 = load ptr, ptr %11, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1325 = load ptr, ptr %1324, align 8, !tbaa !15
  %1326 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1327 = load i32, ptr %1326, align 8, !tbaa !21
  %1328 = add nsw i32 %1327, 3
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds ptr, ptr %1325, i64 %1329
  store ptr %1323, ptr %1330, align 8, !tbaa !5
  %1331 = load ptr, ptr %43, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1333 = load ptr, ptr %1332, align 8, !tbaa !15
  %1334 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1335 = load i32, ptr %1334, align 8, !tbaa !21
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1336
  %1338 = load i32, ptr %1337, align 4, !tbaa !9
  %1339 = add nsw i32 %1338, 3
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds ptr, ptr %1333, i64 %1340
  store ptr %1331, ptr %1341, align 8, !tbaa !5
  %1342 = load ptr, ptr %42, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1344 = load ptr, ptr %1343, align 8, !tbaa !15
  %1345 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1346 = load i32, ptr %1345, align 8, !tbaa !21
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1347
  %1349 = load i32, ptr %1348, align 4, !tbaa !9
  %1350 = add nsw i32 %1349, 3
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds ptr, ptr %1344, i64 %1351
  store ptr %1342, ptr %1352, align 8, !tbaa !5
  %1353 = load ptr, ptr %11, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1355 = load ptr, ptr %1354, align 8, !tbaa !15
  %1356 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1357 = load i32, ptr %1356, align 8, !tbaa !21
  %1358 = add nsw i32 %1357, 3
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds ptr, ptr %1355, i64 %1359
  store ptr %1353, ptr %1360, align 8, !tbaa !5
  %1361 = load ptr, ptr %11, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1363 = load ptr, ptr %1362, align 8, !tbaa !15
  %1364 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1365 = load i32, ptr %1364, align 8, !tbaa !21
  %1366 = add nsw i32 %1365, 3
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds ptr, ptr %1363, i64 %1367
  store ptr %1361, ptr %1368, align 8, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %1369

1369:                                             ; preds = %1406, %1208
  %1370 = load i32, ptr %55, align 4, !tbaa !9
  %1371 = load ptr, ptr %9, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.mesh, ptr %1371, i32 0, i32 27
  %1373 = load i32, ptr %1372, align 8, !tbaa !35
  %1374 = icmp slt i32 %1370, %1373
  br i1 %1374, label %1375, label %1409

1375:                                             ; preds = %1369
  %1376 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1377 = load ptr, ptr %1376, align 8, !tbaa !15
  %1378 = load ptr, ptr %9, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.mesh, ptr %1378, i32 0, i32 33
  %1380 = load i32, ptr %1379, align 8, !tbaa !36
  %1381 = load i32, ptr %55, align 4, !tbaa !9
  %1382 = add nsw i32 %1380, %1381
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds double, ptr %1377, i64 %1383
  %1385 = load double, ptr %1384, align 8, !tbaa !14
  store double %1385, ptr %48, align 8, !tbaa !14
  %1386 = load double, ptr %48, align 8, !tbaa !14
  %1387 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1388 = load ptr, ptr %1387, align 8, !tbaa !15
  %1389 = load ptr, ptr %9, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.mesh, ptr %1389, i32 0, i32 33
  %1391 = load i32, ptr %1390, align 8, !tbaa !36
  %1392 = load i32, ptr %55, align 4, !tbaa !9
  %1393 = add nsw i32 %1391, %1392
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %1388, i64 %1394
  store double %1386, ptr %1395, align 8, !tbaa !14
  %1396 = load double, ptr %48, align 8, !tbaa !14
  %1397 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1398 = load ptr, ptr %1397, align 8, !tbaa !15
  %1399 = load ptr, ptr %9, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.mesh, ptr %1399, i32 0, i32 33
  %1401 = load i32, ptr %1400, align 8, !tbaa !36
  %1402 = load i32, ptr %55, align 4, !tbaa !9
  %1403 = add nsw i32 %1401, %1402
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds double, ptr %1398, i64 %1404
  store double %1396, ptr %1405, align 8, !tbaa !14
  br label %1406

1406:                                             ; preds = %1375
  %1407 = load i32, ptr %55, align 4, !tbaa !9
  %1408 = add nsw i32 %1407, 1
  store i32 %1408, ptr %55, align 4, !tbaa !9
  br label %1369, !llvm.loop !48

1409:                                             ; preds = %1369
  %1410 = load ptr, ptr %10, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.behavior, ptr %1410, i32 0, i32 3
  %1412 = load i32, ptr %1411, align 4, !tbaa !39
  %1413 = icmp ne i32 %1412, 0
  br i1 %1413, label %1414, label %1439

1414:                                             ; preds = %1409
  %1415 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1416 = load ptr, ptr %1415, align 8, !tbaa !15
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.mesh, ptr %1417, i32 0, i32 34
  %1419 = load i32, ptr %1418, align 4, !tbaa !40
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %1416, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !14
  store double %1422, ptr %49, align 8, !tbaa !14
  %1423 = load double, ptr %49, align 8, !tbaa !14
  %1424 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1425 = load ptr, ptr %1424, align 8, !tbaa !15
  %1426 = load ptr, ptr %9, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.mesh, ptr %1426, i32 0, i32 34
  %1428 = load i32, ptr %1427, align 4, !tbaa !40
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1425, i64 %1429
  store double %1423, ptr %1430, align 8, !tbaa !14
  %1431 = load double, ptr %49, align 8, !tbaa !14
  %1432 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1433 = load ptr, ptr %1432, align 8, !tbaa !15
  %1434 = load ptr, ptr %9, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.mesh, ptr %1434, i32 0, i32 34
  %1436 = load i32, ptr %1435, align 4, !tbaa !40
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds double, ptr %1433, i64 %1437
  store double %1431, ptr %1438, align 8, !tbaa !14
  br label %1439

1439:                                             ; preds = %1414, %1409
  %1440 = load ptr, ptr %9, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.mesh, ptr %1440, i32 0, i32 35
  %1442 = load i32, ptr %1441, align 8, !tbaa !24
  %1443 = icmp ne i32 %1442, 0
  br i1 %1443, label %1444, label %1577

1444:                                             ; preds = %1439
  %1445 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1446 = load ptr, ptr %1445, align 8, !tbaa !15
  %1447 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1448 = load i32, ptr %1447, align 8, !tbaa !21
  %1449 = add nsw i32 6, %1448
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds ptr, ptr %1446, i64 %1450
  %1452 = load ptr, ptr %1451, align 8, !tbaa !5
  store ptr %1452, ptr %57, align 8, !tbaa !5
  %1453 = load ptr, ptr %57, align 8, !tbaa !5
  %1454 = ptrtoint ptr %1453 to i64
  %1455 = and i64 %1454, 1
  %1456 = trunc i64 %1455 to i32
  %1457 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  store i32 %1456, ptr %1457, align 8, !tbaa !25
  %1458 = load ptr, ptr %57, align 8, !tbaa !5
  %1459 = ptrtoint ptr %1458 to i64
  %1460 = and i64 %1459, -4
  %1461 = inttoptr i64 %1460 to ptr
  %1462 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  store ptr %1461, ptr %1462, align 8, !tbaa !27
  %1463 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %1464 = load ptr, ptr %1463, align 8, !tbaa !27
  %1465 = load ptr, ptr %9, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.mesh, ptr %1465, i32 0, i32 50
  %1467 = load ptr, ptr %1466, align 8, !tbaa !28
  %1468 = icmp ne ptr %1464, %1467
  br i1 %1468, label %1469, label %1510

1469:                                             ; preds = %1444
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.mesh, ptr %1470, i32 0, i32 50
  %1472 = load ptr, ptr %1471, align 8, !tbaa !28
  %1473 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1474 = load ptr, ptr %1473, align 8, !tbaa !15
  %1475 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1476 = load i32, ptr %1475, align 8, !tbaa !21
  %1477 = add nsw i32 6, %1476
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds ptr, ptr %1474, i64 %1478
  store ptr %1472, ptr %1479, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %1481 = load ptr, ptr %1480, align 8, !tbaa !27
  %1482 = ptrtoint ptr %1481 to i64
  %1483 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  %1484 = load i32, ptr %1483, align 8, !tbaa !25
  %1485 = sext i32 %1484 to i64
  %1486 = or i64 %1482, %1485
  %1487 = inttoptr i64 %1486 to ptr
  %1488 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1489 = load ptr, ptr %1488, align 8, !tbaa !15
  %1490 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1491 = load i32, ptr %1490, align 8, !tbaa !21
  %1492 = add nsw i32 6, %1491
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds ptr, ptr %1489, i64 %1493
  store ptr %1487, ptr %1494, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1496 = load ptr, ptr %1495, align 8, !tbaa !15
  %1497 = ptrtoint ptr %1496 to i64
  %1498 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1499 = load i32, ptr %1498, align 8, !tbaa !21
  %1500 = sext i32 %1499 to i64
  %1501 = or i64 %1497, %1500
  %1502 = inttoptr i64 %1501 to ptr
  %1503 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %1504 = load ptr, ptr %1503, align 8, !tbaa !27
  %1505 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  %1506 = load i32, ptr %1505, align 8, !tbaa !25
  %1507 = add nsw i32 6, %1506
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds ptr, ptr %1504, i64 %1508
  store ptr %1502, ptr %1509, align 8, !tbaa !5
  br label %1510

1510:                                             ; preds = %1469, %1444
  %1511 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1512 = load ptr, ptr %1511, align 8, !tbaa !15
  %1513 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1514 = load i32, ptr %1513, align 8, !tbaa !21
  %1515 = add nsw i32 6, %1514
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds ptr, ptr %1512, i64 %1516
  %1518 = load ptr, ptr %1517, align 8, !tbaa !5
  store ptr %1518, ptr %57, align 8, !tbaa !5
  %1519 = load ptr, ptr %57, align 8, !tbaa !5
  %1520 = ptrtoint ptr %1519 to i64
  %1521 = and i64 %1520, 1
  %1522 = trunc i64 %1521 to i32
  %1523 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  store i32 %1522, ptr %1523, align 8, !tbaa !25
  %1524 = load ptr, ptr %57, align 8, !tbaa !5
  %1525 = ptrtoint ptr %1524 to i64
  %1526 = and i64 %1525, -4
  %1527 = inttoptr i64 %1526 to ptr
  %1528 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  store ptr %1527, ptr %1528, align 8, !tbaa !27
  %1529 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %1530 = load ptr, ptr %1529, align 8, !tbaa !27
  %1531 = load ptr, ptr %9, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.mesh, ptr %1531, i32 0, i32 50
  %1533 = load ptr, ptr %1532, align 8, !tbaa !28
  %1534 = icmp ne ptr %1530, %1533
  br i1 %1534, label %1535, label %1576

1535:                                             ; preds = %1510
  %1536 = load ptr, ptr %9, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.mesh, ptr %1536, i32 0, i32 50
  %1538 = load ptr, ptr %1537, align 8, !tbaa !28
  %1539 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1540 = load ptr, ptr %1539, align 8, !tbaa !15
  %1541 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1542 = load i32, ptr %1541, align 8, !tbaa !21
  %1543 = add nsw i32 6, %1542
  %1544 = sext i32 %1543 to i64
  %1545 = getelementptr inbounds ptr, ptr %1540, i64 %1544
  store ptr %1538, ptr %1545, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %1547 = load ptr, ptr %1546, align 8, !tbaa !27
  %1548 = ptrtoint ptr %1547 to i64
  %1549 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %1550 = load i32, ptr %1549, align 8, !tbaa !25
  %1551 = sext i32 %1550 to i64
  %1552 = or i64 %1548, %1551
  %1553 = inttoptr i64 %1552 to ptr
  %1554 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1555 = load ptr, ptr %1554, align 8, !tbaa !15
  %1556 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1557 = load i32, ptr %1556, align 8, !tbaa !21
  %1558 = add nsw i32 6, %1557
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds ptr, ptr %1555, i64 %1559
  store ptr %1553, ptr %1560, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1562 = load ptr, ptr %1561, align 8, !tbaa !15
  %1563 = ptrtoint ptr %1562 to i64
  %1564 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1565 = load i32, ptr %1564, align 8, !tbaa !21
  %1566 = sext i32 %1565 to i64
  %1567 = or i64 %1563, %1566
  %1568 = inttoptr i64 %1567 to ptr
  %1569 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %1570 = load ptr, ptr %1569, align 8, !tbaa !27
  %1571 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %1572 = load i32, ptr %1571, align 8, !tbaa !25
  %1573 = add nsw i32 6, %1572
  %1574 = sext i32 %1573 to i64
  %1575 = getelementptr inbounds ptr, ptr %1570, i64 %1574
  store ptr %1568, ptr %1575, align 8, !tbaa !5
  br label %1576

1576:                                             ; preds = %1535, %1510
  br label %1577

1577:                                             ; preds = %1576, %1439
  %1578 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  %1579 = load ptr, ptr %1578, align 8, !tbaa !15
  %1580 = ptrtoint ptr %1579 to i64
  %1581 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %1582 = load i32, ptr %1581, align 8, !tbaa !21
  %1583 = sext i32 %1582 to i64
  %1584 = or i64 %1580, %1583
  %1585 = inttoptr i64 %1584 to ptr
  %1586 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1587 = load ptr, ptr %1586, align 8, !tbaa !15
  %1588 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1589 = load i32, ptr %1588, align 8, !tbaa !21
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds ptr, ptr %1587, i64 %1590
  store ptr %1585, ptr %1591, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1593 = load ptr, ptr %1592, align 8, !tbaa !15
  %1594 = ptrtoint ptr %1593 to i64
  %1595 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1596 = load i32, ptr %1595, align 8, !tbaa !21
  %1597 = sext i32 %1596 to i64
  %1598 = or i64 %1594, %1597
  %1599 = inttoptr i64 %1598 to ptr
  %1600 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  %1601 = load ptr, ptr %1600, align 8, !tbaa !15
  %1602 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %1603 = load i32, ptr %1602, align 8, !tbaa !21
  %1604 = sext i32 %1603 to i64
  %1605 = getelementptr inbounds ptr, ptr %1601, i64 %1604
  store ptr %1599, ptr %1605, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %1607 = load ptr, ptr %1606, align 8, !tbaa !15
  %1608 = ptrtoint ptr %1607 to i64
  %1609 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %1610 = load i32, ptr %1609, align 8, !tbaa !21
  %1611 = sext i32 %1610 to i64
  %1612 = or i64 %1608, %1611
  %1613 = inttoptr i64 %1612 to ptr
  %1614 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1615 = load ptr, ptr %1614, align 8, !tbaa !15
  %1616 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1617 = load i32, ptr %1616, align 8, !tbaa !21
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds ptr, ptr %1615, i64 %1618
  store ptr %1613, ptr %1619, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1621 = load ptr, ptr %1620, align 8, !tbaa !15
  %1622 = ptrtoint ptr %1621 to i64
  %1623 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1624 = load i32, ptr %1623, align 8, !tbaa !21
  %1625 = sext i32 %1624 to i64
  %1626 = or i64 %1622, %1625
  %1627 = inttoptr i64 %1626 to ptr
  %1628 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %1629 = load ptr, ptr %1628, align 8, !tbaa !15
  %1630 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %1631 = load i32, ptr %1630, align 8, !tbaa !21
  %1632 = sext i32 %1631 to i64
  %1633 = getelementptr inbounds ptr, ptr %1629, i64 %1632
  store ptr %1627, ptr %1633, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1635 = load i32, ptr %1634, align 8, !tbaa !21
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1636
  %1638 = load i32, ptr %1637, align 4, !tbaa !9
  %1639 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %1638, ptr %1639, align 8, !tbaa !21
  %1640 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1641 = load i32, ptr %1640, align 8, !tbaa !21
  %1642 = sext i32 %1641 to i64
  %1643 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1642
  %1644 = load i32, ptr %1643, align 4, !tbaa !9
  %1645 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  store i32 %1644, ptr %1645, align 8, !tbaa !21
  %1646 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1647 = load ptr, ptr %1646, align 8, !tbaa !15
  %1648 = ptrtoint ptr %1647 to i64
  %1649 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1650 = load i32, ptr %1649, align 8, !tbaa !21
  %1651 = sext i32 %1650 to i64
  %1652 = or i64 %1648, %1651
  %1653 = inttoptr i64 %1652 to ptr
  %1654 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1655 = load ptr, ptr %1654, align 8, !tbaa !15
  %1656 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1657 = load i32, ptr %1656, align 8, !tbaa !21
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds ptr, ptr %1655, i64 %1658
  store ptr %1653, ptr %1659, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1661 = load ptr, ptr %1660, align 8, !tbaa !15
  %1662 = ptrtoint ptr %1661 to i64
  %1663 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1664 = load i32, ptr %1663, align 8, !tbaa !21
  %1665 = sext i32 %1664 to i64
  %1666 = or i64 %1662, %1665
  %1667 = inttoptr i64 %1666 to ptr
  %1668 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1669 = load ptr, ptr %1668, align 8, !tbaa !15
  %1670 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1671 = load i32, ptr %1670, align 8, !tbaa !21
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds ptr, ptr %1669, i64 %1672
  store ptr %1667, ptr %1673, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1675 = load i32, ptr %1674, align 8, !tbaa !21
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1676
  %1678 = load i32, ptr %1677, align 4, !tbaa !9
  %1679 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  store i32 %1678, ptr %1679, align 8, !tbaa !21
  %1680 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1681 = load ptr, ptr %1680, align 8, !tbaa !15
  %1682 = ptrtoint ptr %1681 to i64
  %1683 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1684 = load i32, ptr %1683, align 8, !tbaa !21
  %1685 = sext i32 %1684 to i64
  %1686 = or i64 %1682, %1685
  %1687 = inttoptr i64 %1686 to ptr
  %1688 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1689 = load ptr, ptr %1688, align 8, !tbaa !15
  %1690 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1691 = load i32, ptr %1690, align 8, !tbaa !21
  %1692 = sext i32 %1691 to i64
  %1693 = getelementptr inbounds ptr, ptr %1689, i64 %1692
  store ptr %1687, ptr %1693, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %1695 = load ptr, ptr %1694, align 8, !tbaa !15
  %1696 = ptrtoint ptr %1695 to i64
  %1697 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %1698 = load i32, ptr %1697, align 8, !tbaa !21
  %1699 = sext i32 %1698 to i64
  %1700 = or i64 %1696, %1699
  %1701 = inttoptr i64 %1700 to ptr
  %1702 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 0
  %1703 = load ptr, ptr %1702, align 8, !tbaa !15
  %1704 = getelementptr inbounds %struct.otri, ptr %22, i32 0, i32 1
  %1705 = load i32, ptr %1704, align 8, !tbaa !21
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds ptr, ptr %1703, i64 %1706
  store ptr %1701, ptr %1707, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1709 = load i32, ptr %1708, align 8, !tbaa !21
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1710
  %1712 = load i32, ptr %1711, align 4, !tbaa !9
  %1713 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  store i32 %1712, ptr %1713, align 8, !tbaa !21
  %1714 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1715 = load ptr, ptr %1714, align 8, !tbaa !15
  %1716 = ptrtoint ptr %1715 to i64
  %1717 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1718 = load i32, ptr %1717, align 8, !tbaa !21
  %1719 = sext i32 %1718 to i64
  %1720 = or i64 %1716, %1719
  %1721 = inttoptr i64 %1720 to ptr
  %1722 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1723 = load ptr, ptr %1722, align 8, !tbaa !15
  %1724 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1725 = load i32, ptr %1724, align 8, !tbaa !21
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds ptr, ptr %1723, i64 %1726
  store ptr %1721, ptr %1727, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1729 = load ptr, ptr %1728, align 8, !tbaa !15
  %1730 = ptrtoint ptr %1729 to i64
  %1731 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1732 = load i32, ptr %1731, align 8, !tbaa !21
  %1733 = sext i32 %1732 to i64
  %1734 = or i64 %1730, %1733
  %1735 = inttoptr i64 %1734 to ptr
  %1736 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %1737 = load ptr, ptr %1736, align 8, !tbaa !15
  %1738 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 1
  %1739 = load i32, ptr %1738, align 8, !tbaa !21
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds ptr, ptr %1737, i64 %1740
  store ptr %1735, ptr %1741, align 8, !tbaa !5
  %1742 = load ptr, ptr %9, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.mesh, ptr %1742, i32 0, i32 36
  %1744 = load i32, ptr %1743, align 4, !tbaa !43
  %1745 = icmp ne i32 %1744, 0
  br i1 %1745, label %1746, label %1770

1746:                                             ; preds = %1577
  %1747 = load ptr, ptr %9, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.mesh, ptr %1747, i32 0, i32 6
  call void @poolrestart(ptr noundef %1748)
  %1749 = load ptr, ptr %9, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.mesh, ptr %1749, i32 0, i32 6
  %1751 = call ptr @poolalloc(ptr noundef %1750)
  %1752 = load ptr, ptr %9, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.mesh, ptr %1752, i32 0, i32 12
  store ptr %1751, ptr %1753, align 8, !tbaa !44
  %1754 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1755 = load ptr, ptr %1754, align 8, !tbaa !15
  %1756 = ptrtoint ptr %1755 to i64
  %1757 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1758 = load i32, ptr %1757, align 8, !tbaa !21
  %1759 = sext i32 %1758 to i64
  %1760 = or i64 %1756, %1759
  %1761 = inttoptr i64 %1760 to ptr
  %1762 = load ptr, ptr %9, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.mesh, ptr %1762, i32 0, i32 12
  %1764 = load ptr, ptr %1763, align 8, !tbaa !44
  %1765 = getelementptr inbounds %struct.flipstacker, ptr %1764, i32 0, i32 0
  store ptr %1761, ptr %1765, align 8, !tbaa !45
  %1766 = load ptr, ptr %9, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.mesh, ptr %1766, i32 0, i32 12
  %1768 = load ptr, ptr %1767, align 8, !tbaa !44
  %1769 = getelementptr inbounds %struct.flipstacker, ptr %1768, i32 0, i32 1
  store ptr null, ptr %1769, align 8, !tbaa !47
  br label %1770

1770:                                             ; preds = %1746, %1577
  %1771 = load ptr, ptr %10, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.behavior, ptr %1771, i32 0, i32 29
  %1773 = load i32, ptr %1772, align 4, !tbaa !11
  %1774 = icmp sgt i32 %1773, 2
  br i1 %1774, label %1775, label %1785

1775:                                             ; preds = %1770
  %1776 = call i32 (ptr, ...) @printf(ptr noundef @.str.962)
  %1777 = load ptr, ptr %9, align 8, !tbaa !5
  %1778 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1777, ptr noundef %1778, ptr noundef %16)
  %1779 = call i32 (ptr, ...) @printf(ptr noundef @.str.963)
  %1780 = load ptr, ptr %9, align 8, !tbaa !5
  %1781 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1780, ptr noundef %1781, ptr noundef %22)
  %1782 = call i32 (ptr, ...) @printf(ptr noundef @.str.964)
  %1783 = load ptr, ptr %9, align 8, !tbaa !5
  %1784 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1783, ptr noundef %1784, ptr noundef %23)
  br label %1785

1785:                                             ; preds = %1775, %1770
  br label %1786

1786:                                             ; preds = %1785, %1201
  store i32 0, ptr %50, align 4, !tbaa !9
  %1787 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1788 = load ptr, ptr %1787, align 8, !tbaa !15
  %1789 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1790 = load i32, ptr %1789, align 8, !tbaa !21
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1791
  %1793 = load i32, ptr %1792, align 4, !tbaa !9
  %1794 = add nsw i32 %1793, 3
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds ptr, ptr %1788, i64 %1795
  %1797 = load ptr, ptr %1796, align 8, !tbaa !5
  store ptr %1797, ptr %40, align 8, !tbaa !5
  %1798 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1798, ptr %42, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1800 = load ptr, ptr %1799, align 8, !tbaa !15
  %1801 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1802 = load i32, ptr %1801, align 8, !tbaa !21
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1803
  %1805 = load i32, ptr %1804, align 4, !tbaa !9
  %1806 = add nsw i32 %1805, 3
  %1807 = sext i32 %1806 to i64
  %1808 = getelementptr inbounds ptr, ptr %1800, i64 %1807
  %1809 = load ptr, ptr %1808, align 8, !tbaa !5
  store ptr %1809, ptr %41, align 8, !tbaa !5
  br label %1810

1810:                                             ; preds = %2806, %1786
  br label %1811

1811:                                             ; preds = %1810
  store i32 1, ptr %52, align 4, !tbaa !9
  %1812 = load ptr, ptr %9, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.mesh, ptr %1812, i32 0, i32 35
  %1814 = load i32, ptr %1813, align 8, !tbaa !24
  %1815 = icmp ne i32 %1814, 0
  br i1 %1815, label %1816, label %1853

1816:                                             ; preds = %1811
  %1817 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1818 = load ptr, ptr %1817, align 8, !tbaa !15
  %1819 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1820 = load i32, ptr %1819, align 8, !tbaa !21
  %1821 = add nsw i32 6, %1820
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds ptr, ptr %1818, i64 %1822
  %1824 = load ptr, ptr %1823, align 8, !tbaa !5
  store ptr %1824, ptr %57, align 8, !tbaa !5
  %1825 = load ptr, ptr %57, align 8, !tbaa !5
  %1826 = ptrtoint ptr %1825 to i64
  %1827 = and i64 %1826, 1
  %1828 = trunc i64 %1827 to i32
  %1829 = getelementptr inbounds %struct.osub, ptr %35, i32 0, i32 1
  store i32 %1828, ptr %1829, align 8, !tbaa !25
  %1830 = load ptr, ptr %57, align 8, !tbaa !5
  %1831 = ptrtoint ptr %1830 to i64
  %1832 = and i64 %1831, -4
  %1833 = inttoptr i64 %1832 to ptr
  %1834 = getelementptr inbounds %struct.osub, ptr %35, i32 0, i32 0
  store ptr %1833, ptr %1834, align 8, !tbaa !27
  %1835 = getelementptr inbounds %struct.osub, ptr %35, i32 0, i32 0
  %1836 = load ptr, ptr %1835, align 8, !tbaa !27
  %1837 = load ptr, ptr %9, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.mesh, ptr %1837, i32 0, i32 50
  %1839 = load ptr, ptr %1838, align 8, !tbaa !28
  %1840 = icmp ne ptr %1836, %1839
  br i1 %1840, label %1841, label %1852

1841:                                             ; preds = %1816
  store i32 0, ptr %52, align 4, !tbaa !9
  %1842 = load i32, ptr %14, align 4, !tbaa !9
  %1843 = icmp ne i32 %1842, 0
  br i1 %1843, label %1844, label %1851

1844:                                             ; preds = %1841
  %1845 = load ptr, ptr %9, align 8, !tbaa !5
  %1846 = load ptr, ptr %10, align 8, !tbaa !5
  %1847 = call i32 @checkseg4encroach(ptr noundef %1845, ptr noundef %1846, ptr noundef %35)
  %1848 = icmp ne i32 %1847, 0
  br i1 %1848, label %1849, label %1850

1849:                                             ; preds = %1844
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %1850

1850:                                             ; preds = %1849, %1844
  br label %1851

1851:                                             ; preds = %1850, %1841
  br label %1852

1852:                                             ; preds = %1851, %1816
  br label %1853

1853:                                             ; preds = %1852, %1811
  %1854 = load i32, ptr %52, align 4, !tbaa !9
  %1855 = icmp ne i32 %1854, 0
  br i1 %1855, label %1856, label %2712

1856:                                             ; preds = %1853
  %1857 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %1858 = load ptr, ptr %1857, align 8, !tbaa !15
  %1859 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1860 = load i32, ptr %1859, align 8, !tbaa !21
  %1861 = sext i32 %1860 to i64
  %1862 = getelementptr inbounds ptr, ptr %1858, i64 %1861
  %1863 = load ptr, ptr %1862, align 8, !tbaa !5
  store ptr %1863, ptr %56, align 8, !tbaa !5
  %1864 = load ptr, ptr %56, align 8, !tbaa !5
  %1865 = ptrtoint ptr %1864 to i64
  %1866 = and i64 %1865, 3
  %1867 = trunc i64 %1866 to i32
  %1868 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  store i32 %1867, ptr %1868, align 8, !tbaa !21
  %1869 = load ptr, ptr %56, align 8, !tbaa !5
  %1870 = ptrtoint ptr %1869 to i64
  %1871 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1872 = load i32, ptr %1871, align 8, !tbaa !21
  %1873 = sext i32 %1872 to i64
  %1874 = xor i64 %1870, %1873
  %1875 = inttoptr i64 %1874 to ptr
  %1876 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  store ptr %1875, ptr %1876, align 8, !tbaa !15
  %1877 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1878 = load ptr, ptr %1877, align 8, !tbaa !15
  %1879 = load ptr, ptr %9, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.mesh, ptr %1879, i32 0, i32 48
  %1881 = load ptr, ptr %1880, align 8, !tbaa !17
  %1882 = icmp eq ptr %1878, %1881
  br i1 %1882, label %1883, label %1884

1883:                                             ; preds = %1856
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %2711

1884:                                             ; preds = %1856
  %1885 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1886 = load ptr, ptr %1885, align 8, !tbaa !15
  %1887 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1888 = load i32, ptr %1887, align 8, !tbaa !21
  %1889 = add nsw i32 %1888, 3
  %1890 = sext i32 %1889 to i64
  %1891 = getelementptr inbounds ptr, ptr %1886, i64 %1890
  %1892 = load ptr, ptr %1891, align 8, !tbaa !5
  store ptr %1892, ptr %45, align 8, !tbaa !5
  %1893 = load ptr, ptr %41, align 8, !tbaa !5
  %1894 = load ptr, ptr %9, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.mesh, ptr %1894, i32 0, i32 45
  %1896 = load ptr, ptr %1895, align 8, !tbaa !49
  %1897 = icmp eq ptr %1893, %1896
  br i1 %1897, label %1910, label %1898

1898:                                             ; preds = %1884
  %1899 = load ptr, ptr %41, align 8, !tbaa !5
  %1900 = load ptr, ptr %9, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct.mesh, ptr %1900, i32 0, i32 46
  %1902 = load ptr, ptr %1901, align 8, !tbaa !50
  %1903 = icmp eq ptr %1899, %1902
  br i1 %1903, label %1910, label %1904

1904:                                             ; preds = %1898
  %1905 = load ptr, ptr %41, align 8, !tbaa !5
  %1906 = load ptr, ptr %9, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.mesh, ptr %1906, i32 0, i32 47
  %1908 = load ptr, ptr %1907, align 8, !tbaa !51
  %1909 = icmp eq ptr %1905, %1908
  br i1 %1909, label %1910, label %1919

1910:                                             ; preds = %1904, %1898, %1884
  %1911 = load ptr, ptr %9, align 8, !tbaa !5
  %1912 = load ptr, ptr %10, align 8, !tbaa !5
  %1913 = load ptr, ptr %11, align 8, !tbaa !5
  %1914 = load ptr, ptr %42, align 8, !tbaa !5
  %1915 = load ptr, ptr %45, align 8, !tbaa !5
  %1916 = call double @counterclockwise(ptr noundef %1911, ptr noundef %1912, ptr noundef %1913, ptr noundef %1914, ptr noundef %1915)
  %1917 = fcmp ogt double %1916, 0.000000e+00
  %1918 = zext i1 %1917 to i32
  store i32 %1918, ptr %52, align 4, !tbaa !9
  br label %1977

1919:                                             ; preds = %1904
  %1920 = load ptr, ptr %42, align 8, !tbaa !5
  %1921 = load ptr, ptr %9, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.mesh, ptr %1921, i32 0, i32 45
  %1923 = load ptr, ptr %1922, align 8, !tbaa !49
  %1924 = icmp eq ptr %1920, %1923
  br i1 %1924, label %1937, label %1925

1925:                                             ; preds = %1919
  %1926 = load ptr, ptr %42, align 8, !tbaa !5
  %1927 = load ptr, ptr %9, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.mesh, ptr %1927, i32 0, i32 46
  %1929 = load ptr, ptr %1928, align 8, !tbaa !50
  %1930 = icmp eq ptr %1926, %1929
  br i1 %1930, label %1937, label %1931

1931:                                             ; preds = %1925
  %1932 = load ptr, ptr %42, align 8, !tbaa !5
  %1933 = load ptr, ptr %9, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.mesh, ptr %1933, i32 0, i32 47
  %1935 = load ptr, ptr %1934, align 8, !tbaa !51
  %1936 = icmp eq ptr %1932, %1935
  br i1 %1936, label %1937, label %1946

1937:                                             ; preds = %1931, %1925, %1919
  %1938 = load ptr, ptr %9, align 8, !tbaa !5
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = load ptr, ptr %45, align 8, !tbaa !5
  %1941 = load ptr, ptr %41, align 8, !tbaa !5
  %1942 = load ptr, ptr %11, align 8, !tbaa !5
  %1943 = call double @counterclockwise(ptr noundef %1938, ptr noundef %1939, ptr noundef %1940, ptr noundef %1941, ptr noundef %1942)
  %1944 = fcmp ogt double %1943, 0.000000e+00
  %1945 = zext i1 %1944 to i32
  store i32 %1945, ptr %52, align 4, !tbaa !9
  br label %1976

1946:                                             ; preds = %1931
  %1947 = load ptr, ptr %45, align 8, !tbaa !5
  %1948 = load ptr, ptr %9, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.mesh, ptr %1948, i32 0, i32 45
  %1950 = load ptr, ptr %1949, align 8, !tbaa !49
  %1951 = icmp eq ptr %1947, %1950
  br i1 %1951, label %1964, label %1952

1952:                                             ; preds = %1946
  %1953 = load ptr, ptr %45, align 8, !tbaa !5
  %1954 = load ptr, ptr %9, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.mesh, ptr %1954, i32 0, i32 46
  %1956 = load ptr, ptr %1955, align 8, !tbaa !50
  %1957 = icmp eq ptr %1953, %1956
  br i1 %1957, label %1964, label %1958

1958:                                             ; preds = %1952
  %1959 = load ptr, ptr %45, align 8, !tbaa !5
  %1960 = load ptr, ptr %9, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.mesh, ptr %1960, i32 0, i32 47
  %1962 = load ptr, ptr %1961, align 8, !tbaa !51
  %1963 = icmp eq ptr %1959, %1962
  br i1 %1963, label %1964, label %1965

1964:                                             ; preds = %1958, %1952, %1946
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %1975

1965:                                             ; preds = %1958
  %1966 = load ptr, ptr %9, align 8, !tbaa !5
  %1967 = load ptr, ptr %10, align 8, !tbaa !5
  %1968 = load ptr, ptr %41, align 8, !tbaa !5
  %1969 = load ptr, ptr %11, align 8, !tbaa !5
  %1970 = load ptr, ptr %42, align 8, !tbaa !5
  %1971 = load ptr, ptr %45, align 8, !tbaa !5
  %1972 = call double @incircle(ptr noundef %1966, ptr noundef %1967, ptr noundef %1968, ptr noundef %1969, ptr noundef %1970, ptr noundef %1971)
  %1973 = fcmp ogt double %1972, 0.000000e+00
  %1974 = zext i1 %1973 to i32
  store i32 %1974, ptr %52, align 4, !tbaa !9
  br label %1975

1975:                                             ; preds = %1965, %1964
  br label %1976

1976:                                             ; preds = %1975, %1937
  br label %1977

1977:                                             ; preds = %1976, %1910
  %1978 = load i32, ptr %52, align 4, !tbaa !9
  %1979 = icmp ne i32 %1978, 0
  br i1 %1979, label %1980, label %2710

1980:                                             ; preds = %1977
  %1981 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %1982 = load ptr, ptr %1981, align 8, !tbaa !15
  %1983 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  store ptr %1982, ptr %1983, align 8, !tbaa !15
  %1984 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %1985 = load i32, ptr %1984, align 8, !tbaa !21
  %1986 = sext i32 %1985 to i64
  %1987 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1986
  %1988 = load i32, ptr %1987, align 4, !tbaa !9
  %1989 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  store i32 %1988, ptr %1989, align 8, !tbaa !21
  %1990 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %1991 = load ptr, ptr %1990, align 8, !tbaa !15
  %1992 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %1993 = load i32, ptr %1992, align 8, !tbaa !21
  %1994 = sext i32 %1993 to i64
  %1995 = getelementptr inbounds ptr, ptr %1991, i64 %1994
  %1996 = load ptr, ptr %1995, align 8, !tbaa !5
  store ptr %1996, ptr %56, align 8, !tbaa !5
  %1997 = load ptr, ptr %56, align 8, !tbaa !5
  %1998 = ptrtoint ptr %1997 to i64
  %1999 = and i64 %1998, 3
  %2000 = trunc i64 %1999 to i32
  %2001 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 1
  store i32 %2000, ptr %2001, align 8, !tbaa !21
  %2002 = load ptr, ptr %56, align 8, !tbaa !5
  %2003 = ptrtoint ptr %2002 to i64
  %2004 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 1
  %2005 = load i32, ptr %2004, align 8, !tbaa !21
  %2006 = sext i32 %2005 to i64
  %2007 = xor i64 %2003, %2006
  %2008 = inttoptr i64 %2007 to ptr
  %2009 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 0
  store ptr %2008, ptr %2009, align 8, !tbaa !15
  %2010 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2011 = load ptr, ptr %2010, align 8, !tbaa !15
  %2012 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  store ptr %2011, ptr %2012, align 8, !tbaa !15
  %2013 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %2014 = load i32, ptr %2013, align 8, !tbaa !21
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2015
  %2017 = load i32, ptr %2016, align 4, !tbaa !9
  %2018 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  store i32 %2017, ptr %2018, align 8, !tbaa !21
  %2019 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2020 = load ptr, ptr %2019, align 8, !tbaa !15
  %2021 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2022 = load i32, ptr %2021, align 8, !tbaa !21
  %2023 = sext i32 %2022 to i64
  %2024 = getelementptr inbounds ptr, ptr %2020, i64 %2023
  %2025 = load ptr, ptr %2024, align 8, !tbaa !5
  store ptr %2025, ptr %56, align 8, !tbaa !5
  %2026 = load ptr, ptr %56, align 8, !tbaa !5
  %2027 = ptrtoint ptr %2026 to i64
  %2028 = and i64 %2027, 3
  %2029 = trunc i64 %2028 to i32
  %2030 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  store i32 %2029, ptr %2030, align 8, !tbaa !21
  %2031 = load ptr, ptr %56, align 8, !tbaa !5
  %2032 = ptrtoint ptr %2031 to i64
  %2033 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %2034 = load i32, ptr %2033, align 8, !tbaa !21
  %2035 = sext i32 %2034 to i64
  %2036 = xor i64 %2032, %2035
  %2037 = inttoptr i64 %2036 to ptr
  %2038 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  store ptr %2037, ptr %2038, align 8, !tbaa !15
  %2039 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2040 = load ptr, ptr %2039, align 8, !tbaa !15
  %2041 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  store ptr %2040, ptr %2041, align 8, !tbaa !15
  %2042 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2043 = load i32, ptr %2042, align 8, !tbaa !21
  %2044 = sext i32 %2043 to i64
  %2045 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2044
  %2046 = load i32, ptr %2045, align 4, !tbaa !9
  %2047 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  store i32 %2046, ptr %2047, align 8, !tbaa !21
  %2048 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2049 = load ptr, ptr %2048, align 8, !tbaa !15
  %2050 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2051 = load i32, ptr %2050, align 8, !tbaa !21
  %2052 = sext i32 %2051 to i64
  %2053 = getelementptr inbounds ptr, ptr %2049, i64 %2052
  %2054 = load ptr, ptr %2053, align 8, !tbaa !5
  store ptr %2054, ptr %56, align 8, !tbaa !5
  %2055 = load ptr, ptr %56, align 8, !tbaa !5
  %2056 = ptrtoint ptr %2055 to i64
  %2057 = and i64 %2056, 3
  %2058 = trunc i64 %2057 to i32
  %2059 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  store i32 %2058, ptr %2059, align 8, !tbaa !21
  %2060 = load ptr, ptr %56, align 8, !tbaa !5
  %2061 = ptrtoint ptr %2060 to i64
  %2062 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %2063 = load i32, ptr %2062, align 8, !tbaa !21
  %2064 = sext i32 %2063 to i64
  %2065 = xor i64 %2061, %2064
  %2066 = inttoptr i64 %2065 to ptr
  %2067 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  store ptr %2066, ptr %2067, align 8, !tbaa !15
  %2068 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2069 = load ptr, ptr %2068, align 8, !tbaa !15
  %2070 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  store ptr %2069, ptr %2070, align 8, !tbaa !15
  %2071 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2072 = load i32, ptr %2071, align 8, !tbaa !21
  %2073 = sext i32 %2072 to i64
  %2074 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2073
  %2075 = load i32, ptr %2074, align 4, !tbaa !9
  %2076 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  store i32 %2075, ptr %2076, align 8, !tbaa !21
  %2077 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2078 = load ptr, ptr %2077, align 8, !tbaa !15
  %2079 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2080 = load i32, ptr %2079, align 8, !tbaa !21
  %2081 = sext i32 %2080 to i64
  %2082 = getelementptr inbounds ptr, ptr %2078, i64 %2081
  %2083 = load ptr, ptr %2082, align 8, !tbaa !5
  store ptr %2083, ptr %56, align 8, !tbaa !5
  %2084 = load ptr, ptr %56, align 8, !tbaa !5
  %2085 = ptrtoint ptr %2084 to i64
  %2086 = and i64 %2085, 3
  %2087 = trunc i64 %2086 to i32
  %2088 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  store i32 %2087, ptr %2088, align 8, !tbaa !21
  %2089 = load ptr, ptr %56, align 8, !tbaa !5
  %2090 = ptrtoint ptr %2089 to i64
  %2091 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %2092 = load i32, ptr %2091, align 8, !tbaa !21
  %2093 = sext i32 %2092 to i64
  %2094 = xor i64 %2090, %2093
  %2095 = inttoptr i64 %2094 to ptr
  %2096 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  store ptr %2095, ptr %2096, align 8, !tbaa !15
  %2097 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  %2098 = load ptr, ptr %2097, align 8, !tbaa !15
  %2099 = ptrtoint ptr %2098 to i64
  %2100 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %2101 = load i32, ptr %2100, align 8, !tbaa !21
  %2102 = sext i32 %2101 to i64
  %2103 = or i64 %2099, %2102
  %2104 = inttoptr i64 %2103 to ptr
  %2105 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2106 = load ptr, ptr %2105, align 8, !tbaa !15
  %2107 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2108 = load i32, ptr %2107, align 8, !tbaa !21
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds ptr, ptr %2106, i64 %2109
  store ptr %2104, ptr %2110, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2112 = load ptr, ptr %2111, align 8, !tbaa !15
  %2113 = ptrtoint ptr %2112 to i64
  %2114 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2115 = load i32, ptr %2114, align 8, !tbaa !21
  %2116 = sext i32 %2115 to i64
  %2117 = or i64 %2113, %2116
  %2118 = inttoptr i64 %2117 to ptr
  %2119 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 0
  %2120 = load ptr, ptr %2119, align 8, !tbaa !15
  %2121 = getelementptr inbounds %struct.otri, ptr %25, i32 0, i32 1
  %2122 = load i32, ptr %2121, align 8, !tbaa !21
  %2123 = sext i32 %2122 to i64
  %2124 = getelementptr inbounds ptr, ptr %2120, i64 %2123
  store ptr %2118, ptr %2124, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %2126 = load ptr, ptr %2125, align 8, !tbaa !15
  %2127 = ptrtoint ptr %2126 to i64
  %2128 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %2129 = load i32, ptr %2128, align 8, !tbaa !21
  %2130 = sext i32 %2129 to i64
  %2131 = or i64 %2127, %2130
  %2132 = inttoptr i64 %2131 to ptr
  %2133 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2134 = load ptr, ptr %2133, align 8, !tbaa !15
  %2135 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2136 = load i32, ptr %2135, align 8, !tbaa !21
  %2137 = sext i32 %2136 to i64
  %2138 = getelementptr inbounds ptr, ptr %2134, i64 %2137
  store ptr %2132, ptr %2138, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2140 = load ptr, ptr %2139, align 8, !tbaa !15
  %2141 = ptrtoint ptr %2140 to i64
  %2142 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2143 = load i32, ptr %2142, align 8, !tbaa !21
  %2144 = sext i32 %2143 to i64
  %2145 = or i64 %2141, %2144
  %2146 = inttoptr i64 %2145 to ptr
  %2147 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 0
  %2148 = load ptr, ptr %2147, align 8, !tbaa !15
  %2149 = getelementptr inbounds %struct.otri, ptr %26, i32 0, i32 1
  %2150 = load i32, ptr %2149, align 8, !tbaa !21
  %2151 = sext i32 %2150 to i64
  %2152 = getelementptr inbounds ptr, ptr %2148, i64 %2151
  store ptr %2146, ptr %2152, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  %2154 = load ptr, ptr %2153, align 8, !tbaa !15
  %2155 = ptrtoint ptr %2154 to i64
  %2156 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %2157 = load i32, ptr %2156, align 8, !tbaa !21
  %2158 = sext i32 %2157 to i64
  %2159 = or i64 %2155, %2158
  %2160 = inttoptr i64 %2159 to ptr
  %2161 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2162 = load ptr, ptr %2161, align 8, !tbaa !15
  %2163 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2164 = load i32, ptr %2163, align 8, !tbaa !21
  %2165 = sext i32 %2164 to i64
  %2166 = getelementptr inbounds ptr, ptr %2162, i64 %2165
  store ptr %2160, ptr %2166, align 8, !tbaa !5
  %2167 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2168 = load ptr, ptr %2167, align 8, !tbaa !15
  %2169 = ptrtoint ptr %2168 to i64
  %2170 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2171 = load i32, ptr %2170, align 8, !tbaa !21
  %2172 = sext i32 %2171 to i64
  %2173 = or i64 %2169, %2172
  %2174 = inttoptr i64 %2173 to ptr
  %2175 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 0
  %2176 = load ptr, ptr %2175, align 8, !tbaa !15
  %2177 = getelementptr inbounds %struct.otri, ptr %28, i32 0, i32 1
  %2178 = load i32, ptr %2177, align 8, !tbaa !21
  %2179 = sext i32 %2178 to i64
  %2180 = getelementptr inbounds ptr, ptr %2176, i64 %2179
  store ptr %2174, ptr %2180, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 0
  %2182 = load ptr, ptr %2181, align 8, !tbaa !15
  %2183 = ptrtoint ptr %2182 to i64
  %2184 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 1
  %2185 = load i32, ptr %2184, align 8, !tbaa !21
  %2186 = sext i32 %2185 to i64
  %2187 = or i64 %2183, %2186
  %2188 = inttoptr i64 %2187 to ptr
  %2189 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2190 = load ptr, ptr %2189, align 8, !tbaa !15
  %2191 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2192 = load i32, ptr %2191, align 8, !tbaa !21
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds ptr, ptr %2190, i64 %2193
  store ptr %2188, ptr %2194, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2196 = load ptr, ptr %2195, align 8, !tbaa !15
  %2197 = ptrtoint ptr %2196 to i64
  %2198 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2199 = load i32, ptr %2198, align 8, !tbaa !21
  %2200 = sext i32 %2199 to i64
  %2201 = or i64 %2197, %2200
  %2202 = inttoptr i64 %2201 to ptr
  %2203 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 0
  %2204 = load ptr, ptr %2203, align 8, !tbaa !15
  %2205 = getelementptr inbounds %struct.otri, ptr %27, i32 0, i32 1
  %2206 = load i32, ptr %2205, align 8, !tbaa !21
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds ptr, ptr %2204, i64 %2207
  store ptr %2202, ptr %2208, align 8, !tbaa !5
  %2209 = load ptr, ptr %9, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.mesh, ptr %2209, i32 0, i32 35
  %2211 = load i32, ptr %2210, align 8, !tbaa !24
  %2212 = icmp ne i32 %2211, 0
  br i1 %2212, label %2213, label %2482

2213:                                             ; preds = %1980
  %2214 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2215 = load ptr, ptr %2214, align 8, !tbaa !15
  %2216 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2217 = load i32, ptr %2216, align 8, !tbaa !21
  %2218 = add nsw i32 6, %2217
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds ptr, ptr %2215, i64 %2219
  %2221 = load ptr, ptr %2220, align 8, !tbaa !5
  store ptr %2221, ptr %57, align 8, !tbaa !5
  %2222 = load ptr, ptr %57, align 8, !tbaa !5
  %2223 = ptrtoint ptr %2222 to i64
  %2224 = and i64 %2223, 1
  %2225 = trunc i64 %2224 to i32
  %2226 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 1
  store i32 %2225, ptr %2226, align 8, !tbaa !25
  %2227 = load ptr, ptr %57, align 8, !tbaa !5
  %2228 = ptrtoint ptr %2227 to i64
  %2229 = and i64 %2228, -4
  %2230 = inttoptr i64 %2229 to ptr
  %2231 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 0
  store ptr %2230, ptr %2231, align 8, !tbaa !27
  %2232 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2233 = load ptr, ptr %2232, align 8, !tbaa !15
  %2234 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2235 = load i32, ptr %2234, align 8, !tbaa !21
  %2236 = add nsw i32 6, %2235
  %2237 = sext i32 %2236 to i64
  %2238 = getelementptr inbounds ptr, ptr %2233, i64 %2237
  %2239 = load ptr, ptr %2238, align 8, !tbaa !5
  store ptr %2239, ptr %57, align 8, !tbaa !5
  %2240 = load ptr, ptr %57, align 8, !tbaa !5
  %2241 = ptrtoint ptr %2240 to i64
  %2242 = and i64 %2241, 1
  %2243 = trunc i64 %2242 to i32
  %2244 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  store i32 %2243, ptr %2244, align 8, !tbaa !25
  %2245 = load ptr, ptr %57, align 8, !tbaa !5
  %2246 = ptrtoint ptr %2245 to i64
  %2247 = and i64 %2246, -4
  %2248 = inttoptr i64 %2247 to ptr
  %2249 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  store ptr %2248, ptr %2249, align 8, !tbaa !27
  %2250 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2251 = load ptr, ptr %2250, align 8, !tbaa !15
  %2252 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2253 = load i32, ptr %2252, align 8, !tbaa !21
  %2254 = add nsw i32 6, %2253
  %2255 = sext i32 %2254 to i64
  %2256 = getelementptr inbounds ptr, ptr %2251, i64 %2255
  %2257 = load ptr, ptr %2256, align 8, !tbaa !5
  store ptr %2257, ptr %57, align 8, !tbaa !5
  %2258 = load ptr, ptr %57, align 8, !tbaa !5
  %2259 = ptrtoint ptr %2258 to i64
  %2260 = and i64 %2259, 1
  %2261 = trunc i64 %2260 to i32
  %2262 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  store i32 %2261, ptr %2262, align 8, !tbaa !25
  %2263 = load ptr, ptr %57, align 8, !tbaa !5
  %2264 = ptrtoint ptr %2263 to i64
  %2265 = and i64 %2264, -4
  %2266 = inttoptr i64 %2265 to ptr
  %2267 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  store ptr %2266, ptr %2267, align 8, !tbaa !27
  %2268 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2269 = load ptr, ptr %2268, align 8, !tbaa !15
  %2270 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2271 = load i32, ptr %2270, align 8, !tbaa !21
  %2272 = add nsw i32 6, %2271
  %2273 = sext i32 %2272 to i64
  %2274 = getelementptr inbounds ptr, ptr %2269, i64 %2273
  %2275 = load ptr, ptr %2274, align 8, !tbaa !5
  store ptr %2275, ptr %57, align 8, !tbaa !5
  %2276 = load ptr, ptr %57, align 8, !tbaa !5
  %2277 = ptrtoint ptr %2276 to i64
  %2278 = and i64 %2277, 1
  %2279 = trunc i64 %2278 to i32
  %2280 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  store i32 %2279, ptr %2280, align 8, !tbaa !25
  %2281 = load ptr, ptr %57, align 8, !tbaa !5
  %2282 = ptrtoint ptr %2281 to i64
  %2283 = and i64 %2282, -4
  %2284 = inttoptr i64 %2283 to ptr
  %2285 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  store ptr %2284, ptr %2285, align 8, !tbaa !27
  %2286 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 0
  %2287 = load ptr, ptr %2286, align 8, !tbaa !27
  %2288 = load ptr, ptr %9, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.mesh, ptr %2288, i32 0, i32 50
  %2290 = load ptr, ptr %2289, align 8, !tbaa !28
  %2291 = icmp eq ptr %2287, %2290
  br i1 %2291, label %2292, label %2303

2292:                                             ; preds = %2213
  %2293 = load ptr, ptr %9, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.mesh, ptr %2293, i32 0, i32 50
  %2295 = load ptr, ptr %2294, align 8, !tbaa !28
  %2296 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2297 = load ptr, ptr %2296, align 8, !tbaa !15
  %2298 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2299 = load i32, ptr %2298, align 8, !tbaa !21
  %2300 = add nsw i32 6, %2299
  %2301 = sext i32 %2300 to i64
  %2302 = getelementptr inbounds ptr, ptr %2297, i64 %2301
  store ptr %2295, ptr %2302, align 8, !tbaa !5
  br label %2334

2303:                                             ; preds = %2213
  %2304 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 0
  %2305 = load ptr, ptr %2304, align 8, !tbaa !27
  %2306 = ptrtoint ptr %2305 to i64
  %2307 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 1
  %2308 = load i32, ptr %2307, align 8, !tbaa !25
  %2309 = sext i32 %2308 to i64
  %2310 = or i64 %2306, %2309
  %2311 = inttoptr i64 %2310 to ptr
  %2312 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2313 = load ptr, ptr %2312, align 8, !tbaa !15
  %2314 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2315 = load i32, ptr %2314, align 8, !tbaa !21
  %2316 = add nsw i32 6, %2315
  %2317 = sext i32 %2316 to i64
  %2318 = getelementptr inbounds ptr, ptr %2313, i64 %2317
  store ptr %2311, ptr %2318, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %2320 = load ptr, ptr %2319, align 8, !tbaa !15
  %2321 = ptrtoint ptr %2320 to i64
  %2322 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 1
  %2323 = load i32, ptr %2322, align 8, !tbaa !21
  %2324 = sext i32 %2323 to i64
  %2325 = or i64 %2321, %2324
  %2326 = inttoptr i64 %2325 to ptr
  %2327 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 0
  %2328 = load ptr, ptr %2327, align 8, !tbaa !27
  %2329 = getelementptr inbounds %struct.osub, ptr %32, i32 0, i32 1
  %2330 = load i32, ptr %2329, align 8, !tbaa !25
  %2331 = add nsw i32 6, %2330
  %2332 = sext i32 %2331 to i64
  %2333 = getelementptr inbounds ptr, ptr %2328, i64 %2332
  store ptr %2326, ptr %2333, align 8, !tbaa !5
  br label %2334

2334:                                             ; preds = %2303, %2292
  %2335 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %2336 = load ptr, ptr %2335, align 8, !tbaa !27
  %2337 = load ptr, ptr %9, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.mesh, ptr %2337, i32 0, i32 50
  %2339 = load ptr, ptr %2338, align 8, !tbaa !28
  %2340 = icmp eq ptr %2336, %2339
  br i1 %2340, label %2341, label %2352

2341:                                             ; preds = %2334
  %2342 = load ptr, ptr %9, align 8, !tbaa !5
  %2343 = getelementptr inbounds %struct.mesh, ptr %2342, i32 0, i32 50
  %2344 = load ptr, ptr %2343, align 8, !tbaa !28
  %2345 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2346 = load ptr, ptr %2345, align 8, !tbaa !15
  %2347 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2348 = load i32, ptr %2347, align 8, !tbaa !21
  %2349 = add nsw i32 6, %2348
  %2350 = sext i32 %2349 to i64
  %2351 = getelementptr inbounds ptr, ptr %2346, i64 %2350
  store ptr %2344, ptr %2351, align 8, !tbaa !5
  br label %2383

2352:                                             ; preds = %2334
  %2353 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %2354 = load ptr, ptr %2353, align 8, !tbaa !27
  %2355 = ptrtoint ptr %2354 to i64
  %2356 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  %2357 = load i32, ptr %2356, align 8, !tbaa !25
  %2358 = sext i32 %2357 to i64
  %2359 = or i64 %2355, %2358
  %2360 = inttoptr i64 %2359 to ptr
  %2361 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2362 = load ptr, ptr %2361, align 8, !tbaa !15
  %2363 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2364 = load i32, ptr %2363, align 8, !tbaa !21
  %2365 = add nsw i32 6, %2364
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds ptr, ptr %2362, i64 %2366
  store ptr %2360, ptr %2367, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 0
  %2369 = load ptr, ptr %2368, align 8, !tbaa !15
  %2370 = ptrtoint ptr %2369 to i64
  %2371 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2372 = load i32, ptr %2371, align 8, !tbaa !21
  %2373 = sext i32 %2372 to i64
  %2374 = or i64 %2370, %2373
  %2375 = inttoptr i64 %2374 to ptr
  %2376 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 0
  %2377 = load ptr, ptr %2376, align 8, !tbaa !27
  %2378 = getelementptr inbounds %struct.osub, ptr %30, i32 0, i32 1
  %2379 = load i32, ptr %2378, align 8, !tbaa !25
  %2380 = add nsw i32 6, %2379
  %2381 = sext i32 %2380 to i64
  %2382 = getelementptr inbounds ptr, ptr %2377, i64 %2381
  store ptr %2375, ptr %2382, align 8, !tbaa !5
  br label %2383

2383:                                             ; preds = %2352, %2341
  %2384 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %2385 = load ptr, ptr %2384, align 8, !tbaa !27
  %2386 = load ptr, ptr %9, align 8, !tbaa !5
  %2387 = getelementptr inbounds %struct.mesh, ptr %2386, i32 0, i32 50
  %2388 = load ptr, ptr %2387, align 8, !tbaa !28
  %2389 = icmp eq ptr %2385, %2388
  br i1 %2389, label %2390, label %2401

2390:                                             ; preds = %2383
  %2391 = load ptr, ptr %9, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.mesh, ptr %2391, i32 0, i32 50
  %2393 = load ptr, ptr %2392, align 8, !tbaa !28
  %2394 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2395 = load ptr, ptr %2394, align 8, !tbaa !15
  %2396 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2397 = load i32, ptr %2396, align 8, !tbaa !21
  %2398 = add nsw i32 6, %2397
  %2399 = sext i32 %2398 to i64
  %2400 = getelementptr inbounds ptr, ptr %2395, i64 %2399
  store ptr %2393, ptr %2400, align 8, !tbaa !5
  br label %2432

2401:                                             ; preds = %2383
  %2402 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %2403 = load ptr, ptr %2402, align 8, !tbaa !27
  %2404 = ptrtoint ptr %2403 to i64
  %2405 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %2406 = load i32, ptr %2405, align 8, !tbaa !25
  %2407 = sext i32 %2406 to i64
  %2408 = or i64 %2404, %2407
  %2409 = inttoptr i64 %2408 to ptr
  %2410 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2411 = load ptr, ptr %2410, align 8, !tbaa !15
  %2412 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2413 = load i32, ptr %2412, align 8, !tbaa !21
  %2414 = add nsw i32 6, %2413
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds ptr, ptr %2411, i64 %2415
  store ptr %2409, ptr %2416, align 8, !tbaa !5
  %2417 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 0
  %2418 = load ptr, ptr %2417, align 8, !tbaa !15
  %2419 = ptrtoint ptr %2418 to i64
  %2420 = getelementptr inbounds %struct.otri, ptr %18, i32 0, i32 1
  %2421 = load i32, ptr %2420, align 8, !tbaa !21
  %2422 = sext i32 %2421 to i64
  %2423 = or i64 %2419, %2422
  %2424 = inttoptr i64 %2423 to ptr
  %2425 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %2426 = load ptr, ptr %2425, align 8, !tbaa !27
  %2427 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  %2428 = load i32, ptr %2427, align 8, !tbaa !25
  %2429 = add nsw i32 6, %2428
  %2430 = sext i32 %2429 to i64
  %2431 = getelementptr inbounds ptr, ptr %2426, i64 %2430
  store ptr %2424, ptr %2431, align 8, !tbaa !5
  br label %2432

2432:                                             ; preds = %2401, %2390
  %2433 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %2434 = load ptr, ptr %2433, align 8, !tbaa !27
  %2435 = load ptr, ptr %9, align 8, !tbaa !5
  %2436 = getelementptr inbounds %struct.mesh, ptr %2435, i32 0, i32 50
  %2437 = load ptr, ptr %2436, align 8, !tbaa !28
  %2438 = icmp eq ptr %2434, %2437
  br i1 %2438, label %2439, label %2450

2439:                                             ; preds = %2432
  %2440 = load ptr, ptr %9, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.mesh, ptr %2440, i32 0, i32 50
  %2442 = load ptr, ptr %2441, align 8, !tbaa !28
  %2443 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2444 = load ptr, ptr %2443, align 8, !tbaa !15
  %2445 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2446 = load i32, ptr %2445, align 8, !tbaa !21
  %2447 = add nsw i32 6, %2446
  %2448 = sext i32 %2447 to i64
  %2449 = getelementptr inbounds ptr, ptr %2444, i64 %2448
  store ptr %2442, ptr %2449, align 8, !tbaa !5
  br label %2481

2450:                                             ; preds = %2432
  %2451 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %2452 = load ptr, ptr %2451, align 8, !tbaa !27
  %2453 = ptrtoint ptr %2452 to i64
  %2454 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  %2455 = load i32, ptr %2454, align 8, !tbaa !25
  %2456 = sext i32 %2455 to i64
  %2457 = or i64 %2453, %2456
  %2458 = inttoptr i64 %2457 to ptr
  %2459 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2460 = load ptr, ptr %2459, align 8, !tbaa !15
  %2461 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2462 = load i32, ptr %2461, align 8, !tbaa !21
  %2463 = add nsw i32 6, %2462
  %2464 = sext i32 %2463 to i64
  %2465 = getelementptr inbounds ptr, ptr %2460, i64 %2464
  store ptr %2458, ptr %2465, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %2467 = load ptr, ptr %2466, align 8, !tbaa !15
  %2468 = ptrtoint ptr %2467 to i64
  %2469 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %2470 = load i32, ptr %2469, align 8, !tbaa !21
  %2471 = sext i32 %2470 to i64
  %2472 = or i64 %2468, %2471
  %2473 = inttoptr i64 %2472 to ptr
  %2474 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 0
  %2475 = load ptr, ptr %2474, align 8, !tbaa !27
  %2476 = getelementptr inbounds %struct.osub, ptr %33, i32 0, i32 1
  %2477 = load i32, ptr %2476, align 8, !tbaa !25
  %2478 = add nsw i32 6, %2477
  %2479 = sext i32 %2478 to i64
  %2480 = getelementptr inbounds ptr, ptr %2475, i64 %2479
  store ptr %2473, ptr %2480, align 8, !tbaa !5
  br label %2481

2481:                                             ; preds = %2450, %2439
  br label %2482

2482:                                             ; preds = %2481, %1980
  %2483 = load ptr, ptr %45, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2485 = load ptr, ptr %2484, align 8, !tbaa !15
  %2486 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2487 = load i32, ptr %2486, align 8, !tbaa !21
  %2488 = sext i32 %2487 to i64
  %2489 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2488
  %2490 = load i32, ptr %2489, align 4, !tbaa !9
  %2491 = add nsw i32 %2490, 3
  %2492 = sext i32 %2491 to i64
  %2493 = getelementptr inbounds ptr, ptr %2485, i64 %2492
  store ptr %2483, ptr %2493, align 8, !tbaa !5
  %2494 = load ptr, ptr %11, align 8, !tbaa !5
  %2495 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2496 = load ptr, ptr %2495, align 8, !tbaa !15
  %2497 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2498 = load i32, ptr %2497, align 8, !tbaa !21
  %2499 = sext i32 %2498 to i64
  %2500 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2499
  %2501 = load i32, ptr %2500, align 4, !tbaa !9
  %2502 = add nsw i32 %2501, 3
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds ptr, ptr %2496, i64 %2503
  store ptr %2494, ptr %2504, align 8, !tbaa !5
  %2505 = load ptr, ptr %42, align 8, !tbaa !5
  %2506 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2507 = load ptr, ptr %2506, align 8, !tbaa !15
  %2508 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2509 = load i32, ptr %2508, align 8, !tbaa !21
  %2510 = add nsw i32 %2509, 3
  %2511 = sext i32 %2510 to i64
  %2512 = getelementptr inbounds ptr, ptr %2507, i64 %2511
  store ptr %2505, ptr %2512, align 8, !tbaa !5
  %2513 = load ptr, ptr %11, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2515 = load ptr, ptr %2514, align 8, !tbaa !15
  %2516 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %2517 = load i32, ptr %2516, align 8, !tbaa !21
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2518
  %2520 = load i32, ptr %2519, align 4, !tbaa !9
  %2521 = add nsw i32 %2520, 3
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds ptr, ptr %2515, i64 %2522
  store ptr %2513, ptr %2523, align 8, !tbaa !5
  %2524 = load ptr, ptr %45, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2526 = load ptr, ptr %2525, align 8, !tbaa !15
  %2527 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %2528 = load i32, ptr %2527, align 8, !tbaa !21
  %2529 = sext i32 %2528 to i64
  %2530 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2529
  %2531 = load i32, ptr %2530, align 4, !tbaa !9
  %2532 = add nsw i32 %2531, 3
  %2533 = sext i32 %2532 to i64
  %2534 = getelementptr inbounds ptr, ptr %2526, i64 %2533
  store ptr %2524, ptr %2534, align 8, !tbaa !5
  %2535 = load ptr, ptr %41, align 8, !tbaa !5
  %2536 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2537 = load ptr, ptr %2536, align 8, !tbaa !15
  %2538 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 1
  %2539 = load i32, ptr %2538, align 8, !tbaa !21
  %2540 = add nsw i32 %2539, 3
  %2541 = sext i32 %2540 to i64
  %2542 = getelementptr inbounds ptr, ptr %2537, i64 %2541
  store ptr %2535, ptr %2542, align 8, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %2543

2543:                                             ; preds = %2592, %2482
  %2544 = load i32, ptr %55, align 4, !tbaa !9
  %2545 = load ptr, ptr %9, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.mesh, ptr %2545, i32 0, i32 27
  %2547 = load i32, ptr %2546, align 8, !tbaa !35
  %2548 = icmp slt i32 %2544, %2547
  br i1 %2548, label %2549, label %2595

2549:                                             ; preds = %2543
  %2550 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2551 = load ptr, ptr %2550, align 8, !tbaa !15
  %2552 = load ptr, ptr %9, align 8, !tbaa !5
  %2553 = getelementptr inbounds %struct.mesh, ptr %2552, i32 0, i32 33
  %2554 = load i32, ptr %2553, align 8, !tbaa !36
  %2555 = load i32, ptr %55, align 4, !tbaa !9
  %2556 = add nsw i32 %2554, %2555
  %2557 = sext i32 %2556 to i64
  %2558 = getelementptr inbounds double, ptr %2551, i64 %2557
  %2559 = load double, ptr %2558, align 8, !tbaa !14
  %2560 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2561 = load ptr, ptr %2560, align 8, !tbaa !15
  %2562 = load ptr, ptr %9, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.mesh, ptr %2562, i32 0, i32 33
  %2564 = load i32, ptr %2563, align 8, !tbaa !36
  %2565 = load i32, ptr %55, align 4, !tbaa !9
  %2566 = add nsw i32 %2564, %2565
  %2567 = sext i32 %2566 to i64
  %2568 = getelementptr inbounds double, ptr %2561, i64 %2567
  %2569 = load double, ptr %2568, align 8, !tbaa !14
  %2570 = fadd double %2559, %2569
  %2571 = fmul double 5.000000e-01, %2570
  store double %2571, ptr %48, align 8, !tbaa !14
  %2572 = load double, ptr %48, align 8, !tbaa !14
  %2573 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2574 = load ptr, ptr %2573, align 8, !tbaa !15
  %2575 = load ptr, ptr %9, align 8, !tbaa !5
  %2576 = getelementptr inbounds %struct.mesh, ptr %2575, i32 0, i32 33
  %2577 = load i32, ptr %2576, align 8, !tbaa !36
  %2578 = load i32, ptr %55, align 4, !tbaa !9
  %2579 = add nsw i32 %2577, %2578
  %2580 = sext i32 %2579 to i64
  %2581 = getelementptr inbounds double, ptr %2574, i64 %2580
  store double %2572, ptr %2581, align 8, !tbaa !14
  %2582 = load double, ptr %48, align 8, !tbaa !14
  %2583 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2584 = load ptr, ptr %2583, align 8, !tbaa !15
  %2585 = load ptr, ptr %9, align 8, !tbaa !5
  %2586 = getelementptr inbounds %struct.mesh, ptr %2585, i32 0, i32 33
  %2587 = load i32, ptr %2586, align 8, !tbaa !36
  %2588 = load i32, ptr %55, align 4, !tbaa !9
  %2589 = add nsw i32 %2587, %2588
  %2590 = sext i32 %2589 to i64
  %2591 = getelementptr inbounds double, ptr %2584, i64 %2590
  store double %2582, ptr %2591, align 8, !tbaa !14
  br label %2592

2592:                                             ; preds = %2549
  %2593 = load i32, ptr %55, align 4, !tbaa !9
  %2594 = add nsw i32 %2593, 1
  store i32 %2594, ptr %55, align 4, !tbaa !9
  br label %2543, !llvm.loop !52

2595:                                             ; preds = %2543
  %2596 = load ptr, ptr %10, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.behavior, ptr %2596, i32 0, i32 3
  %2598 = load i32, ptr %2597, align 4, !tbaa !39
  %2599 = icmp ne i32 %2598, 0
  br i1 %2599, label %2600, label %2657

2600:                                             ; preds = %2595
  %2601 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2602 = load ptr, ptr %2601, align 8, !tbaa !15
  %2603 = load ptr, ptr %9, align 8, !tbaa !5
  %2604 = getelementptr inbounds %struct.mesh, ptr %2603, i32 0, i32 34
  %2605 = load i32, ptr %2604, align 4, !tbaa !40
  %2606 = sext i32 %2605 to i64
  %2607 = getelementptr inbounds double, ptr %2602, i64 %2606
  %2608 = load double, ptr %2607, align 8, !tbaa !14
  %2609 = fcmp ole double %2608, 0.000000e+00
  br i1 %2609, label %2620, label %2610

2610:                                             ; preds = %2600
  %2611 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2612 = load ptr, ptr %2611, align 8, !tbaa !15
  %2613 = load ptr, ptr %9, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.mesh, ptr %2613, i32 0, i32 34
  %2615 = load i32, ptr %2614, align 4, !tbaa !40
  %2616 = sext i32 %2615 to i64
  %2617 = getelementptr inbounds double, ptr %2612, i64 %2616
  %2618 = load double, ptr %2617, align 8, !tbaa !14
  %2619 = fcmp ole double %2618, 0.000000e+00
  br i1 %2619, label %2620, label %2621

2620:                                             ; preds = %2610, %2600
  store double -1.000000e+00, ptr %49, align 8, !tbaa !14
  br label %2640

2621:                                             ; preds = %2610
  %2622 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2623 = load ptr, ptr %2622, align 8, !tbaa !15
  %2624 = load ptr, ptr %9, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.mesh, ptr %2624, i32 0, i32 34
  %2626 = load i32, ptr %2625, align 4, !tbaa !40
  %2627 = sext i32 %2626 to i64
  %2628 = getelementptr inbounds double, ptr %2623, i64 %2627
  %2629 = load double, ptr %2628, align 8, !tbaa !14
  %2630 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2631 = load ptr, ptr %2630, align 8, !tbaa !15
  %2632 = load ptr, ptr %9, align 8, !tbaa !5
  %2633 = getelementptr inbounds %struct.mesh, ptr %2632, i32 0, i32 34
  %2634 = load i32, ptr %2633, align 4, !tbaa !40
  %2635 = sext i32 %2634 to i64
  %2636 = getelementptr inbounds double, ptr %2631, i64 %2635
  %2637 = load double, ptr %2636, align 8, !tbaa !14
  %2638 = fadd double %2629, %2637
  %2639 = fmul double 5.000000e-01, %2638
  store double %2639, ptr %49, align 8, !tbaa !14
  br label %2640

2640:                                             ; preds = %2621, %2620
  %2641 = load double, ptr %49, align 8, !tbaa !14
  %2642 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2643 = load ptr, ptr %2642, align 8, !tbaa !15
  %2644 = load ptr, ptr %9, align 8, !tbaa !5
  %2645 = getelementptr inbounds %struct.mesh, ptr %2644, i32 0, i32 34
  %2646 = load i32, ptr %2645, align 4, !tbaa !40
  %2647 = sext i32 %2646 to i64
  %2648 = getelementptr inbounds double, ptr %2643, i64 %2647
  store double %2641, ptr %2648, align 8, !tbaa !14
  %2649 = load double, ptr %49, align 8, !tbaa !14
  %2650 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2651 = load ptr, ptr %2650, align 8, !tbaa !15
  %2652 = load ptr, ptr %9, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.mesh, ptr %2652, i32 0, i32 34
  %2654 = load i32, ptr %2653, align 4, !tbaa !40
  %2655 = sext i32 %2654 to i64
  %2656 = getelementptr inbounds double, ptr %2651, i64 %2655
  store double %2649, ptr %2656, align 8, !tbaa !14
  br label %2657

2657:                                             ; preds = %2640, %2595
  %2658 = load ptr, ptr %9, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.mesh, ptr %2658, i32 0, i32 36
  %2660 = load i32, ptr %2659, align 4, !tbaa !43
  %2661 = icmp ne i32 %2660, 0
  br i1 %2661, label %2662, label %2684

2662:                                             ; preds = %2657
  %2663 = load ptr, ptr %9, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.mesh, ptr %2663, i32 0, i32 6
  %2665 = call ptr @poolalloc(ptr noundef %2664)
  store ptr %2665, ptr %39, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2667 = load ptr, ptr %2666, align 8, !tbaa !15
  %2668 = ptrtoint ptr %2667 to i64
  %2669 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2670 = load i32, ptr %2669, align 8, !tbaa !21
  %2671 = sext i32 %2670 to i64
  %2672 = or i64 %2668, %2671
  %2673 = inttoptr i64 %2672 to ptr
  %2674 = load ptr, ptr %39, align 8, !tbaa !5
  %2675 = getelementptr inbounds %struct.flipstacker, ptr %2674, i32 0, i32 0
  store ptr %2673, ptr %2675, align 8, !tbaa !45
  %2676 = load ptr, ptr %9, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.mesh, ptr %2676, i32 0, i32 12
  %2678 = load ptr, ptr %2677, align 8, !tbaa !44
  %2679 = load ptr, ptr %39, align 8, !tbaa !5
  %2680 = getelementptr inbounds %struct.flipstacker, ptr %2679, i32 0, i32 1
  store ptr %2678, ptr %2680, align 8, !tbaa !47
  %2681 = load ptr, ptr %39, align 8, !tbaa !5
  %2682 = load ptr, ptr %9, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.mesh, ptr %2682, i32 0, i32 12
  store ptr %2681, ptr %2683, align 8, !tbaa !44
  br label %2684

2684:                                             ; preds = %2662, %2657
  %2685 = load ptr, ptr %10, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.behavior, ptr %2685, i32 0, i32 29
  %2687 = load i32, ptr %2686, align 4, !tbaa !11
  %2688 = icmp sgt i32 %2687, 2
  br i1 %2688, label %2689, label %2702

2689:                                             ; preds = %2684
  %2690 = call i32 (ptr, ...) @printf(ptr noundef @.str.954)
  %2691 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  %2692 = load i32, ptr %2691, align 8, !tbaa !21
  %2693 = sext i32 %2692 to i64
  %2694 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2693
  %2695 = load i32, ptr %2694, align 4, !tbaa !9
  %2696 = getelementptr inbounds %struct.otri, ptr %20, i32 0, i32 1
  store i32 %2695, ptr %2696, align 8, !tbaa !21
  %2697 = load ptr, ptr %9, align 8, !tbaa !5
  %2698 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %2697, ptr noundef %2698, ptr noundef %20)
  %2699 = call i32 (ptr, ...) @printf(ptr noundef @.str.955)
  %2700 = load ptr, ptr %9, align 8, !tbaa !5
  %2701 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %2700, ptr noundef %2701, ptr noundef %16)
  br label %2702

2702:                                             ; preds = %2689, %2684
  %2703 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2704 = load i32, ptr %2703, align 8, !tbaa !21
  %2705 = sext i32 %2704 to i64
  %2706 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2705
  %2707 = load i32, ptr %2706, align 4, !tbaa !9
  %2708 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %2707, ptr %2708, align 8, !tbaa !21
  %2709 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %2709, ptr %41, align 8, !tbaa !5
  br label %2710

2710:                                             ; preds = %2702, %1977
  br label %2711

2711:                                             ; preds = %2710, %1883
  br label %2712

2712:                                             ; preds = %2711, %1853
  %2713 = load i32, ptr %52, align 4, !tbaa !9
  %2714 = icmp ne i32 %2713, 0
  br i1 %2714, label %2806, label %2715

2715:                                             ; preds = %2712
  %2716 = load i32, ptr %15, align 4, !tbaa !9
  %2717 = icmp ne i32 %2716, 0
  br i1 %2717, label %2718, label %2721

2718:                                             ; preds = %2715
  %2719 = load ptr, ptr %9, align 8, !tbaa !5
  %2720 = load ptr, ptr %10, align 8, !tbaa !5
  call void @testtriangle(ptr noundef %2719, ptr noundef %2720, ptr noundef %16)
  br label %2721

2721:                                             ; preds = %2718, %2715
  %2722 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2723 = load i32, ptr %2722, align 8, !tbaa !21
  %2724 = sext i32 %2723 to i64
  %2725 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2724
  %2726 = load i32, ptr %2725, align 4, !tbaa !9
  %2727 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %2726, ptr %2727, align 8, !tbaa !21
  %2728 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2729 = load ptr, ptr %2728, align 8, !tbaa !15
  %2730 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2731 = load i32, ptr %2730, align 8, !tbaa !21
  %2732 = sext i32 %2731 to i64
  %2733 = getelementptr inbounds ptr, ptr %2729, i64 %2732
  %2734 = load ptr, ptr %2733, align 8, !tbaa !5
  store ptr %2734, ptr %56, align 8, !tbaa !5
  %2735 = load ptr, ptr %56, align 8, !tbaa !5
  %2736 = ptrtoint ptr %2735 to i64
  %2737 = and i64 %2736, 3
  %2738 = trunc i64 %2737 to i32
  %2739 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 1
  store i32 %2738, ptr %2739, align 8, !tbaa !21
  %2740 = load ptr, ptr %56, align 8, !tbaa !5
  %2741 = ptrtoint ptr %2740 to i64
  %2742 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 1
  %2743 = load i32, ptr %2742, align 8, !tbaa !21
  %2744 = sext i32 %2743 to i64
  %2745 = xor i64 %2741, %2744
  %2746 = inttoptr i64 %2745 to ptr
  %2747 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 0
  store ptr %2746, ptr %2747, align 8, !tbaa !15
  %2748 = load ptr, ptr %41, align 8, !tbaa !5
  %2749 = load ptr, ptr %40, align 8, !tbaa !5
  %2750 = icmp eq ptr %2748, %2749
  br i1 %2750, label %2758, label %2751

2751:                                             ; preds = %2721
  %2752 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 0
  %2753 = load ptr, ptr %2752, align 8, !tbaa !15
  %2754 = load ptr, ptr %9, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.mesh, ptr %2754, i32 0, i32 48
  %2756 = load ptr, ptr %2755, align 8, !tbaa !17
  %2757 = icmp eq ptr %2753, %2756
  br i1 %2757, label %2758, label %2784

2758:                                             ; preds = %2751, %2721
  %2759 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2760 = load ptr, ptr %2759, align 8, !tbaa !15
  %2761 = load ptr, ptr %12, align 8, !tbaa !5
  %2762 = getelementptr inbounds %struct.otri, ptr %2761, i32 0, i32 0
  store ptr %2760, ptr %2762, align 8, !tbaa !15
  %2763 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2764 = load i32, ptr %2763, align 8, !tbaa !21
  %2765 = sext i32 %2764 to i64
  %2766 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2765
  %2767 = load i32, ptr %2766, align 4, !tbaa !9
  %2768 = load ptr, ptr %12, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.otri, ptr %2768, i32 0, i32 1
  store i32 %2767, ptr %2769, align 8, !tbaa !21
  %2770 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2771 = load ptr, ptr %2770, align 8, !tbaa !15
  %2772 = load ptr, ptr %9, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.mesh, ptr %2772, i32 0, i32 52
  %2774 = getelementptr inbounds %struct.otri, ptr %2773, i32 0, i32 0
  store ptr %2771, ptr %2774, align 8, !tbaa !22
  %2775 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2776 = load i32, ptr %2775, align 8, !tbaa !21
  %2777 = sext i32 %2776 to i64
  %2778 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2777
  %2779 = load i32, ptr %2778, align 4, !tbaa !9
  %2780 = load ptr, ptr %9, align 8, !tbaa !5
  %2781 = getelementptr inbounds %struct.mesh, ptr %2780, i32 0, i32 52
  %2782 = getelementptr inbounds %struct.otri, ptr %2781, i32 0, i32 1
  store i32 %2779, ptr %2782, align 8, !tbaa !23
  %2783 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %2783, ptr %8, align 4
  store i32 1, ptr %58, align 4
  br label %2807

2784:                                             ; preds = %2751
  %2785 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 0
  %2786 = load ptr, ptr %2785, align 8, !tbaa !15
  %2787 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  store ptr %2786, ptr %2787, align 8, !tbaa !15
  %2788 = getelementptr inbounds %struct.otri, ptr %29, i32 0, i32 1
  %2789 = load i32, ptr %2788, align 8, !tbaa !21
  %2790 = sext i32 %2789 to i64
  %2791 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %2790
  %2792 = load i32, ptr %2791, align 4, !tbaa !9
  %2793 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %2792, ptr %2793, align 8, !tbaa !21
  %2794 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %2794, ptr %42, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2796 = load ptr, ptr %2795, align 8, !tbaa !15
  %2797 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2798 = load i32, ptr %2797, align 8, !tbaa !21
  %2799 = sext i32 %2798 to i64
  %2800 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2799
  %2801 = load i32, ptr %2800, align 4, !tbaa !9
  %2802 = add nsw i32 %2801, 3
  %2803 = sext i32 %2802 to i64
  %2804 = getelementptr inbounds ptr, ptr %2796, i64 %2803
  %2805 = load ptr, ptr %2804, align 8, !tbaa !5
  store ptr %2805, ptr %41, align 8, !tbaa !5
  br label %2806

2806:                                             ; preds = %2784, %2712
  br label %1810

2807:                                             ; preds = %2758, %305, %138
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #3
  %2808 = load i32, ptr %8, align 4
  ret i32 %2808
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 116}
!12 = !{!"behavior", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !7, i64 168, !7, i64 2216, !7, i64 4264, !7, i64 6312, !7, i64 8360, !7, i64 10408, !7, i64 12456, !7, i64 14504, !7, i64 16552, !7, i64 18600, !7, i64 20648, !7, i64 22696}
!13 = !{!"double", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!16, !6, i64 0}
!16 = !{!"otri", !6, i64 0, !10, i64 8}
!17 = !{!18, !6, i64 82856}
!18 = !{!"mesh", !19, i64 0, !19, i64 88, !19, i64 176, !19, i64 264, !19, i64 352, !19, i64 440, !19, i64 528, !19, i64 616, !7, i64 704, !7, i64 33472, !7, i64 66240, !10, i64 82624, !6, i64 82632, !13, i64 82640, !13, i64 82648, !13, i64 82656, !13, i64 82664, !13, i64 82672, !10, i64 82680, !10, i64 82684, !10, i64 82688, !10, i64 82692, !10, i64 82696, !10, i64 82700, !20, i64 82704, !10, i64 82712, !10, i64 82716, !10, i64 82720, !20, i64 82728, !10, i64 82736, !10, i64 82740, !10, i64 82744, !10, i64 82748, !10, i64 82752, !10, i64 82756, !10, i64 82760, !10, i64 82764, !10, i64 82768, !20, i64 82776, !20, i64 82784, !20, i64 82792, !20, i64 82800, !20, i64 82808, !20, i64 82816, !20, i64 82824, !6, i64 82832, !6, i64 82840, !6, i64 82848, !6, i64 82856, !6, i64 82864, !6, i64 82872, !6, i64 82880, !16, i64 82888}
!19 = !{!"memorypool", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !20, i64 64, !20, i64 72, !10, i64 80, !10, i64 84}
!20 = !{!"long", !7, i64 0}
!21 = !{!16, !10, i64 8}
!22 = !{!18, !6, i64 82888}
!23 = !{!18, !10, i64 82896}
!24 = !{!18, !10, i64 82760}
!25 = !{!26, !10, i64 8}
!26 = !{!"osub", !6, i64 0, !10, i64 8}
!27 = !{!26, !6, i64 0}
!28 = !{!18, !6, i64 82872}
!29 = !{!12, !10, i64 128}
!30 = !{!31, !6, i64 0}
!31 = !{!"badsubseg", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!31, !6, i64 8}
!33 = !{!31, !6, i64 16}
!34 = !{!18, !20, i64 82728}
!35 = !{!18, !10, i64 82720}
!36 = !{!18, !10, i64 82752}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!12, !10, i64 12}
!40 = !{!18, !10, i64 82756}
!41 = distinct !{!41, !38}
!42 = !{!18, !10, i64 82740}
!43 = !{!18, !10, i64 82764}
!44 = !{!18, !6, i64 82632}
!45 = !{!46, !6, i64 0}
!46 = !{!"flipstacker", !6, i64 0, !6, i64 8}
!47 = !{!46, !6, i64 8}
!48 = distinct !{!48, !38}
!49 = !{!18, !6, i64 82832}
!50 = !{!18, !6, i64 82840}
!51 = !{!18, !6, i64 82848}
!52 = distinct !{!52, !38}


; 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 }
%struct.osub = 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.945 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.954 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.955 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.957 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.958 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.959 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.960 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.961 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.962 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.963 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.964 = external hidden unnamed_addr constant [18 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19:                                               ; preds = %7
  %20 = load double, ptr %2, align 8, !tbaa !11
  %21 = getelementptr inbounds i8, ptr %2, i64 8
  %22 = load double, ptr %21, align 8, !tbaa !11
  %23 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.957, double noundef %20, double noundef %22)
  br label %24

24:                                               ; preds = %19, %7
  %25 = icmp eq ptr %4, null
  %26 = load ptr, ptr %3, align 8, !tbaa !12
  br i1 %25, label %27, label %.thread567

27:                                               ; preds = %24
  %28 = getelementptr inbounds i8, ptr %0, i64 82856
  %29 = load ptr, ptr %28, align 8, !tbaa !15
  %30 = icmp eq ptr %26, %29
  br i1 %30, label %31, label %40

31:                                               ; preds = %27
  store ptr %29, ptr %8, align 8, !tbaa !12
  %32 = getelementptr inbounds i8, ptr %8, i64 8
  %33 = load ptr, ptr %29, align 8, !tbaa !19
  %34 = ptrtoint ptr %33 to i64
  %35 = trunc i64 %34 to i32
  %36 = and i32 %35, 3
  store i32 %36, ptr %32, align 8, !tbaa !20
  %37 = and i64 %34, -4
  %38 = inttoptr i64 %37 to ptr
  store ptr %38, ptr %8, align 8, !tbaa !12
  %39 = call i32 @locate(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %8)
  br label %49

40:                                               ; preds = %27
  store ptr %26, ptr %8, align 8, !tbaa !12
  %41 = getelementptr inbounds i8, ptr %3, i64 8
  %42 = load i32, ptr %41, align 8, !tbaa !20
  %43 = getelementptr inbounds i8, ptr %8, i64 8
  store i32 %42, ptr %43, align 8, !tbaa !20
  %44 = call i32 @preciselocate(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %8, i32 noundef 1)
  br label %49

.thread567:                                       ; preds = %24
  store ptr %26, ptr %8, align 8, !tbaa !12
  %45 = getelementptr inbounds i8, ptr %3, i64 8
  %46 = load i32, ptr %45, align 8, !tbaa !20
  %47 = getelementptr inbounds i8, ptr %8, i64 8
  store i32 %46, ptr %47, align 8, !tbaa !20
  %48 = getelementptr inbounds i8, ptr %0, i64 82760
  br label %._crit_edge618

49:                                               ; preds = %31, %40
  %.0495 = phi i32 [ %39, %31 ], [ %44, %40 ]
  %50 = icmp eq i32 %.0495, 2
  br i1 %50, label %51, label %55

51:                                               ; preds = %49
  %52 = load ptr, ptr %8, align 8, !tbaa !12
  store ptr %52, ptr %3, align 8, !tbaa !12
  %53 = getelementptr inbounds i8, ptr %8, i64 8
  %54 = load i32, ptr %53, align 8, !tbaa !20
  br label %1157

55:                                               ; preds = %49
  %56 = and i32 %.0495, -3
  %or.cond = icmp eq i32 %56, 1
  br i1 %or.cond, label %57, label %541

57:                                               ; preds = %55
  %58 = getelementptr inbounds i8, ptr %0, i64 82760
  %59 = load i32, ptr %58, align 8, !tbaa !21
  %.not595 = icmp eq i32 %59, 0
  %.pre617 = load ptr, ptr %8, align 8, !tbaa !12
  %.phi.trans.insert = getelementptr inbounds i8, ptr %8, i64 8
  %.pre619 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !20
  br i1 %.not595, label %._crit_edge618, label %60

60:                                               ; preds = %57
  %61 = sext i32 %.pre619 to i64
  %62 = getelementptr ptr, ptr %.pre617, i64 %61
  %63 = getelementptr i8, ptr %62, i64 48
  %64 = load ptr, ptr %63, align 8, !tbaa !19
  %65 = ptrtoint ptr %64 to i64
  %66 = trunc i64 %65 to i32
  %67 = and i32 %66, 1
  %68 = and i64 %65, -4
  %69 = inttoptr i64 %68 to ptr
  %70 = getelementptr inbounds i8, ptr %0, i64 82872
  %71 = load ptr, ptr %70, align 8, !tbaa !22
  %.not537 = icmp eq ptr %71, %69
  br i1 %.not537, label %._crit_edge618, label %72

72:                                               ; preds = %60
  %.not556 = icmp eq i32 %5, 0
  br i1 %.not556, label %107, label %73

73:                                               ; preds = %72
  %74 = getelementptr inbounds i8, ptr %1, i64 128
  %75 = load i32, ptr %74, align 8, !tbaa !23
  switch i32 %75, label %82 [
    i32 1, label %76
    i32 2, label %107
  ]

76:                                               ; preds = %73
  %77 = load ptr, ptr %62, align 8, !tbaa !19
  %78 = ptrtoint ptr %77 to i64
  %79 = and i64 %78, -4
  %80 = inttoptr i64 %79 to ptr
  %81 = load ptr, ptr %28, align 8, !tbaa !15
  %.not579 = icmp eq ptr %81, %80
  br i1 %.not579, label %107, label %82

82:                                               ; preds = %73, %76
  %83 = getelementptr inbounds i8, ptr %0, i64 352
  %84 = call ptr @poolalloc(ptr noundef nonnull %83)
  %85 = and i64 %65, -3
  %86 = inttoptr i64 %85 to ptr
  store ptr %86, ptr %84, align 8, !tbaa !24
  %87 = or disjoint i32 %67, 2
  %88 = zext nneg i32 %87 to i64
  %89 = getelementptr inbounds ptr, ptr %69, i64 %88
  %90 = load ptr, ptr %89, align 8, !tbaa !19
  %91 = getelementptr inbounds i8, ptr %84, i64 8
  store ptr %90, ptr %91, align 8, !tbaa !26
  %92 = xor i32 %67, 3
  %93 = zext nneg i32 %92 to i64
  %94 = getelementptr inbounds ptr, ptr %69, i64 %93
  %95 = load ptr, ptr %94, align 8, !tbaa !19
  %96 = getelementptr inbounds i8, ptr %84, i64 16
  store ptr %95, ptr %96, align 8, !tbaa !27
  %97 = load i32, ptr %16, align 4, !tbaa !5
  %98 = icmp sgt i32 %97, 2
  br i1 %98, label %99, label %107

99:                                               ; preds = %82
  %100 = load double, ptr %90, align 8, !tbaa !11
  %101 = getelementptr inbounds i8, ptr %90, i64 8
  %102 = load double, ptr %101, align 8, !tbaa !11
  %103 = load double, ptr %95, align 8, !tbaa !11
  %104 = getelementptr inbounds i8, ptr %95, i64 8
  %105 = load double, ptr %104, align 8, !tbaa !11
  %106 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.945, double noundef %100, double noundef %102, double noundef %103, double noundef %105)
  br label %107

107:                                              ; preds = %73, %76, %99, %82, %72
  %108 = load ptr, ptr %8, align 8, !tbaa !12
  store ptr %108, ptr %3, align 8, !tbaa !12
  %109 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !20
  br label %1157

._crit_edge618:                                   ; preds = %57, %.thread567, %60
  %110 = phi i32 [ %46, %.thread567 ], [ %.pre619, %60 ], [ %.pre619, %57 ]
  %111 = phi ptr [ %26, %.thread567 ], [ %.pre617, %60 ], [ %.pre617, %57 ]
  %112 = phi ptr [ %48, %.thread567 ], [ %58, %60 ], [ %58, %57 ]
  store ptr %111, ptr %9, align 8, !tbaa !12
  %113 = getelementptr inbounds i8, ptr %8, i64 8
  %114 = sext i32 %110 to i64
  %115 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %114
  %116 = load i32, ptr %115, align 4, !tbaa !28
  %117 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %116, ptr %117, align 8, !tbaa !20
  %118 = sext i32 %116 to i64
  %119 = getelementptr inbounds ptr, ptr %111, i64 %118
  %120 = load ptr, ptr %119, align 8, !tbaa !19
  %121 = ptrtoint ptr %120 to i64
  %122 = and i64 %121, 3
  %123 = and i64 %121, -4
  %124 = inttoptr i64 %123 to ptr
  %125 = getelementptr inbounds ptr, ptr %111, i64 %114
  %126 = load ptr, ptr %125, align 8, !tbaa !19
  %127 = ptrtoint ptr %126 to i64
  %128 = trunc i64 %127 to i32
  %129 = and i32 %128, 3
  %130 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 %129, ptr %130, align 8, !tbaa !20
  %131 = and i64 %127, -4
  %132 = inttoptr i64 %131 to ptr
  store ptr %132, ptr %11, align 8, !tbaa !12
  %133 = getelementptr inbounds i8, ptr %0, i64 82856
  %134 = load ptr, ptr %133, align 8, !tbaa !15
  %.not538 = icmp eq ptr %134, %132
  br i1 %.not538, label %146, label %135

135:                                              ; preds = %._crit_edge618
  %136 = and i64 %127, 3
  %137 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !28
  store i32 %138, ptr %130, align 8, !tbaa !20
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds ptr, ptr %132, i64 %139
  %141 = load ptr, ptr %140, align 8, !tbaa !19
  %142 = ptrtoint ptr %141 to i64
  %143 = and i64 %142, 3
  %144 = and i64 %142, -4
  %145 = inttoptr i64 %144 to ptr
  call void @maketriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %14)
  br label %150

146:                                              ; preds = %._crit_edge618
  %147 = getelementptr inbounds i8, ptr %0, i64 82728
  %148 = load i64, ptr %147, align 8, !tbaa !29
  %149 = add nsw i64 %148, 1
  store i64 %149, ptr %147, align 8, !tbaa !29
  br label %150

150:                                              ; preds = %146, %135
  %.sroa.0203.0 = phi ptr [ %145, %135 ], [ undef, %146 ]
  %.sroa.8207.0 = phi i64 [ %143, %135 ], [ 0, %146 ]
  call void @maketriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  %151 = load ptr, ptr %8, align 8, !tbaa !12
  %152 = load i32, ptr %113, align 8, !tbaa !20
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %153
  %155 = load i32, ptr %154, align 4, !tbaa !28
  %156 = sext i32 %155 to i64
  %157 = getelementptr ptr, ptr %151, i64 %156
  %158 = getelementptr i8, ptr %157, i64 24
  %159 = load ptr, ptr %158, align 8, !tbaa !19
  %160 = getelementptr ptr, ptr %151, i64 %153
  %161 = getelementptr i8, ptr %160, i64 24
  %162 = load ptr, ptr %161, align 8, !tbaa !19
  %163 = load ptr, ptr %13, align 8, !tbaa !12
  %164 = getelementptr inbounds i8, ptr %13, i64 8
  %165 = load i32, ptr %164, align 8, !tbaa !20
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %166
  %168 = load i32, ptr %167, align 4, !tbaa !28
  %169 = sext i32 %168 to i64
  %170 = getelementptr ptr, ptr %163, i64 %169
  %171 = getelementptr i8, ptr %170, i64 24
  store ptr %162, ptr %171, align 8, !tbaa !19
  %172 = load ptr, ptr %13, align 8, !tbaa !12
  %173 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %166
  %174 = load i32, ptr %173, align 4, !tbaa !28
  %175 = sext i32 %174 to i64
  %176 = getelementptr ptr, ptr %172, i64 %175
  %177 = getelementptr i8, ptr %176, i64 24
  store ptr %159, ptr %177, align 8, !tbaa !19
  %178 = load ptr, ptr %13, align 8, !tbaa !12
  %179 = getelementptr ptr, ptr %178, i64 %166
  %180 = getelementptr i8, ptr %179, i64 24
  store ptr %2, ptr %180, align 8, !tbaa !19
  %181 = load ptr, ptr %8, align 8, !tbaa !12
  %182 = getelementptr ptr, ptr %181, i64 %156
  %183 = getelementptr i8, ptr %182, i64 24
  store ptr %2, ptr %183, align 8, !tbaa !19
  %184 = getelementptr inbounds i8, ptr %0, i64 82720
  %185 = load i32, ptr %184, align 8, !tbaa !30
  %186 = icmp sgt i32 %185, 0
  br i1 %186, label %.lr.ph585, label %._crit_edge586

.lr.ph585:                                        ; preds = %150
  %187 = load ptr, ptr %9, align 8, !tbaa !12
  %188 = getelementptr inbounds i8, ptr %0, i64 82752
  %189 = load i32, ptr %188, align 8, !tbaa !31
  %190 = load ptr, ptr %13, align 8, !tbaa !12
  %191 = sext i32 %189 to i64
  %wide.trip.count602 = zext nneg i32 %185 to i64
  %min.iters.check652 = icmp ult i32 %185, 4
  %192 = ptrtoint ptr %190 to i64
  %193 = ptrtoint ptr %187 to i64
  %194 = sub i64 %192, %193
  %diff.check649 = icmp ult i64 %194, 32
  %or.cond697 = select i1 %min.iters.check652, i1 true, i1 %diff.check649
  br i1 %or.cond697, label %scalar.ph651.preheader, label %vector.ph653

vector.ph653:                                     ; preds = %.lr.ph585
  %n.vec655 = and i64 %wide.trip.count602, 2147483644
  br label %vector.body657

vector.body657:                                   ; preds = %vector.body657, %vector.ph653
  %index658 = phi i64 [ 0, %vector.ph653 ], [ %index.next661, %vector.body657 ]
  %195 = add nsw i64 %index658, %191
  %196 = getelementptr inbounds double, ptr %187, i64 %195
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  %wide.load659 = load <2 x double>, ptr %196, align 8, !tbaa !11
  %wide.load660 = load <2 x double>, ptr %197, align 8, !tbaa !11
  %198 = getelementptr inbounds double, ptr %190, i64 %195
  %199 = getelementptr inbounds i8, ptr %198, i64 16
  store <2 x double> %wide.load659, ptr %198, align 8, !tbaa !11
  store <2 x double> %wide.load660, ptr %199, align 8, !tbaa !11
  %index.next661 = add nuw i64 %index658, 4
  %200 = icmp eq i64 %index.next661, %n.vec655
  br i1 %200, label %middle.block650, label %vector.body657, !llvm.loop !32

middle.block650:                                  ; preds = %vector.body657
  %cmp.n662 = icmp eq i64 %n.vec655, %wide.trip.count602
  br i1 %cmp.n662, label %._crit_edge586, label %scalar.ph651.preheader

scalar.ph651.preheader:                           ; preds = %middle.block650, %.lr.ph585
  %indvars.iv599.ph = phi i64 [ 0, %.lr.ph585 ], [ %n.vec655, %middle.block650 ]
  %xtraiter704 = and i64 %wide.trip.count602, 3
  %lcmp.mod705.not = icmp eq i64 %xtraiter704, 0
  br i1 %lcmp.mod705.not, label %scalar.ph651.prol.loopexit, label %scalar.ph651.prol

scalar.ph651.prol:                                ; preds = %scalar.ph651.preheader, %scalar.ph651.prol
  %indvars.iv599.prol = phi i64 [ %indvars.iv.next600.prol, %scalar.ph651.prol ], [ %indvars.iv599.ph, %scalar.ph651.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph651.prol ], [ 0, %scalar.ph651.preheader ]
  %201 = add nsw i64 %indvars.iv599.prol, %191
  %202 = getelementptr inbounds double, ptr %187, i64 %201
  %203 = load double, ptr %202, align 8, !tbaa !11
  %204 = getelementptr inbounds double, ptr %190, i64 %201
  store double %203, ptr %204, align 8, !tbaa !11
  %indvars.iv.next600.prol = add nuw nsw i64 %indvars.iv599.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter704
  br i1 %prol.iter.cmp.not, label %scalar.ph651.prol.loopexit, label %scalar.ph651.prol, !llvm.loop !36

scalar.ph651.prol.loopexit:                       ; preds = %scalar.ph651.prol, %scalar.ph651.preheader
  %indvars.iv599.unr = phi i64 [ %indvars.iv599.ph, %scalar.ph651.preheader ], [ %indvars.iv.next600.prol, %scalar.ph651.prol ]
  %205 = sub nsw i64 %indvars.iv599.ph, %wide.trip.count602
  %206 = icmp ugt i64 %205, -4
  br i1 %206, label %._crit_edge586, label %scalar.ph651

scalar.ph651:                                     ; preds = %scalar.ph651.prol.loopexit, %scalar.ph651
  %indvars.iv599 = phi i64 [ %indvars.iv.next600.3, %scalar.ph651 ], [ %indvars.iv599.unr, %scalar.ph651.prol.loopexit ]
  %207 = add nsw i64 %indvars.iv599, %191
  %208 = getelementptr inbounds double, ptr %187, i64 %207
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = getelementptr inbounds double, ptr %190, i64 %207
  store double %209, ptr %210, align 8, !tbaa !11
  %indvars.iv.next600 = add nuw nsw i64 %indvars.iv599, 1
  %211 = add nsw i64 %indvars.iv.next600, %191
  %212 = getelementptr inbounds double, ptr %187, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !11
  %214 = getelementptr inbounds double, ptr %190, i64 %211
  store double %213, ptr %214, align 8, !tbaa !11
  %indvars.iv.next600.1 = add nuw nsw i64 %indvars.iv599, 2
  %215 = add nsw i64 %indvars.iv.next600.1, %191
  %216 = getelementptr inbounds double, ptr %187, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = getelementptr inbounds double, ptr %190, i64 %215
  store double %217, ptr %218, align 8, !tbaa !11
  %indvars.iv.next600.2 = add nuw nsw i64 %indvars.iv599, 3
  %219 = add nsw i64 %indvars.iv.next600.2, %191
  %220 = getelementptr inbounds double, ptr %187, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !11
  %222 = getelementptr inbounds double, ptr %190, i64 %219
  store double %221, ptr %222, align 8, !tbaa !11
  %indvars.iv.next600.3 = add nuw nsw i64 %indvars.iv599, 4
  %exitcond603.not.3 = icmp eq i64 %indvars.iv.next600.3, %wide.trip.count602
  br i1 %exitcond603.not.3, label %._crit_edge586, label %scalar.ph651, !llvm.loop !38

._crit_edge586:                                   ; preds = %scalar.ph651.prol.loopexit, %scalar.ph651, %middle.block650, %150
  %223 = getelementptr inbounds i8, ptr %1, i64 12
  %224 = load i32, ptr %223, align 4, !tbaa !39
  %.not539 = icmp eq i32 %224, 0
  br i1 %.not539, label %234, label %225

225:                                              ; preds = %._crit_edge586
  %226 = load ptr, ptr %9, align 8, !tbaa !12
  %227 = getelementptr inbounds i8, ptr %0, i64 82756
  %228 = load i32, ptr %227, align 4, !tbaa !40
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %226, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = load ptr, ptr %13, align 8, !tbaa !12
  %233 = getelementptr inbounds double, ptr %232, i64 %229
  store double %231, ptr %233, align 8, !tbaa !11
  br label %234

234:                                              ; preds = %225, %._crit_edge586
  br i1 %.not538, label %314, label %235

235:                                              ; preds = %234
  %236 = load ptr, ptr %11, align 8, !tbaa !12
  %237 = load i32, ptr %130, align 8, !tbaa !20
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !28
  %241 = sext i32 %240 to i64
  %242 = getelementptr ptr, ptr %236, i64 %241
  %243 = getelementptr i8, ptr %242, i64 24
  %244 = load ptr, ptr %243, align 8, !tbaa !19
  %245 = load ptr, ptr %14, align 8, !tbaa !12
  %246 = getelementptr inbounds i8, ptr %14, i64 8
  %247 = load i32, ptr %246, align 8, !tbaa !20
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !28
  %251 = sext i32 %250 to i64
  %252 = getelementptr ptr, ptr %245, i64 %251
  %253 = getelementptr i8, ptr %252, i64 24
  store ptr %159, ptr %253, align 8, !tbaa !19
  %254 = load ptr, ptr %14, align 8, !tbaa !12
  %255 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %248
  %256 = load i32, ptr %255, align 4, !tbaa !28
  %257 = sext i32 %256 to i64
  %258 = getelementptr ptr, ptr %254, i64 %257
  %259 = getelementptr i8, ptr %258, i64 24
  store ptr %244, ptr %259, align 8, !tbaa !19
  %260 = load ptr, ptr %14, align 8, !tbaa !12
  %261 = getelementptr ptr, ptr %260, i64 %248
  %262 = getelementptr i8, ptr %261, i64 24
  store ptr %2, ptr %262, align 8, !tbaa !19
  %263 = load ptr, ptr %11, align 8, !tbaa !12
  %264 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %238
  %265 = load i32, ptr %264, align 4, !tbaa !28
  %266 = sext i32 %265 to i64
  %267 = getelementptr ptr, ptr %263, i64 %266
  %268 = getelementptr i8, ptr %267, i64 24
  store ptr %2, ptr %268, align 8, !tbaa !19
  br i1 %186, label %.lr.ph589, label %._crit_edge590

.lr.ph589:                                        ; preds = %235
  %269 = load ptr, ptr %11, align 8, !tbaa !12
  %270 = getelementptr inbounds i8, ptr %0, i64 82752
  %271 = load i32, ptr %270, align 8, !tbaa !31
  %272 = load ptr, ptr %14, align 8, !tbaa !12
  %273 = sext i32 %271 to i64
  %wide.trip.count608 = zext nneg i32 %185 to i64
  %min.iters.check667 = icmp ult i32 %185, 4
  %274 = ptrtoint ptr %272 to i64
  %275 = ptrtoint ptr %269 to i64
  %276 = sub i64 %274, %275
  %diff.check664 = icmp ult i64 %276, 32
  %or.cond700 = select i1 %min.iters.check667, i1 true, i1 %diff.check664
  br i1 %or.cond700, label %scalar.ph666.preheader, label %vector.ph668

vector.ph668:                                     ; preds = %.lr.ph589
  %n.vec670 = and i64 %wide.trip.count608, 2147483644
  br label %vector.body672

vector.body672:                                   ; preds = %vector.body672, %vector.ph668
  %index673 = phi i64 [ 0, %vector.ph668 ], [ %index.next676, %vector.body672 ]
  %277 = add nsw i64 %index673, %273
  %278 = getelementptr inbounds double, ptr %269, i64 %277
  %279 = getelementptr inbounds i8, ptr %278, i64 16
  %wide.load674 = load <2 x double>, ptr %278, align 8, !tbaa !11
  %wide.load675 = load <2 x double>, ptr %279, align 8, !tbaa !11
  %280 = getelementptr inbounds double, ptr %272, i64 %277
  %281 = getelementptr inbounds i8, ptr %280, i64 16
  store <2 x double> %wide.load674, ptr %280, align 8, !tbaa !11
  store <2 x double> %wide.load675, ptr %281, align 8, !tbaa !11
  %index.next676 = add nuw i64 %index673, 4
  %282 = icmp eq i64 %index.next676, %n.vec670
  br i1 %282, label %middle.block665, label %vector.body672, !llvm.loop !41

middle.block665:                                  ; preds = %vector.body672
  %cmp.n677 = icmp eq i64 %n.vec670, %wide.trip.count608
  br i1 %cmp.n677, label %._crit_edge590, label %scalar.ph666.preheader

scalar.ph666.preheader:                           ; preds = %middle.block665, %.lr.ph589
  %indvars.iv605.ph = phi i64 [ 0, %.lr.ph589 ], [ %n.vec670, %middle.block665 ]
  %xtraiter706 = and i64 %wide.trip.count608, 3
  %lcmp.mod707.not = icmp eq i64 %xtraiter706, 0
  br i1 %lcmp.mod707.not, label %scalar.ph666.prol.loopexit, label %scalar.ph666.prol

scalar.ph666.prol:                                ; preds = %scalar.ph666.preheader, %scalar.ph666.prol
  %indvars.iv605.prol = phi i64 [ %indvars.iv.next606.prol, %scalar.ph666.prol ], [ %indvars.iv605.ph, %scalar.ph666.preheader ]
  %prol.iter708 = phi i64 [ %prol.iter708.next, %scalar.ph666.prol ], [ 0, %scalar.ph666.preheader ]
  %283 = add nsw i64 %indvars.iv605.prol, %273
  %284 = getelementptr inbounds double, ptr %269, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !11
  %286 = getelementptr inbounds double, ptr %272, i64 %283
  store double %285, ptr %286, align 8, !tbaa !11
  %indvars.iv.next606.prol = add nuw nsw i64 %indvars.iv605.prol, 1
  %prol.iter708.next = add i64 %prol.iter708, 1
  %prol.iter708.cmp.not = icmp eq i64 %prol.iter708.next, %xtraiter706
  br i1 %prol.iter708.cmp.not, label %scalar.ph666.prol.loopexit, label %scalar.ph666.prol, !llvm.loop !42

scalar.ph666.prol.loopexit:                       ; preds = %scalar.ph666.prol, %scalar.ph666.preheader
  %indvars.iv605.unr = phi i64 [ %indvars.iv605.ph, %scalar.ph666.preheader ], [ %indvars.iv.next606.prol, %scalar.ph666.prol ]
  %287 = sub nsw i64 %indvars.iv605.ph, %wide.trip.count608
  %288 = icmp ugt i64 %287, -4
  br i1 %288, label %._crit_edge590, label %scalar.ph666

scalar.ph666:                                     ; preds = %scalar.ph666.prol.loopexit, %scalar.ph666
  %indvars.iv605 = phi i64 [ %indvars.iv.next606.3, %scalar.ph666 ], [ %indvars.iv605.unr, %scalar.ph666.prol.loopexit ]
  %289 = add nsw i64 %indvars.iv605, %273
  %290 = getelementptr inbounds double, ptr %269, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !11
  %292 = getelementptr inbounds double, ptr %272, i64 %289
  store double %291, ptr %292, align 8, !tbaa !11
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605, 1
  %293 = add nsw i64 %indvars.iv.next606, %273
  %294 = getelementptr inbounds double, ptr %269, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !11
  %296 = getelementptr inbounds double, ptr %272, i64 %293
  store double %295, ptr %296, align 8, !tbaa !11
  %indvars.iv.next606.1 = add nuw nsw i64 %indvars.iv605, 2
  %297 = add nsw i64 %indvars.iv.next606.1, %273
  %298 = getelementptr inbounds double, ptr %269, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = getelementptr inbounds double, ptr %272, i64 %297
  store double %299, ptr %300, align 8, !tbaa !11
  %indvars.iv.next606.2 = add nuw nsw i64 %indvars.iv605, 3
  %301 = add nsw i64 %indvars.iv.next606.2, %273
  %302 = getelementptr inbounds double, ptr %269, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = getelementptr inbounds double, ptr %272, i64 %301
  store double %303, ptr %304, align 8, !tbaa !11
  %indvars.iv.next606.3 = add nuw nsw i64 %indvars.iv605, 4
  %exitcond609.not.3 = icmp eq i64 %indvars.iv.next606.3, %wide.trip.count608
  br i1 %exitcond609.not.3, label %._crit_edge590, label %scalar.ph666, !llvm.loop !43

._crit_edge590:                                   ; preds = %scalar.ph666.prol.loopexit, %scalar.ph666, %middle.block665, %235
  br i1 %.not539, label %314, label %305

305:                                              ; preds = %._crit_edge590
  %306 = load ptr, ptr %11, align 8, !tbaa !12
  %307 = getelementptr inbounds i8, ptr %0, i64 82756
  %308 = load i32, ptr %307, align 4, !tbaa !40
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %306, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = load ptr, ptr %14, align 8, !tbaa !12
  %313 = getelementptr inbounds double, ptr %312, i64 %309
  store double %311, ptr %313, align 8, !tbaa !11
  br label %314

314:                                              ; preds = %._crit_edge590, %305, %234
  %315 = load i32, ptr %112, align 8, !tbaa !21
  %.not541 = icmp eq i32 %315, 0
  %.pre620 = load i32, ptr %117, align 8, !tbaa !20
  br i1 %.not541, label %._crit_edge633, label %316

._crit_edge633:                                   ; preds = %314
  %.pre634 = sext i32 %.pre620 to i64
  br label %368

316:                                              ; preds = %314
  %317 = load ptr, ptr %9, align 8, !tbaa !12
  %318 = sext i32 %.pre620 to i64
  %319 = getelementptr ptr, ptr %317, i64 %318
  %320 = getelementptr i8, ptr %319, i64 48
  %321 = load ptr, ptr %320, align 8, !tbaa !19
  %322 = ptrtoint ptr %321 to i64
  %323 = and i64 %322, -4
  %324 = inttoptr i64 %323 to ptr
  %325 = getelementptr inbounds i8, ptr %0, i64 82872
  %326 = load ptr, ptr %325, align 8, !tbaa !22
  %.not542 = icmp eq ptr %326, %324
  br i1 %.not542, label %340, label %327

327:                                              ; preds = %316
  %328 = and i64 %322, 1
  store ptr %326, ptr %320, align 8, !tbaa !19
  %329 = and i64 %322, -3
  %330 = inttoptr i64 %329 to ptr
  %331 = load ptr, ptr %13, align 8, !tbaa !12
  %332 = getelementptr ptr, ptr %331, i64 %166
  %333 = getelementptr i8, ptr %332, i64 48
  store ptr %330, ptr %333, align 8, !tbaa !19
  %334 = load ptr, ptr %13, align 8, !tbaa !12
  %335 = ptrtoint ptr %334 to i64
  %336 = or i64 %335, %166
  %337 = inttoptr i64 %336 to ptr
  %338 = or disjoint i64 %328, 6
  %339 = getelementptr inbounds ptr, ptr %324, i64 %338
  store ptr %337, ptr %339, align 8, !tbaa !19
  br label %340

340:                                              ; preds = %327, %316
  br i1 %.not538, label %368, label %341

341:                                              ; preds = %340
  %342 = load ptr, ptr %11, align 8, !tbaa !12
  %343 = load i32, ptr %130, align 8, !tbaa !20
  %344 = sext i32 %343 to i64
  %345 = getelementptr ptr, ptr %342, i64 %344
  %346 = getelementptr i8, ptr %345, i64 48
  %347 = load ptr, ptr %346, align 8, !tbaa !19
  %348 = ptrtoint ptr %347 to i64
  %349 = and i64 %348, -4
  %350 = inttoptr i64 %349 to ptr
  %351 = load ptr, ptr %325, align 8, !tbaa !22
  %.not543 = icmp eq ptr %351, %350
  br i1 %.not543, label %368, label %352

352:                                              ; preds = %341
  %353 = and i64 %348, 1
  store ptr %351, ptr %346, align 8, !tbaa !19
  %354 = and i64 %348, -3
  %355 = inttoptr i64 %354 to ptr
  %356 = load ptr, ptr %14, align 8, !tbaa !12
  %357 = getelementptr inbounds i8, ptr %14, i64 8
  %358 = load i32, ptr %357, align 8, !tbaa !20
  %359 = sext i32 %358 to i64
  %360 = getelementptr ptr, ptr %356, i64 %359
  %361 = getelementptr i8, ptr %360, i64 48
  store ptr %355, ptr %361, align 8, !tbaa !19
  %362 = load ptr, ptr %14, align 8, !tbaa !12
  %363 = ptrtoint ptr %362 to i64
  %364 = or i64 %363, %359
  %365 = inttoptr i64 %364 to ptr
  %366 = or disjoint i64 %353, 6
  %367 = getelementptr inbounds ptr, ptr %350, i64 %366
  store ptr %365, ptr %367, align 8, !tbaa !19
  br label %368

368:                                              ; preds = %._crit_edge633, %340, %352, %341
  %.pre-phi635 = phi i64 [ %.pre634, %._crit_edge633 ], [ %318, %340 ], [ %318, %352 ], [ %318, %341 ]
  %369 = load ptr, ptr %13, align 8, !tbaa !12
  %370 = getelementptr inbounds ptr, ptr %369, i64 %166
  store ptr %120, ptr %370, align 8, !tbaa !19
  %371 = load ptr, ptr %13, align 8, !tbaa !12
  %372 = ptrtoint ptr %371 to i64
  %373 = or i64 %372, %166
  %374 = inttoptr i64 %373 to ptr
  %375 = getelementptr inbounds ptr, ptr %124, i64 %122
  store ptr %374, ptr %375, align 8, !tbaa !19
  %376 = load ptr, ptr %9, align 8, !tbaa !12
  %377 = ptrtoint ptr %376 to i64
  %378 = or i64 %.pre-phi635, %377
  %379 = inttoptr i64 %378 to ptr
  %380 = load ptr, ptr %13, align 8, !tbaa !12
  %381 = getelementptr inbounds ptr, ptr %380, i64 %175
  store ptr %379, ptr %381, align 8, !tbaa !19
  %382 = load ptr, ptr %13, align 8, !tbaa !12
  %383 = ptrtoint ptr %382 to i64
  %384 = or i64 %383, %175
  %385 = inttoptr i64 %384 to ptr
  %386 = load ptr, ptr %9, align 8, !tbaa !12
  %387 = getelementptr inbounds ptr, ptr %386, i64 %.pre-phi635
  store ptr %385, ptr %387, align 8, !tbaa !19
  %388 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %175
  %389 = load i32, ptr %388, align 4, !tbaa !28
  store i32 %389, ptr %164, align 8, !tbaa !20
  br i1 %.not538, label %437, label %390

390:                                              ; preds = %368
  %391 = ptrtoint ptr %.sroa.0203.0 to i64
  %392 = or i64 %.sroa.8207.0, %391
  %393 = inttoptr i64 %392 to ptr
  %394 = load ptr, ptr %14, align 8, !tbaa !12
  %395 = getelementptr inbounds i8, ptr %14, i64 8
  %396 = load i32, ptr %395, align 8, !tbaa !20
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds ptr, ptr %394, i64 %397
  store ptr %393, ptr %398, align 8, !tbaa !19
  %399 = load ptr, ptr %14, align 8, !tbaa !12
  %400 = ptrtoint ptr %399 to i64
  %401 = or i64 %400, %397
  %402 = inttoptr i64 %401 to ptr
  %403 = getelementptr inbounds ptr, ptr %.sroa.0203.0, i64 %.sroa.8207.0
  store ptr %402, ptr %403, align 8, !tbaa !19
  %404 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %397
  %405 = load i32, ptr %404, align 4, !tbaa !28
  %406 = load ptr, ptr %11, align 8, !tbaa !12
  %407 = ptrtoint ptr %406 to i64
  %408 = load i32, ptr %130, align 8, !tbaa !20
  %409 = sext i32 %408 to i64
  %410 = or i64 %409, %407
  %411 = inttoptr i64 %410 to ptr
  %412 = load ptr, ptr %14, align 8, !tbaa !12
  %413 = sext i32 %405 to i64
  %414 = getelementptr inbounds ptr, ptr %412, i64 %413
  store ptr %411, ptr %414, align 8, !tbaa !19
  %415 = load ptr, ptr %14, align 8, !tbaa !12
  %416 = ptrtoint ptr %415 to i64
  %417 = or i64 %416, %413
  %418 = inttoptr i64 %417 to ptr
  %419 = load ptr, ptr %11, align 8, !tbaa !12
  %420 = getelementptr inbounds ptr, ptr %419, i64 %409
  store ptr %418, ptr %420, align 8, !tbaa !19
  %421 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %413
  %422 = load i32, ptr %421, align 4, !tbaa !28
  store i32 %422, ptr %395, align 8, !tbaa !20
  %423 = load ptr, ptr %13, align 8, !tbaa !12
  %424 = ptrtoint ptr %423 to i64
  %425 = sext i32 %389 to i64
  %426 = or i64 %424, %425
  %427 = inttoptr i64 %426 to ptr
  %428 = load ptr, ptr %14, align 8, !tbaa !12
  %429 = sext i32 %422 to i64
  %430 = getelementptr inbounds ptr, ptr %428, i64 %429
  store ptr %427, ptr %430, align 8, !tbaa !19
  %431 = load ptr, ptr %14, align 8, !tbaa !12
  %432 = ptrtoint ptr %431 to i64
  %433 = or i64 %432, %429
  %434 = inttoptr i64 %433 to ptr
  %435 = load ptr, ptr %13, align 8, !tbaa !12
  %436 = getelementptr inbounds ptr, ptr %435, i64 %425
  store ptr %434, ptr %436, align 8, !tbaa !19
  br label %437

437:                                              ; preds = %390, %368
  br i1 %25, label %512, label %438

438:                                              ; preds = %437
  %439 = load ptr, ptr %4, align 8, !tbaa !44
  %440 = getelementptr inbounds i8, ptr %4, i64 8
  %441 = load i32, ptr %440, align 8, !tbaa !46
  %442 = sub nsw i32 3, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds ptr, ptr %439, i64 %443
  store ptr %2, ptr %444, align 8, !tbaa !19
  %445 = load ptr, ptr %4, align 8, !tbaa !44
  %446 = sext i32 %441 to i64
  %447 = getelementptr ptr, ptr %445, i64 %446
  %448 = getelementptr i8, ptr %447, i64 32
  %449 = load ptr, ptr %448, align 8, !tbaa !19
  %450 = sub nsw i32 5, %441
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds ptr, ptr %445, i64 %451
  %453 = load ptr, ptr %452, align 8, !tbaa !19
  %454 = sub nsw i32 1, %441
  store i32 %454, ptr %440, align 8, !tbaa !46
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds ptr, ptr %445, i64 %455
  %457 = load ptr, ptr %456, align 8, !tbaa !19
  %458 = ptrtoint ptr %457 to i64
  %459 = and i64 %458, 1
  %460 = and i64 %458, -4
  %461 = inttoptr i64 %460 to ptr
  %462 = getelementptr inbounds i8, ptr %445, i64 64
  %463 = load i32, ptr %462, align 4, !tbaa !28
  call void @insertsubseg(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %13, i32 noundef %463)
  %464 = load ptr, ptr %13, align 8, !tbaa !12
  %465 = load i32, ptr %164, align 8, !tbaa !20
  %466 = sext i32 %465 to i64
  %467 = getelementptr ptr, ptr %464, i64 %466
  %468 = getelementptr i8, ptr %467, i64 48
  %469 = load ptr, ptr %468, align 8, !tbaa !19
  %470 = ptrtoint ptr %469 to i64
  %471 = trunc i64 %470 to i32
  %472 = and i32 %471, 1
  %473 = and i64 %470, -4
  %474 = inttoptr i64 %473 to ptr
  %475 = or disjoint i32 %472, 4
  %476 = zext nneg i32 %475 to i64
  %477 = getelementptr inbounds ptr, ptr %474, i64 %476
  store ptr %449, ptr %477, align 8, !tbaa !19
  %478 = sub nuw nsw i32 5, %472
  %479 = zext nneg i32 %478 to i64
  %480 = getelementptr inbounds ptr, ptr %474, i64 %479
  store ptr %453, ptr %480, align 8, !tbaa !19
  %481 = and i64 %470, 1
  %482 = and i64 %470, -3
  %483 = inttoptr i64 %482 to ptr
  %484 = load ptr, ptr %4, align 8, !tbaa !44
  %485 = load i32, ptr %440, align 8, !tbaa !46
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds ptr, ptr %484, i64 %486
  store ptr %483, ptr %487, align 8, !tbaa !19
  %488 = load ptr, ptr %4, align 8, !tbaa !44
  %489 = ptrtoint ptr %488 to i64
  %490 = or i64 %489, %486
  %491 = inttoptr i64 %490 to ptr
  %492 = getelementptr inbounds ptr, ptr %474, i64 %481
  store ptr %491, ptr %492, align 8, !tbaa !19
  %493 = xor i32 %472, 1
  %494 = and i64 %458, -3
  %495 = inttoptr i64 %494 to ptr
  %496 = zext nneg i32 %493 to i64
  %497 = getelementptr inbounds ptr, ptr %474, i64 %496
  store ptr %495, ptr %497, align 8, !tbaa !19
  %498 = or disjoint i64 %473, %496
  %499 = inttoptr i64 %498 to ptr
  %500 = getelementptr inbounds ptr, ptr %461, i64 %459
  store ptr %499, ptr %500, align 8, !tbaa !19
  %501 = sub nsw i32 1, %485
  store i32 %501, ptr %440, align 8, !tbaa !46
  %502 = getelementptr inbounds i8, ptr %0, i64 82740
  %503 = load i32, ptr %502, align 4, !tbaa !47
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds i32, ptr %2, i64 %504
  %506 = load i32, ptr %505, align 4, !tbaa !28
  %507 = icmp eq i32 %506, 0
  br i1 %507, label %508, label %512

508:                                              ; preds = %438
  %509 = load ptr, ptr %4, align 8, !tbaa !44
  %510 = getelementptr inbounds i8, ptr %509, i64 64
  %511 = load i32, ptr %510, align 4, !tbaa !28
  store i32 %511, ptr %505, align 4, !tbaa !28
  br label %512

512:                                              ; preds = %438, %508, %437
  %513 = getelementptr inbounds i8, ptr %0, i64 82764
  %514 = load i32, ptr %513, align 4, !tbaa !48
  %.not545 = icmp eq i32 %514, 0
  br i1 %.not545, label %526, label %515

515:                                              ; preds = %512
  %516 = getelementptr inbounds i8, ptr %0, i64 528
  call void @poolrestart(ptr noundef nonnull %516)
  %517 = call ptr @poolalloc(ptr noundef nonnull %516)
  %518 = getelementptr inbounds i8, ptr %0, i64 82632
  store ptr %517, ptr %518, align 8, !tbaa !49
  %519 = load ptr, ptr %8, align 8, !tbaa !12
  %520 = ptrtoint ptr %519 to i64
  %521 = load i32, ptr %113, align 8, !tbaa !20
  %522 = sext i32 %521 to i64
  %523 = or i64 %522, %520
  %524 = inttoptr i64 %523 to ptr
  store ptr %524, ptr %517, align 8, !tbaa !50
  %525 = getelementptr inbounds i8, ptr %517, i64 8
  store ptr @insertvertex, ptr %525, align 8, !tbaa !52
  br label %526

526:                                              ; preds = %515, %512
  %527 = load i32, ptr %16, align 4, !tbaa !5
  %528 = icmp sgt i32 %527, 2
  br i1 %528, label %529, label %536

529:                                              ; preds = %526
  %530 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.958)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  br i1 %.not538, label %534, label %531

531:                                              ; preds = %529
  %532 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.959)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %11)
  %533 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.960)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %14)
  br label %534

534:                                              ; preds = %531, %529
  %535 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.961)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  br label %536

536:                                              ; preds = %534, %526
  %537 = load i32, ptr %113, align 8, !tbaa !20
  %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 !28
  store i32 %540, ptr %113, align 8, !tbaa !20
  br label %798

541:                                              ; preds = %55
  %542 = load ptr, ptr %8, align 8, !tbaa !12
  %543 = getelementptr inbounds i8, ptr %8, i64 8
  %544 = load i32, ptr %543, align 8, !tbaa !20
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %545
  %547 = load i32, ptr %546, align 4, !tbaa !28
  store ptr %542, ptr %9, align 8, !tbaa !12
  %548 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %545
  %549 = load i32, ptr %548, align 4, !tbaa !28
  %550 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %549, ptr %550, align 8, !tbaa !20
  %551 = sext i32 %547 to i64
  %552 = getelementptr inbounds ptr, ptr %542, i64 %551
  %553 = load ptr, ptr %552, align 8, !tbaa !19
  %554 = ptrtoint ptr %553 to i64
  %555 = and i64 %554, 3
  %556 = and i64 %554, -4
  %557 = inttoptr i64 %556 to ptr
  %558 = sext i32 %549 to i64
  %559 = getelementptr inbounds ptr, ptr %542, i64 %558
  %560 = load ptr, ptr %559, align 8, !tbaa !19
  %561 = ptrtoint ptr %560 to i64
  %562 = and i64 %561, 3
  %563 = and i64 %561, -4
  %564 = inttoptr i64 %563 to ptr
  call void @maketriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %12)
  call void @maketriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  %565 = load ptr, ptr %8, align 8, !tbaa !12
  %566 = load i32, ptr %543, align 8, !tbaa !20
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %567
  %569 = load i32, ptr %568, align 4, !tbaa !28
  %570 = sext i32 %569 to i64
  %571 = getelementptr ptr, ptr %565, i64 %570
  %572 = getelementptr i8, ptr %571, i64 24
  %573 = load ptr, ptr %572, align 8, !tbaa !19
  %574 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %567
  %575 = load i32, ptr %574, align 4, !tbaa !28
  %576 = sext i32 %575 to i64
  %577 = getelementptr ptr, ptr %565, i64 %576
  %578 = getelementptr i8, ptr %577, i64 24
  %579 = load ptr, ptr %578, align 8, !tbaa !19
  %580 = getelementptr ptr, ptr %565, i64 %567
  %581 = getelementptr i8, ptr %580, i64 24
  %582 = load ptr, ptr %581, align 8, !tbaa !19
  %583 = load ptr, ptr %12, align 8, !tbaa !12
  %584 = getelementptr inbounds i8, ptr %12, i64 8
  %585 = load i32, ptr %584, align 8, !tbaa !20
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %586
  %588 = load i32, ptr %587, align 4, !tbaa !28
  %589 = sext i32 %588 to i64
  %590 = getelementptr ptr, ptr %583, i64 %589
  %591 = getelementptr i8, ptr %590, i64 24
  store ptr %579, ptr %591, align 8, !tbaa !19
  %592 = load ptr, ptr %12, align 8, !tbaa !12
  %593 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %586
  %594 = load i32, ptr %593, align 4, !tbaa !28
  %595 = sext i32 %594 to i64
  %596 = getelementptr ptr, ptr %592, i64 %595
  %597 = getelementptr i8, ptr %596, i64 24
  store ptr %582, ptr %597, align 8, !tbaa !19
  %598 = load ptr, ptr %12, align 8, !tbaa !12
  %599 = getelementptr ptr, ptr %598, i64 %586
  %600 = getelementptr i8, ptr %599, i64 24
  store ptr %2, ptr %600, align 8, !tbaa !19
  %601 = load ptr, ptr %13, align 8, !tbaa !12
  %602 = getelementptr inbounds i8, ptr %13, i64 8
  %603 = load i32, ptr %602, align 8, !tbaa !20
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %604
  %606 = load i32, ptr %605, align 4, !tbaa !28
  %607 = sext i32 %606 to i64
  %608 = getelementptr ptr, ptr %601, i64 %607
  %609 = getelementptr i8, ptr %608, i64 24
  store ptr %582, ptr %609, align 8, !tbaa !19
  %610 = load ptr, ptr %13, align 8, !tbaa !12
  %611 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %604
  %612 = load i32, ptr %611, align 4, !tbaa !28
  %613 = sext i32 %612 to i64
  %614 = getelementptr ptr, ptr %610, i64 %613
  %615 = getelementptr i8, ptr %614, i64 24
  store ptr %573, ptr %615, align 8, !tbaa !19
  %616 = load ptr, ptr %13, align 8, !tbaa !12
  %617 = getelementptr ptr, ptr %616, i64 %604
  %618 = getelementptr i8, ptr %617, i64 24
  store ptr %2, ptr %618, align 8, !tbaa !19
  %619 = load ptr, ptr %8, align 8, !tbaa !12
  %620 = getelementptr ptr, ptr %619, i64 %567
  %621 = getelementptr i8, ptr %620, i64 24
  store ptr %2, ptr %621, align 8, !tbaa !19
  %622 = getelementptr inbounds i8, ptr %0, i64 82720
  %623 = load i32, ptr %622, align 8, !tbaa !30
  %624 = icmp sgt i32 %623, 0
  br i1 %624, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %541
  %625 = load ptr, ptr %8, align 8, !tbaa !12
  %626 = getelementptr inbounds i8, ptr %0, i64 82752
  %627 = load i32, ptr %626, align 8, !tbaa !31
  %628 = load ptr, ptr %12, align 8, !tbaa !12
  %629 = load ptr, ptr %13, align 8, !tbaa !12
  %630 = sext i32 %627 to i64
  %wide.trip.count = zext nneg i32 %623 to i64
  %min.iters.check = icmp ult i32 %623, 14
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %631 = ptrtoint ptr %629 to i64
  %632 = ptrtoint ptr %628 to i64
  %633 = ptrtoint ptr %625 to i64
  %634 = sub i64 %631, %632
  %diff.check = icmp ult i64 %634, 32
  %635 = sub i64 %632, %633
  %diff.check644 = icmp ult i64 %635, 32
  %conflict.rdx = or i1 %diff.check, %diff.check644
  %636 = sub i64 %631, %633
  %diff.check645 = icmp ult i64 %636, 32
  %conflict.rdx646 = or i1 %conflict.rdx, %diff.check645
  br i1 %conflict.rdx646, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %637 = add nsw i64 %index, %630
  %638 = getelementptr inbounds double, ptr %625, i64 %637
  %639 = getelementptr inbounds i8, ptr %638, i64 16
  %wide.load = load <2 x double>, ptr %638, align 8, !tbaa !11
  %wide.load647 = load <2 x double>, ptr %639, align 8, !tbaa !11
  %640 = getelementptr inbounds double, ptr %628, i64 %637
  %641 = getelementptr inbounds i8, ptr %640, i64 16
  store <2 x double> %wide.load, ptr %640, align 8, !tbaa !11
  store <2 x double> %wide.load647, ptr %641, align 8, !tbaa !11
  %642 = getelementptr inbounds double, ptr %629, i64 %637
  %643 = getelementptr inbounds i8, ptr %642, i64 16
  store <2 x double> %wide.load, ptr %642, align 8, !tbaa !11
  store <2 x double> %wide.load647, ptr %643, align 8, !tbaa !11
  %index.next = add nuw i64 %index, 4
  %644 = icmp eq i64 %index.next, %n.vec
  br i1 %644, label %middle.block, label %vector.body, !llvm.loop !53

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %645 = add nsw i64 %indvars.iv.ph, %630
  %646 = getelementptr inbounds double, ptr %625, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = getelementptr inbounds double, ptr %628, i64 %645
  store double %647, ptr %648, align 8, !tbaa !11
  %649 = getelementptr inbounds double, ptr %629, i64 %645
  store double %647, ptr %649, align 8, !tbaa !11
  %indvars.iv.next.prol = or disjoint i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %650 = add nsw i64 %wide.trip.count, -1
  %651 = icmp eq i64 %indvars.iv.ph, %650
  br i1 %651, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %652 = add nsw i64 %indvars.iv, %630
  %653 = getelementptr inbounds double, ptr %625, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !11
  %655 = getelementptr inbounds double, ptr %628, i64 %652
  store double %654, ptr %655, align 8, !tbaa !11
  %656 = getelementptr inbounds double, ptr %629, i64 %652
  store double %654, ptr %656, align 8, !tbaa !11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %657 = add nsw i64 %indvars.iv.next, %630
  %658 = getelementptr inbounds double, ptr %625, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !11
  %660 = getelementptr inbounds double, ptr %628, i64 %657
  store double %659, ptr %660, align 8, !tbaa !11
  %661 = getelementptr inbounds double, ptr %629, i64 %657
  store double %659, ptr %661, align 8, !tbaa !11
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge, label %scalar.ph, !llvm.loop !54

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %541
  %662 = getelementptr inbounds i8, ptr %1, i64 12
  %663 = load i32, ptr %662, align 4, !tbaa !39
  %.not = icmp eq i32 %663, 0
  br i1 %.not, label %675, label %664

664:                                              ; preds = %._crit_edge
  %665 = load ptr, ptr %8, align 8, !tbaa !12
  %666 = getelementptr inbounds i8, ptr %0, i64 82756
  %667 = load i32, ptr %666, align 4, !tbaa !40
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %665, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !11
  %671 = load ptr, ptr %12, align 8, !tbaa !12
  %672 = getelementptr inbounds double, ptr %671, i64 %668
  store double %670, ptr %672, align 8, !tbaa !11
  %673 = load ptr, ptr %13, align 8, !tbaa !12
  %674 = getelementptr inbounds double, ptr %673, i64 %668
  store double %670, ptr %674, align 8, !tbaa !11
  br label %675

675:                                              ; preds = %664, %._crit_edge
  %676 = getelementptr inbounds i8, ptr %0, i64 82760
  %677 = load i32, ptr %676, align 8, !tbaa !21
  %.not533 = icmp eq i32 %677, 0
  br i1 %.not533, label %._crit_edge615, label %678

._crit_edge615:                                   ; preds = %675
  %.pre616 = load i32, ptr %550, align 8, !tbaa !20
  %.pre631 = sext i32 %.pre616 to i64
  br label %723

678:                                              ; preds = %675
  %679 = getelementptr i8, ptr %552, i64 48
  %680 = load ptr, ptr %679, align 8, !tbaa !19
  %681 = ptrtoint ptr %680 to i64
  %682 = and i64 %681, -4
  %683 = inttoptr i64 %682 to ptr
  %684 = getelementptr inbounds i8, ptr %0, i64 82872
  %685 = load ptr, ptr %684, align 8, !tbaa !22
  %.not534 = icmp eq ptr %685, %683
  br i1 %.not534, label %699, label %686

686:                                              ; preds = %678
  %687 = and i64 %681, 1
  store ptr %685, ptr %679, align 8, !tbaa !19
  %688 = and i64 %681, -3
  %689 = inttoptr i64 %688 to ptr
  %690 = load ptr, ptr %12, align 8, !tbaa !12
  %691 = getelementptr ptr, ptr %690, i64 %586
  %692 = getelementptr i8, ptr %691, i64 48
  store ptr %689, ptr %692, align 8, !tbaa !19
  %693 = load ptr, ptr %12, align 8, !tbaa !12
  %694 = ptrtoint ptr %693 to i64
  %695 = or i64 %694, %586
  %696 = inttoptr i64 %695 to ptr
  %697 = or disjoint i64 %687, 6
  %698 = getelementptr inbounds ptr, ptr %683, i64 %697
  store ptr %696, ptr %698, align 8, !tbaa !19
  %.pre = load ptr, ptr %684, align 8, !tbaa !22
  br label %699

699:                                              ; preds = %686, %678
  %700 = phi ptr [ %.pre, %686 ], [ %685, %678 ]
  %701 = load ptr, ptr %9, align 8, !tbaa !12
  %702 = load i32, ptr %550, align 8, !tbaa !20
  %703 = sext i32 %702 to i64
  %704 = getelementptr ptr, ptr %701, i64 %703
  %705 = getelementptr i8, ptr %704, i64 48
  %706 = load ptr, ptr %705, align 8, !tbaa !19
  %707 = ptrtoint ptr %706 to i64
  %708 = and i64 %707, -4
  %709 = inttoptr i64 %708 to ptr
  %.not535 = icmp eq ptr %700, %709
  br i1 %.not535, label %723, label %710

710:                                              ; preds = %699
  %711 = and i64 %707, 1
  store ptr %700, ptr %705, align 8, !tbaa !19
  %712 = and i64 %707, -3
  %713 = inttoptr i64 %712 to ptr
  %714 = load ptr, ptr %13, align 8, !tbaa !12
  %715 = getelementptr ptr, ptr %714, i64 %604
  %716 = getelementptr i8, ptr %715, i64 48
  store ptr %713, ptr %716, align 8, !tbaa !19
  %717 = load ptr, ptr %13, align 8, !tbaa !12
  %718 = ptrtoint ptr %717 to i64
  %719 = or i64 %718, %604
  %720 = inttoptr i64 %719 to ptr
  %721 = or disjoint i64 %711, 6
  %722 = getelementptr inbounds ptr, ptr %709, i64 %721
  store ptr %720, ptr %722, align 8, !tbaa !19
  br label %723

723:                                              ; preds = %._crit_edge615, %699, %710
  %.pre-phi = phi i64 [ %.pre631, %._crit_edge615 ], [ %703, %699 ], [ %703, %710 ]
  %724 = load ptr, ptr %12, align 8, !tbaa !12
  %725 = getelementptr inbounds ptr, ptr %724, i64 %586
  store ptr %553, ptr %725, align 8, !tbaa !19
  %726 = load ptr, ptr %12, align 8, !tbaa !12
  %727 = ptrtoint ptr %726 to i64
  %728 = or i64 %727, %586
  %729 = inttoptr i64 %728 to ptr
  %730 = getelementptr inbounds ptr, ptr %557, i64 %555
  store ptr %729, ptr %730, align 8, !tbaa !19
  %731 = load ptr, ptr %13, align 8, !tbaa !12
  %732 = getelementptr inbounds ptr, ptr %731, i64 %604
  store ptr %560, ptr %732, align 8, !tbaa !19
  %733 = load ptr, ptr %13, align 8, !tbaa !12
  %734 = ptrtoint ptr %733 to i64
  %735 = or i64 %734, %604
  %736 = inttoptr i64 %735 to ptr
  %737 = getelementptr inbounds ptr, ptr %564, i64 %562
  store ptr %736, ptr %737, align 8, !tbaa !19
  %738 = load ptr, ptr %13, align 8, !tbaa !12
  %739 = ptrtoint ptr %738 to i64
  %740 = or i64 %739, %613
  %741 = inttoptr i64 %740 to ptr
  %742 = load ptr, ptr %12, align 8, !tbaa !12
  %743 = getelementptr inbounds ptr, ptr %742, i64 %589
  store ptr %741, ptr %743, align 8, !tbaa !19
  %744 = load ptr, ptr %12, align 8, !tbaa !12
  %745 = ptrtoint ptr %744 to i64
  %746 = or i64 %745, %589
  %747 = inttoptr i64 %746 to ptr
  %748 = load ptr, ptr %13, align 8, !tbaa !12
  %749 = getelementptr inbounds ptr, ptr %748, i64 %613
  store ptr %747, ptr %749, align 8, !tbaa !19
  %750 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %589
  %751 = load i32, ptr %750, align 4, !tbaa !28
  store i32 %751, ptr %584, align 8, !tbaa !20
  %752 = load ptr, ptr %12, align 8, !tbaa !12
  %753 = ptrtoint ptr %752 to i64
  %754 = sext i32 %751 to i64
  %755 = or i64 %753, %754
  %756 = inttoptr i64 %755 to ptr
  store ptr %756, ptr %552, align 8, !tbaa !19
  %757 = ptrtoint ptr %542 to i64
  %758 = or i64 %551, %757
  %759 = inttoptr i64 %758 to ptr
  %760 = load ptr, ptr %12, align 8, !tbaa !12
  %761 = getelementptr inbounds ptr, ptr %760, i64 %754
  store ptr %759, ptr %761, align 8, !tbaa !19
  %762 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %613
  %763 = load i32, ptr %762, align 4, !tbaa !28
  store i32 %763, ptr %602, align 8, !tbaa !20
  %764 = load ptr, ptr %13, align 8, !tbaa !12
  %765 = ptrtoint ptr %764 to i64
  %766 = sext i32 %763 to i64
  %767 = or i64 %765, %766
  %768 = inttoptr i64 %767 to ptr
  %769 = load ptr, ptr %9, align 8, !tbaa !12
  %770 = getelementptr inbounds ptr, ptr %769, i64 %.pre-phi
  store ptr %768, ptr %770, align 8, !tbaa !19
  %771 = load ptr, ptr %9, align 8, !tbaa !12
  %772 = ptrtoint ptr %771 to i64
  %773 = or i64 %.pre-phi, %772
  %774 = inttoptr i64 %773 to ptr
  %775 = load ptr, ptr %13, align 8, !tbaa !12
  %776 = getelementptr inbounds ptr, ptr %775, i64 %766
  store ptr %774, ptr %776, align 8, !tbaa !19
  %777 = getelementptr inbounds i8, ptr %0, i64 82764
  %778 = load i32, ptr %777, align 4, !tbaa !48
  %.not536 = icmp eq i32 %778, 0
  br i1 %.not536, label %790, label %779

779:                                              ; preds = %723
  %780 = getelementptr inbounds i8, ptr %0, i64 528
  call void @poolrestart(ptr noundef nonnull %780)
  %781 = call ptr @poolalloc(ptr noundef nonnull %780)
  %782 = getelementptr inbounds i8, ptr %0, i64 82632
  store ptr %781, ptr %782, align 8, !tbaa !49
  %783 = load ptr, ptr %8, align 8, !tbaa !12
  %784 = ptrtoint ptr %783 to i64
  %785 = load i32, ptr %543, align 8, !tbaa !20
  %786 = sext i32 %785 to i64
  %787 = or i64 %786, %784
  %788 = inttoptr i64 %787 to ptr
  store ptr %788, ptr %781, align 8, !tbaa !50
  %789 = getelementptr inbounds i8, ptr %781, i64 8
  store ptr null, ptr %789, align 8, !tbaa !52
  br label %790

790:                                              ; preds = %779, %723
  %791 = phi i32 [ %785, %779 ], [ %566, %723 ]
  %792 = load i32, ptr %16, align 4, !tbaa !5
  %793 = icmp sgt i32 %792, 2
  br i1 %793, label %794, label %798

794:                                              ; preds = %790
  %795 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.962)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  %796 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.963)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %12)
  %797 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.964)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  %.pre622 = load i32, ptr %543, align 8, !tbaa !20
  br label %798

798:                                              ; preds = %790, %794, %536
  %799 = phi i32 [ %791, %790 ], [ %.pre622, %794 ], [ %540, %536 ]
  %800 = load ptr, ptr %8, align 8, !tbaa !12
  %801 = getelementptr inbounds i8, ptr %8, i64 8
  %802 = sext i32 %799 to i64
  %803 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %802
  %804 = load i32, ptr %803, align 4, !tbaa !28
  %805 = sext i32 %804 to i64
  %806 = getelementptr ptr, ptr %800, i64 %805
  %807 = getelementptr i8, ptr %806, i64 24
  %808 = load ptr, ptr %807, align 8, !tbaa !19
  %809 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %802
  %810 = load i32, ptr %809, align 4, !tbaa !28
  %811 = sext i32 %810 to i64
  %812 = getelementptr ptr, ptr %800, i64 %811
  %813 = getelementptr inbounds i8, ptr %0, i64 82856
  %814 = getelementptr inbounds i8, ptr %0, i64 82760
  %815 = getelementptr inbounds i8, ptr %15, i64 8
  %816 = getelementptr inbounds i8, ptr %0, i64 82872
  %.not548 = icmp eq i32 %5, 0
  %817 = getelementptr inbounds i8, ptr %0, i64 82832
  %818 = getelementptr inbounds i8, ptr %0, i64 82840
  %819 = getelementptr inbounds i8, ptr %0, i64 82848
  %820 = getelementptr inbounds i8, ptr %10, i64 8
  %821 = getelementptr inbounds i8, ptr %11, i64 8
  %822 = getelementptr inbounds i8, ptr %9, i64 8
  %823 = getelementptr inbounds i8, ptr %0, i64 82720
  %824 = getelementptr inbounds i8, ptr %0, i64 82752
  %825 = getelementptr inbounds i8, ptr %1, i64 12
  %826 = getelementptr inbounds i8, ptr %0, i64 82756
  %827 = getelementptr inbounds i8, ptr %0, i64 82764
  %828 = getelementptr inbounds i8, ptr %0, i64 528
  %829 = getelementptr inbounds i8, ptr %0, i64 82632
  %.not555 = icmp eq i32 %6, 0
  br label %.outer

.outer:                                           ; preds = %1149, %798
  %.pre624.ph = phi i32 [ %1151, %1149 ], [ %799, %798 ]
  %.pre623.ph = phi ptr [ %1141, %1149 ], [ %800, %798 ]
  %.pn = phi ptr [ %1156, %1149 ], [ %812, %798 ]
  %.0499.ph = phi ptr [ %.0501, %1149 ], [ %808, %798 ]
  %.0496.ph = phi i32 [ %.1497572.ph, %1149 ], [ 0, %798 ]
  %.0501.ph.in = getelementptr i8, ptr %.pn, i64 24
  %.0501.ph = load ptr, ptr %.0501.ph.in, align 8, !tbaa !19
  br label %830

830:                                              ; preds = %.outer, %.critedge
  %.pre624 = phi i32 [ %1127, %.critedge ], [ %.pre624.ph, %.outer ]
  %.pre623 = phi ptr [ %.pre623.pre.pre, %.critedge ], [ %.pre623.ph, %.outer ]
  %.0501 = phi ptr [ %856, %.critedge ], [ %.0501.ph, %.outer ]
  %831 = load i32, ptr %814, align 8, !tbaa !21
  %.not546 = icmp eq i32 %831, 0
  %.pre636 = sext i32 %.pre624 to i64
  br i1 %.not546, label %._crit_edge632, label %832

832:                                              ; preds = %830
  %833 = getelementptr ptr, ptr %.pre623, i64 %.pre636
  %834 = getelementptr i8, ptr %833, i64 48
  %835 = load ptr, ptr %834, align 8, !tbaa !19
  %836 = ptrtoint ptr %835 to i64
  %837 = trunc i64 %836 to i32
  %838 = and i32 %837, 1
  store i32 %838, ptr %815, align 8, !tbaa !46
  %839 = and i64 %836, -4
  %840 = inttoptr i64 %839 to ptr
  store ptr %840, ptr %15, align 8, !tbaa !44
  %841 = load ptr, ptr %816, align 8, !tbaa !22
  %.not547 = icmp eq ptr %841, %840
  br i1 %.not547, label %._crit_edge632, label %842

842:                                              ; preds = %832
  br i1 %.not548, label %.thread569, label %843

843:                                              ; preds = %842
  %844 = call i32 @checkseg4encroach(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %15)
  %.not549 = icmp eq i32 %844, 0
  %spec.select = select i1 %.not549, i32 %.0496.ph, i32 1
  br label %.thread569

._crit_edge632:                                   ; preds = %830, %832
  %845 = getelementptr inbounds ptr, ptr %.pre623, i64 %.pre636
  %846 = load ptr, ptr %845, align 8, !tbaa !19
  %847 = ptrtoint ptr %846 to i64
  %848 = and i64 %847, 3
  %849 = and i64 %847, -4
  %850 = inttoptr i64 %849 to ptr
  %851 = load ptr, ptr %813, align 8, !tbaa !15
  %852 = icmp eq ptr %851, %850
  br i1 %852, label %.thread569, label %853

853:                                              ; preds = %._crit_edge632
  %854 = getelementptr inbounds ptr, ptr %850, i64 %848
  %855 = getelementptr inbounds i8, ptr %854, i64 24
  %856 = load ptr, ptr %855, align 8, !tbaa !19
  %857 = load ptr, ptr %817, align 8, !tbaa !55
  %858 = icmp eq ptr %.0501, %857
  br i1 %858, label %865, label %859

859:                                              ; preds = %853
  %860 = load ptr, ptr %818, align 8, !tbaa !56
  %861 = icmp eq ptr %.0501, %860
  br i1 %861, label %865, label %862

862:                                              ; preds = %859
  %863 = load ptr, ptr %819, align 8, !tbaa !57
  %864 = icmp eq ptr %.0501, %863
  br i1 %864, label %865, label %868

865:                                              ; preds = %862, %859, %853
  %866 = call double @counterclockwise(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %.0499.ph, ptr noundef %856)
  %867 = fcmp ogt double %866, 0.000000e+00
  br i1 %867, label %882, label %.thread569

868:                                              ; preds = %862
  %869 = icmp eq ptr %.0499.ph, %857
  %870 = icmp eq ptr %.0499.ph, %860
  %or.cond558 = or i1 %869, %870
  %871 = icmp eq ptr %.0499.ph, %863
  %or.cond559 = or i1 %or.cond558, %871
  br i1 %or.cond559, label %872, label %875

872:                                              ; preds = %868
  %873 = call double @counterclockwise(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %856, ptr noundef %.0501, ptr noundef %2)
  %874 = fcmp ogt double %873, 0.000000e+00
  br i1 %874, label %882, label %.thread569

875:                                              ; preds = %868
  %876 = icmp eq ptr %856, %857
  %877 = icmp eq ptr %856, %860
  %or.cond560 = or i1 %876, %877
  %878 = icmp eq ptr %856, %863
  %or.cond561 = or i1 %or.cond560, %878
  br i1 %or.cond561, label %.thread569, label %879

879:                                              ; preds = %875
  %880 = call double @incircle(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %.0501, ptr noundef %2, ptr noundef %.0499.ph, ptr noundef %856)
  %881 = fcmp ogt double %880, 0.000000e+00
  br i1 %881, label %882, label %.thread569

882:                                              ; preds = %872, %865, %879
  store ptr %850, ptr %10, align 8, !tbaa !12
  %883 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %848
  %884 = load i32, ptr %883, align 4, !tbaa !28
  store i32 %884, ptr %820, align 8, !tbaa !20
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds ptr, ptr %850, i64 %885
  %887 = load ptr, ptr %886, align 8, !tbaa !19
  %888 = ptrtoint ptr %887 to i64
  %889 = and i64 %888, 3
  %890 = and i64 %888, -4
  %891 = inttoptr i64 %890 to ptr
  store ptr %850, ptr %11, align 8, !tbaa !12
  %892 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %848
  %893 = load i32, ptr %892, align 4, !tbaa !28
  store i32 %893, ptr %821, align 8, !tbaa !20
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds ptr, ptr %850, i64 %894
  %896 = load ptr, ptr %895, align 8, !tbaa !19
  %897 = ptrtoint ptr %896 to i64
  %898 = and i64 %897, 3
  %899 = and i64 %897, -4
  %900 = inttoptr i64 %899 to ptr
  %901 = load ptr, ptr %8, align 8, !tbaa !12
  %902 = load i32, ptr %801, align 8, !tbaa !20
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %903
  %905 = load i32, ptr %904, align 4, !tbaa !28
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds ptr, ptr %901, i64 %906
  %908 = load ptr, ptr %907, align 8, !tbaa !19
  %909 = ptrtoint ptr %908 to i64
  %910 = and i64 %909, 3
  %911 = and i64 %909, -4
  %912 = inttoptr i64 %911 to ptr
  store ptr %901, ptr %9, align 8, !tbaa !12
  %913 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %903
  %914 = load i32, ptr %913, align 4, !tbaa !28
  store i32 %914, ptr %822, align 8, !tbaa !20
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds ptr, ptr %901, i64 %915
  %917 = load ptr, ptr %916, align 8, !tbaa !19
  %918 = ptrtoint ptr %917 to i64
  %919 = and i64 %918, 3
  %920 = and i64 %918, -4
  %921 = inttoptr i64 %920 to ptr
  store ptr %908, ptr %886, align 8, !tbaa !19
  %922 = load ptr, ptr %10, align 8, !tbaa !12
  %923 = ptrtoint ptr %922 to i64
  %924 = or i64 %923, %885
  %925 = inttoptr i64 %924 to ptr
  %926 = getelementptr inbounds ptr, ptr %912, i64 %910
  store ptr %925, ptr %926, align 8, !tbaa !19
  store ptr %917, ptr %907, align 8, !tbaa !19
  %927 = ptrtoint ptr %901 to i64
  %928 = or i64 %906, %927
  %929 = inttoptr i64 %928 to ptr
  %930 = getelementptr inbounds ptr, ptr %921, i64 %919
  store ptr %929, ptr %930, align 8, !tbaa !19
  %931 = load ptr, ptr %9, align 8, !tbaa !12
  %932 = getelementptr inbounds ptr, ptr %931, i64 %915
  store ptr %896, ptr %932, align 8, !tbaa !19
  %933 = load ptr, ptr %9, align 8, !tbaa !12
  %934 = ptrtoint ptr %933 to i64
  %935 = or i64 %934, %915
  %936 = inttoptr i64 %935 to ptr
  %937 = getelementptr inbounds ptr, ptr %900, i64 %898
  store ptr %936, ptr %937, align 8, !tbaa !19
  %938 = load ptr, ptr %11, align 8, !tbaa !12
  %939 = getelementptr inbounds ptr, ptr %938, i64 %894
  store ptr %887, ptr %939, align 8, !tbaa !19
  %940 = load ptr, ptr %11, align 8, !tbaa !12
  %941 = ptrtoint ptr %940 to i64
  %942 = or i64 %941, %894
  %943 = inttoptr i64 %942 to ptr
  %944 = getelementptr inbounds ptr, ptr %891, i64 %889
  store ptr %943, ptr %944, align 8, !tbaa !19
  %945 = load i32, ptr %814, align 8, !tbaa !21
  %.not551 = icmp eq i32 %945, 0
  br i1 %.not551, label %1036, label %946

946:                                              ; preds = %882
  %947 = load ptr, ptr %10, align 8, !tbaa !12
  %948 = getelementptr ptr, ptr %947, i64 %885
  %949 = getelementptr i8, ptr %948, i64 48
  %950 = load ptr, ptr %949, align 8, !tbaa !19
  %951 = ptrtoint ptr %950 to i64
  %952 = and i64 %951, -4
  %953 = inttoptr i64 %952 to ptr
  %954 = getelementptr i8, ptr %907, i64 48
  %955 = load ptr, ptr %954, align 8, !tbaa !19
  %956 = ptrtoint ptr %955 to i64
  %957 = and i64 %956, 1
  %958 = and i64 %956, -4
  %959 = inttoptr i64 %958 to ptr
  %960 = load ptr, ptr %9, align 8, !tbaa !12
  %961 = getelementptr ptr, ptr %960, i64 %915
  %962 = getelementptr i8, ptr %961, i64 48
  %963 = load ptr, ptr %962, align 8, !tbaa !19
  %964 = ptrtoint ptr %963 to i64
  %965 = and i64 %964, 1
  %966 = and i64 %964, -4
  %967 = inttoptr i64 %966 to ptr
  %968 = load ptr, ptr %11, align 8, !tbaa !12
  %969 = getelementptr ptr, ptr %968, i64 %894
  %970 = getelementptr i8, ptr %969, i64 48
  %971 = load ptr, ptr %970, align 8, !tbaa !19
  %972 = ptrtoint ptr %971 to i64
  %973 = and i64 %972, 1
  %974 = and i64 %972, -4
  %975 = inttoptr i64 %974 to ptr
  %976 = load ptr, ptr %816, align 8, !tbaa !22
  %977 = icmp eq ptr %976, %953
  br i1 %977, label %978, label %979

978:                                              ; preds = %946
  store ptr %976, ptr %970, align 8, !tbaa !19
  br label %989

979:                                              ; preds = %946
  %980 = and i64 %951, 1
  %981 = and i64 %951, -3
  %982 = inttoptr i64 %981 to ptr
  store ptr %982, ptr %970, align 8, !tbaa !19
  %983 = load ptr, ptr %11, align 8, !tbaa !12
  %984 = ptrtoint ptr %983 to i64
  %985 = or i64 %984, %894
  %986 = inttoptr i64 %985 to ptr
  %987 = or disjoint i64 %980, 6
  %988 = getelementptr inbounds ptr, ptr %953, i64 %987
  store ptr %986, ptr %988, align 8, !tbaa !19
  br label %989

989:                                              ; preds = %979, %978
  %990 = load ptr, ptr %816, align 8, !tbaa !22
  %991 = icmp eq ptr %990, %959
  br i1 %991, label %992, label %996

992:                                              ; preds = %989
  %993 = load ptr, ptr %10, align 8, !tbaa !12
  %994 = getelementptr ptr, ptr %993, i64 %885
  %995 = getelementptr i8, ptr %994, i64 48
  store ptr %990, ptr %995, align 8, !tbaa !19
  br label %1008

996:                                              ; preds = %989
  %997 = and i64 %956, -3
  %998 = inttoptr i64 %997 to ptr
  %999 = load ptr, ptr %10, align 8, !tbaa !12
  %1000 = getelementptr ptr, ptr %999, i64 %885
  %1001 = getelementptr i8, ptr %1000, i64 48
  store ptr %998, ptr %1001, align 8, !tbaa !19
  %1002 = load ptr, ptr %10, align 8, !tbaa !12
  %1003 = ptrtoint ptr %1002 to i64
  %1004 = or i64 %1003, %885
  %1005 = inttoptr i64 %1004 to ptr
  %1006 = or disjoint i64 %957, 6
  %1007 = getelementptr inbounds ptr, ptr %959, i64 %1006
  store ptr %1005, ptr %1007, align 8, !tbaa !19
  br label %1008

1008:                                             ; preds = %996, %992
  %1009 = load ptr, ptr %816, align 8, !tbaa !22
  %1010 = icmp eq ptr %1009, %967
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1008
  store ptr %1009, ptr %954, align 8, !tbaa !19
  br label %1017

1012:                                             ; preds = %1008
  %1013 = and i64 %964, -3
  %1014 = inttoptr i64 %1013 to ptr
  store ptr %1014, ptr %954, align 8, !tbaa !19
  %1015 = or disjoint i64 %965, 6
  %1016 = getelementptr inbounds ptr, ptr %967, i64 %1015
  store ptr %929, ptr %1016, align 8, !tbaa !19
  br label %1017

1017:                                             ; preds = %1012, %1011
  %1018 = load ptr, ptr %816, align 8, !tbaa !22
  %1019 = icmp eq ptr %1018, %975
  br i1 %1019, label %1020, label %1024

1020:                                             ; preds = %1017
  %1021 = load ptr, ptr %9, align 8, !tbaa !12
  %1022 = getelementptr ptr, ptr %1021, i64 %915
  %1023 = getelementptr i8, ptr %1022, i64 48
  store ptr %1018, ptr %1023, align 8, !tbaa !19
  br label %1036

1024:                                             ; preds = %1017
  %1025 = and i64 %972, -3
  %1026 = inttoptr i64 %1025 to ptr
  %1027 = load ptr, ptr %9, align 8, !tbaa !12
  %1028 = getelementptr ptr, ptr %1027, i64 %915
  %1029 = getelementptr i8, ptr %1028, i64 48
  store ptr %1026, ptr %1029, align 8, !tbaa !19
  %1030 = load ptr, ptr %9, align 8, !tbaa !12
  %1031 = ptrtoint ptr %1030 to i64
  %1032 = or i64 %1031, %915
  %1033 = inttoptr i64 %1032 to ptr
  %1034 = or disjoint i64 %973, 6
  %1035 = getelementptr inbounds ptr, ptr %975, i64 %1034
  store ptr %1033, ptr %1035, align 8, !tbaa !19
  br label %1036

1036:                                             ; preds = %1020, %1024, %882
  %1037 = load ptr, ptr %8, align 8, !tbaa !12
  %1038 = getelementptr ptr, ptr %1037, i64 %906
  %1039 = getelementptr i8, ptr %1038, i64 24
  store ptr %856, ptr %1039, align 8, !tbaa !19
  %1040 = load ptr, ptr %8, align 8, !tbaa !12
  %1041 = getelementptr ptr, ptr %1040, i64 %915
  %1042 = getelementptr i8, ptr %1041, i64 24
  store ptr %2, ptr %1042, align 8, !tbaa !19
  %1043 = load ptr, ptr %8, align 8, !tbaa !12
  %1044 = getelementptr ptr, ptr %1043, i64 %903
  %1045 = getelementptr i8, ptr %1044, i64 24
  store ptr %.0499.ph, ptr %1045, align 8, !tbaa !19
  %1046 = getelementptr i8, ptr %895, i64 24
  store ptr %2, ptr %1046, align 8, !tbaa !19
  %1047 = getelementptr i8, ptr %886, i64 24
  store ptr %856, ptr %1047, align 8, !tbaa !19
  store ptr %.0501, ptr %855, align 8, !tbaa !19
  %1048 = load i32, ptr %823, align 8, !tbaa !30
  %1049 = icmp sgt i32 %1048, 0
  br i1 %1049, label %.lr.ph593, label %._crit_edge594

.lr.ph593:                                        ; preds = %1036
  %1050 = load i32, ptr %824, align 8, !tbaa !31
  %1051 = load ptr, ptr %8, align 8, !tbaa !12
  %1052 = sext i32 %1050 to i64
  %wide.trip.count613 = zext nneg i32 %1048 to i64
  %min.iters.check684 = icmp ult i32 %1048, 4
  br i1 %min.iters.check684, label %scalar.ph683.preheader, label %vector.memcheck678

vector.memcheck678:                               ; preds = %.lr.ph593
  %1053 = shl nsw i64 %1052, 3
  %scevgep = getelementptr i8, ptr %850, i64 %1053
  %1054 = add nsw i64 %1052, %wide.trip.count613
  %1055 = shl nsw i64 %1054, 3
  %scevgep679 = getelementptr i8, ptr %850, i64 %1055
  %scevgep680 = getelementptr i8, ptr %1051, i64 %1053
  %scevgep681 = getelementptr i8, ptr %1051, i64 %1055
  %bound0 = icmp ult ptr %scevgep, %scevgep681
  %bound1 = icmp ult ptr %scevgep680, %scevgep679
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph683.preheader, label %vector.ph685

vector.ph685:                                     ; preds = %vector.memcheck678
  %n.vec687 = and i64 %wide.trip.count613, 2147483646
  br label %vector.body689

vector.body689:                                   ; preds = %vector.body689, %vector.ph685
  %index690 = phi i64 [ 0, %vector.ph685 ], [ %index.next693, %vector.body689 ]
  %1056 = add nsw i64 %index690, %1052
  %1057 = getelementptr inbounds double, ptr %850, i64 %1056
  %wide.load691 = load <2 x double>, ptr %1057, align 8, !tbaa !11, !alias.scope !58, !noalias !61
  %1058 = getelementptr inbounds double, ptr %1051, i64 %1056
  %wide.load692 = load <2 x double>, ptr %1058, align 8, !tbaa !11, !alias.scope !61
  %1059 = fadd <2 x double> %wide.load691, %wide.load692
  %1060 = fmul <2 x double> %1059, <double 5.000000e-01, double 5.000000e-01>
  store <2 x double> %1060, ptr %1057, align 8, !tbaa !11, !alias.scope !58, !noalias !61
  store <2 x double> %1060, ptr %1058, align 8, !tbaa !11, !alias.scope !61
  %index.next693 = add nuw i64 %index690, 2
  %1061 = icmp eq i64 %index.next693, %n.vec687
  br i1 %1061, label %middle.block682, label %vector.body689, !llvm.loop !63

middle.block682:                                  ; preds = %vector.body689
  %cmp.n694 = icmp eq i64 %n.vec687, %wide.trip.count613
  br i1 %cmp.n694, label %._crit_edge594, label %scalar.ph683.preheader

scalar.ph683.preheader:                           ; preds = %middle.block682, %vector.memcheck678, %.lr.ph593
  %indvars.iv610.ph = phi i64 [ 0, %vector.memcheck678 ], [ 0, %.lr.ph593 ], [ %n.vec687, %middle.block682 ]
  %xtraiter709 = and i64 %wide.trip.count613, 1
  %lcmp.mod710.not = icmp eq i64 %xtraiter709, 0
  br i1 %lcmp.mod710.not, label %scalar.ph683.prol.loopexit, label %scalar.ph683.prol

scalar.ph683.prol:                                ; preds = %scalar.ph683.preheader
  %1062 = add nsw i64 %indvars.iv610.ph, %1052
  %1063 = getelementptr inbounds double, ptr %850, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  %1065 = getelementptr inbounds double, ptr %1051, i64 %1062
  %1066 = load double, ptr %1065, align 8, !tbaa !11
  %1067 = fadd double %1064, %1066
  %1068 = fmul double %1067, 5.000000e-01
  store double %1068, ptr %1063, align 8, !tbaa !11
  store double %1068, ptr %1065, align 8, !tbaa !11
  %indvars.iv.next611.prol = or disjoint i64 %indvars.iv610.ph, 1
  br label %scalar.ph683.prol.loopexit

scalar.ph683.prol.loopexit:                       ; preds = %scalar.ph683.prol, %scalar.ph683.preheader
  %indvars.iv610.unr = phi i64 [ %indvars.iv610.ph, %scalar.ph683.preheader ], [ %indvars.iv.next611.prol, %scalar.ph683.prol ]
  %1069 = add nsw i64 %wide.trip.count613, -1
  %1070 = icmp eq i64 %indvars.iv610.ph, %1069
  br i1 %1070, label %._crit_edge594, label %scalar.ph683

scalar.ph683:                                     ; preds = %scalar.ph683.prol.loopexit, %scalar.ph683
  %indvars.iv610 = phi i64 [ %indvars.iv.next611.1, %scalar.ph683 ], [ %indvars.iv610.unr, %scalar.ph683.prol.loopexit ]
  %1071 = add nsw i64 %indvars.iv610, %1052
  %1072 = getelementptr inbounds double, ptr %850, i64 %1071
  %1073 = load double, ptr %1072, align 8, !tbaa !11
  %1074 = getelementptr inbounds double, ptr %1051, i64 %1071
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  %1076 = fadd double %1073, %1075
  %1077 = fmul double %1076, 5.000000e-01
  store double %1077, ptr %1072, align 8, !tbaa !11
  store double %1077, ptr %1074, align 8, !tbaa !11
  %indvars.iv.next611 = add nuw nsw i64 %indvars.iv610, 1
  %1078 = add nsw i64 %indvars.iv.next611, %1052
  %1079 = getelementptr inbounds double, ptr %850, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !11
  %1081 = getelementptr inbounds double, ptr %1051, i64 %1078
  %1082 = load double, ptr %1081, align 8, !tbaa !11
  %1083 = fadd double %1080, %1082
  %1084 = fmul double %1083, 5.000000e-01
  store double %1084, ptr %1079, align 8, !tbaa !11
  store double %1084, ptr %1081, align 8, !tbaa !11
  %indvars.iv.next611.1 = add nuw nsw i64 %indvars.iv610, 2
  %exitcond614.not.1 = icmp eq i64 %indvars.iv.next611.1, %wide.trip.count613
  br i1 %exitcond614.not.1, label %._crit_edge594, label %scalar.ph683, !llvm.loop !64

._crit_edge594:                                   ; preds = %scalar.ph683.prol.loopexit, %scalar.ph683, %middle.block682, %1036
  %1085 = load i32, ptr %825, align 4, !tbaa !39
  %.not552 = icmp eq i32 %1085, 0
  br i1 %.not552, label %1101, label %1086

1086:                                             ; preds = %._crit_edge594
  %1087 = load i32, ptr %826, align 4, !tbaa !40
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds double, ptr %850, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !11
  %1091 = fcmp ugt double %1090, 0.000000e+00
  %.pre625 = load ptr, ptr %8, align 8, !tbaa !12
  br i1 %1091, label %1092, label %1099

1092:                                             ; preds = %1086
  %1093 = getelementptr inbounds double, ptr %.pre625, i64 %1088
  %1094 = load double, ptr %1093, align 8, !tbaa !11
  %1095 = fcmp ugt double %1094, 0.000000e+00
  br i1 %1095, label %1096, label %1099

1096:                                             ; preds = %1092
  %1097 = fadd double %1090, %1094
  %1098 = fmul double %1097, 5.000000e-01
  br label %1099

1099:                                             ; preds = %1086, %1092, %1096
  %.0498 = phi double [ %1098, %1096 ], [ -1.000000e+00, %1092 ], [ -1.000000e+00, %1086 ]
  store double %.0498, ptr %1089, align 8, !tbaa !11
  %1100 = getelementptr inbounds double, ptr %.pre625, i64 %1088
  store double %.0498, ptr %1100, align 8, !tbaa !11
  br label %1101

1101:                                             ; preds = %1099, %._crit_edge594
  %1102 = load i32, ptr %827, align 4, !tbaa !48
  %.not553 = icmp eq i32 %1102, 0
  br i1 %.not553, label %1113, label %1103

1103:                                             ; preds = %1101
  %1104 = call ptr @poolalloc(ptr noundef nonnull %828)
  %1105 = load ptr, ptr %8, align 8, !tbaa !12
  %1106 = ptrtoint ptr %1105 to i64
  %1107 = load i32, ptr %801, align 8, !tbaa !20
  %1108 = sext i32 %1107 to i64
  %1109 = or i64 %1108, %1106
  %1110 = inttoptr i64 %1109 to ptr
  store ptr %1110, ptr %1104, align 8, !tbaa !50
  %1111 = load ptr, ptr %829, align 8, !tbaa !49
  %1112 = getelementptr inbounds i8, ptr %1104, i64 8
  store ptr %1111, ptr %1112, align 8, !tbaa !52
  store ptr %1104, ptr %829, align 8, !tbaa !49
  br label %1113

1113:                                             ; preds = %1103, %1101
  %1114 = phi i32 [ %1107, %1103 ], [ %902, %1101 ]
  %1115 = load i32, ptr %16, align 4, !tbaa !5
  %1116 = icmp sgt i32 %1115, 2
  br i1 %1116, label %1117, label %.critedge

1117:                                             ; preds = %1113
  %1118 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.954)
  %1119 = load i32, ptr %820, align 8, !tbaa !20
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1120
  %1122 = load i32, ptr %1121, align 4, !tbaa !28
  store i32 %1122, ptr %820, align 8, !tbaa !20
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %10)
  %1123 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.955)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  %.pre626 = load i32, ptr %801, align 8, !tbaa !20
  br label %.critedge

.critedge:                                        ; preds = %1113, %1117
  %1124 = phi i32 [ %1114, %1113 ], [ %.pre626, %1117 ]
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1125
  %1127 = load i32, ptr %1126, align 4, !tbaa !28
  store i32 %1127, ptr %801, align 8, !tbaa !20
  %.pre623.pre.pre = load ptr, ptr %8, align 8, !tbaa !12
  br label %830

.thread569:                                       ; preds = %879, %._crit_edge632, %875, %865, %872, %843, %842
  %.1497572.ph = phi i32 [ %spec.select, %843 ], [ %.0496.ph, %842 ], [ %.0496.ph, %872 ], [ %.0496.ph, %865 ], [ %.0496.ph, %875 ], [ %.0496.ph, %._crit_edge632 ], [ %.0496.ph, %879 ]
  br i1 %.not555, label %1129, label %1128

1128:                                             ; preds = %.thread569
  call void @testtriangle(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %8)
  br label %1129

1129:                                             ; preds = %1128, %.thread569
  %1130 = load i32, ptr %801, align 8, !tbaa !20
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1131
  %1133 = load i32, ptr %1132, align 4, !tbaa !28
  %1134 = load ptr, ptr %8, align 8, !tbaa !12
  %1135 = sext i32 %1133 to i64
  %1136 = getelementptr inbounds ptr, ptr %1134, i64 %1135
  %1137 = load ptr, ptr %1136, align 8, !tbaa !19
  %1138 = ptrtoint ptr %1137 to i64
  %1139 = and i64 %1138, 3
  %1140 = and i64 %1138, -4
  %1141 = inttoptr i64 %1140 to ptr
  %1142 = icmp eq ptr %.0501, %808
  br i1 %1142, label %1146, label %1143

1143:                                             ; preds = %1129
  %1144 = load ptr, ptr %813, align 8, !tbaa !15
  %1145 = icmp eq ptr %1144, %1141
  br i1 %1145, label %1146, label %1149

1146:                                             ; preds = %1143, %1129
  store ptr %1134, ptr %3, align 8, !tbaa !12
  %1147 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1135
  %1148 = load i32, ptr %1147, align 4, !tbaa !28
  br label %1157

1149:                                             ; preds = %1143
  store ptr %1141, ptr %8, align 8, !tbaa !12
  %1150 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1139
  %1151 = load i32, ptr %1150, align 4, !tbaa !28
  store i32 %1151, ptr %801, align 8, !tbaa !20
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1152
  %1154 = load i32, ptr %1153, align 4, !tbaa !28
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr ptr, ptr %1141, i64 %1155
  br label %.outer

1157:                                             ; preds = %1146, %107, %51
  %.sink641 = phi i32 [ %1148, %1146 ], [ %109, %107 ], [ %54, %51 ]
  %.lcssa638.sink = phi ptr [ %1134, %1146 ], [ %108, %107 ], [ %52, %51 ]
  %.0491 = phi i32 [ %.1497572.ph, %1146 ], [ 2, %107 ], [ 3, %51 ]
  %1158 = getelementptr inbounds i8, ptr %3, i64 8
  store i32 %.sink641, ptr %1158, align 8, !tbaa !20
  %1159 = getelementptr inbounds i8, ptr %0, i64 82888
  store ptr %.lcssa638.sink, ptr %1159, align 8, !tbaa !65
  %1160 = getelementptr inbounds i8, ptr %0, i64 82896
  store i32 %.sink641, ptr %1160, align 8, !tbaa !66
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #3
  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 i32 %.0491
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 116}
!6 = !{!"behavior", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !8, i64 168, !8, i64 2216, !8, i64 4264, !8, i64 6312, !8, i64 8360, !8, i64 10408, !8, i64 12456, !8, i64 14504, !8, i64 16552, !8, i64 18600, !8, i64 20648, !8, i64 22696}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!10, !10, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"otri", !14, i64 0, !7, i64 8}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!16, !14, i64 82856}
!16 = !{!"mesh", !17, i64 0, !17, i64 88, !17, i64 176, !17, i64 264, !17, i64 352, !17, i64 440, !17, i64 528, !17, i64 616, !8, i64 704, !8, i64 33472, !8, i64 66240, !7, i64 82624, !14, i64 82632, !10, i64 82640, !10, i64 82648, !10, i64 82656, !10, i64 82664, !10, i64 82672, !7, i64 82680, !7, i64 82684, !7, i64 82688, !7, i64 82692, !7, i64 82696, !7, i64 82700, !18, i64 82704, !7, i64 82712, !7, i64 82716, !7, i64 82720, !18, i64 82728, !7, i64 82736, !7, i64 82740, !7, i64 82744, !7, i64 82748, !7, i64 82752, !7, i64 82756, !7, i64 82760, !7, i64 82764, !7, i64 82768, !18, i64 82776, !18, i64 82784, !18, i64 82792, !18, i64 82800, !18, i64 82808, !18, i64 82816, !18, i64 82824, !14, i64 82832, !14, i64 82840, !14, i64 82848, !14, i64 82856, !14, i64 82864, !14, i64 82872, !14, i64 82880, !13, i64 82888}
!17 = !{!"memorypool", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !18, i64 64, !18, i64 72, !7, i64 80, !7, i64 84}
!18 = !{!"long", !8, i64 0}
!19 = !{!14, !14, i64 0}
!20 = !{!13, !7, i64 8}
!21 = !{!16, !7, i64 82760}
!22 = !{!16, !14, i64 82872}
!23 = !{!6, !7, i64 128}
!24 = !{!25, !14, i64 0}
!25 = !{!"badsubseg", !14, i64 0, !14, i64 8, !14, i64 16}
!26 = !{!25, !14, i64 8}
!27 = !{!25, !14, i64 16}
!28 = !{!7, !7, i64 0}
!29 = !{!16, !18, i64 82728}
!30 = !{!16, !7, i64 82720}
!31 = !{!16, !7, i64 82752}
!32 = distinct !{!32, !33, !34, !35}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!"llvm.loop.isvectorized", i32 1}
!35 = !{!"llvm.loop.unroll.runtime.disable"}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.unroll.disable"}
!38 = distinct !{!38, !33, !34}
!39 = !{!6, !7, i64 12}
!40 = !{!16, !7, i64 82756}
!41 = distinct !{!41, !33, !34, !35}
!42 = distinct !{!42, !37}
!43 = distinct !{!43, !33, !34}
!44 = !{!45, !14, i64 0}
!45 = !{!"osub", !14, i64 0, !7, i64 8}
!46 = !{!45, !7, i64 8}
!47 = !{!16, !7, i64 82740}
!48 = !{!16, !7, i64 82764}
!49 = !{!16, !14, i64 82632}
!50 = !{!51, !14, i64 0}
!51 = !{!"flipstacker", !14, i64 0, !14, i64 8}
!52 = !{!51, !14, i64 8}
!53 = distinct !{!53, !33, !34, !35}
!54 = distinct !{!54, !33, !34}
!55 = !{!16, !14, i64 82832}
!56 = !{!16, !14, i64 82840}
!57 = !{!16, !14, i64 82848}
!58 = !{!59}
!59 = distinct !{!59, !60}
!60 = distinct !{!60, !"LVerDomain"}
!61 = !{!62}
!62 = distinct !{!62, !60}
!63 = distinct !{!63, !33, !34, !35}
!64 = distinct !{!64, !33, !34}
!65 = !{!16, !14, i64 82888}
!66 = !{!16, !7, i64 82896}


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