; LLVM IR from MIT-SPARK/Kimera-VIO :: third_party/triangle/src (triangle)

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

%struct.otri = type { ptr, i32 }
%struct.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, float, float, float, float }
%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, float, float, float, float, float, 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.44 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.55 = 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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @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 float @counterclockwise(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local float @incircle(ptr noundef, ptr noundef, ptr noundef, 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 float, align 4
  %49 = alloca float, align 4
  %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 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 %73

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

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

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

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

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

127:                                              ; preds = %114, %84
  br label %137

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

137:                                              ; preds = %128, %127
  %138 = load i32, ptr %51, align 4, !tbaa !9
  %139 = icmp eq i32 %138, 2
  br i1 %139, label %140, label %159

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

159:                                              ; preds = %137
  %160 = load i32, ptr %51, align 4, !tbaa !9
  %161 = icmp eq i32 %160, 1
  br i1 %161, label %165, label %162

162:                                              ; preds = %159
  %163 = load i32, ptr %51, align 4, !tbaa !9
  %164 = icmp eq i32 %163, 3
  br i1 %164, label %165, label %1214

165:                                              ; preds = %162, %159
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.mesh, ptr %166, i32 0, i32 35
  %168 = load i32, ptr %167, align 8, !tbaa !24
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %331

170:                                              ; preds = %165
  %171 = load ptr, ptr %13, align 8, !tbaa !5
  %172 = icmp eq ptr %171, null
  br i1 %172, label %173, label %331

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

198:                                              ; preds = %173
  %199 = load i32, ptr %14, align 4, !tbaa !9
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %311

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

209:                                              ; preds = %201
  %210 = load ptr, ptr %10, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.behavior, ptr %210, i32 0, i32 32
  %212 = load i32, ptr %211, align 4, !tbaa !29
  %213 = icmp eq i32 %212, 1
  br i1 %213, label %214, label %242

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

242:                                              ; preds = %214, %209, %201
  %243 = load i32, ptr %54, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %310

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

283:                                              ; preds = %245
  %284 = load ptr, ptr %38, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.badsubseg, ptr %284, i32 0, i32 1
  %286 = load ptr, ptr %285, align 8, !tbaa !32
  %287 = getelementptr inbounds float, ptr %286, i64 0
  %288 = load float, ptr %287, align 4, !tbaa !14
  %289 = fpext float %288 to double
  %290 = load ptr, ptr %38, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.badsubseg, ptr %290, i32 0, i32 1
  %292 = load ptr, ptr %291, align 8, !tbaa !32
  %293 = getelementptr inbounds float, ptr %292, i64 1
  %294 = load float, ptr %293, align 4, !tbaa !14
  %295 = fpext float %294 to double
  %296 = load ptr, ptr %38, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.badsubseg, ptr %296, i32 0, i32 2
  %298 = load ptr, ptr %297, align 8, !tbaa !33
  %299 = getelementptr inbounds float, ptr %298, i64 0
  %300 = load float, ptr %299, align 4, !tbaa !14
  %301 = fpext float %300 to double
  %302 = load ptr, ptr %38, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.badsubseg, ptr %302, i32 0, i32 2
  %304 = load ptr, ptr %303, align 8, !tbaa !33
  %305 = getelementptr inbounds float, ptr %304, i64 1
  %306 = load float, ptr %305, align 4, !tbaa !14
  %307 = fpext float %306 to double
  %308 = call i32 (ptr, ...) @printf(ptr noundef @.str.48, double noundef %289, double noundef %295, double noundef %301, double noundef %307)
  br label %309

309:                                              ; preds = %283, %245
  br label %310

310:                                              ; preds = %309, %242
  br label %311

311:                                              ; preds = %310, %198
  %312 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %313 = load ptr, ptr %312, align 8, !tbaa !15
  %314 = load ptr, ptr %12, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.otri, ptr %314, i32 0, i32 0
  store ptr %313, ptr %315, align 8, !tbaa !15
  %316 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %317 = load i32, ptr %316, align 8, !tbaa !21
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.otri, ptr %318, i32 0, i32 1
  store i32 %317, ptr %319, align 8, !tbaa !21
  %320 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %321 = load ptr, ptr %320, align 8, !tbaa !15
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.mesh, ptr %322, i32 0, i32 52
  %324 = getelementptr inbounds %struct.otri, ptr %323, i32 0, i32 0
  store ptr %321, ptr %324, align 8, !tbaa !22
  %325 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %326 = load i32, ptr %325, align 8, !tbaa !21
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.mesh, ptr %327, i32 0, i32 52
  %329 = getelementptr inbounds %struct.otri, ptr %328, i32 0, i32 1
  store i32 %326, ptr %329, align 8, !tbaa !23
  store i32 2, ptr %8, align 4
  store i32 1, ptr %58, align 4
  br label %2806

330:                                              ; preds = %173
  br label %331

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

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

419:                                              ; preds = %331
  %420 = load ptr, ptr %9, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.mesh, ptr %420, i32 0, i32 28
  %422 = load i64, ptr %421, align 8, !tbaa !34
  %423 = add nsw i64 %422, 1
  store i64 %423, ptr %421, align 8, !tbaa !34
  br label %424

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

498:                                              ; preds = %524, %424
  %499 = load i32, ptr %55, align 4, !tbaa !9
  %500 = load ptr, ptr %9, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.mesh, ptr %500, i32 0, i32 27
  %502 = load i32, ptr %501, align 8, !tbaa !35
  %503 = icmp slt i32 %499, %502
  br i1 %503, label %504, label %527

504:                                              ; preds = %498
  %505 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %506 = load ptr, ptr %505, align 8, !tbaa !15
  %507 = load ptr, ptr %9, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.mesh, ptr %507, i32 0, i32 33
  %509 = load i32, ptr %508, align 8, !tbaa !36
  %510 = load i32, ptr %55, align 4, !tbaa !9
  %511 = add nsw i32 %509, %510
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds float, ptr %506, i64 %512
  %514 = load float, ptr %513, align 4, !tbaa !14
  %515 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %516 = load ptr, ptr %515, align 8, !tbaa !15
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.mesh, ptr %517, i32 0, i32 33
  %519 = load i32, ptr %518, align 8, !tbaa !36
  %520 = load i32, ptr %55, align 4, !tbaa !9
  %521 = add nsw i32 %519, %520
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds float, ptr %516, i64 %522
  store float %514, ptr %523, align 4, !tbaa !14
  br label %524

524:                                              ; preds = %504
  %525 = load i32, ptr %55, align 4, !tbaa !9
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %55, align 4, !tbaa !9
  br label %498, !llvm.loop !37

527:                                              ; preds = %498
  %528 = load ptr, ptr %10, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.behavior, ptr %528, i32 0, i32 3
  %530 = load i32, ptr %529, align 4, !tbaa !39
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %548

532:                                              ; preds = %527
  %533 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %534 = load ptr, ptr %533, align 8, !tbaa !15
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.mesh, ptr %535, i32 0, i32 34
  %537 = load i32, ptr %536, align 4, !tbaa !40
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %534, i64 %538
  %540 = load float, ptr %539, align 4, !tbaa !14
  %541 = getelementptr inbounds %struct.otri, ptr %23, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !15
  %543 = load ptr, ptr %9, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.mesh, ptr %543, i32 0, i32 34
  %545 = load i32, ptr %544, align 4, !tbaa !40
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds float, ptr %542, i64 %546
  store float %540, ptr %547, align 4, !tbaa !14
  br label %548

548:                                              ; preds = %532, %527
  %549 = load i32, ptr %53, align 4, !tbaa !9
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %655

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

604:                                              ; preds = %630, %551
  %605 = load i32, ptr %55, align 4, !tbaa !9
  %606 = load ptr, ptr %9, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.mesh, ptr %606, i32 0, i32 27
  %608 = load i32, ptr %607, align 8, !tbaa !35
  %609 = icmp slt i32 %605, %608
  br i1 %609, label %610, label %633

610:                                              ; preds = %604
  %611 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %612 = load ptr, ptr %611, align 8, !tbaa !15
  %613 = load ptr, ptr %9, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.mesh, ptr %613, i32 0, i32 33
  %615 = load i32, ptr %614, align 8, !tbaa !36
  %616 = load i32, ptr %55, align 4, !tbaa !9
  %617 = add nsw i32 %615, %616
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds float, ptr %612, i64 %618
  %620 = load float, ptr %619, align 4, !tbaa !14
  %621 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %622 = load ptr, ptr %621, align 8, !tbaa !15
  %623 = load ptr, ptr %9, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.mesh, ptr %623, i32 0, i32 33
  %625 = load i32, ptr %624, align 8, !tbaa !36
  %626 = load i32, ptr %55, align 4, !tbaa !9
  %627 = add nsw i32 %625, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds float, ptr %622, i64 %628
  store float %620, ptr %629, align 4, !tbaa !14
  br label %630

630:                                              ; preds = %610
  %631 = load i32, ptr %55, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %55, align 4, !tbaa !9
  br label %604, !llvm.loop !41

633:                                              ; preds = %604
  %634 = load ptr, ptr %10, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.behavior, ptr %634, i32 0, i32 3
  %636 = load i32, ptr %635, align 4, !tbaa !39
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %654

638:                                              ; preds = %633
  %639 = getelementptr inbounds %struct.otri, ptr %21, i32 0, i32 0
  %640 = load ptr, ptr %639, align 8, !tbaa !15
  %641 = load ptr, ptr %9, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.mesh, ptr %641, i32 0, i32 34
  %643 = load i32, ptr %642, align 4, !tbaa !40
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds float, ptr %640, i64 %644
  %646 = load float, ptr %645, align 4, !tbaa !14
  %647 = getelementptr inbounds %struct.otri, ptr %24, i32 0, i32 0
  %648 = load ptr, ptr %647, align 8, !tbaa !15
  %649 = load ptr, ptr %9, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.mesh, ptr %649, i32 0, i32 34
  %651 = load i32, ptr %650, align 4, !tbaa !40
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds float, ptr %648, i64 %652
  store float %646, ptr %653, align 4, !tbaa !14
  br label %654

654:                                              ; preds = %638, %633
  br label %655

655:                                              ; preds = %654, %548
  %656 = load ptr, ptr %9, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.mesh, ptr %656, i32 0, i32 35
  %658 = load i32, ptr %657, align 8, !tbaa !24
  %659 = icmp ne i32 %658, 0
  br i1 %659, label %660, label %797

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

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

726:                                              ; preds = %685, %660
  %727 = load i32, ptr %53, align 4, !tbaa !9
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %796

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

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

795:                                              ; preds = %754, %729
  br label %796

796:                                              ; preds = %795, %726
  br label %797

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

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

965:                                              ; preds = %868, %797
  %966 = load ptr, ptr %13, align 8, !tbaa !5
  %967 = icmp ne ptr %966, null
  br i1 %967, label %968, label %1156

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

1143:                                             ; preds = %968
  %1144 = load ptr, ptr %13, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.osub, ptr %1144, i32 0, i32 0
  %1146 = load ptr, ptr %1145, align 8, !tbaa !27
  %1147 = getelementptr inbounds ptr, ptr %1146, i64 8
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = load ptr, ptr %11, align 8, !tbaa !5
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.mesh, ptr %1150, i32 0, i32 30
  %1152 = load i32, ptr %1151, align 4, !tbaa !42
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i32, ptr %1149, i64 %1153
  store i32 %1148, ptr %1154, align 4, !tbaa !9
  br label %1155

1155:                                             ; preds = %1143, %968
  br label %1156

1156:                                             ; preds = %1155, %965
  %1157 = load ptr, ptr %9, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.mesh, ptr %1157, i32 0, i32 36
  %1159 = load i32, ptr %1158, align 4, !tbaa !43
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1161, label %1185

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

1185:                                             ; preds = %1161, %1156
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.behavior, ptr %1186, i32 0, i32 29
  %1188 = load i32, ptr %1187, align 4, !tbaa !11
  %1189 = icmp sgt i32 %1188, 2
  br i1 %1189, label %1190, label %1207

1190:                                             ; preds = %1185
  %1191 = call i32 (ptr, ...) @printf(ptr noundef @.str.49)
  %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 %19)
  %1194 = load i32, ptr %53, align 4, !tbaa !9
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1203

1196:                                             ; preds = %1190
  %1197 = call i32 (ptr, ...) @printf(ptr noundef @.str.50)
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1198, ptr noundef %1199, ptr noundef %21)
  %1200 = call i32 (ptr, ...) @printf(ptr noundef @.str.51)
  %1201 = load ptr, ptr %9, align 8, !tbaa !5
  %1202 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1201, ptr noundef %1202, ptr noundef %24)
  br label %1203

