; 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.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 }

@plus1mod3 = external dso_local global [3 x i32], align 4
@minus1mod3 = external dso_local global [3 x i32], align 4
@.str.111 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [2 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
declare double @cos(double noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @traversalinit(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local ptr @triangletraverse(ptr noundef) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #4

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

; Function Attrs: nounwind uwtable
define dso_local void @quality_statistics(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %struct.otri, align 8
  %6 = alloca [3 x ptr], align 16
  %7 = alloca [8 x float], align 16
  %8 = alloca [16 x float], align 16
  %9 = alloca [3 x float], align 4
  %10 = alloca [3 x float], align 4
  %11 = alloca [3 x float], align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca [18 x i32], align 16
  %29 = alloca [16 x i32], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  %37 = call i32 (ptr, ...) @printf(ptr noundef @.str.111)
  store float 0x3FC6571840000000, ptr %26, align 4, !tbaa !9
  store float 0x404CA5DC20000000, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %38

38:                                               ; preds = %65, %2
  %39 = load i32, ptr %33, align 4, !tbaa !11
  %40 = icmp slt i32 %39, 8
  br i1 %40, label %41, label %68

41:                                               ; preds = %38
  %42 = load float, ptr %26, align 4, !tbaa !9
  %43 = load i32, ptr %33, align 4, !tbaa !11
  %44 = add nsw i32 %43, 1
  %45 = sitofp i32 %44 to float
  %46 = fmul float %42, %45
  %47 = fpext float %46 to double
  %48 = call double @cos(double noundef %47) #5
  %49 = fptrunc double %48 to float
  %50 = load i32, ptr %33, align 4, !tbaa !11
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds [8 x float], ptr %7, i64 0, i64 %51
  store float %49, ptr %52, align 4, !tbaa !9
  %53 = load i32, ptr %33, align 4, !tbaa !11
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds [8 x float], ptr %7, i64 0, i64 %54
  %56 = load float, ptr %55, align 4, !tbaa !9
  %57 = load i32, ptr %33, align 4, !tbaa !11
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds [8 x float], ptr %7, i64 0, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !9
  %61 = fmul float %56, %60
  %62 = load i32, ptr %33, align 4, !tbaa !11
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds [8 x float], ptr %7, i64 0, i64 %63
  store float %61, ptr %64, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %41
  %66 = load i32, ptr %33, align 4, !tbaa !11
  %67 = add nsw i32 %66, 1
  store i32 %67, ptr %33, align 4, !tbaa !11
  br label %38, !llvm.loop !13

68:                                               ; preds = %38
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %69

69:                                               ; preds = %76, %68
  %70 = load i32, ptr %33, align 4, !tbaa !11
  %71 = icmp slt i32 %70, 18
  br i1 %71, label %72, label %79

72:                                               ; preds = %69
  %73 = load i32, ptr %33, align 4, !tbaa !11
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [18 x i32], ptr %28, i64 0, i64 %74
  store i32 0, ptr %75, align 4, !tbaa !11
  br label %76

76:                                               ; preds = %72
  %77 = load i32, ptr %33, align 4, !tbaa !11
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr %33, align 4, !tbaa !11
  br label %69, !llvm.loop !15

79:                                               ; preds = %69
  %80 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 0
  store float 1.500000e+00, ptr %80, align 16, !tbaa !9
  %81 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 1
  store float 2.000000e+00, ptr %81, align 4, !tbaa !9
  %82 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 2
  store float 2.500000e+00, ptr %82, align 8, !tbaa !9
  %83 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 3
  store float 3.000000e+00, ptr %83, align 4, !tbaa !9
  %84 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 4
  store float 4.000000e+00, ptr %84, align 16, !tbaa !9
  %85 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 5
  store float 6.000000e+00, ptr %85, align 4, !tbaa !9
  %86 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 6
  store float 1.000000e+01, ptr %86, align 8, !tbaa !9
  %87 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 7
  store float 1.500000e+01, ptr %87, align 4, !tbaa !9
  %88 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 8
  store float 2.500000e+01, ptr %88, align 16, !tbaa !9
  %89 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 9
  store float 5.000000e+01, ptr %89, align 4, !tbaa !9
  %90 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 10
  store float 1.000000e+02, ptr %90, align 8, !tbaa !9
  %91 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 11
  store float 3.000000e+02, ptr %91, align 4, !tbaa !9
  %92 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 12
  store float 1.000000e+03, ptr %92, align 16, !tbaa !9
  %93 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 13
  store float 1.000000e+04, ptr %93, align 4, !tbaa !9
  %94 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 14
  store float 1.000000e+05, ptr %94, align 8, !tbaa !9
  %95 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 15
  store float 0.000000e+00, ptr %95, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %96

96:                                               ; preds = %103, %79
  %97 = load i32, ptr %33, align 4, !tbaa !11
  %98 = icmp slt i32 %97, 16
  br i1 %98, label %99, label %106

99:                                               ; preds = %96
  %100 = load i32, ptr %33, align 4, !tbaa !11
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 %101
  store i32 0, ptr %102, align 4, !tbaa !11
  br label %103

103:                                              ; preds = %99
  %104 = load i32, ptr %33, align 4, !tbaa !11
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %33, align 4, !tbaa !11
  br label %96, !llvm.loop !16

106:                                              ; preds = %96
  store float 0.000000e+00, ptr %23, align 4, !tbaa !9
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.mesh, ptr %107, i32 0, i32 14
  %109 = load float, ptr %108, align 4, !tbaa !17
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.mesh, ptr %110, i32 0, i32 13
  %112 = load float, ptr %111, align 8, !tbaa !22
  %113 = fsub float %109, %112
  %114 = load ptr, ptr %3, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.mesh, ptr %114, i32 0, i32 16
  %116 = load float, ptr %115, align 4, !tbaa !23
  %117 = fadd float %113, %116
  %118 = load ptr, ptr %3, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.mesh, ptr %118, i32 0, i32 15
  %120 = load float, ptr %119, align 8, !tbaa !24
  %121 = fsub float %117, %120
  store float %121, ptr %21, align 4, !tbaa !9
  %122 = load float, ptr %21, align 4, !tbaa !9
  %123 = load float, ptr %21, align 4, !tbaa !9
  %124 = fmul float %122, %123
  store float %124, ptr %21, align 4, !tbaa !9
  %125 = load float, ptr %21, align 4, !tbaa !9
  store float %125, ptr %15, align 4, !tbaa !9
  store float 0.000000e+00, ptr %16, align 4, !tbaa !9
  %126 = load float, ptr %21, align 4, !tbaa !9
  store float %126, ptr %18, align 4, !tbaa !9
  store float 0.000000e+00, ptr %19, align 4, !tbaa !9
  store float 0.000000e+00, ptr %23, align 4, !tbaa !9
  store float 0.000000e+00, ptr %24, align 4, !tbaa !9
  store float 2.000000e+00, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !11
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.mesh, ptr %127, i32 0, i32 0
  call void @traversalinit(ptr noundef %128)
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = call ptr @triangletraverse(ptr noundef %129)
  %131 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  store ptr %130, ptr %131, align 8, !tbaa !25
  %132 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 1
  store i32 0, ptr %132, align 8, !tbaa !26
  br label %133

133:                                              ; preds = %447, %106
  %134 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  %135 = load ptr, ptr %134, align 8, !tbaa !25
  %136 = icmp ne ptr %135, null
  br i1 %136, label %137, label %451

137:                                              ; preds = %133
  %138 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8, !tbaa !25
  %140 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 1
  %141 = load i32, ptr %140, align 8, !tbaa !26
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %142
  %144 = load i32, ptr %143, align 4, !tbaa !11
  %145 = add nsw i32 %144, 3
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds ptr, ptr %139, i64 %146
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  %149 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  store ptr %148, ptr %149, align 16, !tbaa !5
  %150 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  %151 = load ptr, ptr %150, align 8, !tbaa !25
  %152 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 1
  %153 = load i32, ptr %152, align 8, !tbaa !26
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %154
  %156 = load i32, ptr %155, align 4, !tbaa !11
  %157 = add nsw i32 %156, 3
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds ptr, ptr %151, i64 %158
  %160 = load ptr, ptr %159, align 8, !tbaa !5
  %161 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 1
  store ptr %160, ptr %161, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  %163 = load ptr, ptr %162, align 8, !tbaa !25
  %164 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 1
  %165 = load i32, ptr %164, align 8, !tbaa !26
  %166 = add nsw i32 %165, 3
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds ptr, ptr %163, i64 %167
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  %170 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 2
  store ptr %169, ptr %170, align 16, !tbaa !5
  store float 0.000000e+00, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %171

171:                                              ; preds = %272, %137
  %172 = load i32, ptr %33, align 4, !tbaa !11
  %173 = icmp slt i32 %172, 3
  br i1 %173, label %174, label %275

174:                                              ; preds = %171
  %175 = load i32, ptr %33, align 4, !tbaa !11
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !11
  store i32 %178, ptr %35, align 4, !tbaa !11
  %179 = load i32, ptr %33, align 4, !tbaa !11
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !11
  store i32 %182, ptr %36, align 4, !tbaa !11
  %183 = load i32, ptr %35, align 4, !tbaa !11
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = getelementptr inbounds float, ptr %186, i64 0
  %188 = load float, ptr %187, align 4, !tbaa !9
  %189 = load i32, ptr %36, align 4, !tbaa !11
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 %190
  %192 = load ptr, ptr %191, align 8, !tbaa !5
  %193 = getelementptr inbounds float, ptr %192, i64 0
  %194 = load float, ptr %193, align 4, !tbaa !9
  %195 = fsub float %188, %194
  %196 = load i32, ptr %33, align 4, !tbaa !11
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds [3 x float], ptr %9, i64 0, i64 %197
  store float %195, ptr %198, align 4, !tbaa !9
  %199 = load i32, ptr %35, align 4, !tbaa !11
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 %200
  %202 = load ptr, ptr %201, align 8, !tbaa !5
  %203 = getelementptr inbounds float, ptr %202, i64 1
  %204 = load float, ptr %203, align 4, !tbaa !9
  %205 = load i32, ptr %36, align 4, !tbaa !11
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  %209 = getelementptr inbounds float, ptr %208, i64 1
  %210 = load float, ptr %209, align 4, !tbaa !9
  %211 = fsub float %204, %210
  %212 = load i32, ptr %33, align 4, !tbaa !11
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds [3 x float], ptr %10, i64 0, i64 %213
  store float %211, ptr %214, align 4, !tbaa !9
  %215 = load i32, ptr %33, align 4, !tbaa !11
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [3 x float], ptr %9, i64 0, i64 %216
  %218 = load float, ptr %217, align 4, !tbaa !9
  %219 = load i32, ptr %33, align 4, !tbaa !11
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [3 x float], ptr %9, i64 0, i64 %220
  %222 = load float, ptr %221, align 4, !tbaa !9
  %223 = load i32, ptr %33, align 4, !tbaa !11
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [3 x float], ptr %10, i64 0, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !9
  %227 = load i32, ptr %33, align 4, !tbaa !11
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [3 x float], ptr %10, i64 0, i64 %228
  %230 = load float, ptr %229, align 4, !tbaa !9
  %231 = fmul float %226, %230
  %232 = call float @llvm.fmuladd.f32(float %218, float %222, float %231)
  %233 = load i32, ptr %33, align 4, !tbaa !11
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %234
  store float %232, ptr %235, align 4, !tbaa !9
  %236 = load i32, ptr %33, align 4, !tbaa !11
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %237
  %239 = load float, ptr %238, align 4, !tbaa !9
  %240 = load float, ptr %17, align 4, !tbaa !9
  %241 = fcmp ogt float %239, %240
  br i1 %241, label %242, label %247

242:                                              ; preds = %174
  %243 = load i32, ptr %33, align 4, !tbaa !11
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %244
  %246 = load float, ptr %245, align 4, !tbaa !9
  store float %246, ptr %17, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %242, %174
  %248 = load i32, ptr %33, align 4, !tbaa !11
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %249
  %251 = load float, ptr %250, align 4, !tbaa !9
  %252 = load float, ptr %16, align 4, !tbaa !9
  %253 = fcmp ogt float %251, %252
  br i1 %253, label %254, label %259

254:                                              ; preds = %247
  %255 = load i32, ptr %33, align 4, !tbaa !11
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %256
  %258 = load float, ptr %257, align 4, !tbaa !9
  store float %258, ptr %16, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %254, %247
  %260 = load i32, ptr %33, align 4, !tbaa !11
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %261
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = load float, ptr %15, align 4, !tbaa !9
  %265 = fcmp olt float %263, %264
  br i1 %265, label %266, label %271

266:                                              ; preds = %259
  %267 = load i32, ptr %33, align 4, !tbaa !11
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !9
  store float %270, ptr %15, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %266, %259
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %33, align 4, !tbaa !11
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %33, align 4, !tbaa !11
  br label %171, !llvm.loop !27

275:                                              ; preds = %171
  %276 = load ptr, ptr %3, align 8, !tbaa !5
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  %279 = load ptr, ptr %278, align 16, !tbaa !5
  %280 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 1
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  %282 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 2
  %283 = load ptr, ptr %282, align 16, !tbaa !5
  %284 = call float @counterclockwise(ptr noundef %276, ptr noundef %277, ptr noundef %279, ptr noundef %281, ptr noundef %283)
  store float %284, ptr %14, align 4, !tbaa !9
  %285 = load float, ptr %14, align 4, !tbaa !9
  %286 = load float, ptr %18, align 4, !tbaa !9
  %287 = fcmp olt float %285, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %275
  %289 = load float, ptr %14, align 4, !tbaa !9
  store float %289, ptr %18, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %288, %275
  %291 = load float, ptr %14, align 4, !tbaa !9
  %292 = load float, ptr %19, align 4, !tbaa !9
  %293 = fcmp ogt float %291, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %290
  %295 = load float, ptr %14, align 4, !tbaa !9
  store float %295, ptr %19, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %294, %290
  %297 = load float, ptr %14, align 4, !tbaa !9
  %298 = load float, ptr %14, align 4, !tbaa !9
  %299 = fmul float %297, %298
  %300 = load float, ptr %17, align 4, !tbaa !9
  %301 = fdiv float %299, %300
  store float %301, ptr %20, align 4, !tbaa !9
  %302 = load float, ptr %20, align 4, !tbaa !9
  %303 = load float, ptr %21, align 4, !tbaa !9
  %304 = fcmp olt float %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %296
  %306 = load float, ptr %20, align 4, !tbaa !9
  store float %306, ptr %21, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %305, %296
  %308 = load float, ptr %17, align 4, !tbaa !9
  %309 = load float, ptr %20, align 4, !tbaa !9
  %310 = fdiv float %308, %309
  store float %310, ptr %22, align 4, !tbaa !9
  %311 = load float, ptr %22, align 4, !tbaa !9
  %312 = load float, ptr %23, align 4, !tbaa !9
  %313 = fcmp ogt float %311, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %307
  %315 = load float, ptr %22, align 4, !tbaa !9
  store float %315, ptr %23, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %314, %307
  store i32 0, ptr %30, align 4, !tbaa !11
  br label %317

317:                                              ; preds = %334, %316
  %318 = load float, ptr %22, align 4, !tbaa !9
  %319 = load i32, ptr %30, align 4, !tbaa !11
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %320
  %322 = load float, ptr %321, align 4, !tbaa !9
  %323 = load i32, ptr %30, align 4, !tbaa !11
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !9
  %327 = fmul float %322, %326
  %328 = fcmp ogt float %318, %327
  br i1 %328, label %329, label %332

329:                                              ; preds = %317
  %330 = load i32, ptr %30, align 4, !tbaa !11
  %331 = icmp slt i32 %330, 15
  br label %332

332:                                              ; preds = %329, %317
  %333 = phi i1 [ false, %317 ], [ %331, %329 ]
  br i1 %333, label %334, label %337

334:                                              ; preds = %332
  %335 = load i32, ptr %30, align 4, !tbaa !11
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %30, align 4, !tbaa !11
  br label %317, !llvm.loop !28

337:                                              ; preds = %332
  %338 = load i32, ptr %30, align 4, !tbaa !11
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 %339
  %341 = load i32, ptr %340, align 4, !tbaa !11
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %340, align 4, !tbaa !11
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %343

343:                                              ; preds = %444, %337
  %344 = load i32, ptr %33, align 4, !tbaa !11
  %345 = icmp slt i32 %344, 3
  br i1 %345, label %346, label %447

346:                                              ; preds = %343
  %347 = load i32, ptr %33, align 4, !tbaa !11
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds [3 x i32], ptr @plus1mod3, i64 0, i64 %348
  %350 = load i32, ptr %349, align 4, !tbaa !11
  store i32 %350, ptr %35, align 4, !tbaa !11
  %351 = load i32, ptr %33, align 4, !tbaa !11
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds [3 x i32], ptr @minus1mod3, i64 0, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !11
  store i32 %354, ptr %36, align 4, !tbaa !11
  %355 = load i32, ptr %35, align 4, !tbaa !11
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds [3 x float], ptr %9, i64 0, i64 %356
  %358 = load float, ptr %357, align 4, !tbaa !9
  %359 = load i32, ptr %36, align 4, !tbaa !11
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [3 x float], ptr %9, i64 0, i64 %360
  %362 = load float, ptr %361, align 4, !tbaa !9
  %363 = load i32, ptr %35, align 4, !tbaa !11
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [3 x float], ptr %10, i64 0, i64 %364
  %366 = load float, ptr %365, align 4, !tbaa !9
  %367 = load i32, ptr %36, align 4, !tbaa !11
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds [3 x float], ptr %10, i64 0, i64 %368
  %370 = load float, ptr %369, align 4, !tbaa !9
  %371 = fmul float %366, %370
  %372 = call float @llvm.fmuladd.f32(float %358, float %362, float %371)
  store float %372, ptr %12, align 4, !tbaa !9
  %373 = load float, ptr %12, align 4, !tbaa !9
  %374 = load float, ptr %12, align 4, !tbaa !9
  %375 = fmul float %373, %374
  %376 = load i32, ptr %35, align 4, !tbaa !11
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %377
  %379 = load float, ptr %378, align 4, !tbaa !9
  %380 = load i32, ptr %36, align 4, !tbaa !11
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds [3 x float], ptr %11, i64 0, i64 %381
  %383 = load float, ptr %382, align 4, !tbaa !9
  %384 = fmul float %379, %383
  %385 = fdiv float %375, %384
  store float %385, ptr %13, align 4, !tbaa !9
  store i32 8, ptr %31, align 4, !tbaa !11
  store i32 7, ptr %34, align 4, !tbaa !11
  br label %386

386:                                              ; preds = %399, %346
  %387 = load i32, ptr %34, align 4, !tbaa !11
  %388 = icmp sge i32 %387, 0
  br i1 %388, label %389, label %402

389:                                              ; preds = %386
  %390 = load float, ptr %13, align 4, !tbaa !9
  %391 = load i32, ptr %34, align 4, !tbaa !11
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds [8 x float], ptr %7, i64 0, i64 %392
  %394 = load float, ptr %393, align 4, !tbaa !9
  %395 = fcmp ogt float %390, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %389
  %397 = load i32, ptr %34, align 4, !tbaa !11
  store i32 %397, ptr %31, align 4, !tbaa !11
  br label %398

398:                                              ; preds = %396, %389
  br label %399

399:                                              ; preds = %398
  %400 = load i32, ptr %34, align 4, !tbaa !11
  %401 = add nsw i32 %400, -1
  store i32 %401, ptr %34, align 4, !tbaa !11
  br label %386, !llvm.loop !29

402:                                              ; preds = %386
  %403 = load float, ptr %12, align 4, !tbaa !9
  %404 = fpext float %403 to double
  %405 = fcmp ole double %404, 0.000000e+00
  br i1 %405, label %406, label %427

406:                                              ; preds = %402
  %407 = load i32, ptr %31, align 4, !tbaa !11
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds [18 x i32], ptr %28, i64 0, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !11
  %411 = add nsw i32 %410, 1
  store i32 %411, ptr %409, align 4, !tbaa !11
  %412 = load float, ptr %13, align 4, !tbaa !9
  %413 = load float, ptr %24, align 4, !tbaa !9
  %414 = fcmp ogt float %412, %413
  br i1 %414, label %415, label %417

415:                                              ; preds = %406
  %416 = load float, ptr %13, align 4, !tbaa !9
  store float %416, ptr %24, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %415, %406
  %418 = load i32, ptr %32, align 4, !tbaa !11
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %426

420:                                              ; preds = %417
  %421 = load float, ptr %13, align 4, !tbaa !9
  %422 = load float, ptr %25, align 4, !tbaa !9
  %423 = fcmp olt float %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %420
  %425 = load float, ptr %13, align 4, !tbaa !9
  store float %425, ptr %25, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %424, %420, %417
  br label %443

427:                                              ; preds = %402
  %428 = load i32, ptr %31, align 4, !tbaa !11
  %429 = sub nsw i32 17, %428
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds [18 x i32], ptr %28, i64 0, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !11
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %431, align 4, !tbaa !11
  %434 = load i32, ptr %32, align 4, !tbaa !11
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %440, label %436

436:                                              ; preds = %427
  %437 = load float, ptr %13, align 4, !tbaa !9
  %438 = load float, ptr %25, align 4, !tbaa !9
  %439 = fcmp ogt float %437, %438
  br i1 %439, label %440, label %442

440:                                              ; preds = %436, %427
  %441 = load float, ptr %13, align 4, !tbaa !9
  store float %441, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !11
  br label %442

442:                                              ; preds = %440, %436
  br label %443

443:                                              ; preds = %442, %426
  br label %444

444:                                              ; preds = %443
  %445 = load i32, ptr %33, align 4, !tbaa !11
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %33, align 4, !tbaa !11
  br label %343, !llvm.loop !30

447:                                              ; preds = %343
  %448 = load ptr, ptr %3, align 8, !tbaa !5
  %449 = call ptr @triangletraverse(ptr noundef %448)
  %450 = getelementptr inbounds %struct.otri, ptr %5, i32 0, i32 0
  store ptr %449, ptr %450, align 8, !tbaa !25
  br label %133, !llvm.loop !31

451:                                              ; preds = %133
  %452 = load float, ptr %15, align 4, !tbaa !9
  %453 = fpext float %452 to double
  %454 = call double @sqrt(double noundef %453) #5
  %455 = fptrunc double %454 to float
  store float %455, ptr %15, align 4, !tbaa !9
  %456 = load float, ptr %16, align 4, !tbaa !9
  %457 = fpext float %456 to double
  %458 = call double @sqrt(double noundef %457) #5
  %459 = fptrunc double %458 to float
  store float %459, ptr %16, align 4, !tbaa !9
  %460 = load float, ptr %21, align 4, !tbaa !9
  %461 = fpext float %460 to double
  %462 = call double @sqrt(double noundef %461) #5
  %463 = fptrunc double %462 to float
  store float %463, ptr %21, align 4, !tbaa !9
  %464 = load float, ptr %23, align 4, !tbaa !9
  %465 = fpext float %464 to double
  %466 = call double @sqrt(double noundef %465) #5
  %467 = fptrunc double %466 to float
  store float %467, ptr %23, align 4, !tbaa !9
  %468 = load float, ptr %18, align 4, !tbaa !9
  %469 = fpext float %468 to double
  %470 = fmul double %469, 5.000000e-01
  %471 = fptrunc double %470 to float
  store float %471, ptr %18, align 4, !tbaa !9
  %472 = load float, ptr %19, align 4, !tbaa !9
  %473 = fpext float %472 to double
  %474 = fmul double %473, 5.000000e-01
  %475 = fptrunc double %474 to float
  store float %475, ptr %19, align 4, !tbaa !9
  %476 = load float, ptr %24, align 4, !tbaa !9
  %477 = fpext float %476 to double
  %478 = fcmp oge double %477, 1.000000e+00
  br i1 %478, label %479, label %480

479:                                              ; preds = %451
  store float 0.000000e+00, ptr %24, align 4, !tbaa !9
  br label %489

480:                                              ; preds = %451
  %481 = load float, ptr %27, align 4, !tbaa !9
  %482 = fpext float %481 to double
  %483 = load float, ptr %24, align 4, !tbaa !9
  %484 = fpext float %483 to double
  %485 = call double @sqrt(double noundef %484) #5
  %486 = call double @acos(double noundef %485) #5
  %487 = fmul double %482, %486
  %488 = fptrunc double %487 to float
  store float %488, ptr %24, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %480, %479
  %490 = load float, ptr %25, align 4, !tbaa !9
  %491 = fpext float %490 to double
  %492 = fcmp oge double %491, 1.000000e+00
  br i1 %492, label %493, label %494

493:                                              ; preds = %489
  store float 1.800000e+02, ptr %25, align 4, !tbaa !9
  br label %517

494:                                              ; preds = %489
  %495 = load i32, ptr %32, align 4, !tbaa !11
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %497, label %506

497:                                              ; preds = %494
  %498 = load float, ptr %27, align 4, !tbaa !9
  %499 = fpext float %498 to double
  %500 = load float, ptr %25, align 4, !tbaa !9
  %501 = fpext float %500 to double
  %502 = call double @sqrt(double noundef %501) #5
  %503 = call double @acos(double noundef %502) #5
  %504 = fmul double %499, %503
  %505 = fptrunc double %504 to float
  store float %505, ptr %25, align 4, !tbaa !9
  br label %516

506:                                              ; preds = %494
  %507 = load float, ptr %27, align 4, !tbaa !9
  %508 = fpext float %507 to double
  %509 = load float, ptr %25, align 4, !tbaa !9
  %510 = fpext float %509 to double
  %511 = call double @sqrt(double noundef %510) #5
  %512 = call double @acos(double noundef %511) #5
  %513 = fneg double %508
  %514 = call double @llvm.fmuladd.f64(double %513, double %512, double 1.800000e+02)
  %515 = fptrunc double %514 to float
  store float %515, ptr %25, align 4, !tbaa !9
  br label %516

516:                                              ; preds = %506, %497
  br label %517

517:                                              ; preds = %516, %493
  %518 = load float, ptr %18, align 4, !tbaa !9
  %519 = fpext float %518 to double
  %520 = load float, ptr %19, align 4, !tbaa !9
  %521 = fpext float %520 to double
  %522 = call i32 (ptr, ...) @printf(ptr noundef @.str.112, double noundef %519, double noundef %521)
  %523 = load float, ptr %15, align 4, !tbaa !9
  %524 = fpext float %523 to double
  %525 = load float, ptr %16, align 4, !tbaa !9
  %526 = fpext float %525 to double
  %527 = call i32 (ptr, ...) @printf(ptr noundef @.str.113, double noundef %524, double noundef %526)
  %528 = load float, ptr %21, align 4, !tbaa !9
  %529 = fpext float %528 to double
  %530 = load float, ptr %23, align 4, !tbaa !9
  %531 = fpext float %530 to double
  %532 = call i32 (ptr, ...) @printf(ptr noundef @.str.114, double noundef %529, double noundef %531)
  %533 = call i32 (ptr, ...) @printf(ptr noundef @.str.115)
  %534 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 0
  %535 = load float, ptr %534, align 16, !tbaa !9
  %536 = fpext float %535 to double
  %537 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 0
  %538 = load i32, ptr %537, align 16, !tbaa !11
  %539 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 7
  %540 = load float, ptr %539, align 4, !tbaa !9
  %541 = fpext float %540 to double
  %542 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 8
  %543 = load float, ptr %542, align 16, !tbaa !9
  %544 = fpext float %543 to double
  %545 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 8
  %546 = load i32, ptr %545, align 16, !tbaa !11
  %547 = call i32 (ptr, ...) @printf(ptr noundef @.str.116, double noundef %536, i32 noundef %538, double noundef %541, double noundef %544, i32 noundef %546)
  store i32 1, ptr %33, align 4, !tbaa !11
  br label %548

548:                                              ; preds = %585, %517
  %549 = load i32, ptr %33, align 4, !tbaa !11
  %550 = icmp slt i32 %549, 7
  br i1 %550, label %551, label %588

551:                                              ; preds = %548
  %552 = load i32, ptr %33, align 4, !tbaa !11
  %553 = sub nsw i32 %552, 1
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %554
  %556 = load float, ptr %555, align 4, !tbaa !9
  %557 = fpext float %556 to double
  %558 = load i32, ptr %33, align 4, !tbaa !11
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %559
  %561 = load float, ptr %560, align 4, !tbaa !9
  %562 = fpext float %561 to double
  %563 = load i32, ptr %33, align 4, !tbaa !11
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !11
  %567 = load i32, ptr %33, align 4, !tbaa !11
  %568 = add nsw i32 %567, 7
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %569
  %571 = load float, ptr %570, align 4, !tbaa !9
  %572 = fpext float %571 to double
  %573 = load i32, ptr %33, align 4, !tbaa !11
  %574 = add nsw i32 %573, 8
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %575
  %577 = load float, ptr %576, align 4, !tbaa !9
  %578 = fpext float %577 to double
  %579 = load i32, ptr %33, align 4, !tbaa !11
  %580 = add nsw i32 %579, 8
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 %581
  %583 = load i32, ptr %582, align 4, !tbaa !11
  %584 = call i32 (ptr, ...) @printf(ptr noundef @.str.117, double noundef %557, double noundef %562, i32 noundef %566, double noundef %572, double noundef %578, i32 noundef %583)
  br label %585

585:                                              ; preds = %551
  %586 = load i32, ptr %33, align 4, !tbaa !11
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %33, align 4, !tbaa !11
  br label %548, !llvm.loop !32

588:                                              ; preds = %548
  %589 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 6
  %590 = load float, ptr %589, align 8, !tbaa !9
  %591 = fpext float %590 to double
  %592 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 7
  %593 = load float, ptr %592, align 4, !tbaa !9
  %594 = fpext float %593 to double
  %595 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 7
  %596 = load i32, ptr %595, align 4, !tbaa !11
  %597 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 14
  %598 = load float, ptr %597, align 8, !tbaa !9
  %599 = fpext float %598 to double
  %600 = getelementptr inbounds [16 x i32], ptr %29, i64 0, i64 15
  %601 = load i32, ptr %600, align 4, !tbaa !11
  %602 = call i32 (ptr, ...) @printf(ptr noundef @.str.118, double noundef %591, double noundef %594, i32 noundef %596, double noundef %599, i32 noundef %601)
  %603 = call i32 (ptr, ...) @printf(ptr noundef @.str.119)
  %604 = load float, ptr %24, align 4, !tbaa !9
  %605 = fpext float %604 to double
  %606 = load float, ptr %25, align 4, !tbaa !9
  %607 = fpext float %606 to double
  %608 = call i32 (ptr, ...) @printf(ptr noundef @.str.120, double noundef %605, double noundef %607)
  %609 = call i32 (ptr, ...) @printf(ptr noundef @.str.121)
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %610

610:                                              ; preds = %635, %588
  %611 = load i32, ptr %33, align 4, !tbaa !11
  %612 = icmp slt i32 %611, 9
  br i1 %612, label %613, label %638

613:                                              ; preds = %610
  %614 = load i32, ptr %33, align 4, !tbaa !11
  %615 = mul nsw i32 %614, 10
  %616 = load i32, ptr %33, align 4, !tbaa !11
  %617 = mul nsw i32 %616, 10
  %618 = add nsw i32 %617, 10
  %619 = load i32, ptr %33, align 4, !tbaa !11
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds [18 x i32], ptr %28, i64 0, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !11
  %623 = load i32, ptr %33, align 4, !tbaa !11
  %624 = mul nsw i32 %623, 10
  %625 = add nsw i32 %624, 90
  %626 = load i32, ptr %33, align 4, !tbaa !11
  %627 = mul nsw i32 %626, 10
  %628 = add nsw i32 %627, 100
  %629 = load i32, ptr %33, align 4, !tbaa !11
  %630 = add nsw i32 %629, 9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds [18 x i32], ptr %28, i64 0, i64 %631
  %633 = load i32, ptr %632, align 4, !tbaa !11
  %634 = call i32 (ptr, ...) @printf(ptr noundef @.str.122, i32 noundef %615, i32 noundef %618, i32 noundef %622, i32 noundef %625, i32 noundef %628, i32 noundef %633)
  br label %635

635:                                              ; preds = %613
  %636 = load i32, ptr %33, align 4, !tbaa !11
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %33, align 4, !tbaa !11
  br label %610, !llvm.loop !33

638:                                              ; preds = %610
  %639 = call i32 (ptr, ...) @printf(ptr noundef @.str.123)
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #5
  ret void
}

; Function Attrs: nounwind
declare double @acos(double noundef) #2

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 "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 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!18, !10, i64 82644}
!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, !12, i64 82624, !6, i64 82632, !10, i64 82640, !10, i64 82644, !10, i64 82648, !10, i64 82652, !10, i64 82656, !12, i64 82660, !12, i64 82664, !12, i64 82668, !12, i64 82672, !12, i64 82676, !12, i64 82680, !20, i64 82688, !12, i64 82696, !12, i64 82700, !12, i64 82704, !20, i64 82712, !12, i64 82720, !12, i64 82724, !12, i64 82728, !12, i64 82732, !12, i64 82736, !12, i64 82740, !12, i64 82744, !12, i64 82748, !12, 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, !21, i64 82872}
!19 = !{!"memorypool", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !20, i64 64, !20, i64 72, !12, i64 80, !12, i64 84}
!20 = !{!"long", !7, i64 0}
!21 = !{!"otri", !6, i64 0, !12, i64 8}
!22 = !{!18, !10, i64 82640}
!23 = !{!18, !10, i64 82652}
!24 = !{!18, !10, i64 82648}
!25 = !{!21, !6, i64 0}
!26 = !{!21, !12, i64 8}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}


; 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"

@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.111 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [2 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: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @triangletraverse(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #4

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

; Function Attrs: nounwind uwtable
define dso_local void @quality_statistics(ptr noundef %0, ptr noundef %1) local_unnamed_addr #3 {
.preheader.preheader:
  %2 = alloca [3 x ptr], align 16
  %3 = alloca [16 x float], align 16
  %4 = alloca [3 x float], align 4
  %5 = alloca [3 x float], align 4
  %6 = alloca [3 x float], align 8
  %7 = alloca [18 x i32], align 16
  %8 = alloca [16 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #7
  %9 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.111)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) %7, i8 0, i64 72, i1 false), !tbaa !5
  store <4 x float> <float 1.500000e+00, float 2.000000e+00, float 2.500000e+00, float 3.000000e+00>, ptr %3, align 16, !tbaa !9
  %10 = getelementptr inbounds i8, ptr %3, i64 16
  store <4 x float> <float 4.000000e+00, float 6.000000e+00, float 1.000000e+01, float 1.500000e+01>, ptr %10, align 16, !tbaa !9
  %11 = getelementptr inbounds i8, ptr %3, i64 32
  store <4 x float> <float 2.500000e+01, float 5.000000e+01, float 1.000000e+02, float 3.000000e+02>, ptr %11, align 16, !tbaa !9
  %12 = getelementptr inbounds i8, ptr %3, i64 48
  store <4 x float> <float 1.000000e+03, float 1.000000e+04, float 1.000000e+05, float 0.000000e+00>, ptr %12, align 16, !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %8, i8 0, i64 64, i1 false), !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 82644
  %14 = load float, ptr %13, align 4, !tbaa !11
  %15 = getelementptr inbounds i8, ptr %0, i64 82640
  %16 = load float, ptr %15, align 8, !tbaa !17
  %17 = fsub float %14, %16
  %18 = getelementptr inbounds i8, ptr %0, i64 82652
  %19 = load float, ptr %18, align 4, !tbaa !18
  %20 = fadd float %17, %19
  %21 = getelementptr inbounds i8, ptr %0, i64 82648
  %22 = load float, ptr %21, align 8, !tbaa !19
  %23 = fsub float %20, %22
  %24 = fmul float %23, %23
  tail call void @traversalinit(ptr noundef %0)
  %25 = tail call ptr @triangletraverse(ptr noundef %0)
  %.not210 = icmp eq ptr %25, null
  br i1 %.not210, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader.preheader
  %26 = getelementptr inbounds i8, ptr %2, i64 8
  %27 = getelementptr inbounds i8, ptr %2, i64 16
  %28 = getelementptr inbounds i8, ptr %4, i64 4
  %29 = getelementptr inbounds i8, ptr %5, i64 4
  %30 = getelementptr inbounds i8, ptr %4, i64 8
  %31 = getelementptr inbounds i8, ptr %5, i64 8
  %32 = getelementptr inbounds i8, ptr %6, i64 8
  br label %33