1203:                                             ; preds = %1196, %1190
  %1204 = call i32 (ptr, ...) @printf(ptr noundef @.str.52)
  %1205 = load ptr, ptr %9, align 8, !tbaa !5
  %1206 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1205, ptr noundef %1206, ptr noundef %23)
  br label %1207

1207:                                             ; preds = %1203, %1185
  %1208 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %1209 = load i32, ptr %1208, align 8, !tbaa !21
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1210
  %1212 = load i32, ptr %1211, align 4, !tbaa !9
  %1213 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %1212, ptr %1213, align 8, !tbaa !21
  br label %1792

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

1375:                                             ; preds = %1412, %1214
  %1376 = load i32, ptr %55, align 4, !tbaa !9
  %1377 = load ptr, ptr %9, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.mesh, ptr %1377, i32 0, i32 27
  %1379 = load i32, ptr %1378, align 8, !tbaa !35
  %1380 = icmp slt i32 %1376, %1379
  br i1 %1380, label %1381, label %1415

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

1412:                                             ; preds = %1381
  %1413 = load i32, ptr %55, align 4, !tbaa !9
  %1414 = add nsw i32 %1413, 1
  store i32 %1414, ptr %55, align 4, !tbaa !9
  br label %1375, !llvm.loop !48

1415:                                             ; preds = %1375
  %1416 = load ptr, ptr %10, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.behavior, ptr %1416, i32 0, i32 3
  %1418 = load i32, ptr %1417, align 4, !tbaa !39
  %1419 = icmp ne i32 %1418, 0
  br i1 %1419, label %1420, label %1445

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

1445:                                             ; preds = %1420, %1415
  %1446 = load ptr, ptr %9, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.mesh, ptr %1446, i32 0, i32 35
  %1448 = load i32, ptr %1447, align 8, !tbaa !24
  %1449 = icmp ne i32 %1448, 0
  br i1 %1449, label %1450, label %1583

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

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

1516:                                             ; preds = %1475, %1450
  %1517 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 0
  %1518 = load ptr, ptr %1517, align 8, !tbaa !15
  %1519 = getelementptr inbounds %struct.otri, ptr %19, i32 0, i32 1
  %1520 = load i32, ptr %1519, align 8, !tbaa !21
  %1521 = add nsw i32 6, %1520
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds ptr, ptr %1518, i64 %1522
  %1524 = load ptr, ptr %1523, align 8, !tbaa !5
  store ptr %1524, ptr %57, align 8, !tbaa !5
  %1525 = load ptr, ptr %57, align 8, !tbaa !5
  %1526 = ptrtoint ptr %1525 to i64
  %1527 = and i64 %1526, 1
  %1528 = trunc i64 %1527 to i32
  %1529 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 1
  store i32 %1528, ptr %1529, align 8, !tbaa !25
  %1530 = load ptr, ptr %57, align 8, !tbaa !5
  %1531 = ptrtoint ptr %1530 to i64
  %1532 = and i64 %1531, -4
  %1533 = inttoptr i64 %1532 to ptr
  %1534 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  store ptr %1533, ptr %1534, align 8, !tbaa !27
  %1535 = getelementptr inbounds %struct.osub, ptr %31, i32 0, i32 0
  %1536 = load ptr, ptr %1535, align 8, !tbaa !27
  %1537 = load ptr, ptr %9, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.mesh, ptr %1537, i32 0, i32 50
  %1539 = load ptr, ptr %1538, align 8, !tbaa !28
  %1540 = icmp ne ptr %1536, %1539
  br i1 %1540, label %1541, label %1582

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

1582:                                             ; preds = %1541, %1516
  br label %1583

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

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

1776:                                             ; preds = %1752, %1583
  %1777 = load ptr, ptr %10, align 8, !tbaa !5
  %1778 = getelementptr inbounds %struct.behavior, ptr %1777, i32 0, i32 29
  %1779 = load i32, ptr %1778, align 4, !tbaa !11
  %1780 = icmp sgt i32 %1779, 2
  br i1 %1780, label %1781, label %1791

1781:                                             ; preds = %1776
  %1782 = call i32 (ptr, ...) @printf(ptr noundef @.str.53)
  %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 %16)
  %1785 = call i32 (ptr, ...) @printf(ptr noundef @.str.54)
  %1786 = load ptr, ptr %9, align 8, !tbaa !5
  %1787 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1786, ptr noundef %1787, ptr noundef %22)
  %1788 = call i32 (ptr, ...) @printf(ptr noundef @.str.55)
  %1789 = load ptr, ptr %9, align 8, !tbaa !5
  %1790 = load ptr, ptr %10, align 8, !tbaa !5
  call void @printtriangle(ptr noundef %1789, ptr noundef %1790, ptr noundef %23)
  br label %1791

1791:                                             ; preds = %1781, %1776
  br label %1792

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

1816:                                             ; preds = %2805, %1792
  br label %1817

1817:                                             ; preds = %1816
  store i32 1, ptr %52, align 4, !tbaa !9
  %1818 = load ptr, ptr %9, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.mesh, ptr %1818, i32 0, i32 35
  %1820 = load i32, ptr %1819, align 8, !tbaa !24
  %1821 = icmp ne i32 %1820, 0
  br i1 %1821, label %1822, label %1849

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

1847:                                             ; preds = %1822
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %1848

1848:                                             ; preds = %1847, %1822
  br label %1849

1849:                                             ; preds = %1848, %1817
  %1850 = load i32, ptr %52, align 4, !tbaa !9
  %1851 = icmp ne i32 %1850, 0
  br i1 %1851, label %1852, label %2717

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

1879:                                             ; preds = %1852
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %2716

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

1894:                                             ; preds = %1880
  %1895 = load ptr, ptr %41, align 8, !tbaa !5
  %1896 = load ptr, ptr %9, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.mesh, ptr %1896, i32 0, i32 46
  %1898 = load ptr, ptr %1897, align 8, !tbaa !50
  %1899 = icmp eq ptr %1895, %1898
  br i1 %1899, label %1906, label %1900

1900:                                             ; preds = %1894
  %1901 = load ptr, ptr %41, align 8, !tbaa !5
  %1902 = load ptr, ptr %9, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.mesh, ptr %1902, i32 0, i32 47
  %1904 = load ptr, ptr %1903, align 8, !tbaa !51
  %1905 = icmp eq ptr %1901, %1904
  br i1 %1905, label %1906, label %1916

1906:                                             ; preds = %1900, %1894, %1880
  %1907 = load ptr, ptr %9, align 8, !tbaa !5
  %1908 = load ptr, ptr %10, align 8, !tbaa !5
  %1909 = load ptr, ptr %11, align 8, !tbaa !5
  %1910 = load ptr, ptr %42, align 8, !tbaa !5
  %1911 = load ptr, ptr %45, align 8, !tbaa !5
  %1912 = call float @counterclockwise(ptr noundef %1907, ptr noundef %1908, ptr noundef %1909, ptr noundef %1910, ptr noundef %1911)
  %1913 = fpext float %1912 to double
  %1914 = fcmp ogt double %1913, 0.000000e+00
  %1915 = zext i1 %1914 to i32
  store i32 %1915, ptr %52, align 4, !tbaa !9
  br label %1976

1916:                                             ; preds = %1900
  %1917 = load ptr, ptr %42, align 8, !tbaa !5
  %1918 = load ptr, ptr %9, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.mesh, ptr %1918, i32 0, i32 45
  %1920 = load ptr, ptr %1919, align 8, !tbaa !49
  %1921 = icmp eq ptr %1917, %1920
  br i1 %1921, label %1934, label %1922

1922:                                             ; preds = %1916
  %1923 = load ptr, ptr %42, align 8, !tbaa !5
  %1924 = load ptr, ptr %9, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.mesh, ptr %1924, i32 0, i32 46
  %1926 = load ptr, ptr %1925, align 8, !tbaa !50
  %1927 = icmp eq ptr %1923, %1926
  br i1 %1927, label %1934, label %1928

1928:                                             ; preds = %1922
  %1929 = load ptr, ptr %42, align 8, !tbaa !5
  %1930 = load ptr, ptr %9, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.mesh, ptr %1930, i32 0, i32 47
  %1932 = load ptr, ptr %1931, align 8, !tbaa !51
  %1933 = icmp eq ptr %1929, %1932
  br i1 %1933, label %1934, label %1944

1934:                                             ; preds = %1928, %1922, %1916
  %1935 = load ptr, ptr %9, align 8, !tbaa !5
  %1936 = load ptr, ptr %10, align 8, !tbaa !5
  %1937 = load ptr, ptr %45, align 8, !tbaa !5
  %1938 = load ptr, ptr %41, align 8, !tbaa !5
  %1939 = load ptr, ptr %11, align 8, !tbaa !5
  %1940 = call float @counterclockwise(ptr noundef %1935, ptr noundef %1936, ptr noundef %1937, ptr noundef %1938, ptr noundef %1939)
  %1941 = fpext float %1940 to double
  %1942 = fcmp ogt double %1941, 0.000000e+00
  %1943 = zext i1 %1942 to i32
  store i32 %1943, ptr %52, align 4, !tbaa !9
  br label %1975

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

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

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

1962:                                             ; preds = %1956, %1950, %1944
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %1974

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

1974:                                             ; preds = %1963, %1962
  br label %1975

1975:                                             ; preds = %1974, %1934
  br label %1976

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2480:                                             ; preds = %2449, %2438
  br label %2481

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

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

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

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

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

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

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

2623:                                             ; preds = %2612, %2601
  store float -1.000000e+00, ptr %49, align 4, !tbaa !14
  br label %2645

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

2645:                                             ; preds = %2624, %2623
  %2646 = load float, ptr %49, align 4, !tbaa !14
  %2647 = getelementptr inbounds %struct.otri, ptr %17, i32 0, i32 0
  %2648 = load ptr, ptr %2647, align 8, !tbaa !15
  %2649 = load ptr, ptr %9, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.mesh, ptr %2649, i32 0, i32 34
  %2651 = load i32, ptr %2650, align 4, !tbaa !40
  %2652 = sext i32 %2651 to i64
  %2653 = getelementptr inbounds float, ptr %2648, i64 %2652
  store float %2646, ptr %2653, align 4, !tbaa !14
  %2654 = load float, ptr %49, align 4, !tbaa !14
  %2655 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 0
  %2656 = load ptr, ptr %2655, align 8, !tbaa !15
  %2657 = load ptr, ptr %9, align 8, !tbaa !5
  %2658 = getelementptr inbounds %struct.mesh, ptr %2657, i32 0, i32 34
  %2659 = load i32, ptr %2658, align 4, !tbaa !40
  %2660 = sext i32 %2659 to i64
  %2661 = getelementptr inbounds float, ptr %2656, i64 %2660
  store float %2654, ptr %2661, align 4, !tbaa !14
  br label %2662