33:                                               ; preds = %.lr.ph, %279
  %.0149220 = phi i32 [ 1, %.lr.ph ], [ %.2151.2, %279 ]
  %.sroa.0.0219 = phi ptr [ %25, %.lr.ph ], [ %281, %279 ]
  %.0155218 = phi float [ %24, %.lr.ph ], [ %.2157.2, %279 ]
  %.0158217 = phi float [ 2.000000e+00, %.lr.ph ], [ %.2160.2, %279 ]
  %.0162216 = phi float [ 0.000000e+00, %.lr.ph ], [ %.3165.2, %279 ]
  %.0167215 = phi float [ 0.000000e+00, %.lr.ph ], [ %.1168, %279 ]
  %.0169214 = phi float [ 0.000000e+00, %.lr.ph ], [ %.2171.2, %279 ]
  %.0172213 = phi float [ %24, %.lr.ph ], [ %.1173, %279 ]
  %.0176212 = phi float [ 0.000000e+00, %.lr.ph ], [ %.1177, %279 ]
  %.0178211 = phi float [ %24, %.lr.ph ], [ %.1179, %279 ]
  %34 = load i32, ptr @plus1mod3, align 4, !tbaa !5
  %35 = add nsw i32 %34, 3
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds ptr, ptr %.sroa.0.0219, i64 %36
  %38 = load ptr, ptr %37, align 8, !tbaa !20
  store ptr %38, ptr %2, align 16, !tbaa !20
  %39 = load i32, ptr @minus1mod3, align 4, !tbaa !5
  %40 = add nsw i32 %39, 3
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds ptr, ptr %.sroa.0.0219, i64 %41
  %43 = load ptr, ptr %42, align 8, !tbaa !20
  store ptr %43, ptr %26, align 8, !tbaa !20
  %44 = getelementptr inbounds i8, ptr %.sroa.0.0219, i64 24
  %45 = load ptr, ptr %44, align 8, !tbaa !20
  store ptr %45, ptr %27, align 16, !tbaa !20
  %46 = sext i32 %34 to i64
  %47 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %46
  %48 = load ptr, ptr %47, align 8, !tbaa !20
  %49 = load float, ptr %48, align 4, !tbaa !9
  %50 = sext i32 %39 to i64
  %51 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %50
  %52 = load ptr, ptr %51, align 8, !tbaa !20
  %53 = load float, ptr %52, align 4, !tbaa !9
  %54 = getelementptr inbounds i8, ptr %48, i64 4
  %55 = load float, ptr %54, align 4, !tbaa !9
  %56 = getelementptr inbounds i8, ptr %52, i64 4
  %57 = load float, ptr %56, align 4, !tbaa !9
  %58 = load i32, ptr getelementptr inbounds (i8, ptr @plus1mod3, i64 4), align 4, !tbaa !5
  %59 = load i32, ptr getelementptr inbounds (i8, ptr @minus1mod3, i64 4), align 4, !tbaa !5
  %60 = sext i32 %58 to i64
  %61 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %60
  %62 = load ptr, ptr %61, align 8, !tbaa !20
  %63 = load float, ptr %62, align 4, !tbaa !9
  %64 = sext i32 %59 to i64
  %65 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %64
  %66 = load ptr, ptr %65, align 8, !tbaa !20
  %67 = load float, ptr %66, align 4, !tbaa !9
  %68 = getelementptr inbounds i8, ptr %62, i64 4
  %69 = load float, ptr %68, align 4, !tbaa !9
  %70 = getelementptr inbounds i8, ptr %66, i64 4
  %71 = load float, ptr %70, align 4, !tbaa !9
  %72 = insertelement <2 x float> poison, float %49, i64 0
  %73 = insertelement <2 x float> %72, float %63, i64 1
  %74 = insertelement <2 x float> poison, float %53, i64 0
  %75 = insertelement <2 x float> %74, float %67, i64 1
  %76 = fsub <2 x float> %73, %75
  %77 = extractelement <2 x float> %76, i64 0
  store float %77, ptr %4, align 4, !tbaa !9
  %78 = insertelement <2 x float> poison, float %55, i64 0
  %79 = insertelement <2 x float> %78, float %69, i64 1
  %80 = insertelement <2 x float> poison, float %57, i64 0
  %81 = insertelement <2 x float> %80, float %71, i64 1
  %82 = fsub <2 x float> %79, %81
  %83 = extractelement <2 x float> %82, i64 0
  store float %83, ptr %5, align 4, !tbaa !9
  %84 = fmul <2 x float> %82, %82
  %85 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %76, <2 x float> %76, <2 x float> %84)
  %86 = extractelement <2 x float> %85, i64 0
  %87 = fcmp ogt float %86, 0.000000e+00
  %.1175 = select i1 %87, float %86, float 0.000000e+00
  %88 = fcmp ogt float %86, %.0169214
  %.2171 = select i1 %88, float %86, float %.0169214
  %89 = fcmp olt float %86, %.0155218
  %.2157 = select i1 %89, float %86, float %.0155218
  %90 = extractelement <2 x float> %76, i64 1
  store float %90, ptr %28, align 4, !tbaa !9
  %91 = extractelement <2 x float> %82, i64 1
  store float %91, ptr %29, align 4, !tbaa !9
  store <2 x float> %85, ptr %6, align 8, !tbaa !9
  %92 = extractelement <2 x float> %85, i64 1
  %93 = fcmp ogt float %92, %.1175
  %.1175.1 = select i1 %93, float %92, float %.1175
  %94 = fcmp ogt float %92, %.2171
  %.2171.1 = select i1 %94, float %92, float %.2171
  %95 = fcmp olt float %92, %.2157
  %.2157.1 = select i1 %95, float %92, float %.2157
  %96 = load i32, ptr getelementptr inbounds (i8, ptr @plus1mod3, i64 8), align 4, !tbaa !5
  %97 = load i32, ptr getelementptr inbounds (i8, ptr @minus1mod3, i64 8), align 4, !tbaa !5
  %98 = sext i32 %96 to i64
  %99 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %98
  %100 = load ptr, ptr %99, align 8, !tbaa !20
  %101 = load float, ptr %100, align 4, !tbaa !9
  %102 = sext i32 %97 to i64
  %103 = getelementptr inbounds [3 x ptr], ptr %2, i64 0, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !20
  %105 = load float, ptr %104, align 4, !tbaa !9
  %106 = fsub float %101, %105
  store float %106, ptr %30, align 4, !tbaa !9
  %107 = getelementptr inbounds i8, ptr %100, i64 4
  %108 = load float, ptr %107, align 4, !tbaa !9
  %109 = getelementptr inbounds i8, ptr %104, i64 4
  %110 = load float, ptr %109, align 4, !tbaa !9
  %111 = fsub float %108, %110
  store float %111, ptr %31, align 4, !tbaa !9
  %112 = fmul float %111, %111
  %113 = tail call float @llvm.fmuladd.f32(float %106, float %106, float %112)
  store float %113, ptr %32, align 8, !tbaa !9
  %114 = fcmp ogt float %113, %.1175.1
  %.1175.2 = select i1 %114, float %113, float %.1175.1
  %115 = fcmp ogt float %113, %.2171.1
  %116 = fcmp olt float %113, %.2157.1
  %117 = tail call float @counterclockwise(ptr noundef %0, ptr noundef %1, ptr noundef %38, ptr noundef %43, ptr noundef %45)
  %118 = fcmp olt float %117, %.0178211
  %119 = fcmp ogt float %117, %.0176212
  %120 = fmul float %117, %117
  %121 = fdiv float %120, %.1175.2
  %122 = fcmp olt float %121, %.0172213
  %123 = fdiv float %.1175.2, %121
  %124 = fcmp ogt float %123, %.0167215
  br label %125