2662:                                             ; preds = %2645, %2596
  %2663 = load ptr, ptr %9, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.mesh, ptr %2663, i32 0, i32 36
  %2665 = load i32, ptr %2664, align 4, !tbaa !43
  %2666 = icmp ne i32 %2665, 0
  br i1 %2666, label %2667, label %2689

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

2689:                                             ; preds = %2667, %2662
  %2690 = load ptr, ptr %10, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.behavior, ptr %2690, i32 0, i32 29
  %2692 = load i32, ptr %2691, align 4, !tbaa !11
  %2693 = icmp sgt i32 %2692, 2
  br i1 %2693, label %2694, label %2707

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

2707:                                             ; preds = %2694, %2689
  %2708 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  %2709 = load i32, ptr %2708, align 8, !tbaa !21
  %2710 = sext i32 %2709 to i64
  %2711 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %2710
  %2712 = load i32, ptr %2711, align 4, !tbaa !9
  %2713 = getelementptr inbounds %struct.otri, ptr %16, i32 0, i32 1
  store i32 %2712, ptr %2713, align 8, !tbaa !21
  %2714 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %2714, ptr %41, align 8, !tbaa !5
  br label %2715

2715:                                             ; preds = %2707, %1976
  br label %2716

2716:                                             ; preds = %2715, %1879
  br label %2717

2717:                                             ; preds = %2716, %1849
  %2718 = load i32, ptr %52, align 4, !tbaa !9
  %2719 = icmp ne i32 %2718, 0
  br i1 %2719, label %2805, label %2720

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

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

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

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

2805:                                             ; preds = %2783, %2717
  br label %1816

2806:                                             ; preds = %2757, %311, %140
  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 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  %2807 = load i32, ptr %8, align 4
  ret i32 %2807
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 116}
!12 = !{!"behavior", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148}
!13 = !{!"float", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!16, !6, i64 0}
!16 = !{!"otri", !6, i64 0, !10, i64 8}
!17 = !{!18, !6, i64 82840}
!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 82644, !13, i64 82648, !13, i64 82652, !13, i64 82656, !10, i64 82660, !10, i64 82664, !10, i64 82668, !10, i64 82672, !10, i64 82676, !10, i64 82680, !20, i64 82688, !10, i64 82696, !10, i64 82700, !10, i64 82704, !20, i64 82712, !10, i64 82720, !10, i64 82724, !10, i64 82728, !10, i64 82732, !10, i64 82736, !10, i64 82740, !10, i64 82744, !10, i64 82748, !10, i64 82752, !20, i64 82760, !20, i64 82768, !20, i64 82776, !20, i64 82784, !20, i64 82792, !20, i64 82800, !20, i64 82808, !6, i64 82816, !6, i64 82824, !6, i64 82832, !6, i64 82840, !6, i64 82848, !6, i64 82856, !6, i64 82864, !16, i64 82872}
!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 82872}
!23 = !{!18, !10, i64 82880}
!24 = !{!18, !10, i64 82744}
!25 = !{!26, !10, i64 8}
!26 = !{!"osub", !6, i64 0, !10, i64 8}
!27 = !{!26, !6, i64 0}
!28 = !{!18, !6, i64 82856}
!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 82712}
!35 = !{!18, !10, i64 82704}
!36 = !{!18, !10, i64 82736}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!12, !10, i64 12}
!40 = !{!18, !10, i64 82740}
!41 = distinct !{!41, !38}
!42 = !{!18, !10, i64 82724}
!43 = !{!18, !10, i64 82748}
!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 82816}
!50 = !{!18, !6, i64 82824}
!51 = !{!18, !6, i64 82832}
!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 }

@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.44 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.55 = 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: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @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 float @counterclockwise(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local float @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 @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 %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
  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
  %15 = getelementptr inbounds i8, ptr %1, i64 116
  %16 = load i32, ptr %15, align 4, !tbaa !5
  %17 = icmp sgt i32 %16, 1
  br i1 %17, label %18, label %25

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

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

28:                                               ; preds = %25
  %29 = getelementptr inbounds i8, ptr %0, i64 82840
  %30 = load ptr, ptr %29, align 8, !tbaa !15
  %31 = icmp eq ptr %27, %30
  br i1 %31, label %32, label %41

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

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

.thread558:                                       ; preds = %25
  store ptr %27, ptr %8, align 8, !tbaa !12
  %46 = getelementptr inbounds i8, ptr %3, i64 8
  %47 = load i32, ptr %46, align 8, !tbaa !20
  %48 = getelementptr inbounds i8, ptr %8, i64 8
  store i32 %47, ptr %48, align 8, !tbaa !20
  %49 = getelementptr inbounds i8, ptr %0, i64 82744
  br label %._crit_edge602

50:                                               ; preds = %32, %41
  %.0491 = phi i32 [ %40, %32 ], [ %45, %41 ]
  %51 = icmp eq i32 %.0491, 2
  br i1 %51, label %52, label %56

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

56:                                               ; preds = %50
  %57 = and i32 %.0491, -3
  %or.cond = icmp eq i32 %57, 1
  br i1 %or.cond, label %58, label %546

58:                                               ; preds = %56
  %59 = getelementptr inbounds i8, ptr %0, i64 82744
  %60 = load i32, ptr %59, align 8, !tbaa !21
  %.not579 = icmp eq i32 %60, 0
  %.pre601 = load ptr, ptr %8, align 8, !tbaa !12
  %.phi.trans.insert = getelementptr inbounds i8, ptr %8, i64 8
  %.pre603 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !20
  br i1 %.not579, label %._crit_edge602, label %61

61:                                               ; preds = %58
  %62 = sext i32 %.pre603 to i64
  %63 = getelementptr ptr, ptr %.pre601, i64 %62
  %64 = getelementptr i8, ptr %63, i64 48
  %65 = load ptr, ptr %64, align 8, !tbaa !19
  %66 = ptrtoint ptr %65 to i64
  %67 = trunc i64 %66 to i32
  %68 = and i32 %67, 1
  %69 = and i64 %66, -4
  %70 = inttoptr i64 %69 to ptr
  %71 = getelementptr inbounds i8, ptr %0, i64 82856
  %72 = load ptr, ptr %71, align 8, !tbaa !22
  %.not529 = icmp eq ptr %72, %70
  br i1 %.not529, label %._crit_edge602, label %73

73:                                               ; preds = %61
  %.not545 = icmp eq i32 %5, 0
  br i1 %.not545, label %112, label %74

74:                                               ; preds = %73
  %75 = getelementptr inbounds i8, ptr %1, i64 128
  %76 = load i32, ptr %75, align 4, !tbaa !23
  switch i32 %76, label %83 [
    i32 1, label %77
    i32 2, label %112
  ]

77:                                               ; preds = %74
  %78 = load ptr, ptr %63, align 8, !tbaa !19
  %79 = ptrtoint ptr %78 to i64
  %80 = and i64 %79, -4
  %81 = inttoptr i64 %80 to ptr
  %82 = load ptr, ptr %29, align 8, !tbaa !15
  %.not563 = icmp eq ptr %82, %81
  br i1 %.not563, label %112, label %83

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

100:                                              ; preds = %83
  %101 = load float, ptr %91, align 4, !tbaa !11
  %102 = fpext float %101 to double
  %103 = getelementptr inbounds i8, ptr %91, i64 4
  %104 = load float, ptr %103, align 4, !tbaa !11
  %105 = fpext float %104 to double
  %106 = load float, ptr %96, align 4, !tbaa !11
  %107 = fpext float %106 to double
  %108 = getelementptr inbounds i8, ptr %96, i64 4
  %109 = load float, ptr %108, align 4, !tbaa !11
  %110 = fpext float %109 to double
  %111 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48, double noundef %102, double noundef %105, double noundef %107, double noundef %110)
  br label %112

112:                                              ; preds = %74, %77, %100, %83, %73
  %113 = load ptr, ptr %8, align 8, !tbaa !12
  store ptr %113, ptr %3, align 8, !tbaa !12
  %114 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !20
  br label %1155

._crit_edge602:                                   ; preds = %58, %.thread558, %61
  %115 = phi i32 [ %47, %.thread558 ], [ %.pre603, %61 ], [ %.pre603, %58 ]
  %116 = phi ptr [ %27, %.thread558 ], [ %.pre601, %61 ], [ %.pre601, %58 ]
  %117 = phi ptr [ %49, %.thread558 ], [ %59, %61 ], [ %59, %58 ]
  store ptr %116, ptr %9, align 8, !tbaa !12
  %118 = getelementptr inbounds i8, ptr %8, i64 8
  %119 = sext i32 %115 to i64
  %120 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %119
  %121 = load i32, ptr %120, align 4, !tbaa !28
  %122 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %121, ptr %122, align 8, !tbaa !20
  %123 = sext i32 %121 to i64
  %124 = getelementptr inbounds ptr, ptr %116, i64 %123
  %125 = load ptr, ptr %124, align 8, !tbaa !19
  %126 = ptrtoint ptr %125 to i64
  %127 = and i64 %126, 3
  %128 = and i64 %126, -4
  %129 = inttoptr i64 %128 to ptr
  %130 = getelementptr inbounds ptr, ptr %116, i64 %119
  %131 = load ptr, ptr %130, align 8, !tbaa !19
  %132 = ptrtoint ptr %131 to i64
  %133 = trunc i64 %132 to i32
  %134 = and i32 %133, 3
  %135 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 %134, ptr %135, align 8, !tbaa !20
  %136 = and i64 %132, -4
  %137 = inttoptr i64 %136 to ptr
  store ptr %137, ptr %11, align 8, !tbaa !12
  %138 = getelementptr inbounds i8, ptr %0, i64 82840
  %139 = load ptr, ptr %138, align 8, !tbaa !15
  %.not530 = icmp eq ptr %139, %137
  br i1 %.not530, label %151, label %140

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

151:                                              ; preds = %._crit_edge602
  %152 = getelementptr inbounds i8, ptr %0, i64 82712
  %153 = load i64, ptr %152, align 8, !tbaa !29
  %154 = add nsw i64 %153, 1
  store i64 %154, ptr %152, align 8, !tbaa !29
  br label %155

155:                                              ; preds = %151, %140
  %.sroa.0205.0 = phi ptr [ %150, %140 ], [ undef, %151 ]
  %.sroa.8209.0 = phi i64 [ %148, %140 ], [ 0, %151 ]
  call void @maketriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  %156 = load ptr, ptr %8, align 8, !tbaa !12
  %157 = load i32, ptr %118, align 8, !tbaa !20
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !28
  %161 = sext i32 %160 to i64
  %162 = getelementptr ptr, ptr %156, i64 %161
  %163 = getelementptr i8, ptr %162, i64 24
  %164 = load ptr, ptr %163, align 8, !tbaa !19
  %165 = getelementptr ptr, ptr %156, i64 %158
  %166 = getelementptr i8, ptr %165, i64 24
  %167 = load ptr, ptr %166, align 8, !tbaa !19
  %168 = load ptr, ptr %13, align 8, !tbaa !12
  %169 = getelementptr inbounds i8, ptr %13, i64 8
  %170 = load i32, ptr %169, align 8, !tbaa !20
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !28
  %174 = sext i32 %173 to i64
  %175 = getelementptr ptr, ptr %168, i64 %174
  %176 = getelementptr i8, ptr %175, i64 24
  store ptr %167, ptr %176, align 8, !tbaa !19
  %177 = load ptr, ptr %13, align 8, !tbaa !12
  %178 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %171
  %179 = load i32, ptr %178, align 4, !tbaa !28
  %180 = sext i32 %179 to i64
  %181 = getelementptr ptr, ptr %177, i64 %180
  %182 = getelementptr i8, ptr %181, i64 24
  store ptr %164, ptr %182, align 8, !tbaa !19
  %183 = load ptr, ptr %13, align 8, !tbaa !12
  %184 = getelementptr ptr, ptr %183, i64 %171
  %185 = getelementptr i8, ptr %184, i64 24
  store ptr %2, ptr %185, align 8, !tbaa !19
  %186 = load ptr, ptr %8, align 8, !tbaa !12
  %187 = getelementptr ptr, ptr %186, i64 %161
  %188 = getelementptr i8, ptr %187, i64 24
  store ptr %2, ptr %188, align 8, !tbaa !19
  %189 = getelementptr inbounds i8, ptr %0, i64 82704
  %190 = load i32, ptr %189, align 8, !tbaa !30
  %191 = icmp sgt i32 %190, 0
  br i1 %191, label %.lr.ph569, label %._crit_edge570

.lr.ph569:                                        ; preds = %155
  %192 = load ptr, ptr %9, align 8, !tbaa !12
  %193 = getelementptr inbounds i8, ptr %0, i64 82736
  %194 = load i32, ptr %193, align 8, !tbaa !31
  %195 = load ptr, ptr %13, align 8, !tbaa !12
  %196 = sext i32 %194 to i64
  %wide.trip.count586 = zext nneg i32 %190 to i64
  %min.iters.check635 = icmp ult i32 %190, 8
  %197 = ptrtoint ptr %195 to i64
  %198 = ptrtoint ptr %192 to i64
  %199 = sub i64 %197, %198
  %diff.check632 = icmp ult i64 %199, 32
  %or.cond680 = select i1 %min.iters.check635, i1 true, i1 %diff.check632
  br i1 %or.cond680, label %scalar.ph634.preheader, label %vector.ph636

vector.ph636:                                     ; preds = %.lr.ph569
  %n.vec638 = and i64 %wide.trip.count586, 2147483640
  br label %vector.body640

vector.body640:                                   ; preds = %vector.body640, %vector.ph636
  %index641 = phi i64 [ 0, %vector.ph636 ], [ %index.next644, %vector.body640 ]
  %200 = add nsw i64 %index641, %196
  %201 = getelementptr inbounds float, ptr %192, i64 %200
  %202 = getelementptr inbounds i8, ptr %201, i64 16
  %wide.load642 = load <4 x float>, ptr %201, align 4, !tbaa !11
  %wide.load643 = load <4 x float>, ptr %202, align 4, !tbaa !11
  %203 = getelementptr inbounds float, ptr %195, i64 %200
  %204 = getelementptr inbounds i8, ptr %203, i64 16
  store <4 x float> %wide.load642, ptr %203, align 4, !tbaa !11
  store <4 x float> %wide.load643, ptr %204, align 4, !tbaa !11
  %index.next644 = add nuw i64 %index641, 8
  %205 = icmp eq i64 %index.next644, %n.vec638
  br i1 %205, label %middle.block633, label %vector.body640, !llvm.loop !32

middle.block633:                                  ; preds = %vector.body640
  %cmp.n645 = icmp eq i64 %n.vec638, %wide.trip.count586
  br i1 %cmp.n645, label %._crit_edge570, label %scalar.ph634.preheader

scalar.ph634.preheader:                           ; preds = %middle.block633, %.lr.ph569
  %indvars.iv583.ph = phi i64 [ 0, %.lr.ph569 ], [ %n.vec638, %middle.block633 ]
  %xtraiter685 = and i64 %wide.trip.count586, 3
  %lcmp.mod686.not = icmp eq i64 %xtraiter685, 0
  br i1 %lcmp.mod686.not, label %scalar.ph634.prol.loopexit, label %scalar.ph634.prol

scalar.ph634.prol:                                ; preds = %scalar.ph634.preheader, %scalar.ph634.prol
  %indvars.iv583.prol = phi i64 [ %indvars.iv.next584.prol, %scalar.ph634.prol ], [ %indvars.iv583.ph, %scalar.ph634.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph634.prol ], [ 0, %scalar.ph634.preheader ]
  %206 = add nsw i64 %indvars.iv583.prol, %196
  %207 = getelementptr inbounds float, ptr %192, i64 %206
  %208 = load float, ptr %207, align 4, !tbaa !11
  %209 = getelementptr inbounds float, ptr %195, i64 %206
  store float %208, ptr %209, align 4, !tbaa !11
  %indvars.iv.next584.prol = add nuw nsw i64 %indvars.iv583.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter685
  br i1 %prol.iter.cmp.not, label %scalar.ph634.prol.loopexit, label %scalar.ph634.prol, !llvm.loop !36

scalar.ph634.prol.loopexit:                       ; preds = %scalar.ph634.prol, %scalar.ph634.preheader
  %indvars.iv583.unr = phi i64 [ %indvars.iv583.ph, %scalar.ph634.preheader ], [ %indvars.iv.next584.prol, %scalar.ph634.prol ]
  %210 = sub nsw i64 %indvars.iv583.ph, %wide.trip.count586
  %211 = icmp ugt i64 %210, -4
  br i1 %211, label %._crit_edge570, label %scalar.ph634

scalar.ph634:                                     ; preds = %scalar.ph634.prol.loopexit, %scalar.ph634
  %indvars.iv583 = phi i64 [ %indvars.iv.next584.3, %scalar.ph634 ], [ %indvars.iv583.unr, %scalar.ph634.prol.loopexit ]
  %212 = add nsw i64 %indvars.iv583, %196
  %213 = getelementptr inbounds float, ptr %192, i64 %212
  %214 = load float, ptr %213, align 4, !tbaa !11
  %215 = getelementptr inbounds float, ptr %195, i64 %212
  store float %214, ptr %215, align 4, !tbaa !11
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %216 = add nsw i64 %indvars.iv.next584, %196
  %217 = getelementptr inbounds float, ptr %192, i64 %216
  %218 = load float, ptr %217, align 4, !tbaa !11
  %219 = getelementptr inbounds float, ptr %195, i64 %216
  store float %218, ptr %219, align 4, !tbaa !11
  %indvars.iv.next584.1 = add nuw nsw i64 %indvars.iv583, 2
  %220 = add nsw i64 %indvars.iv.next584.1, %196
  %221 = getelementptr inbounds float, ptr %192, i64 %220
  %222 = load float, ptr %221, align 4, !tbaa !11
  %223 = getelementptr inbounds float, ptr %195, i64 %220
  store float %222, ptr %223, align 4, !tbaa !11
  %indvars.iv.next584.2 = add nuw nsw i64 %indvars.iv583, 3
  %224 = add nsw i64 %indvars.iv.next584.2, %196
  %225 = getelementptr inbounds float, ptr %192, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !11
  %227 = getelementptr inbounds float, ptr %195, i64 %224
  store float %226, ptr %227, align 4, !tbaa !11
  %indvars.iv.next584.3 = add nuw nsw i64 %indvars.iv583, 4
  %exitcond587.not.3 = icmp eq i64 %indvars.iv.next584.3, %wide.trip.count586
  br i1 %exitcond587.not.3, label %._crit_edge570, label %scalar.ph634, !llvm.loop !38

._crit_edge570:                                   ; preds = %scalar.ph634.prol.loopexit, %scalar.ph634, %middle.block633, %155
  %228 = getelementptr inbounds i8, ptr %1, i64 12
  %229 = load i32, ptr %228, align 4, !tbaa !39
  %.not531 = icmp eq i32 %229, 0
  br i1 %.not531, label %239, label %230

230:                                              ; preds = %._crit_edge570
  %231 = load ptr, ptr %9, align 8, !tbaa !12
  %232 = getelementptr inbounds i8, ptr %0, i64 82740
  %233 = load i32, ptr %232, align 4, !tbaa !40
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds float, ptr %231, i64 %234
  %236 = load float, ptr %235, align 4, !tbaa !11
  %237 = load ptr, ptr %13, align 8, !tbaa !12
  %238 = getelementptr inbounds float, ptr %237, i64 %234
  store float %236, ptr %238, align 4, !tbaa !11
  br label %239

239:                                              ; preds = %230, %._crit_edge570
  br i1 %.not530, label %319, label %240

240:                                              ; preds = %239
  %241 = load ptr, ptr %11, align 8, !tbaa !12
  %242 = load i32, ptr %135, align 8, !tbaa !20
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !28
  %246 = sext i32 %245 to i64
  %247 = getelementptr ptr, ptr %241, i64 %246
  %248 = getelementptr i8, ptr %247, i64 24
  %249 = load ptr, ptr %248, align 8, !tbaa !19
  %250 = load ptr, ptr %14, align 8, !tbaa !12
  %251 = getelementptr inbounds i8, ptr %14, i64 8
  %252 = load i32, ptr %251, align 8, !tbaa !20
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %253
  %255 = load i32, ptr %254, align 4, !tbaa !28
  %256 = sext i32 %255 to i64
  %257 = getelementptr ptr, ptr %250, i64 %256
  %258 = getelementptr i8, ptr %257, i64 24
  store ptr %164, ptr %258, align 8, !tbaa !19
  %259 = load ptr, ptr %14, align 8, !tbaa !12
  %260 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %253
  %261 = load i32, ptr %260, align 4, !tbaa !28
  %262 = sext i32 %261 to i64
  %263 = getelementptr ptr, ptr %259, i64 %262
  %264 = getelementptr i8, ptr %263, i64 24
  store ptr %249, ptr %264, align 8, !tbaa !19
  %265 = load ptr, ptr %14, align 8, !tbaa !12
  %266 = getelementptr ptr, ptr %265, i64 %253
  %267 = getelementptr i8, ptr %266, i64 24
  store ptr %2, ptr %267, align 8, !tbaa !19
  %268 = load ptr, ptr %11, align 8, !tbaa !12
  %269 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %243
  %270 = load i32, ptr %269, align 4, !tbaa !28
  %271 = sext i32 %270 to i64
  %272 = getelementptr ptr, ptr %268, i64 %271
  %273 = getelementptr i8, ptr %272, i64 24
  store ptr %2, ptr %273, align 8, !tbaa !19
  br i1 %191, label %.lr.ph573, label %._crit_edge574

.lr.ph573:                                        ; preds = %240
  %274 = load ptr, ptr %11, align 8, !tbaa !12
  %275 = getelementptr inbounds i8, ptr %0, i64 82736
  %276 = load i32, ptr %275, align 8, !tbaa !31
  %277 = load ptr, ptr %14, align 8, !tbaa !12
  %278 = sext i32 %276 to i64
  %wide.trip.count592 = zext nneg i32 %190 to i64
  %min.iters.check650 = icmp ult i32 %190, 8
  %279 = ptrtoint ptr %277 to i64
  %280 = ptrtoint ptr %274 to i64
  %281 = sub i64 %279, %280
  %diff.check647 = icmp ult i64 %281, 32
  %or.cond683 = select i1 %min.iters.check650, i1 true, i1 %diff.check647
  br i1 %or.cond683, label %scalar.ph649.preheader, label %vector.ph651

vector.ph651:                                     ; preds = %.lr.ph573
  %n.vec653 = and i64 %wide.trip.count592, 2147483640
  br label %vector.body655

vector.body655:                                   ; preds = %vector.body655, %vector.ph651
  %index656 = phi i64 [ 0, %vector.ph651 ], [ %index.next659, %vector.body655 ]
  %282 = add nsw i64 %index656, %278
  %283 = getelementptr inbounds float, ptr %274, i64 %282
  %284 = getelementptr inbounds i8, ptr %283, i64 16
  %wide.load657 = load <4 x float>, ptr %283, align 4, !tbaa !11
  %wide.load658 = load <4 x float>, ptr %284, align 4, !tbaa !11
  %285 = getelementptr inbounds float, ptr %277, i64 %282
  %286 = getelementptr inbounds i8, ptr %285, i64 16
  store <4 x float> %wide.load657, ptr %285, align 4, !tbaa !11
  store <4 x float> %wide.load658, ptr %286, align 4, !tbaa !11
  %index.next659 = add nuw i64 %index656, 8
  %287 = icmp eq i64 %index.next659, %n.vec653
  br i1 %287, label %middle.block648, label %vector.body655, !llvm.loop !41