125:                                              ; preds = %125, %33
  %indvars.iv = phi i64 [ %indvars.iv.next, %125 ], [ 0, %33 ]
  %126 = getelementptr inbounds [16 x float], ptr %3, i64 0, i64 %indvars.iv
  %127 = load float, ptr %126, align 4, !tbaa !9
  %128 = fmul float %127, %127
  %129 = fcmp ogt float %123, %128
  %130 = icmp ult i64 %indvars.iv, 15
  %131 = and i1 %130, %129
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br i1 %131, label %125, label %132, !llvm.loop !21

132:                                              ; preds = %125
  %.2171.2 = select i1 %115, float %113, float %.2171.1
  %.1179 = select i1 %118, float %117, float %.0178211
  %.1173 = select i1 %122, float %121, float %.0172213
  %133 = getelementptr inbounds [16 x i32], ptr %8, i64 0, i64 %indvars.iv
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %133, align 4, !tbaa !5
  %136 = load i32, ptr @plus1mod3, align 4, !tbaa !5
  %137 = load i32, ptr @minus1mod3, align 4, !tbaa !5
  %138 = sext i32 %136 to i64
  %139 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %138
  %140 = load float, ptr %139, align 4, !tbaa !9
  %141 = sext i32 %137 to i64
  %142 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %141
  %143 = load float, ptr %142, align 4, !tbaa !9
  %144 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %138
  %145 = load float, ptr %144, align 4, !tbaa !9
  %146 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %141
  %147 = load float, ptr %146, align 4, !tbaa !9
  %148 = fmul float %145, %147
  %149 = tail call float @llvm.fmuladd.f32(float %140, float %143, float %148)
  %150 = fmul float %149, %149
  %151 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %138
  %152 = load float, ptr %151, align 4, !tbaa !9
  %153 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %141
  %154 = load float, ptr %153, align 4, !tbaa !9
  %155 = fmul float %152, %154
  %156 = fdiv float %150, %155
  %157 = fcmp ogt float %156, 0x3F9EE09CE0000000
  %.1153 = select i1 %157, i32 7, i32 8
  %158 = fcmp ogt float %156, 0x3FBDF241A0000000
  %.1153.1 = select i1 %158, i32 6, i32 %.1153
  %159 = fcmp ogt float %156, 0x3FCFFFFFC0000000
  %.1153.2 = select i1 %159, i32 5, i32 %.1153.1
  %160 = fcmp ogt float %156, 0x3FDA717980000000
  %.1153.3 = select i1 %160, i32 4, i32 %.1153.2
  %161 = fcmp ogt float %156, 0x3FE2C74340000000
  %.1153.4 = select i1 %161, i32 3, i32 %.1153.3
  %162 = fcmp ogt float %156, 7.500000e-01
  %.1153.5 = select i1 %162, i32 2, i32 %.1153.4
  %163 = fcmp ogt float %156, 0x3FEC41B7C0000000
  %.1153.6 = select i1 %163, i32 1, i32 %.1153.5
  %164 = fcmp ogt float %156, 0x3FEF08FB00000000
  %.1153.7 = select i1 %164, i32 0, i32 %.1153.6
  %165 = fcmp ugt float %149, 0.000000e+00
  br i1 %165, label %175, label %166