middle.block648:                                  ; preds = %vector.body655
  %cmp.n660 = icmp eq i64 %n.vec653, %wide.trip.count592
  br i1 %cmp.n660, label %._crit_edge574, label %scalar.ph649.preheader

scalar.ph649.preheader:                           ; preds = %middle.block648, %.lr.ph573
  %indvars.iv589.ph = phi i64 [ 0, %.lr.ph573 ], [ %n.vec653, %middle.block648 ]
  %xtraiter687 = and i64 %wide.trip.count592, 3
  %lcmp.mod688.not = icmp eq i64 %xtraiter687, 0
  br i1 %lcmp.mod688.not, label %scalar.ph649.prol.loopexit, label %scalar.ph649.prol

scalar.ph649.prol:                                ; preds = %scalar.ph649.preheader, %scalar.ph649.prol
  %indvars.iv589.prol = phi i64 [ %indvars.iv.next590.prol, %scalar.ph649.prol ], [ %indvars.iv589.ph, %scalar.ph649.preheader ]
  %prol.iter689 = phi i64 [ %prol.iter689.next, %scalar.ph649.prol ], [ 0, %scalar.ph649.preheader ]
  %288 = add nsw i64 %indvars.iv589.prol, %278
  %289 = getelementptr inbounds float, ptr %274, i64 %288
  %290 = load float, ptr %289, align 4, !tbaa !11
  %291 = getelementptr inbounds float, ptr %277, i64 %288
  store float %290, ptr %291, align 4, !tbaa !11
  %indvars.iv.next590.prol = add nuw nsw i64 %indvars.iv589.prol, 1
  %prol.iter689.next = add i64 %prol.iter689, 1
  %prol.iter689.cmp.not = icmp eq i64 %prol.iter689.next, %xtraiter687
  br i1 %prol.iter689.cmp.not, label %scalar.ph649.prol.loopexit, label %scalar.ph649.prol, !llvm.loop !42

scalar.ph649.prol.loopexit:                       ; preds = %scalar.ph649.prol, %scalar.ph649.preheader
  %indvars.iv589.unr = phi i64 [ %indvars.iv589.ph, %scalar.ph649.preheader ], [ %indvars.iv.next590.prol, %scalar.ph649.prol ]
  %292 = sub nsw i64 %indvars.iv589.ph, %wide.trip.count592
  %293 = icmp ugt i64 %292, -4
  br i1 %293, label %._crit_edge574, label %scalar.ph649

scalar.ph649:                                     ; preds = %scalar.ph649.prol.loopexit, %scalar.ph649
  %indvars.iv589 = phi i64 [ %indvars.iv.next590.3, %scalar.ph649 ], [ %indvars.iv589.unr, %scalar.ph649.prol.loopexit ]
  %294 = add nsw i64 %indvars.iv589, %278
  %295 = getelementptr inbounds float, ptr %274, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !11
  %297 = getelementptr inbounds float, ptr %277, i64 %294
  store float %296, ptr %297, align 4, !tbaa !11
  %indvars.iv.next590 = add nuw nsw i64 %indvars.iv589, 1
  %298 = add nsw i64 %indvars.iv.next590, %278
  %299 = getelementptr inbounds float, ptr %274, i64 %298
  %300 = load float, ptr %299, align 4, !tbaa !11
  %301 = getelementptr inbounds float, ptr %277, i64 %298
  store float %300, ptr %301, align 4, !tbaa !11
  %indvars.iv.next590.1 = add nuw nsw i64 %indvars.iv589, 2
  %302 = add nsw i64 %indvars.iv.next590.1, %278
  %303 = getelementptr inbounds float, ptr %274, i64 %302
  %304 = load float, ptr %303, align 4, !tbaa !11
  %305 = getelementptr inbounds float, ptr %277, i64 %302
  store float %304, ptr %305, align 4, !tbaa !11
  %indvars.iv.next590.2 = add nuw nsw i64 %indvars.iv589, 3
  %306 = add nsw i64 %indvars.iv.next590.2, %278
  %307 = getelementptr inbounds float, ptr %274, i64 %306
  %308 = load float, ptr %307, align 4, !tbaa !11
  %309 = getelementptr inbounds float, ptr %277, i64 %306
  store float %308, ptr %309, align 4, !tbaa !11
  %indvars.iv.next590.3 = add nuw nsw i64 %indvars.iv589, 4
  %exitcond593.not.3 = icmp eq i64 %indvars.iv.next590.3, %wide.trip.count592
  br i1 %exitcond593.not.3, label %._crit_edge574, label %scalar.ph649, !llvm.loop !43

._crit_edge574:                                   ; preds = %scalar.ph649.prol.loopexit, %scalar.ph649, %middle.block648, %240
  br i1 %.not531, label %319, label %310

310:                                              ; preds = %._crit_edge574
  %311 = load ptr, ptr %11, align 8, !tbaa !12
  %312 = getelementptr inbounds i8, ptr %0, i64 82740
  %313 = load i32, ptr %312, align 4, !tbaa !40
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds float, ptr %311, i64 %314
  %316 = load float, ptr %315, align 4, !tbaa !11
  %317 = load ptr, ptr %14, align 8, !tbaa !12
  %318 = getelementptr inbounds float, ptr %317, i64 %314
  store float %316, ptr %318, align 4, !tbaa !11
  br label %319

319:                                              ; preds = %._crit_edge574, %310, %239
  %320 = load i32, ptr %117, align 8, !tbaa !21
  %.not533 = icmp eq i32 %320, 0
  %.pre604 = load i32, ptr %122, align 8, !tbaa !20
  br i1 %.not533, label %._crit_edge616, label %321

._crit_edge616:                                   ; preds = %319
  %.pre617 = sext i32 %.pre604 to i64
  br label %373

321:                                              ; preds = %319
  %322 = load ptr, ptr %9, align 8, !tbaa !12
  %323 = sext i32 %.pre604 to i64
  %324 = getelementptr ptr, ptr %322, i64 %323
  %325 = getelementptr i8, ptr %324, i64 48
  %326 = load ptr, ptr %325, align 8, !tbaa !19
  %327 = ptrtoint ptr %326 to i64
  %328 = and i64 %327, -4
  %329 = inttoptr i64 %328 to ptr
  %330 = getelementptr inbounds i8, ptr %0, i64 82856
  %331 = load ptr, ptr %330, align 8, !tbaa !22
  %.not534 = icmp eq ptr %331, %329
  br i1 %.not534, label %345, label %332

332:                                              ; preds = %321
  %333 = and i64 %327, 1
  store ptr %331, ptr %325, align 8, !tbaa !19
  %334 = and i64 %327, -3
  %335 = inttoptr i64 %334 to ptr
  %336 = load ptr, ptr %13, align 8, !tbaa !12
  %337 = getelementptr ptr, ptr %336, i64 %171
  %338 = getelementptr i8, ptr %337, i64 48
  store ptr %335, ptr %338, align 8, !tbaa !19
  %339 = load ptr, ptr %13, align 8, !tbaa !12
  %340 = ptrtoint ptr %339 to i64
  %341 = or i64 %340, %171
  %342 = inttoptr i64 %341 to ptr
  %343 = or disjoint i64 %333, 6
  %344 = getelementptr inbounds ptr, ptr %329, i64 %343
  store ptr %342, ptr %344, align 8, !tbaa !19
  br label %345

345:                                              ; preds = %332, %321
  br i1 %.not530, label %373, label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %11, align 8, !tbaa !12
  %348 = load i32, ptr %135, align 8, !tbaa !20
  %349 = sext i32 %348 to i64
  %350 = getelementptr ptr, ptr %347, i64 %349
  %351 = getelementptr i8, ptr %350, i64 48
  %352 = load ptr, ptr %351, align 8, !tbaa !19
  %353 = ptrtoint ptr %352 to i64
  %354 = and i64 %353, -4
  %355 = inttoptr i64 %354 to ptr
  %356 = load ptr, ptr %330, align 8, !tbaa !22
  %.not535 = icmp eq ptr %356, %355
  br i1 %.not535, label %373, label %357

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

373:                                              ; preds = %._crit_edge616, %345, %357, %346
  %.pre-phi618 = phi i64 [ %.pre617, %._crit_edge616 ], [ %323, %345 ], [ %323, %357 ], [ %323, %346 ]
  %374 = load ptr, ptr %13, align 8, !tbaa !12
  %375 = getelementptr inbounds ptr, ptr %374, i64 %171
  store ptr %125, ptr %375, align 8, !tbaa !19
  %376 = load ptr, ptr %13, align 8, !tbaa !12
  %377 = ptrtoint ptr %376 to i64
  %378 = or i64 %377, %171
  %379 = inttoptr i64 %378 to ptr
  %380 = getelementptr inbounds ptr, ptr %129, i64 %127
  store ptr %379, ptr %380, align 8, !tbaa !19
  %381 = load ptr, ptr %9, align 8, !tbaa !12
  %382 = ptrtoint ptr %381 to i64
  %383 = or i64 %.pre-phi618, %382
  %384 = inttoptr i64 %383 to ptr
  %385 = load ptr, ptr %13, align 8, !tbaa !12
  %386 = getelementptr inbounds ptr, ptr %385, i64 %180
  store ptr %384, ptr %386, align 8, !tbaa !19
  %387 = load ptr, ptr %13, align 8, !tbaa !12
  %388 = ptrtoint ptr %387 to i64
  %389 = or i64 %388, %180
  %390 = inttoptr i64 %389 to ptr
  %391 = load ptr, ptr %9, align 8, !tbaa !12
  %392 = getelementptr inbounds ptr, ptr %391, i64 %.pre-phi618
  store ptr %390, ptr %392, align 8, !tbaa !19
  %393 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %180
  %394 = load i32, ptr %393, align 4, !tbaa !28
  store i32 %394, ptr %169, align 8, !tbaa !20
  br i1 %.not530, label %442, label %395

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

442:                                              ; preds = %395, %373
  br i1 %26, label %517, label %443

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

513:                                              ; preds = %443
  %514 = load ptr, ptr %4, align 8, !tbaa !44
  %515 = getelementptr inbounds i8, ptr %514, i64 64
  %516 = load i32, ptr %515, align 4, !tbaa !28
  store i32 %516, ptr %510, align 4, !tbaa !28
  br label %517

517:                                              ; preds = %443, %513, %442
  %518 = getelementptr inbounds i8, ptr %0, i64 82748
  %519 = load i32, ptr %518, align 4, !tbaa !48
  %.not537 = icmp eq i32 %519, 0
  br i1 %.not537, label %531, label %520

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

531:                                              ; preds = %520, %517
  %532 = load i32, ptr %15, align 4, !tbaa !5
  %533 = icmp sgt i32 %532, 2
  br i1 %533, label %534, label %541

534:                                              ; preds = %531
  %535 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %9)
  br i1 %.not530, label %539, label %536

536:                                              ; preds = %534
  %537 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %11)
  %538 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %14)
  br label %539

539:                                              ; preds = %536, %534
  %540 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.52)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  br label %541

541:                                              ; preds = %539, %531
  %542 = load i32, ptr %118, align 8, !tbaa !20
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %543
  %545 = load i32, ptr %544, align 4, !tbaa !28
  store i32 %545, ptr %118, align 8, !tbaa !20
  br label %803

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

.lr.ph:                                           ; preds = %546
  %630 = load ptr, ptr %8, align 8, !tbaa !12
  %631 = getelementptr inbounds i8, ptr %0, i64 82736
  %632 = load i32, ptr %631, align 8, !tbaa !31
  %633 = load ptr, ptr %12, align 8, !tbaa !12
  %634 = load ptr, ptr %13, align 8, !tbaa !12
  %635 = sext i32 %632 to i64
  %wide.trip.count = zext nneg i32 %628 to i64
  %min.iters.check = icmp ult i32 %628, 16
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %636 = ptrtoint ptr %634 to i64
  %637 = ptrtoint ptr %633 to i64
  %638 = ptrtoint ptr %630 to i64
  %639 = sub i64 %636, %637
  %diff.check = icmp ult i64 %639, 32
  %640 = sub i64 %637, %638
  %diff.check627 = icmp ult i64 %640, 32
  %conflict.rdx = or i1 %diff.check, %diff.check627
  %641 = sub i64 %636, %638
  %diff.check628 = icmp ult i64 %641, 32
  %conflict.rdx629 = or i1 %conflict.rdx, %diff.check628
  br i1 %conflict.rdx629, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %642 = add nsw i64 %index, %635
  %643 = getelementptr inbounds float, ptr %630, i64 %642
  %644 = getelementptr inbounds i8, ptr %643, i64 16
  %wide.load = load <4 x float>, ptr %643, align 4, !tbaa !11
  %wide.load630 = load <4 x float>, ptr %644, align 4, !tbaa !11
  %645 = getelementptr inbounds float, ptr %633, i64 %642
  %646 = getelementptr inbounds i8, ptr %645, i64 16
  store <4 x float> %wide.load, ptr %645, align 4, !tbaa !11
  store <4 x float> %wide.load630, ptr %646, align 4, !tbaa !11
  %647 = getelementptr inbounds float, ptr %634, i64 %642
  %648 = getelementptr inbounds i8, ptr %647, i64 16
  store <4 x float> %wide.load, ptr %647, align 4, !tbaa !11
  store <4 x float> %wide.load630, ptr %648, align 4, !tbaa !11
  %index.next = add nuw i64 %index, 8
  %649 = icmp eq i64 %index.next, %n.vec
  br i1 %649, 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
  %650 = add nsw i64 %indvars.iv.ph, %635
  %651 = getelementptr inbounds float, ptr %630, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !11
  %653 = getelementptr inbounds float, ptr %633, i64 %650
  store float %652, ptr %653, align 4, !tbaa !11
  %654 = getelementptr inbounds float, ptr %634, i64 %650
  store float %652, ptr %654, align 4, !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 ]
  %655 = add nsw i64 %wide.trip.count, -1
  %656 = icmp eq i64 %indvars.iv.ph, %655
  br i1 %656, 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 ]
  %657 = add nsw i64 %indvars.iv, %635
  %658 = getelementptr inbounds float, ptr %630, i64 %657
  %659 = load float, ptr %658, align 4, !tbaa !11
  %660 = getelementptr inbounds float, ptr %633, i64 %657
  store float %659, ptr %660, align 4, !tbaa !11
  %661 = getelementptr inbounds float, ptr %634, i64 %657
  store float %659, ptr %661, align 4, !tbaa !11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %662 = add nsw i64 %indvars.iv.next, %635
  %663 = getelementptr inbounds float, ptr %630, i64 %662
  %664 = load float, ptr %663, align 4, !tbaa !11
  %665 = getelementptr inbounds float, ptr %633, i64 %662
  store float %664, ptr %665, align 4, !tbaa !11
  %666 = getelementptr inbounds float, ptr %634, i64 %662
  store float %664, ptr %666, align 4, !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, %546
  %667 = getelementptr inbounds i8, ptr %1, i64 12
  %668 = load i32, ptr %667, align 4, !tbaa !39
  %.not = icmp eq i32 %668, 0
  br i1 %.not, label %680, label %669

669:                                              ; preds = %._crit_edge
  %670 = load ptr, ptr %8, align 8, !tbaa !12
  %671 = getelementptr inbounds i8, ptr %0, i64 82740
  %672 = load i32, ptr %671, align 4, !tbaa !40
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds float, ptr %670, i64 %673
  %675 = load float, ptr %674, align 4, !tbaa !11
  %676 = load ptr, ptr %12, align 8, !tbaa !12
  %677 = getelementptr inbounds float, ptr %676, i64 %673
  store float %675, ptr %677, align 4, !tbaa !11
  %678 = load ptr, ptr %13, align 8, !tbaa !12
  %679 = getelementptr inbounds float, ptr %678, i64 %673
  store float %675, ptr %679, align 4, !tbaa !11
  br label %680

680:                                              ; preds = %669, %._crit_edge
  %681 = getelementptr inbounds i8, ptr %0, i64 82744
  %682 = load i32, ptr %681, align 8, !tbaa !21
  %.not525 = icmp eq i32 %682, 0
  br i1 %.not525, label %._crit_edge599, label %683

._crit_edge599:                                   ; preds = %680
  %.pre600 = load i32, ptr %555, align 8, !tbaa !20
  %.pre615 = sext i32 %.pre600 to i64
  br label %728

683:                                              ; preds = %680
  %684 = getelementptr i8, ptr %557, i64 48
  %685 = load ptr, ptr %684, align 8, !tbaa !19
  %686 = ptrtoint ptr %685 to i64
  %687 = and i64 %686, -4
  %688 = inttoptr i64 %687 to ptr
  %689 = getelementptr inbounds i8, ptr %0, i64 82856
  %690 = load ptr, ptr %689, align 8, !tbaa !22
  %.not526 = icmp eq ptr %690, %688
  br i1 %.not526, label %704, label %691

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

704:                                              ; preds = %691, %683
  %705 = phi ptr [ %.pre, %691 ], [ %690, %683 ]
  %706 = load ptr, ptr %9, align 8, !tbaa !12
  %707 = load i32, ptr %555, align 8, !tbaa !20
  %708 = sext i32 %707 to i64
  %709 = getelementptr ptr, ptr %706, i64 %708
  %710 = getelementptr i8, ptr %709, i64 48
  %711 = load ptr, ptr %710, align 8, !tbaa !19
  %712 = ptrtoint ptr %711 to i64
  %713 = and i64 %712, -4
  %714 = inttoptr i64 %713 to ptr
  %.not527 = icmp eq ptr %705, %714
  br i1 %.not527, label %728, label %715

715:                                              ; preds = %704
  %716 = and i64 %712, 1
  store ptr %705, ptr %710, align 8, !tbaa !19
  %717 = and i64 %712, -3
  %718 = inttoptr i64 %717 to ptr
  %719 = load ptr, ptr %13, align 8, !tbaa !12
  %720 = getelementptr ptr, ptr %719, i64 %609
  %721 = getelementptr i8, ptr %720, i64 48
  store ptr %718, ptr %721, align 8, !tbaa !19
  %722 = load ptr, ptr %13, align 8, !tbaa !12
  %723 = ptrtoint ptr %722 to i64
  %724 = or i64 %723, %609
  %725 = inttoptr i64 %724 to ptr
  %726 = or disjoint i64 %716, 6
  %727 = getelementptr inbounds ptr, ptr %714, i64 %726
  store ptr %725, ptr %727, align 8, !tbaa !19
  br label %728

728:                                              ; preds = %._crit_edge599, %704, %715
  %.pre-phi = phi i64 [ %.pre615, %._crit_edge599 ], [ %708, %704 ], [ %708, %715 ]
  %729 = load ptr, ptr %12, align 8, !tbaa !12
  %730 = getelementptr inbounds ptr, ptr %729, i64 %591
  store ptr %558, ptr %730, align 8, !tbaa !19
  %731 = load ptr, ptr %12, align 8, !tbaa !12
  %732 = ptrtoint ptr %731 to i64
  %733 = or i64 %732, %591
  %734 = inttoptr i64 %733 to ptr
  %735 = getelementptr inbounds ptr, ptr %562, i64 %560
  store ptr %734, ptr %735, align 8, !tbaa !19
  %736 = load ptr, ptr %13, align 8, !tbaa !12
  %737 = getelementptr inbounds ptr, ptr %736, i64 %609
  store ptr %565, 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, %609
  %741 = inttoptr i64 %740 to ptr
  %742 = getelementptr inbounds ptr, ptr %569, i64 %567
  store ptr %741, ptr %742, align 8, !tbaa !19
  %743 = load ptr, ptr %13, align 8, !tbaa !12
  %744 = ptrtoint ptr %743 to i64
  %745 = or i64 %744, %618
  %746 = inttoptr i64 %745 to ptr
  %747 = load ptr, ptr %12, align 8, !tbaa !12
  %748 = getelementptr inbounds ptr, ptr %747, i64 %594
  store ptr %746, ptr %748, align 8, !tbaa !19
  %749 = load ptr, ptr %12, align 8, !tbaa !12
  %750 = ptrtoint ptr %749 to i64
  %751 = or i64 %750, %594
  %752 = inttoptr i64 %751 to ptr
  %753 = load ptr, ptr %13, align 8, !tbaa !12
  %754 = getelementptr inbounds ptr, ptr %753, i64 %618
  store ptr %752, ptr %754, align 8, !tbaa !19
  %755 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %594
  %756 = load i32, ptr %755, align 4, !tbaa !28
  store i32 %756, ptr %589, align 8, !tbaa !20
  %757 = load ptr, ptr %12, align 8, !tbaa !12
  %758 = ptrtoint ptr %757 to i64
  %759 = sext i32 %756 to i64
  %760 = or i64 %758, %759
  %761 = inttoptr i64 %760 to ptr
  store ptr %761, ptr %557, align 8, !tbaa !19
  %762 = ptrtoint ptr %547 to i64
  %763 = or i64 %556, %762
  %764 = inttoptr i64 %763 to ptr
  %765 = load ptr, ptr %12, align 8, !tbaa !12
  %766 = getelementptr inbounds ptr, ptr %765, i64 %759
  store ptr %764, ptr %766, align 8, !tbaa !19
  %767 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %618
  %768 = load i32, ptr %767, align 4, !tbaa !28
  store i32 %768, ptr %607, align 8, !tbaa !20
  %769 = load ptr, ptr %13, align 8, !tbaa !12
  %770 = ptrtoint ptr %769 to i64
  %771 = sext i32 %768 to i64
  %772 = or i64 %770, %771
  %773 = inttoptr i64 %772 to ptr
  %774 = load ptr, ptr %9, align 8, !tbaa !12
  %775 = getelementptr inbounds ptr, ptr %774, i64 %.pre-phi
  store ptr %773, ptr %775, align 8, !tbaa !19
  %776 = load ptr, ptr %9, align 8, !tbaa !12
  %777 = ptrtoint ptr %776 to i64
  %778 = or i64 %.pre-phi, %777
  %779 = inttoptr i64 %778 to ptr
  %780 = load ptr, ptr %13, align 8, !tbaa !12
  %781 = getelementptr inbounds ptr, ptr %780, i64 %771
  store ptr %779, ptr %781, align 8, !tbaa !19
  %782 = getelementptr inbounds i8, ptr %0, i64 82748
  %783 = load i32, ptr %782, align 4, !tbaa !48
  %.not528 = icmp eq i32 %783, 0
  br i1 %.not528, label %795, label %784

784:                                              ; preds = %728
  %785 = getelementptr inbounds i8, ptr %0, i64 528
  call void @poolrestart(ptr noundef nonnull %785)
  %786 = call ptr @poolalloc(ptr noundef nonnull %785)
  %787 = getelementptr inbounds i8, ptr %0, i64 82632
  store ptr %786, ptr %787, align 8, !tbaa !49
  %788 = load ptr, ptr %8, align 8, !tbaa !12
  %789 = ptrtoint ptr %788 to i64
  %790 = load i32, ptr %548, align 8, !tbaa !20
  %791 = sext i32 %790 to i64
  %792 = or i64 %791, %789
  %793 = inttoptr i64 %792 to ptr
  store ptr %793, ptr %786, align 8, !tbaa !50
  %794 = getelementptr inbounds i8, ptr %786, i64 8
  store ptr null, ptr %794, align 8, !tbaa !52
  br label %795