166:                                              ; preds = %132
  %167 = zext nneg i32 %.1153.7 to i64
  %168 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %168, align 4, !tbaa !5
  %171 = fcmp ogt float %156, %.0162216
  %.2164 = select i1 %171, float %156, float %.0162216
  %.not196 = icmp eq i32 %.0149220, 0
  br i1 %.not196, label %183, label %172

172:                                              ; preds = %166
  %173 = fcmp olt float %156, %.0158217
  br i1 %173, label %174, label %183

174:                                              ; preds = %172
  br label %183

175:                                              ; preds = %132
  %176 = sub nuw nsw i32 17, %.1153.7
  %177 = zext nneg i32 %176 to i64
  %178 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %178, align 4, !tbaa !5
  %.not195 = icmp ne i32 %.0149220, 0
  %181 = fcmp ogt float %156, %.0158217
  %or.cond = select i1 %.not195, i1 true, i1 %181
  br i1 %or.cond, label %182, label %183

182:                                              ; preds = %175
  br label %183

183:                                              ; preds = %175, %174, %172, %166, %182
  %.3165 = phi float [ %.2164, %174 ], [ %.2164, %172 ], [ %.2164, %166 ], [ %.0162216, %182 ], [ %.0162216, %175 ]
  %.2160 = phi float [ %156, %174 ], [ %.0158217, %172 ], [ %.0158217, %166 ], [ %156, %182 ], [ %.0158217, %175 ]
  %.not196.1 = phi i1 [ false, %174 ], [ false, %172 ], [ true, %166 ], [ true, %182 ], [ true, %175 ]
  %.not195.1 = phi i1 [ true, %174 ], [ true, %172 ], [ false, %166 ], [ false, %182 ], [ false, %175 ]
  %184 = load i32, ptr getelementptr inbounds (i8, ptr @plus1mod3, i64 4), align 4, !tbaa !5
  %185 = load i32, ptr getelementptr inbounds (i8, ptr @minus1mod3, i64 4), align 4, !tbaa !5
  %186 = sext i32 %184 to i64
  %187 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %186
  %188 = load float, ptr %187, align 4, !tbaa !9
  %189 = sext i32 %185 to i64
  %190 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %189
  %191 = load float, ptr %190, align 4, !tbaa !9
  %192 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %186
  %193 = load float, ptr %192, align 4, !tbaa !9
  %194 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %189
  %195 = load float, ptr %194, align 4, !tbaa !9
  %196 = fmul float %193, %195
  %197 = tail call float @llvm.fmuladd.f32(float %188, float %191, float %196)
  %198 = fmul float %197, %197
  %199 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %186
  %200 = load float, ptr %199, align 4, !tbaa !9
  %201 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %189
  %202 = load float, ptr %201, align 4, !tbaa !9
  %203 = fmul float %200, %202
  %204 = fdiv float %198, %203
  %205 = fcmp ogt float %204, 0x3F9EE09CE0000000
  %.1153.1242 = select i1 %205, i32 7, i32 8
  %206 = fcmp ogt float %204, 0x3FBDF241A0000000
  %.1153.1.1 = select i1 %206, i32 6, i32 %.1153.1242
  %207 = fcmp ogt float %204, 0x3FCFFFFFC0000000
  %.1153.2.1 = select i1 %207, i32 5, i32 %.1153.1.1
  %208 = fcmp ogt float %204, 0x3FDA717980000000
  %.1153.3.1 = select i1 %208, i32 4, i32 %.1153.2.1
  %209 = fcmp ogt float %204, 0x3FE2C74340000000
  %.1153.4.1 = select i1 %209, i32 3, i32 %.1153.3.1
  %210 = fcmp ogt float %204, 7.500000e-01
  %.1153.5.1 = select i1 %210, i32 2, i32 %.1153.4.1
  %211 = fcmp ogt float %204, 0x3FEC41B7C0000000
  %.1153.6.1 = select i1 %211, i32 1, i32 %.1153.5.1
  %212 = fcmp ogt float %204, 0x3FEF08FB00000000
  %.1153.7.1 = select i1 %212, i32 0, i32 %.1153.6.1
  %213 = fcmp ugt float %197, 0.000000e+00
  br i1 %213, label %223, label %214