795:                                              ; preds = %784, %728
  %796 = phi i32 [ %790, %784 ], [ %571, %728 ]
  %797 = load i32, ptr %15, align 4, !tbaa !5
  %798 = icmp sgt i32 %797, 2
  br i1 %798, label %799, label %803

799:                                              ; preds = %795
  %800 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.53)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  %801 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %12)
  %802 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.55)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %13)
  %.pre606 = load i32, ptr %548, align 8, !tbaa !20
  br label %803

803:                                              ; preds = %795, %799, %541
  %804 = phi i32 [ %796, %795 ], [ %.pre606, %799 ], [ %545, %541 ]
  %805 = load ptr, ptr %8, align 8, !tbaa !12
  %806 = getelementptr inbounds i8, ptr %8, i64 8
  %807 = sext i32 %804 to i64
  %808 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %807
  %809 = load i32, ptr %808, align 4, !tbaa !28
  %810 = sext i32 %809 to i64
  %811 = getelementptr ptr, ptr %805, i64 %810
  %812 = getelementptr i8, ptr %811, i64 24
  %813 = load ptr, ptr %812, align 8, !tbaa !19
  %814 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %807
  %815 = load i32, ptr %814, align 4, !tbaa !28
  %816 = sext i32 %815 to i64
  %817 = getelementptr ptr, ptr %805, i64 %816
  %818 = getelementptr inbounds i8, ptr %0, i64 82840
  %819 = getelementptr inbounds i8, ptr %0, i64 82744
  %820 = getelementptr inbounds i8, ptr %0, i64 82856
  %821 = getelementptr inbounds i8, ptr %0, i64 82816
  %822 = getelementptr inbounds i8, ptr %0, i64 82824
  %823 = getelementptr inbounds i8, ptr %0, i64 82832
  %824 = getelementptr inbounds i8, ptr %10, i64 8
  %825 = getelementptr inbounds i8, ptr %11, i64 8
  %826 = getelementptr inbounds i8, ptr %9, i64 8
  %827 = getelementptr inbounds i8, ptr %0, i64 82704
  %828 = getelementptr inbounds i8, ptr %0, i64 82736
  %829 = getelementptr inbounds i8, ptr %1, i64 12
  %830 = getelementptr inbounds i8, ptr %0, i64 82740
  %831 = getelementptr inbounds i8, ptr %0, i64 82748
  %832 = getelementptr inbounds i8, ptr %0, i64 528
  %833 = getelementptr inbounds i8, ptr %0, i64 82632
  br label %.outer

.outer:                                           ; preds = %1147, %803
  %.pre608.ph = phi i32 [ %1149, %1147 ], [ %804, %803 ]
  %.pre607.ph = phi ptr [ %1139, %1147 ], [ %805, %803 ]
  %.pn = phi ptr [ %1154, %1147 ], [ %817, %803 ]
  %.0493.ph = phi ptr [ %.0495, %1147 ], [ %813, %803 ]
  %.0495.ph.in = getelementptr i8, ptr %.pn, i64 24
  %.0495.ph = load ptr, ptr %.0495.ph.in, align 8, !tbaa !19
  br label %834

834:                                              ; preds = %.outer, %.critedge552
  %.pre608 = phi i32 [ %1126, %.critedge552 ], [ %.pre608.ph, %.outer ]
  %.pre607 = phi ptr [ %.pre607.pre.pre, %.critedge552 ], [ %.pre607.ph, %.outer ]
  %.0495 = phi ptr [ %855, %.critedge552 ], [ %.0495.ph, %.outer ]
  %835 = load i32, ptr %819, align 8, !tbaa !21
  %.not538 = icmp eq i32 %835, 0
  %.pre619 = sext i32 %.pre608 to i64
  br i1 %.not538, label %.critedge, label %836

836:                                              ; preds = %834
  %837 = getelementptr ptr, ptr %.pre607, i64 %.pre619
  %838 = getelementptr i8, ptr %837, i64 48
  %839 = load ptr, ptr %838, align 8, !tbaa !19
  %840 = ptrtoint ptr %839 to i64
  %841 = and i64 %840, -4
  %842 = inttoptr i64 %841 to ptr
  %843 = load ptr, ptr %820, align 8, !tbaa !22
  %.not539.not = icmp eq ptr %843, %842
  br i1 %.not539.not, label %.critedge, label %1127

.critedge:                                        ; preds = %834, %836
  %844 = getelementptr inbounds ptr, ptr %.pre607, i64 %.pre619
  %845 = load ptr, ptr %844, align 8, !tbaa !19
  %846 = ptrtoint ptr %845 to i64
  %847 = and i64 %846, 3
  %848 = and i64 %846, -4
  %849 = inttoptr i64 %848 to ptr
  %850 = load ptr, ptr %818, align 8, !tbaa !15
  %851 = icmp eq ptr %850, %849
  br i1 %851, label %1127, label %852

852:                                              ; preds = %.critedge
  %853 = getelementptr inbounds ptr, ptr %849, i64 %847
  %854 = getelementptr inbounds i8, ptr %853, i64 24
  %855 = load ptr, ptr %854, align 8, !tbaa !19
  %856 = load ptr, ptr %821, align 8, !tbaa !55
  %857 = icmp eq ptr %.0495, %856
  br i1 %857, label %864, label %858

858:                                              ; preds = %852
  %859 = load ptr, ptr %822, align 8, !tbaa !56
  %860 = icmp eq ptr %.0495, %859
  br i1 %860, label %864, label %861

861:                                              ; preds = %858
  %862 = load ptr, ptr %823, align 8, !tbaa !57
  %863 = icmp eq ptr %.0495, %862
  br i1 %863, label %864, label %867

864:                                              ; preds = %861, %858, %852
  %865 = call float @counterclockwise(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %.0493.ph, ptr noundef %855)
  %866 = fcmp ogt float %865, 0.000000e+00
  br i1 %866, label %881, label %1127

867:                                              ; preds = %861
  %868 = icmp eq ptr %.0493.ph, %856
  %869 = icmp eq ptr %.0493.ph, %859
  %or.cond547 = or i1 %868, %869
  %870 = icmp eq ptr %.0493.ph, %862
  %or.cond548 = or i1 %or.cond547, %870
  br i1 %or.cond548, label %871, label %874

871:                                              ; preds = %867
  %872 = call float @counterclockwise(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %855, ptr noundef %.0495, ptr noundef %2)
  %873 = fcmp ogt float %872, 0.000000e+00
  br i1 %873, label %881, label %1127

874:                                              ; preds = %867
  %875 = icmp eq ptr %855, %856
  %876 = icmp eq ptr %855, %859
  %or.cond549 = or i1 %875, %876
  %877 = icmp eq ptr %855, %862
  %or.cond550 = or i1 %or.cond549, %877
  br i1 %or.cond550, label %1127, label %878

878:                                              ; preds = %874
  %879 = call float @incircle(ptr noundef %0, ptr noundef %1, ptr noundef %.0495, ptr noundef %2, ptr noundef %.0493.ph, ptr noundef %855)
  %880 = fcmp ogt float %879, 0.000000e+00
  br i1 %880, label %881, label %1127

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

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

977:                                              ; preds = %945
  store ptr %975, ptr %969, align 8, !tbaa !19
  br label %988

978:                                              ; preds = %945
  %979 = and i64 %950, 1
  %980 = and i64 %950, -3
  %981 = inttoptr i64 %980 to ptr
  store ptr %981, ptr %969, align 8, !tbaa !19
  %982 = load ptr, ptr %11, align 8, !tbaa !12
  %983 = ptrtoint ptr %982 to i64
  %984 = or i64 %983, %893
  %985 = inttoptr i64 %984 to ptr
  %986 = or disjoint i64 %979, 6
  %987 = getelementptr inbounds ptr, ptr %952, i64 %986
  store ptr %985, ptr %987, align 8, !tbaa !19
  br label %988

988:                                              ; preds = %978, %977
  %989 = load ptr, ptr %820, align 8, !tbaa !22
  %990 = icmp eq ptr %989, %958
  br i1 %990, label %991, label %995

991:                                              ; preds = %988
  %992 = load ptr, ptr %10, align 8, !tbaa !12
  %993 = getelementptr ptr, ptr %992, i64 %884
  %994 = getelementptr i8, ptr %993, i64 48
  store ptr %989, ptr %994, align 8, !tbaa !19
  br label %1007

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

1007:                                             ; preds = %995, %991
  %1008 = load ptr, ptr %820, align 8, !tbaa !22
  %1009 = icmp eq ptr %1008, %966
  br i1 %1009, label %1010, label %1011

1010:                                             ; preds = %1007
  store ptr %1008, ptr %953, align 8, !tbaa !19
  br label %1016

1011:                                             ; preds = %1007
  %1012 = and i64 %963, -3
  %1013 = inttoptr i64 %1012 to ptr
  store ptr %1013, ptr %953, align 8, !tbaa !19
  %1014 = or disjoint i64 %964, 6
  %1015 = getelementptr inbounds ptr, ptr %966, i64 %1014
  store ptr %928, ptr %1015, align 8, !tbaa !19
  br label %1016

1016:                                             ; preds = %1011, %1010
  %1017 = load ptr, ptr %820, align 8, !tbaa !22
  %1018 = icmp eq ptr %1017, %974
  br i1 %1018, label %1019, label %1023

1019:                                             ; preds = %1016
  %1020 = load ptr, ptr %9, align 8, !tbaa !12
  %1021 = getelementptr ptr, ptr %1020, i64 %914
  %1022 = getelementptr i8, ptr %1021, i64 48
  store ptr %1017, ptr %1022, align 8, !tbaa !19
  br label %1035

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

1035:                                             ; preds = %1019, %1023, %881
  %1036 = load ptr, ptr %8, align 8, !tbaa !12
  %1037 = getelementptr ptr, ptr %1036, i64 %905
  %1038 = getelementptr i8, ptr %1037, i64 24
  store ptr %855, ptr %1038, align 8, !tbaa !19
  %1039 = load ptr, ptr %8, align 8, !tbaa !12
  %1040 = getelementptr ptr, ptr %1039, i64 %914
  %1041 = getelementptr i8, ptr %1040, i64 24
  store ptr %2, ptr %1041, align 8, !tbaa !19
  %1042 = load ptr, ptr %8, align 8, !tbaa !12
  %1043 = getelementptr ptr, ptr %1042, i64 %902
  %1044 = getelementptr i8, ptr %1043, i64 24
  store ptr %.0493.ph, ptr %1044, align 8, !tbaa !19
  %1045 = getelementptr i8, ptr %894, i64 24
  store ptr %2, ptr %1045, align 8, !tbaa !19
  %1046 = getelementptr i8, ptr %885, i64 24
  store ptr %855, ptr %1046, align 8, !tbaa !19
  store ptr %.0495, ptr %854, align 8, !tbaa !19
  %1047 = load i32, ptr %827, align 8, !tbaa !30
  %1048 = icmp sgt i32 %1047, 0
  br i1 %1048, label %.lr.ph577, label %._crit_edge578

.lr.ph577:                                        ; preds = %1035
  %1049 = load i32, ptr %828, align 8, !tbaa !31
  %1050 = load ptr, ptr %8, align 8, !tbaa !12
  %1051 = sext i32 %1049 to i64
  %wide.trip.count597 = zext nneg i32 %1047 to i64
  %min.iters.check667 = icmp ult i32 %1047, 4
  br i1 %min.iters.check667, label %scalar.ph666.preheader, label %vector.memcheck661

vector.memcheck661:                               ; preds = %.lr.ph577
  %1052 = shl nsw i64 %1051, 2
  %scevgep = getelementptr i8, ptr %849, i64 %1052
  %1053 = add nsw i64 %1051, %wide.trip.count597
  %1054 = shl nsw i64 %1053, 2
  %scevgep662 = getelementptr i8, ptr %849, i64 %1054
  %scevgep663 = getelementptr i8, ptr %1050, i64 %1052
  %scevgep664 = getelementptr i8, ptr %1050, i64 %1054
  %bound0 = icmp ult ptr %scevgep, %scevgep664
  %bound1 = icmp ult ptr %scevgep663, %scevgep662
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph666.preheader, label %vector.ph668