214:                                              ; preds = %183
  %215 = zext nneg i32 %.1153.7.1 to i64
  %216 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %215
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %216, align 4, !tbaa !5
  %219 = fcmp ogt float %204, %.3165
  %.2164.1 = select i1 %219, float %204, float %.3165
  br i1 %.not196.1, label %231, label %220

220:                                              ; preds = %214
  %221 = fcmp olt float %204, %.2160
  br i1 %221, label %222, label %231

222:                                              ; preds = %220
  br label %231

223:                                              ; preds = %183
  %224 = sub nuw nsw i32 17, %.1153.7.1
  %225 = zext nneg i32 %224 to i64
  %226 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %226, align 4, !tbaa !5
  %229 = fcmp ogt float %204, %.2160
  %or.cond.1 = select i1 %.not195.1, i1 true, i1 %229
  br i1 %or.cond.1, label %230, label %231

230:                                              ; preds = %223
  br label %231

231:                                              ; preds = %230, %223, %222, %220, %214
  %.3165.1 = phi float [ %.2164.1, %222 ], [ %.2164.1, %220 ], [ %.2164.1, %214 ], [ %.3165, %230 ], [ %.3165, %223 ]
  %.2160.1 = phi float [ %204, %222 ], [ %.2160, %220 ], [ %.2160, %214 ], [ %204, %230 ], [ %.2160, %223 ]
  %.not196.2 = phi i1 [ false, %222 ], [ false, %220 ], [ true, %214 ], [ true, %230 ], [ true, %223 ]
  %.not195.2 = phi i1 [ true, %222 ], [ true, %220 ], [ false, %214 ], [ false, %230 ], [ false, %223 ]
  %232 = load i32, ptr getelementptr inbounds (i8, ptr @plus1mod3, i64 8), align 4, !tbaa !5
  %233 = load i32, ptr getelementptr inbounds (i8, ptr @minus1mod3, i64 8), align 4, !tbaa !5
  %234 = sext i32 %232 to i64
  %235 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %234
  %236 = load float, ptr %235, align 4, !tbaa !9
  %237 = sext i32 %233 to i64
  %238 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %237
  %239 = load float, ptr %238, align 4, !tbaa !9
  %240 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %234
  %241 = load float, ptr %240, align 4, !tbaa !9
  %242 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %237
  %243 = load float, ptr %242, align 4, !tbaa !9
  %244 = fmul float %241, %243
  %245 = tail call float @llvm.fmuladd.f32(float %236, float %239, float %244)
  %246 = fmul float %245, %245
  %247 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %234
  %248 = load float, ptr %247, align 4, !tbaa !9
  %249 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %237
  %250 = load float, ptr %249, align 4, !tbaa !9
  %251 = fmul float %248, %250
  %252 = fdiv float %246, %251
  %253 = fcmp ogt float %252, 0x3F9EE09CE0000000
  %.1153.2243 = select i1 %253, i32 7, i32 8
  %254 = fcmp ogt float %252, 0x3FBDF241A0000000
  %.1153.1.2 = select i1 %254, i32 6, i32 %.1153.2243
  %255 = fcmp ogt float %252, 0x3FCFFFFFC0000000
  %.1153.2.2 = select i1 %255, i32 5, i32 %.1153.1.2
  %256 = fcmp ogt float %252, 0x3FDA717980000000
  %.1153.3.2 = select i1 %256, i32 4, i32 %.1153.2.2
  %257 = fcmp ogt float %252, 0x3FE2C74340000000
  %.1153.4.2 = select i1 %257, i32 3, i32 %.1153.3.2
  %258 = fcmp ogt float %252, 7.500000e-01
  %.1153.5.2 = select i1 %258, i32 2, i32 %.1153.4.2
  %259 = fcmp ogt float %252, 0x3FEC41B7C0000000
  %.1153.6.2 = select i1 %259, i32 1, i32 %.1153.5.2
  %260 = fcmp ogt float %252, 0x3FEF08FB00000000
  %.1153.7.2 = select i1 %260, i32 0, i32 %.1153.6.2
  %261 = fcmp ugt float %245, 0.000000e+00
  br i1 %261, label %271, label %262

262:                                              ; preds = %231
  %263 = zext nneg i32 %.1153.7.2 to i64
  %264 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %264, align 4, !tbaa !5
  %267 = fcmp ogt float %252, %.3165.1
  %.2164.2 = select i1 %267, float %252, float %.3165.1
  br i1 %.not196.2, label %279, label %268

268:                                              ; preds = %262
  %269 = fcmp olt float %252, %.2160.1
  br i1 %269, label %270, label %279

270:                                              ; preds = %268
  br label %279

271:                                              ; preds = %231
  %272 = sub nuw nsw i32 17, %.1153.7.2
  %273 = zext nneg i32 %272 to i64
  %274 = getelementptr inbounds [18 x i32], ptr %7, i64 0, i64 %273
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %274, align 4, !tbaa !5
  %277 = fcmp ogt float %252, %.2160.1
  %or.cond.2 = select i1 %.not195.2, i1 true, i1 %277
  br i1 %or.cond.2, label %278, label %279

278:                                              ; preds = %271
  br label %279

279:                                              ; preds = %278, %271, %270, %268, %262
  %.3165.2 = phi float [ %.2164.2, %270 ], [ %.2164.2, %268 ], [ %.2164.2, %262 ], [ %.3165.1, %278 ], [ %.3165.1, %271 ]
  %.2160.2 = phi float [ %252, %270 ], [ %.2160.1, %268 ], [ %.2160.1, %262 ], [ %252, %278 ], [ %.2160.1, %271 ]
  %280 = phi i1 [ false, %270 ], [ false, %268 ], [ true, %262 ], [ true, %278 ], [ true, %271 ]
  %.2151.2 = phi i32 [ 1, %270 ], [ 1, %268 ], [ 0, %262 ], [ 0, %278 ], [ 0, %271 ]
  %.2157.2 = select i1 %116, float %113, float %.2157.1
  %.1177 = select i1 %119, float %117, float %.0176212
  %.1168 = select i1 %124, float %123, float %.0167215
  %281 = tail call ptr @triangletraverse(ptr noundef %0)
  %.not = icmp eq ptr %281, null
  br i1 %.not, label %._crit_edge.loopexit, label %33, !llvm.loop !23