vector.ph668:                                     ; preds = %vector.memcheck661
  %n.vec670 = and i64 %wide.trip.count597, 2147483644
  br label %vector.body672

vector.body672:                                   ; preds = %vector.body672, %vector.ph668
  %index673 = phi i64 [ 0, %vector.ph668 ], [ %index.next676, %vector.body672 ]
  %1055 = add nsw i64 %index673, %1051
  %1056 = getelementptr inbounds float, ptr %849, i64 %1055
  %wide.load674 = load <4 x float>, ptr %1056, align 4, !tbaa !11, !alias.scope !58, !noalias !61
  %1057 = getelementptr inbounds float, ptr %1050, i64 %1055
  %wide.load675 = load <4 x float>, ptr %1057, align 4, !tbaa !11, !alias.scope !61
  %1058 = fadd <4 x float> %wide.load674, %wide.load675
  %1059 = fmul <4 x float> %1058, <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>
  store <4 x float> %1059, ptr %1056, align 4, !tbaa !11, !alias.scope !58, !noalias !61
  store <4 x float> %1059, ptr %1057, align 4, !tbaa !11, !alias.scope !61
  %index.next676 = add nuw i64 %index673, 4
  %1060 = icmp eq i64 %index.next676, %n.vec670
  br i1 %1060, label %middle.block665, label %vector.body672, !llvm.loop !63

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

scalar.ph666.preheader:                           ; preds = %middle.block665, %vector.memcheck661, %.lr.ph577
  %indvars.iv594.ph = phi i64 [ 0, %vector.memcheck661 ], [ 0, %.lr.ph577 ], [ %n.vec670, %middle.block665 ]
  %xtraiter690 = and i64 %wide.trip.count597, 1
  %lcmp.mod691.not = icmp eq i64 %xtraiter690, 0
  br i1 %lcmp.mod691.not, label %scalar.ph666.prol.loopexit, label %scalar.ph666.prol

scalar.ph666.prol:                                ; preds = %scalar.ph666.preheader
  %1061 = add nsw i64 %indvars.iv594.ph, %1051
  %1062 = getelementptr inbounds float, ptr %849, i64 %1061
  %1063 = load float, ptr %1062, align 4, !tbaa !11
  %1064 = getelementptr inbounds float, ptr %1050, i64 %1061
  %1065 = load float, ptr %1064, align 4, !tbaa !11
  %1066 = fadd float %1063, %1065
  %1067 = fmul float %1066, 5.000000e-01
  store float %1067, ptr %1062, align 4, !tbaa !11
  store float %1067, ptr %1064, align 4, !tbaa !11
  %indvars.iv.next595.prol = or disjoint i64 %indvars.iv594.ph, 1
  br label %scalar.ph666.prol.loopexit

scalar.ph666.prol.loopexit:                       ; preds = %scalar.ph666.prol, %scalar.ph666.preheader
  %indvars.iv594.unr = phi i64 [ %indvars.iv594.ph, %scalar.ph666.preheader ], [ %indvars.iv.next595.prol, %scalar.ph666.prol ]
  %1068 = add nsw i64 %wide.trip.count597, -1
  %1069 = icmp eq i64 %indvars.iv594.ph, %1068
  br i1 %1069, label %._crit_edge578, label %scalar.ph666

scalar.ph666:                                     ; preds = %scalar.ph666.prol.loopexit, %scalar.ph666
  %indvars.iv594 = phi i64 [ %indvars.iv.next595.1, %scalar.ph666 ], [ %indvars.iv594.unr, %scalar.ph666.prol.loopexit ]
  %1070 = add nsw i64 %indvars.iv594, %1051
  %1071 = getelementptr inbounds float, ptr %849, i64 %1070
  %1072 = load float, ptr %1071, align 4, !tbaa !11
  %1073 = getelementptr inbounds float, ptr %1050, i64 %1070
  %1074 = load float, ptr %1073, align 4, !tbaa !11
  %1075 = fadd float %1072, %1074
  %1076 = fmul float %1075, 5.000000e-01
  store float %1076, ptr %1071, align 4, !tbaa !11
  store float %1076, ptr %1073, align 4, !tbaa !11
  %indvars.iv.next595 = add nuw nsw i64 %indvars.iv594, 1
  %1077 = add nsw i64 %indvars.iv.next595, %1051
  %1078 = getelementptr inbounds float, ptr %849, i64 %1077
  %1079 = load float, ptr %1078, align 4, !tbaa !11
  %1080 = getelementptr inbounds float, ptr %1050, i64 %1077
  %1081 = load float, ptr %1080, align 4, !tbaa !11
  %1082 = fadd float %1079, %1081
  %1083 = fmul float %1082, 5.000000e-01
  store float %1083, ptr %1078, align 4, !tbaa !11
  store float %1083, ptr %1080, align 4, !tbaa !11
  %indvars.iv.next595.1 = add nuw nsw i64 %indvars.iv594, 2
  %exitcond598.not.1 = icmp eq i64 %indvars.iv.next595.1, %wide.trip.count597
  br i1 %exitcond598.not.1, label %._crit_edge578, label %scalar.ph666, !llvm.loop !64

._crit_edge578:                                   ; preds = %scalar.ph666.prol.loopexit, %scalar.ph666, %middle.block665, %1035
  %1084 = load i32, ptr %829, align 4, !tbaa !39
  %.not542 = icmp eq i32 %1084, 0
  br i1 %.not542, label %1100, label %1085

1085:                                             ; preds = %._crit_edge578
  %1086 = load i32, ptr %830, align 4, !tbaa !40
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds float, ptr %849, i64 %1087
  %1089 = load float, ptr %1088, align 4, !tbaa !11
  %1090 = fcmp ugt float %1089, 0.000000e+00
  %.pre609 = load ptr, ptr %8, align 8, !tbaa !12
  br i1 %1090, label %1091, label %1098

1091:                                             ; preds = %1085
  %1092 = getelementptr inbounds float, ptr %.pre609, i64 %1087
  %1093 = load float, ptr %1092, align 4, !tbaa !11
  %1094 = fcmp ugt float %1093, 0.000000e+00
  br i1 %1094, label %1095, label %1098

1095:                                             ; preds = %1091
  %1096 = fadd float %1089, %1093
  %1097 = fmul float %1096, 5.000000e-01
  br label %1098

1098:                                             ; preds = %1085, %1091, %1095
  %.0492 = phi float [ %1097, %1095 ], [ -1.000000e+00, %1091 ], [ -1.000000e+00, %1085 ]
  store float %.0492, ptr %1088, align 4, !tbaa !11
  %1099 = getelementptr inbounds float, ptr %.pre609, i64 %1087
  store float %.0492, ptr %1099, align 4, !tbaa !11
  br label %1100

1100:                                             ; preds = %1098, %._crit_edge578
  %1101 = load i32, ptr %831, align 4, !tbaa !48
  %.not543 = icmp eq i32 %1101, 0
  br i1 %.not543, label %1112, label %1102

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

1112:                                             ; preds = %1102, %1100
  %1113 = phi i32 [ %1106, %1102 ], [ %901, %1100 ]
  %1114 = load i32, ptr %15, align 4, !tbaa !5
  %1115 = icmp sgt i32 %1114, 2
  br i1 %1115, label %1116, label %.critedge552

1116:                                             ; preds = %1112
  %1117 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44)
  %1118 = load i32, ptr %824, align 8, !tbaa !20
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1119
  %1121 = load i32, ptr %1120, align 4, !tbaa !28
  store i32 %1121, ptr %824, align 8, !tbaa !20
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %10)
  %1122 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45)
  call void @printtriangle(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %8)
  %.pre610 = load i32, ptr %806, align 8, !tbaa !20
  br label %.critedge552

.critedge552:                                     ; preds = %1112, %1116
  %1123 = phi i32 [ %1113, %1112 ], [ %.pre610, %1116 ]
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %1124
  %1126 = load i32, ptr %1125, align 4, !tbaa !28
  store i32 %1126, ptr %806, align 8, !tbaa !20
  %.pre607.pre.pre = load ptr, ptr %8, align 8, !tbaa !12
  br label %834

1127:                                             ; preds = %878, %836, %.critedge, %874, %864, %871
  %1128 = load i32, ptr %806, align 8, !tbaa !20
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1129
  %1131 = load i32, ptr %1130, align 4, !tbaa !28
  %1132 = load ptr, ptr %8, align 8, !tbaa !12
  %1133 = sext i32 %1131 to i64
  %1134 = getelementptr inbounds ptr, ptr %1132, i64 %1133
  %1135 = load ptr, ptr %1134, align 8, !tbaa !19
  %1136 = ptrtoint ptr %1135 to i64
  %1137 = and i64 %1136, 3
  %1138 = and i64 %1136, -4
  %1139 = inttoptr i64 %1138 to ptr
  %1140 = icmp eq ptr %.0495, %813
  br i1 %1140, label %1144, label %1141

1141:                                             ; preds = %1127
  %1142 = load ptr, ptr %818, align 8, !tbaa !15
  %1143 = icmp eq ptr %1142, %1139
  br i1 %1143, label %1144, label %1147

1144:                                             ; preds = %1141, %1127
  store ptr %1132, ptr %3, align 8, !tbaa !12
  %1145 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %1133
  %1146 = load i32, ptr %1145, align 4, !tbaa !28
  br label %1155

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

1155:                                             ; preds = %1144, %112, %52
  %.sink624 = phi i32 [ %1146, %1144 ], [ %114, %112 ], [ %55, %52 ]
  %.lcssa621.sink = phi ptr [ %1132, %1144 ], [ %113, %112 ], [ %53, %52 ]
  %.0487 = phi i32 [ 0, %1144 ], [ 2, %112 ], [ 3, %52 ]
  %1156 = getelementptr inbounds i8, ptr %3, i64 8
  store i32 %.sink624, ptr %1156, align 8, !tbaa !20
  %1157 = getelementptr inbounds i8, ptr %0, i64 82872
  store ptr %.lcssa621.sink, ptr %1157, align 8, !tbaa !65
  %1158 = getelementptr inbounds i8, ptr %0, i64 82880
  store i32 %.sink624, ptr %1158, align 8, !tbaa !66
  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 %.0487
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 116}
!6 = !{!"behavior", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!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 82840}
!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 82644, !10, i64 82648, !10, i64 82652, !10, i64 82656, !7, i64 82660, !7, i64 82664, !7, i64 82668, !7, i64 82672, !7, i64 82676, !7, i64 82680, !18, i64 82688, !7, i64 82696, !7, i64 82700, !7, i64 82704, !18, i64 82712, !7, i64 82720, !7, i64 82724, !7, i64 82728, !7, i64 82732, !7, i64 82736, !7, i64 82740, !7, i64 82744, !7, i64 82748, !7, i64 82752, !18, i64 82760, !18, i64 82768, !18, i64 82776, !18, i64 82784, !18, i64 82792, !18, i64 82800, !18, i64 82808, !14, i64 82816, !14, i64 82824, !14, i64 82832, !14, i64 82840, !14, i64 82848, !14, i64 82856, !14, i64 82864, !13, i64 82872}
!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 82744}
!22 = !{!16, !14, i64 82856}
!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 82712}
!30 = !{!16, !7, i64 82704}
!31 = !{!16, !7, i64 82736}
!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 82740}
!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 82724}
!48 = !{!16, !7, i64 82748}
!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 82816}
!56 = !{!16, !14, i64 82824}
!57 = !{!16, !14, i64 82832}
!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 82872}
!66 = !{!16, !7, i64 82880}


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