._crit_edge.loopexit:                             ; preds = %279
  %282 = fmul float %.1177, 5.000000e-01
  %283 = fpext float %282 to double
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader.preheader
  %.0178.lcssa = phi float [ %24, %.preheader.preheader ], [ %.1179, %._crit_edge.loopexit ]
  %.0176.lcssa = phi double [ 0.000000e+00, %.preheader.preheader ], [ %283, %._crit_edge.loopexit ]
  %.0172.lcssa = phi float [ %24, %.preheader.preheader ], [ %.1173, %._crit_edge.loopexit ]
  %.0169.lcssa = phi float [ 0.000000e+00, %.preheader.preheader ], [ %.2171.2, %._crit_edge.loopexit ]
  %.0167.lcssa = phi float [ 0.000000e+00, %.preheader.preheader ], [ %.1168, %._crit_edge.loopexit ]
  %.0162.lcssa = phi float [ 0.000000e+00, %.preheader.preheader ], [ %.3165.2, %._crit_edge.loopexit ]
  %.0158.lcssa = phi float [ 2.000000e+00, %.preheader.preheader ], [ %.2160.2, %._crit_edge.loopexit ]
  %.0155.lcssa = phi float [ %24, %.preheader.preheader ], [ %.2157.2, %._crit_edge.loopexit ]
  %.0149.lcssa = phi i1 [ false, %.preheader.preheader ], [ %280, %._crit_edge.loopexit ]
  %sqrtf = tail call float @sqrtf(float noundef %.0155.lcssa) #2
  %sqrtf191 = tail call float @sqrtf(float noundef %.0169.lcssa) #2
  %sqrtf192 = tail call float @sqrtf(float noundef %.0172.lcssa) #2
  %sqrtf193 = tail call float @sqrtf(float noundef %.0167.lcssa) #2
  %284 = fcmp ult float %.0162.lcssa, 1.000000e+00
  br i1 %284, label %285, label %292

285:                                              ; preds = %._crit_edge
  %286 = fpext float %.0162.lcssa to double
  %287 = tail call double @sqrt(double noundef %286) #7
  %288 = tail call double @acos(double noundef %287) #7
  %289 = fmul double %288, 0x404CA5DC20000000
  %290 = fptrunc double %289 to float
  %291 = fpext float %290 to double
  br label %292

292:                                              ; preds = %._crit_edge, %285
  %.4166 = phi double [ %291, %285 ], [ 0.000000e+00, %._crit_edge ]
  %293 = fcmp ult float %.0158.lcssa, 1.000000e+00
  br i1 %293, label %294, label %304

294:                                              ; preds = %292
  %295 = fpext float %.0158.lcssa to double
  %296 = tail call double @sqrt(double noundef %295) #7
  %297 = tail call double @acos(double noundef %296) #7
  br i1 %.0149.lcssa, label %301, label %298

298:                                              ; preds = %294
  %299 = fmul double %297, 0x404CA5DC20000000
  %300 = fptrunc double %299 to float
  br label %304

301:                                              ; preds = %294
  %302 = tail call double @llvm.fmuladd.f64(double %297, double 0xC04CA5DC20000000, double 1.800000e+02)
  %303 = fptrunc double %302 to float
  br label %304

304:                                              ; preds = %292, %298, %301
  %.3161 = phi float [ %300, %298 ], [ %303, %301 ], [ 1.800000e+02, %292 ]
  %305 = getelementptr inbounds i8, ptr %3, i64 56
  %306 = getelementptr inbounds i8, ptr %3, i64 52
  %307 = getelementptr inbounds i8, ptr %3, i64 44
  %308 = getelementptr inbounds i8, ptr %3, i64 40
  %309 = getelementptr inbounds i8, ptr %3, i64 36
  %310 = getelementptr inbounds i8, ptr %3, i64 24
  %311 = getelementptr inbounds i8, ptr %3, i64 20
  %312 = getelementptr inbounds i8, ptr %3, i64 12
  %313 = getelementptr inbounds i8, ptr %3, i64 8
  %314 = getelementptr inbounds i8, ptr %3, i64 4
  %315 = fmul float %.0178.lcssa, 5.000000e-01
  %316 = fpext float %315 to double
  %317 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.112, double noundef %316, double noundef %.0176.lcssa)
  %318 = fpext float %sqrtf to double
  %319 = fpext float %sqrtf191 to double
  %320 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.113, double noundef %318, double noundef %319)
  %321 = fpext float %sqrtf192 to double
  %322 = fpext float %sqrtf193 to double
  %323 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.114, double noundef %321, double noundef %322)
  %324 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.115)
  %325 = load i32, ptr %8, align 16, !tbaa !5
  %326 = getelementptr inbounds i8, ptr %8, i64 32
  %327 = load i32, ptr %326, align 16, !tbaa !5
  %328 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.116, double noundef 1.500000e+00, i32 noundef %325, double noundef 1.500000e+01, double noundef 2.500000e+01, i32 noundef %327)
  %329 = load float, ptr %3, align 16, !tbaa !9
  %330 = fpext float %329 to double
  %331 = load float, ptr %314, align 4, !tbaa !9
  %332 = fpext float %331 to double
  %333 = getelementptr inbounds i8, ptr %8, i64 4
  %334 = load i32, ptr %333, align 4, !tbaa !5
  %335 = load float, ptr %11, align 16, !tbaa !9
  %336 = fpext float %335 to double
  %337 = load float, ptr %309, align 4, !tbaa !9
  %338 = fpext float %337 to double
  %339 = getelementptr inbounds i8, ptr %8, i64 36
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %330, double noundef %332, i32 noundef %334, double noundef %336, double noundef %338, i32 noundef %340)
  %342 = load float, ptr %313, align 8, !tbaa !9
  %343 = fpext float %342 to double
  %344 = getelementptr inbounds i8, ptr %8, i64 8
  %345 = load i32, ptr %344, align 8, !tbaa !5
  %346 = load float, ptr %308, align 8, !tbaa !9
  %347 = fpext float %346 to double
  %348 = getelementptr inbounds i8, ptr %8, i64 40
  %349 = load i32, ptr %348, align 8, !tbaa !5
  %350 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %332, double noundef %343, i32 noundef %345, double noundef %338, double noundef %347, i32 noundef %349)
  %351 = load float, ptr %312, align 4, !tbaa !9
  %352 = fpext float %351 to double
  %353 = getelementptr inbounds i8, ptr %8, i64 12
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = load float, ptr %307, align 4, !tbaa !9
  %356 = fpext float %355 to double
  %357 = getelementptr inbounds i8, ptr %8, i64 44
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %343, double noundef %352, i32 noundef %354, double noundef %347, double noundef %356, i32 noundef %358)
  %360 = load float, ptr %10, align 16, !tbaa !9
  %361 = fpext float %360 to double
  %362 = getelementptr inbounds i8, ptr %8, i64 16
  %363 = load i32, ptr %362, align 16, !tbaa !5
  %364 = load float, ptr %12, align 16, !tbaa !9
  %365 = fpext float %364 to double
  %366 = getelementptr inbounds i8, ptr %8, i64 48
  %367 = load i32, ptr %366, align 16, !tbaa !5
  %368 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %352, double noundef %361, i32 noundef %363, double noundef %356, double noundef %365, i32 noundef %367)
  %369 = load float, ptr %311, align 4, !tbaa !9
  %370 = fpext float %369 to double
  %371 = getelementptr inbounds i8, ptr %8, i64 20
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = load float, ptr %306, align 4, !tbaa !9
  %374 = fpext float %373 to double
  %375 = getelementptr inbounds i8, ptr %8, i64 52
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %361, double noundef %370, i32 noundef %372, double noundef %365, double noundef %374, i32 noundef %376)
  %378 = load float, ptr %310, align 8, !tbaa !9
  %379 = fpext float %378 to double
  %380 = getelementptr inbounds i8, ptr %8, i64 24
  %381 = load i32, ptr %380, align 8, !tbaa !5
  %382 = load float, ptr %305, align 8, !tbaa !9
  %383 = fpext float %382 to double
  %384 = getelementptr inbounds i8, ptr %8, i64 56
  %385 = load i32, ptr %384, align 8, !tbaa !5
  %386 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.117, double noundef %370, double noundef %379, i32 noundef %381, double noundef %374, double noundef %383, i32 noundef %385)
  %387 = getelementptr inbounds i8, ptr %8, i64 28
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %8, i64 60
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.118, double noundef 1.000000e+01, double noundef 1.500000e+01, i32 noundef %388, double noundef 1.000000e+05, i32 noundef %390)
  %392 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.119)
  %393 = fpext float %.3161 to double
  %394 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.120, double noundef %.4166, double noundef %393)
  %395 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.121)
  %396 = load i32, ptr %7, align 16, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %7, i64 36
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 0, i32 noundef 10, i32 noundef %396, i32 noundef 90, i32 noundef 100, i32 noundef %398)
  %400 = getelementptr inbounds i8, ptr %7, i64 4
  %401 = load i32, ptr %400, align 4, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %7, i64 40
  %403 = load i32, ptr %402, align 8, !tbaa !5
  %404 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 10, i32 noundef 20, i32 noundef %401, i32 noundef 100, i32 noundef 110, i32 noundef %403)
  %405 = getelementptr inbounds i8, ptr %7, i64 8
  %406 = load i32, ptr %405, align 8, !tbaa !5
  %407 = getelementptr inbounds i8, ptr %7, i64 44
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 20, i32 noundef 30, i32 noundef %406, i32 noundef 110, i32 noundef 120, i32 noundef %408)
  %410 = getelementptr inbounds i8, ptr %7, i64 12
  %411 = load i32, ptr %410, align 4, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %7, i64 48
  %413 = load i32, ptr %412, align 16, !tbaa !5
  %414 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 30, i32 noundef 40, i32 noundef %411, i32 noundef 120, i32 noundef 130, i32 noundef %413)
  %415 = getelementptr inbounds i8, ptr %7, i64 16
  %416 = load i32, ptr %415, align 16, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %7, i64 52
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 40, i32 noundef 50, i32 noundef %416, i32 noundef 130, i32 noundef 140, i32 noundef %418)
  %420 = getelementptr inbounds i8, ptr %7, i64 20
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %7, i64 56
  %423 = load i32, ptr %422, align 8, !tbaa !5
  %424 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 50, i32 noundef 60, i32 noundef %421, i32 noundef 140, i32 noundef 150, i32 noundef %423)
  %425 = getelementptr inbounds i8, ptr %7, i64 24
  %426 = load i32, ptr %425, align 8, !tbaa !5
  %427 = getelementptr inbounds i8, ptr %7, i64 60
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 60, i32 noundef 70, i32 noundef %426, i32 noundef 150, i32 noundef 160, i32 noundef %428)
  %430 = getelementptr inbounds i8, ptr %7, i64 28
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %7, i64 64
  %433 = load i32, ptr %432, align 16, !tbaa !5
  %434 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 70, i32 noundef 80, i32 noundef %431, i32 noundef 160, i32 noundef 170, i32 noundef %433)
  %435 = getelementptr inbounds i8, ptr %7, i64 32
  %436 = load i32, ptr %435, align 16, !tbaa !5
  %437 = getelementptr inbounds i8, ptr %7, i64 68
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef 80, i32 noundef 90, i32 noundef %436, i32 noundef 170, i32 noundef 180, i32 noundef %438)
  %440 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.123)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #7
  ret void
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @acos(double noundef) local_unnamed_addr #2

declare float @sqrtf(float) local_unnamed_addr

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #6

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 = { mustprogress nofree nounwind willreturn memory(write) "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 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 82644}
!12 = !{!"mesh", !13, i64 0, !13, i64 88, !13, i64 176, !13, i64 264, !13, i64 352, !13, i64 440, !13, i64 528, !13, i64 616, !7, i64 704, !7, i64 33472, !7, i64 66240, !6, i64 82624, !14, i64 82632, !10, i64 82640, !10, i64 82644, !10, i64 82648, !10, i64 82652, !10, i64 82656, !6, i64 82660, !6, i64 82664, !6, i64 82668, !6, i64 82672, !6, i64 82676, !6, i64 82680, !15, i64 82688, !6, i64 82696, !6, i64 82700, !6, i64 82704, !15, i64 82712, !6, i64 82720, !6, i64 82724, !6, i64 82728, !6, i64 82732, !6, i64 82736, !6, i64 82740, !6, i64 82744, !6, i64 82748, !6, i64 82752, !15, i64 82760, !15, i64 82768, !15, i64 82776, !15, i64 82784, !15, i64 82792, !15, i64 82800, !15, i64 82808, !14, i64 82816, !14, i64 82824, !14, i64 82832, !14, i64 82840, !14, i64 82848, !14, i64 82856, !14, i64 82864, !16, i64 82872}
!13 = !{!"memorypool", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !15, i64 64, !15, i64 72, !6, i64 80, !6, i64 84}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"otri", !14, i64 0, !6, i64 8}
!17 = !{!12, !10, i64 82640}
!18 = !{!12, !10, i64 82652}
!19 = !{!12, !10, i64 82648}
!20 = !{!14, !14, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass