; LLVM IR from InsightSoftwareConsortium/ITK :: Modules/Numerics/FEM/src (dsrc2c)

; 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.anon = type { i64, i64, i64, i64, i64, i64 }
%struct.anon.0 = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.anon.1 = type { i64, i64, i64, i64, i64 }

@itcom1_ = external hidden global %struct.anon, align 8
@c__1 = external hidden global i64, align 8
@itcom3_ = external hidden global %struct.anon.0, align 8
@c__0 = external hidden global i64, align 8
@c_b21 = external hidden global double, align 8
@itcom2_ = external hidden global %struct.anon.1, align 8
@c__2 = external hidden global i64, align 8
@rscg_.n3 = external hidden global i64, align 8
@rscg_.nb = external hidden global i64, align 8
@rscg_.nr = external hidden global i64, align 8
@rscg_.ib1 = external hidden global i64, align 8
@rscg_.ib2 = external hidden global i64, align 8
@rscg_.ib3 = external hidden global i64, align 8
@rscg_.ib4 = external hidden global i64, align 8
@rscg_.ib5 = external hidden global i64, align 8
@rscg_.jb3 = external hidden global i64, align 8
@rscg_.ier = external hidden global i64, align 8
@rscg_.tol = external hidden global double, align 8
@rscg_.temp = external hidden global double, align 8
@rscg_.loop = external hidden global i64, align 8
@rscg_.time1 = external hidden global double, align 8
@rscg_.time2 = external hidden global double, align 8
@rscg_.timi1 = external hidden global float, align 4
@rscg_.timj1 = external hidden global float, align 4
@rscg_.timi2 = external hidden global float, align 4
@rscg_.timj2 = external hidden global float, align 4
@rscg_.idgts = external hidden global i64, align 8
@rscg_.digit1 = external hidden global double, align 8
@rscg_.digit2 = external hidden global double, align 8
@rscg_.itmax1 = external hidden global i64, align 8
@rscg_.ierper = external hidden global i64, align 8
@c__6 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
declare dso_local double @dsrc_timer_(ptr noundef) #0

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @rscg_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11) #0 {
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  store ptr %0, ptr %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %3, ptr %17, align 8, !tbaa !5
  store ptr %4, ptr %18, align 8, !tbaa !5
  store ptr %5, ptr %19, align 8, !tbaa !5
  store ptr %6, ptr %20, align 8, !tbaa !5
  store ptr %7, ptr %21, align 8, !tbaa !5
  store ptr %8, ptr %22, align 8, !tbaa !5
  store ptr %9, ptr %23, align 8, !tbaa !5
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  %26 = load ptr, ptr %23, align 8, !tbaa !5
  %27 = getelementptr inbounds i64, ptr %26, i64 1
  %28 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %28, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), align 8, !tbaa !11
  %29 = load ptr, ptr %23, align 8, !tbaa !5
  %30 = getelementptr inbounds i64, ptr %29, i64 3
  %31 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %31, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), align 8, !tbaa !13
  store i64 0, ptr @rscg_.ier, align 8, !tbaa !9
  %32 = load ptr, ptr %23, align 8, !tbaa !5
  %33 = getelementptr inbounds i64, ptr %32, i64 0
  %34 = load i64, ptr %33, align 8, !tbaa !9
  %35 = icmp sle i64 %34, 0
  br i1 %35, label %36, label %37

36:                                               ; preds = %12
  store i32 0, ptr %13, align 4
  br label %584

37:                                               ; preds = %12
  %38 = load ptr, ptr %23, align 8, !tbaa !5
  %39 = getelementptr inbounds i64, ptr %38, i64 10
  %40 = load i64, ptr %39, align 8, !tbaa !9
  %41 = icmp eq i64 %40, 0
  br i1 %41, label %42, label %45

42:                                               ; preds = %37
  %43 = call double @dsrc_timer_(ptr noundef null)
  %44 = fptrunc double %43 to float
  store float %44, ptr @rscg_.timj1, align 4, !tbaa !14
  br label %45

45:                                               ; preds = %42, %37
  %46 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), align 8, !tbaa !11
  %47 = icmp slt i64 %46, 3
  br i1 %47, label %48, label %52

48:                                               ; preds = %45
  %49 = load ptr, ptr %23, align 8, !tbaa !5
  %50 = load ptr, ptr %24, align 8, !tbaa !5
  %51 = call i32 @echout_(ptr noundef %49, ptr noundef %50, ptr noundef @c__6)
  br label %61

52:                                               ; preds = %45
  %53 = load ptr, ptr %14, align 8, !tbaa !5
  %54 = load ptr, ptr %15, align 8, !tbaa !5
  %55 = load ptr, ptr %16, align 8, !tbaa !5
  %56 = load ptr, ptr %17, align 8, !tbaa !5
  %57 = load ptr, ptr %18, align 8, !tbaa !5
  %58 = load ptr, ptr %23, align 8, !tbaa !5
  %59 = load ptr, ptr %24, align 8, !tbaa !5
  %60 = call i32 @echall_(ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %59, ptr noundef @c__1)
  br label %61

61:                                               ; preds = %52, %48
  %62 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 16), align 8, !tbaa !16
  %63 = fmul double %62, 5.000000e+02
  store double %63, ptr @rscg_.temp, align 8, !tbaa !19
  %64 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 19), align 8, !tbaa !20
  %65 = load double, ptr @rscg_.temp, align 8, !tbaa !19
  %66 = fcmp olt double %64, %65
  br i1 %66, label %67, label %69

67:                                               ; preds = %61
  %68 = load double, ptr @rscg_.temp, align 8, !tbaa !19
  store double %68, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 19), align 8, !tbaa !20
  br label %69

69:                                               ; preds = %67, %61
  %70 = load ptr, ptr %24, align 8, !tbaa !5
  %71 = getelementptr inbounds double, ptr %70, i64 8
  %72 = load double, ptr %71, align 8, !tbaa !19
  store double %72, ptr @rscg_.time1, align 8, !tbaa !19
  %73 = load ptr, ptr %24, align 8, !tbaa !5
  %74 = getelementptr inbounds double, ptr %73, i64 9
  %75 = load double, ptr %74, align 8, !tbaa !19
  store double %75, ptr @rscg_.time2, align 8, !tbaa !19
  %76 = load ptr, ptr %24, align 8, !tbaa !5
  %77 = getelementptr inbounds double, ptr %76, i64 10
  %78 = load double, ptr %77, align 8, !tbaa !19
  store double %78, ptr @rscg_.digit1, align 8, !tbaa !19
  %79 = load ptr, ptr %24, align 8, !tbaa !5
  %80 = getelementptr inbounds double, ptr %79, i64 11
  %81 = load double, ptr %80, align 8, !tbaa !19
  store double %81, ptr @rscg_.digit2, align 8, !tbaa !19
  %82 = load ptr, ptr %14, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  %84 = icmp sle i64 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %69
  store i64 61, ptr @rscg_.ier, align 8, !tbaa !9
  br label %569

86:                                               ; preds = %69
  %87 = load ptr, ptr %23, align 8, !tbaa !5
  %88 = getelementptr inbounds i64, ptr %87, i64 9
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = icmp ne i64 %89, 0
  br i1 %90, label %91, label %113

91:                                               ; preds = %86
  %92 = load ptr, ptr %24, align 8, !tbaa !5
  %93 = getelementptr inbounds double, ptr %92, i64 7
  %94 = load double, ptr %93, align 8, !tbaa !19
  store double %94, ptr @rscg_.tol, align 8, !tbaa !19
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = load ptr, ptr %20, align 8, !tbaa !5
  %97 = call i32 @ivfill_(ptr noundef %95, ptr noundef %96, ptr noundef @c__0)
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = load ptr, ptr %22, align 8, !tbaa !5
  %100 = call i32 @vfill_(ptr noundef %98, ptr noundef %99, ptr noundef @c_b21)
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = load ptr, ptr %15, align 8, !tbaa !5
  %103 = load ptr, ptr %16, align 8, !tbaa !5
  %104 = load ptr, ptr %17, align 8, !tbaa !5
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = load ptr, ptr %20, align 8, !tbaa !5
  %107 = load ptr, ptr %22, align 8, !tbaa !5
  %108 = call i32 @sbelm_(ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %104, ptr noundef %105, ptr noundef %106, ptr noundef %107, ptr noundef @rscg_.tol, ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), ptr noundef @rscg_.ier)
  %109 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %110 = icmp ne i64 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %91
  br label %569

112:                                              ; preds = %91
  br label %113

113:                                              ; preds = %112, %86
  store i64 0, ptr @rscg_.ib1, align 8, !tbaa !9
  %114 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = add nsw i64 %114, %116
  store i64 %117, ptr @rscg_.ib2, align 8, !tbaa !9
  %118 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = add nsw i64 %118, %120
  store i64 %121, ptr @rscg_.jb3, align 8, !tbaa !9
  %122 = load ptr, ptr %23, align 8, !tbaa !5
  %123 = getelementptr inbounds i64, ptr %122, i64 8
  %124 = load i64, ptr %123, align 8, !tbaa !9
  store i64 %124, ptr @rscg_.nb, align 8, !tbaa !9
  %125 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %127, label %145

127:                                              ; preds = %113
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = mul nsw i64 %129, 3
  store i64 %130, ptr @rscg_.n3, align 8, !tbaa !9
  %131 = load ptr, ptr %20, align 8, !tbaa !5
  %132 = call i32 @ivfill_(ptr noundef @rscg_.n3, ptr noundef %131, ptr noundef @c__0)
  %133 = load ptr, ptr %14, align 8, !tbaa !5
  %134 = load ptr, ptr %15, align 8, !tbaa !5
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = load ptr, ptr %20, align 8, !tbaa !5
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %139 = getelementptr inbounds i64, ptr %137, i64 %138
  %140 = call i32 @prbndx_(ptr noundef %133, ptr noundef @rscg_.nb, ptr noundef %134, ptr noundef %135, ptr noundef %136, ptr noundef %139, ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), ptr noundef @rscg_.ier)
  %141 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %127
  br label %569

144:                                              ; preds = %127
  br label %145

145:                                              ; preds = %144, %113
  %146 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %147 = icmp slt i64 %146, 0
  br i1 %147, label %153, label %148

148:                                              ; preds = %145
  %149 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = icmp sgt i64 %149, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %148, %145
  store i64 64, ptr @rscg_.ier, align 8, !tbaa !9
  br label %569

154:                                              ; preds = %148
  %155 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %156 = icmp eq i64 %155, 0
  br i1 %156, label %162, label %157

157:                                              ; preds = %154
  %158 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp eq i64 %158, %160
  br i1 %161, label %162, label %166

162:                                              ; preds = %157, %154
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = sdiv i64 %164, 2
  store i64 %165, ptr @rscg_.nb, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %162, %157
  %167 = load ptr, ptr %23, align 8, !tbaa !5
  %168 = getelementptr inbounds i64, ptr %167, i64 8
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = icmp slt i64 %169, 0
  br i1 %170, label %171, label %193

171:                                              ; preds = %166
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  %173 = load ptr, ptr %15, align 8, !tbaa !5
  %174 = load ptr, ptr %16, align 8, !tbaa !5
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i64, ptr @rscg_.jb3, align 8, !tbaa !9
  %179 = getelementptr inbounds i64, ptr %177, i64 %178
  %180 = call i32 @permat_(ptr noundef %172, ptr noundef %173, ptr noundef %174, ptr noundef %175, ptr noundef %176, ptr noundef %179, ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), ptr noundef @rscg_.ier)
  %181 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %183, label %184

183:                                              ; preds = %171
  br label %569

184:                                              ; preds = %171
  %185 = load ptr, ptr %14, align 8, !tbaa !5
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  %187 = load ptr, ptr %20, align 8, !tbaa !5
  %188 = call i32 @pervec_(ptr noundef %185, ptr noundef %186, ptr noundef %187)
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %20, align 8, !tbaa !5
  %192 = call i32 @pervec_(ptr noundef %189, ptr noundef %190, ptr noundef %191)
  br label %193

193:                                              ; preds = %184, %166
  %194 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %195 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %196 = add nsw i64 %194, %195
  store i64 %196, ptr @rscg_.ib3, align 8, !tbaa !9
  %197 = load i64, ptr @rscg_.ib3, align 8, !tbaa !9
  %198 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %199 = add nsw i64 %197, %198
  store i64 %199, ptr @rscg_.ib4, align 8, !tbaa !9
  %200 = load i64, ptr @rscg_.ib4, align 8, !tbaa !9
  %201 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %202 = add nsw i64 %200, %201
  store i64 %202, ptr @rscg_.ib5, align 8, !tbaa !9
  %203 = load ptr, ptr %14, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %206 = sub nsw i64 %204, %205
  store i64 %206, ptr @rscg_.nr, align 8, !tbaa !9
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %210 = mul nsw i64 %209, 3
  %211 = add nsw i64 %208, %210
  %212 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %213 = shl i64 %212, 1
  %214 = add nsw i64 %211, %213
  %215 = load ptr, ptr %23, align 8, !tbaa !5
  %216 = getelementptr inbounds i64, ptr %215, i64 7
  store i64 %214, ptr %216, align 8, !tbaa !9
  %217 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), align 8, !tbaa !22
  %218 = icmp ne i64 %217, 0
  br i1 %218, label %219, label %226

219:                                              ; preds = %193
  %220 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %221 = shl i64 %220, 1
  %222 = load ptr, ptr %23, align 8, !tbaa !5
  %223 = getelementptr inbounds i64, ptr %222, i64 7
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = add nsw i64 %224, %221
  store i64 %225, ptr %223, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %219, %193
  %227 = load ptr, ptr %21, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = load ptr, ptr %23, align 8, !tbaa !5
  %230 = getelementptr inbounds i64, ptr %229, i64 7
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp slt i64 %228, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %226
  store i64 62, ptr @rscg_.ier, align 8, !tbaa !9
  br label %569

234:                                              ; preds = %226
  %235 = load ptr, ptr %23, align 8, !tbaa !5
  %236 = getelementptr inbounds i64, ptr %235, i64 7
  %237 = load ptr, ptr %22, align 8, !tbaa !5
  %238 = call i32 @vfill_(ptr noundef %236, ptr noundef %237, ptr noundef @c_b21)
  %239 = load ptr, ptr %14, align 8, !tbaa !5
  %240 = load ptr, ptr %15, align 8, !tbaa !5
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  %242 = load ptr, ptr %17, align 8, !tbaa !5
  %243 = load ptr, ptr %18, align 8, !tbaa !5
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  %246 = call i32 @scal_(ptr noundef %239, ptr noundef %240, ptr noundef %241, ptr noundef %242, ptr noundef %243, ptr noundef %244, ptr noundef %245, ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), ptr noundef @rscg_.ier)
  %247 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %248 = icmp ne i64 %247, 0
  br i1 %248, label %249, label %250

249:                                              ; preds = %234
  br label %569

250:                                              ; preds = %234
  %251 = load ptr, ptr %23, align 8, !tbaa !5
  %252 = getelementptr inbounds i64, ptr %251, i64 10
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp eq i64 %253, 0
  br i1 %254, label %255, label %258

255:                                              ; preds = %250
  %256 = call double @dsrc_timer_(ptr noundef null)
  %257 = fptrunc double %256 to float
  store float %257, ptr @rscg_.timi1, align 4, !tbaa !14
  br label %258

258:                                              ; preds = %255, %250
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp sle i64 %260, 1
  br i1 %261, label %262, label %268

262:                                              ; preds = %258
  %263 = load ptr, ptr %18, align 8, !tbaa !5
  %264 = getelementptr inbounds double, ptr %263, i64 0
  %265 = load double, ptr %264, align 8, !tbaa !19
  %266 = load ptr, ptr %19, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %266, i64 0
  store double %265, ptr %267, align 8, !tbaa !19
  br label %398

268:                                              ; preds = %258
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load ptr, ptr %22, align 8, !tbaa !5
  %271 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %272 = getelementptr inbounds double, ptr %270, i64 %271
  %273 = call i32 @itpackdcopy_(ptr noundef @rscg_.nr, ptr noundef %269, ptr noundef @c__1, ptr noundef %272, ptr noundef @c__1)
  %274 = load ptr, ptr %15, align 8, !tbaa !5
  %275 = load ptr, ptr %16, align 8, !tbaa !5
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = load ptr, ptr %19, align 8, !tbaa !5
  %278 = load i64, ptr @rscg_.nr, align 8, !tbaa !9
  %279 = getelementptr inbounds double, ptr %277, i64 %278
  %280 = load ptr, ptr %22, align 8, !tbaa !5
  %281 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %282 = getelementptr inbounds double, ptr %280, i64 %281
  %283 = call i32 @prsred_(ptr noundef @rscg_.nb, ptr noundef @rscg_.nr, ptr noundef %274, ptr noundef %275, ptr noundef %276, ptr noundef %279, ptr noundef %282)
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = load i64, ptr @rscg_.nr, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %284, i64 %285
  %287 = load ptr, ptr %22, align 8, !tbaa !5
  %288 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %289 = getelementptr inbounds double, ptr %287, i64 %288
  %290 = call i32 @itpackdcopy_(ptr noundef @rscg_.nb, ptr noundef %286, ptr noundef @c__1, ptr noundef %289, ptr noundef @c__1)
  %291 = load ptr, ptr %15, align 8, !tbaa !5
  %292 = load ptr, ptr %16, align 8, !tbaa !5
  %293 = load ptr, ptr %17, align 8, !tbaa !5
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %299 = getelementptr inbounds double, ptr %297, i64 %298
  %300 = call i32 @prsblk_(ptr noundef @rscg_.nb, ptr noundef @rscg_.nr, ptr noundef %291, ptr noundef %292, ptr noundef %293, ptr noundef %296, ptr noundef %299)
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %301, i64 %302
  %304 = load ptr, ptr %19, align 8, !tbaa !5
  %305 = load i64, ptr @rscg_.nr, align 8, !tbaa !9
  %306 = getelementptr inbounds double, ptr %304, i64 %305
  %307 = call i32 @vevmw_(ptr noundef @rscg_.nb, ptr noundef %303, ptr noundef %306)
  %308 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %309 = add nsw i64 %308, 1
  store i64 %309, ptr @rscg_.itmax1, align 8, !tbaa !9
  store i64 1, ptr @rscg_.loop, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %373, %268
  %311 = load i64, ptr @rscg_.loop, align 8, !tbaa !9
  %312 = load i64, ptr @rscg_.itmax1, align 8, !tbaa !9
  %313 = icmp sle i64 %311, %312
  br i1 %313, label %314, label %376

314:                                              ; preds = %310
  %315 = load i64, ptr @rscg_.loop, align 8, !tbaa !9
  %316 = sub nsw i64 %315, 1
  store i64 %316, ptr @itcom1_, align 8, !tbaa !23
  %317 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %318 = srem i64 %317, 2
  %319 = icmp eq i64 %318, 1
  br i1 %319, label %320, label %321

320:                                              ; preds = %314
  br label %347

321:                                              ; preds = %314
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = load ptr, ptr %15, align 8, !tbaa !5
  %324 = load ptr, ptr %16, align 8, !tbaa !5
  %325 = load ptr, ptr %17, align 8, !tbaa !5
  %326 = load ptr, ptr %19, align 8, !tbaa !5
  %327 = load ptr, ptr %22, align 8, !tbaa !5
  %328 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %329 = getelementptr inbounds double, ptr %327, i64 %328
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %330, i64 %331
  %333 = load ptr, ptr %22, align 8, !tbaa !5
  %334 = load i64, ptr @rscg_.ib3, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %333, i64 %334
  %336 = load ptr, ptr %22, align 8, !tbaa !5
  %337 = load i64, ptr @rscg_.ib4, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %336, i64 %337
  %339 = load ptr, ptr %22, align 8, !tbaa !5
  %340 = load i64, ptr @rscg_.ib5, align 8, !tbaa !9
  %341 = getelementptr inbounds double, ptr %339, i64 %340
  %342 = call i32 @itrscg_(ptr noundef %322, ptr noundef @rscg_.nb, ptr noundef %323, ptr noundef %324, ptr noundef %325, ptr noundef %326, ptr noundef %329, ptr noundef %332, ptr noundef %335, ptr noundef %338, ptr noundef %341)
  %343 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !24
  %344 = icmp ne i64 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %321
  br label %398

346:                                              ; preds = %321
  br label %373

347:                                              ; preds = %320
  %348 = load ptr, ptr %14, align 8, !tbaa !5
  %349 = load ptr, ptr %15, align 8, !tbaa !5
  %350 = load ptr, ptr %16, align 8, !tbaa !5
  %351 = load ptr, ptr %17, align 8, !tbaa !5
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %352, i64 %353
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr @rscg_.ib3, align 8, !tbaa !9
  %358 = getelementptr inbounds double, ptr %356, i64 %357
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  %360 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %361 = getelementptr inbounds double, ptr %359, i64 %360
  %362 = load ptr, ptr %22, align 8, !tbaa !5
  %363 = load i64, ptr @rscg_.ib4, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %362, i64 %363
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = load i64, ptr @rscg_.ib5, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %365, i64 %366
  %368 = call i32 @itrscg_(ptr noundef %348, ptr noundef @rscg_.nb, ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %354, ptr noundef %355, ptr noundef %358, ptr noundef %361, ptr noundef %364, ptr noundef %367)
  %369 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !24
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %372

371:                                              ; preds = %347
  br label %398

372:                                              ; preds = %347
  br label %373

373:                                              ; preds = %372, %346
  %374 = load i64, ptr @rscg_.loop, align 8, !tbaa !9
  %375 = add nsw i64 %374, 1
  store i64 %375, ptr @rscg_.loop, align 8, !tbaa !9
  br label %310, !llvm.loop !26

376:                                              ; preds = %310
  %377 = load ptr, ptr %23, align 8, !tbaa !5
  %378 = getelementptr inbounds i64, ptr %377, i64 10
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp eq i64 %379, 0
  br i1 %380, label %381, label %388

381:                                              ; preds = %376
  %382 = call double @dsrc_timer_(ptr noundef null)
  %383 = fptrunc double %382 to float
  store float %383, ptr @rscg_.timi2, align 4, !tbaa !14
  %384 = load float, ptr @rscg_.timi2, align 4, !tbaa !14
  %385 = load float, ptr @rscg_.timi1, align 4, !tbaa !14
  %386 = fsub float %384, %385
  %387 = fpext float %386 to double
  store double %387, ptr @rscg_.time1, align 8, !tbaa !19
  br label %388

388:                                              ; preds = %381, %376
  store i64 63, ptr @rscg_.ier, align 8, !tbaa !9
  %389 = load ptr, ptr %23, align 8, !tbaa !5
  %390 = getelementptr inbounds i64, ptr %389, i64 2
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = icmp eq i64 %391, 0
  br i1 %392, label %393, label %397

393:                                              ; preds = %388
  %394 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 17), align 8, !tbaa !28
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 0
  store double %394, ptr %396, align 8, !tbaa !19
  br label %397

397:                                              ; preds = %393, %388
  br label %411

398:                                              ; preds = %371, %345, %262
  %399 = load ptr, ptr %23, align 8, !tbaa !5
  %400 = getelementptr inbounds i64, ptr %399, i64 10
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = icmp eq i64 %401, 0
  br i1 %402, label %403, label %410

403:                                              ; preds = %398
  %404 = call double @dsrc_timer_(ptr noundef null)
  %405 = fptrunc double %404 to float
  store float %405, ptr @rscg_.timi2, align 4, !tbaa !14
  %406 = load float, ptr @rscg_.timi2, align 4, !tbaa !14
  %407 = load float, ptr @rscg_.timi1, align 4, !tbaa !14
  %408 = fsub float %406, %407
  %409 = fpext float %408 to double
  store double %409, ptr @rscg_.time1, align 8, !tbaa !19
  br label %410

410:                                              ; preds = %403, %398
  br label %411

411:                                              ; preds = %410, %397
  %412 = load ptr, ptr %14, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 1
  br i1 %414, label %415, label %438

415:                                              ; preds = %411
  %416 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %417 = srem i64 %416, 2
  %418 = icmp eq i64 %417, 1
  br i1 %418, label %419, label %426

419:                                              ; preds = %415
  %420 = load ptr, ptr %14, align 8, !tbaa !5
  %421 = load ptr, ptr %22, align 8, !tbaa !5
  %422 = load i64, ptr @rscg_.ib1, align 8, !tbaa !9
  %423 = getelementptr inbounds double, ptr %421, i64 %422
  %424 = load ptr, ptr %19, align 8, !tbaa !5
  %425 = call i32 @itpackdcopy_(ptr noundef %420, ptr noundef %423, ptr noundef @c__1, ptr noundef %424, ptr noundef @c__1)
  br label %426

426:                                              ; preds = %419, %415
  %427 = load ptr, ptr %18, align 8, !tbaa !5
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = call i32 @itpackdcopy_(ptr noundef @rscg_.nr, ptr noundef %427, ptr noundef @c__1, ptr noundef %428, ptr noundef @c__1)
  %430 = load ptr, ptr %15, align 8, !tbaa !5
  %431 = load ptr, ptr %16, align 8, !tbaa !5
  %432 = load ptr, ptr %17, align 8, !tbaa !5
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = load i64, ptr @rscg_.nr, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load ptr, ptr %19, align 8, !tbaa !5
  %437 = call i32 @prsred_(ptr noundef @rscg_.nb, ptr noundef @rscg_.nr, ptr noundef %430, ptr noundef %431, ptr noundef %432, ptr noundef %435, ptr noundef %436)
  br label %438

438:                                              ; preds = %426, %411
  %439 = load ptr, ptr %14, align 8, !tbaa !5
  %440 = load ptr, ptr %15, align 8, !tbaa !5
  %441 = load ptr, ptr %16, align 8, !tbaa !5
  %442 = load ptr, ptr %17, align 8, !tbaa !5
  %443 = load ptr, ptr %18, align 8, !tbaa !5
  %444 = load ptr, ptr %19, align 8, !tbaa !5
  %445 = load ptr, ptr %22, align 8, !tbaa !5
  %446 = call i32 @unscal_(ptr noundef %439, ptr noundef %440, ptr noundef %441, ptr noundef %442, ptr noundef %443, ptr noundef %444, ptr noundef %445)
  %447 = load ptr, ptr %23, align 8, !tbaa !5
  %448 = getelementptr inbounds i64, ptr %447, i64 8
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = icmp sge i64 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %438
  br label %485

452:                                              ; preds = %438
  %453 = load ptr, ptr %14, align 8, !tbaa !5
  %454 = load ptr, ptr %15, align 8, !tbaa !5
  %455 = load ptr, ptr %16, align 8, !tbaa !5
  %456 = load ptr, ptr %17, align 8, !tbaa !5
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %459 = getelementptr inbounds i64, ptr %457, i64 %458
  %460 = load ptr, ptr %20, align 8, !tbaa !5
  %461 = load i64, ptr @rscg_.jb3, align 8, !tbaa !9
  %462 = getelementptr inbounds i64, ptr %460, i64 %461
  %463 = call i32 @permat_(ptr noundef %453, ptr noundef %454, ptr noundef %455, ptr noundef %456, ptr noundef %459, ptr noundef %462, ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), ptr noundef getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 5), ptr noundef @rscg_.ierper)
  %464 = load i64, ptr @rscg_.ierper, align 8, !tbaa !9
  %465 = icmp ne i64 %464, 0
  br i1 %465, label %466, label %472

466:                                              ; preds = %452
  %467 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %468 = icmp eq i64 %467, 0
  br i1 %468, label %469, label %471

469:                                              ; preds = %466
  %470 = load i64, ptr @rscg_.ierper, align 8, !tbaa !9
  store i64 %470, ptr @rscg_.ier, align 8, !tbaa !9
  br label %471

471:                                              ; preds = %469, %466
  br label %569

472:                                              ; preds = %452
  %473 = load ptr, ptr %14, align 8, !tbaa !5
  %474 = load ptr, ptr %18, align 8, !tbaa !5
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %477 = getelementptr inbounds i64, ptr %475, i64 %476
  %478 = call i32 @pervec_(ptr noundef %473, ptr noundef %474, ptr noundef %477)
  %479 = load ptr, ptr %14, align 8, !tbaa !5
  %480 = load ptr, ptr %19, align 8, !tbaa !5
  %481 = load ptr, ptr %20, align 8, !tbaa !5
  %482 = load i64, ptr @rscg_.ib2, align 8, !tbaa !9
  %483 = getelementptr inbounds i64, ptr %481, i64 %482
  %484 = call i32 @pervec_(ptr noundef %479, ptr noundef %480, ptr noundef %483)
  br label %485

485:                                              ; preds = %472, %451
  %486 = load ptr, ptr %23, align 8, !tbaa !5
  %487 = getelementptr inbounds i64, ptr %486, i64 11
  %488 = load i64, ptr %487, align 8, !tbaa !9
  store i64 %488, ptr @rscg_.idgts, align 8, !tbaa !9
  %489 = load i64, ptr @rscg_.idgts, align 8, !tbaa !9
  %490 = icmp sge i64 %489, 0
  br i1 %490, label %491, label %506

491:                                              ; preds = %485
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = getelementptr inbounds i64, ptr %492, i64 1
  %494 = load i64, ptr %493, align 8, !tbaa !9
  %495 = icmp sle i64 %494, 0
  br i1 %495, label %496, label %497

496:                                              ; preds = %491
  store i64 0, ptr @rscg_.idgts, align 8, !tbaa !9
  br label %497

497:                                              ; preds = %496, %491
  %498 = load ptr, ptr %14, align 8, !tbaa !5
  %499 = load ptr, ptr %15, align 8, !tbaa !5
  %500 = load ptr, ptr %16, align 8, !tbaa !5
  %501 = load ptr, ptr %17, align 8, !tbaa !5
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = load ptr, ptr %19, align 8, !tbaa !5
  %504 = load ptr, ptr %22, align 8, !tbaa !5
  %505 = call i32 @perror_(ptr noundef %498, ptr noundef %499, ptr noundef %500, ptr noundef %501, ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef @rscg_.digit1, ptr noundef @rscg_.digit2, ptr noundef @rscg_.idgts)
  br label %506

506:                                              ; preds = %497, %485
  %507 = load ptr, ptr %23, align 8, !tbaa !5
  %508 = getelementptr inbounds i64, ptr %507, i64 10
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = icmp eq i64 %509, 0
  br i1 %510, label %511, label %518

511:                                              ; preds = %506
  %512 = call double @dsrc_timer_(ptr noundef null)
  %513 = fptrunc double %512 to float
  store float %513, ptr @rscg_.timj2, align 4, !tbaa !14
  %514 = load float, ptr @rscg_.timj2, align 4, !tbaa !14
  %515 = load float, ptr @rscg_.timj1, align 4, !tbaa !14
  %516 = fsub float %514, %515
  %517 = fpext float %516 to double
  store double %517, ptr @rscg_.time2, align 8, !tbaa !19
  br label %518

518:                                              ; preds = %511, %506
  %519 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %520 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %521 = sub nsw i64 %519, %520
  %522 = shl i64 %521, 1
  %523 = load ptr, ptr %23, align 8, !tbaa !5
  %524 = getelementptr inbounds i64, ptr %523, i64 7
  %525 = load i64, ptr %524, align 8, !tbaa !9
  %526 = sub nsw i64 %525, %522
  store i64 %526, ptr %524, align 8, !tbaa !9
  %527 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), align 8, !tbaa !22
  %528 = icmp ne i64 %527, 0
  br i1 %528, label %529, label %538

529:                                              ; preds = %518
  %530 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %531 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %532 = sub nsw i64 %530, %531
  %533 = shl i64 %532, 1
  %534 = load ptr, ptr %23, align 8, !tbaa !5
  %535 = getelementptr inbounds i64, ptr %534, i64 7
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = sub nsw i64 %536, %533
  store i64 %537, ptr %535, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %529, %518
  %539 = load ptr, ptr %23, align 8, !tbaa !5
  %540 = getelementptr inbounds i64, ptr %539, i64 2
  %541 = load i64, ptr %540, align 8, !tbaa !9
  %542 = icmp eq i64 %541, 0
  br i1 %542, label %543, label %568

543:                                              ; preds = %538
  %544 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %545 = load ptr, ptr %23, align 8, !tbaa !5
  %546 = getelementptr inbounds i64, ptr %545, i64 0
  store i64 %544, ptr %546, align 8, !tbaa !9
  %547 = load i64, ptr @rscg_.nb, align 8, !tbaa !9
  %548 = load ptr, ptr %23, align 8, !tbaa !5
  %549 = getelementptr inbounds i64, ptr %548, i64 8
  store i64 %547, ptr %549, align 8, !tbaa !9
  %550 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 2), align 8, !tbaa !29
  %551 = load ptr, ptr %24, align 8, !tbaa !5
  %552 = getelementptr inbounds double, ptr %551, i64 1
  store double %550, ptr %552, align 8, !tbaa !19
  %553 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 13), align 8, !tbaa !30
  %554 = load ptr, ptr %24, align 8, !tbaa !5
  %555 = getelementptr inbounds double, ptr %554, i64 2
  store double %553, ptr %555, align 8, !tbaa !19
  %556 = load double, ptr @rscg_.time1, align 8, !tbaa !19
  %557 = load ptr, ptr %24, align 8, !tbaa !5
  %558 = getelementptr inbounds double, ptr %557, i64 8
  store double %556, ptr %558, align 8, !tbaa !19
  %559 = load double, ptr @rscg_.time2, align 8, !tbaa !19
  %560 = load ptr, ptr %24, align 8, !tbaa !5
  %561 = getelementptr inbounds double, ptr %560, i64 9
  store double %559, ptr %561, align 8, !tbaa !19
  %562 = load double, ptr @rscg_.digit1, align 8, !tbaa !19
  %563 = load ptr, ptr %24, align 8, !tbaa !5
  %564 = getelementptr inbounds double, ptr %563, i64 10
  store double %562, ptr %564, align 8, !tbaa !19
  %565 = load double, ptr @rscg_.digit2, align 8, !tbaa !19
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  %567 = getelementptr inbounds double, ptr %566, i64 11
  store double %565, ptr %567, align 8, !tbaa !19
  br label %568

568:                                              ; preds = %543, %538
  br label %569

569:                                              ; preds = %568, %471, %249, %233, %183, %153, %143, %111, %85
  %570 = load i64, ptr @rscg_.ier, align 8, !tbaa !9
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 %570, ptr %571, align 8, !tbaa !9
  %572 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), align 8, !tbaa !11
  %573 = icmp sge i64 %572, 3
  br i1 %573, label %574, label %583

574:                                              ; preds = %569
  %575 = load ptr, ptr %14, align 8, !tbaa !5
  %576 = load ptr, ptr %15, align 8, !tbaa !5
  %577 = load ptr, ptr %16, align 8, !tbaa !5
  %578 = load ptr, ptr %17, align 8, !tbaa !5
  %579 = load ptr, ptr %18, align 8, !tbaa !5
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = call i32 @echall_(ptr noundef %575, ptr noundef %576, ptr noundef %577, ptr noundef %578, ptr noundef %579, ptr noundef %580, ptr noundef %581, ptr noundef @c__2)
  br label %583

583:                                              ; preds = %574, %569
  store i32 0, ptr %13, align 4
  br label %584

584:                                              ; preds = %583, %36
  %585 = load i32, ptr %13, align 4
  ret i32 %585
}

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

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

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

attributes #0 = { 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" }

!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 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 32}
!12 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!13 = !{!12, !10, i64 40}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!17, !18, i64 128}
!17 = !{!"", !18, i64 0, !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !18, i64 40, !18, i64 48, !18, i64 56, !18, i64 64, !18, i64 72, !18, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !18, i64 112, !18, i64 120, !18, i64 128, !18, i64 136, !18, i64 144, !18, i64 152}
!18 = !{!"double", !7, i64 0}
!19 = !{!18, !18, i64 0}
!20 = !{!17, !18, i64 152}
!21 = !{!12, !10, i64 24}
!22 = !{!12, !10, i64 16}
!23 = !{!12, !10, i64 0}
!24 = !{!25, !10, i64 24}
!25 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!17, !18, i64 136}
!29 = !{!17, !18, i64 16}
!30 = !{!17, !18, i64 104}


; 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.anon = type { i64, i64, i64, i64, i64, i64 }
%struct.anon.0 = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.anon.1 = type { i64, i64, i64, i64, i64 }

@itcom1_ = external hidden global %struct.anon, align 8
@c__1 = external hidden global i64, align 8
@itcom3_ = external hidden local_unnamed_addr global %struct.anon.0, align 8
@c__0 = external hidden global i64, align 8
@c_b21 = external hidden global double, align 8
@itcom2_ = external hidden local_unnamed_addr global %struct.anon.1, align 8
@c__2 = external hidden global i64, align 8
@rscg_.n3 = external hidden global i64, align 8
@rscg_.nb = external hidden global i64, align 8
@rscg_.nr = external hidden global i64, align 8
@rscg_.ib1 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ib2 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ib3 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ib4 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ib5 = external hidden local_unnamed_addr global i64, align 8
@rscg_.jb3 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ier = external hidden global i64, align 8
@rscg_.tol = external hidden global double, align 8
@rscg_.temp = external hidden local_unnamed_addr global double, align 8
@rscg_.loop = external hidden local_unnamed_addr global i64, align 8
@rscg_.time1 = external hidden local_unnamed_addr global double, align 8
@rscg_.time2 = external hidden local_unnamed_addr global double, align 8
@rscg_.timi1 = external hidden local_unnamed_addr global float, align 4
@rscg_.timj1 = external hidden local_unnamed_addr global float, align 4
@rscg_.timi2 = external hidden local_unnamed_addr global float, align 4
@rscg_.timj2 = external hidden local_unnamed_addr global float, align 4
@rscg_.idgts = external hidden global i64, align 8
@rscg_.digit1 = external hidden global double, align 8
@rscg_.digit2 = external hidden global double, align 8
@rscg_.itmax1 = external hidden local_unnamed_addr global i64, align 8
@rscg_.ierper = external hidden global i64, align 8
@c__6 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
declare dso_local double @dsrc_timer_(ptr noundef) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @rscg_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef writeonly %11) local_unnamed_addr #0 {
  %13 = getelementptr inbounds i8, ptr %9, i64 8
  %14 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %14, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 32), align 8, !tbaa !9
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %16, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 40), align 8, !tbaa !11
  store i64 0, ptr @rscg_.ier, align 8, !tbaa !5
  %17 = load i64, ptr %9, align 8, !tbaa !5
  %18 = icmp slt i64 %17, 1
  br i1 %18, label %295, label %19

19:                                               ; preds = %12
  %20 = getelementptr inbounds i8, ptr %9, i64 80
  %21 = load i64, ptr %20, align 8, !tbaa !5
  %22 = icmp eq i64 %21, 0
  br i1 %22, label %23, label %26

23:                                               ; preds = %19
  %24 = tail call double @dsrc_timer_(ptr noundef null)
  %25 = fptrunc double %24 to float
  store float %25, ptr @rscg_.timj1, align 4, !tbaa !12
  %.pre = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 32), align 8, !tbaa !9
  br label %26

26:                                               ; preds = %23, %19
  %27 = phi i64 [ %.pre, %23 ], [ %14, %19 ]
  %28 = icmp slt i64 %27, 3
  br i1 %28, label %29, label %31

29:                                               ; preds = %26
  %30 = tail call i32 @echout_(ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c__6)
  br label %33

31:                                               ; preds = %26
  %32 = tail call i32 @echall_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c__1)
  br label %33

33:                                               ; preds = %31, %29
  %34 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 128), align 8, !tbaa !14
  %35 = fmul double %34, 5.000000e+02
  store double %35, ptr @rscg_.temp, align 8, !tbaa !17
  %36 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 152), align 8, !tbaa !18
  %37 = fcmp olt double %36, %35
  br i1 %37, label %38, label %39

38:                                               ; preds = %33
  store double %35, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 152), align 8, !tbaa !18
  br label %39

39:                                               ; preds = %38, %33
  %40 = getelementptr inbounds i8, ptr %10, i64 64
  %41 = load double, ptr %40, align 8, !tbaa !17
  store double %41, ptr @rscg_.time1, align 8, !tbaa !17
  %42 = getelementptr inbounds i8, ptr %10, i64 72
  %43 = load double, ptr %42, align 8, !tbaa !17
  store double %43, ptr @rscg_.time2, align 8, !tbaa !17
  %44 = getelementptr inbounds i8, ptr %10, i64 80
  %45 = load double, ptr %44, align 8, !tbaa !17
  store double %45, ptr @rscg_.digit1, align 8, !tbaa !17
  %46 = getelementptr inbounds i8, ptr %10, i64 88
  %47 = load double, ptr %46, align 8, !tbaa !17
  store double %47, ptr @rscg_.digit2, align 8, !tbaa !17
  %48 = load i64, ptr %0, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 1
  br i1 %49, label %50, label %51

50:                                               ; preds = %39
  store i64 61, ptr @rscg_.ier, align 8, !tbaa !5
  br label %289

51:                                               ; preds = %39
  %52 = getelementptr inbounds i8, ptr %9, i64 72
  %53 = load i64, ptr %52, align 8, !tbaa !5
  %.not = icmp eq i64 %53, 0
  br i1 %.not, label %61, label %54

54:                                               ; preds = %51
  %55 = getelementptr inbounds i8, ptr %10, i64 56
  %56 = load double, ptr %55, align 8, !tbaa !17
  store double %56, ptr @rscg_.tol, align 8, !tbaa !17
  %57 = tail call i32 @ivfill_(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull @c__0)
  %58 = tail call i32 @vfill_(ptr noundef nonnull %0, ptr noundef %8, ptr noundef nonnull @c_b21)
  %59 = tail call i32 @sbelm_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %6, ptr noundef %8, ptr noundef nonnull @rscg_.tol, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 16), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @rscg_.ier)
  %60 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  %.not180 = icmp eq i64 %60, 0
  br i1 %.not180, label %61, label %289

61:                                               ; preds = %54, %51
  store i64 0, ptr @rscg_.ib1, align 8, !tbaa !5
  %62 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %62, ptr @rscg_.ib2, align 8, !tbaa !5
  %63 = shl nsw i64 %62, 1
  store i64 %63, ptr @rscg_.jb3, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %9, i64 64
  %65 = load i64, ptr %64, align 8, !tbaa !5
  store i64 %65, ptr @rscg_.nb, align 8, !tbaa !5
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %67, label %.thread

67:                                               ; preds = %61
  %68 = load i64, ptr %0, align 8, !tbaa !5
  %69 = mul nsw i64 %68, 3
  store i64 %69, ptr @rscg_.n3, align 8, !tbaa !5
  %70 = tail call i32 @ivfill_(ptr noundef nonnull @rscg_.n3, ptr noundef %6, ptr noundef nonnull @c__0)
  %71 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %72 = getelementptr inbounds i64, ptr %6, i64 %71
  %73 = tail call i32 @prbndx_(ptr noundef nonnull %0, ptr noundef nonnull @rscg_.nb, ptr noundef %1, ptr noundef %2, ptr noundef %6, ptr noundef %72, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @rscg_.ier)
  %74 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  %.not181 = icmp eq i64 %74, 0
  br i1 %.not181, label %75, label %289

75:                                               ; preds = %67
  %.pr = load i64, ptr @rscg_.nb, align 8, !tbaa !5
  %76 = icmp slt i64 %.pr, 0
  br i1 %76, label %80, label %.thread

.thread:                                          ; preds = %61, %75
  %77 = phi i64 [ %.pr, %75 ], [ %65, %61 ]
  %78 = load i64, ptr %0, align 8, !tbaa !5
  %79 = icmp sgt i64 %77, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %.thread, %75
  store i64 64, ptr @rscg_.ier, align 8, !tbaa !5
  br label %289

81:                                               ; preds = %.thread
  %82 = icmp eq i64 %77, 0
  %83 = icmp eq i64 %77, %78
  %or.cond = or i1 %82, %83
  br i1 %or.cond, label %84, label %86

84:                                               ; preds = %81
  %85 = lshr i64 %78, 1
  store i64 %85, ptr @rscg_.nb, align 8, !tbaa !5
  br label %86

86:                                               ; preds = %81, %84
  %87 = phi i64 [ %77, %81 ], [ %85, %84 ]
  %88 = load i64, ptr %64, align 8, !tbaa !5
  %89 = icmp slt i64 %88, 0
  br i1 %89, label %90, label %98

90:                                               ; preds = %86
  %91 = load i64, ptr @rscg_.jb3, align 8, !tbaa !5
  %92 = getelementptr inbounds i64, ptr %6, i64 %91
  %93 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %6, ptr noundef %92, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 16), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @rscg_.ier)
  %94 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  %.not182 = icmp eq i64 %94, 0
  br i1 %.not182, label %95, label %289

95:                                               ; preds = %90
  %96 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %6)
  %97 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %6)
  %.pre196 = load i64, ptr @rscg_.nb, align 8, !tbaa !5
  br label %98

98:                                               ; preds = %95, %86
  %99 = phi i64 [ %.pre196, %95 ], [ %87, %86 ]
  %100 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %101 = add nsw i64 %99, %100
  store i64 %101, ptr @rscg_.ib3, align 8, !tbaa !5
  %102 = add nsw i64 %101, %99
  store i64 %102, ptr @rscg_.ib4, align 8, !tbaa !5
  %103 = add nsw i64 %102, %99
  store i64 %103, ptr @rscg_.ib5, align 8, !tbaa !5
  %104 = load i64, ptr %0, align 8, !tbaa !5
  %105 = sub nsw i64 %104, %99
  store i64 %105, ptr @rscg_.nr, align 8, !tbaa !5
  %106 = load i64, ptr %0, align 8, !tbaa !5
  %107 = mul nsw i64 %99, 3
  %108 = add nsw i64 %106, %107
  %109 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %110 = shl i64 %109, 1
  %111 = add nsw i64 %108, %110
  %112 = getelementptr inbounds i8, ptr %9, i64 56
  store i64 %111, ptr %112, align 8, !tbaa !5
  %113 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 16), align 8, !tbaa !20
  %.not183 = icmp eq i64 %113, 0
  br i1 %.not183, label %116, label %114

114:                                              ; preds = %98
  %115 = add nsw i64 %111, %110
  store i64 %115, ptr %112, align 8, !tbaa !5
  br label %116

116:                                              ; preds = %114, %98
  %117 = phi i64 [ %115, %114 ], [ %111, %98 ]
  %118 = load i64, ptr %7, align 8, !tbaa !5
  %119 = icmp slt i64 %118, %117
  br i1 %119, label %120, label %121

120:                                              ; preds = %116
  store i64 62, ptr @rscg_.ier, align 8, !tbaa !5
  br label %289

121:                                              ; preds = %116
  %122 = tail call i32 @vfill_(ptr noundef nonnull %112, ptr noundef %8, ptr noundef nonnull @c_b21)
  %123 = tail call i32 @scal_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %8, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @rscg_.ier)
  %124 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  %.not184 = icmp eq i64 %124, 0
  br i1 %.not184, label %125, label %289

125:                                              ; preds = %121
  %126 = load i64, ptr %20, align 8, !tbaa !5
  %127 = icmp eq i64 %126, 0
  br i1 %127, label %128, label %131

128:                                              ; preds = %125
  %129 = tail call double @dsrc_timer_(ptr noundef null)
  %130 = fptrunc double %129 to float
  store float %130, ptr @rscg_.timi1, align 4, !tbaa !12
  br label %131

131:                                              ; preds = %128, %125
  %132 = load i64, ptr %0, align 8, !tbaa !5
  %133 = icmp slt i64 %132, 2
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = load double, ptr %4, align 8, !tbaa !17
  store double %135, ptr %5, align 8, !tbaa !17
  br label %.loopexit

136:                                              ; preds = %131
  %137 = load i64, ptr @rscg_.ib1, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %8, i64 %137
  %139 = tail call i32 @itpackdcopy_(ptr noundef nonnull @rscg_.nr, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %138, ptr noundef nonnull @c__1)
  %140 = load i64, ptr @rscg_.nr, align 8, !tbaa !5
  %141 = getelementptr inbounds double, ptr %5, i64 %140
  %142 = load i64, ptr @rscg_.ib1, align 8, !tbaa !5
  %143 = getelementptr inbounds double, ptr %8, i64 %142
  %144 = tail call i32 @prsred_(ptr noundef nonnull @rscg_.nb, ptr noundef nonnull @rscg_.nr, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %141, ptr noundef %143)
  %145 = load i64, ptr @rscg_.nr, align 8, !tbaa !5
  %146 = getelementptr inbounds double, ptr %4, i64 %145
  %147 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %148 = getelementptr inbounds double, ptr %8, i64 %147
  %149 = tail call i32 @itpackdcopy_(ptr noundef nonnull @rscg_.nb, ptr noundef %146, ptr noundef nonnull @c__1, ptr noundef %148, ptr noundef nonnull @c__1)
  %150 = load i64, ptr @rscg_.ib1, align 8, !tbaa !5
  %151 = getelementptr inbounds double, ptr %8, i64 %150
  %152 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %8, i64 %152
  %154 = tail call i32 @prsblk_(ptr noundef nonnull @rscg_.nb, ptr noundef nonnull @rscg_.nr, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %151, ptr noundef %153)
  %155 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %156 = getelementptr inbounds double, ptr %8, i64 %155
  %157 = load i64, ptr @rscg_.nr, align 8, !tbaa !5
  %158 = getelementptr inbounds double, ptr %5, i64 %157
  %159 = tail call i32 @vevmw_(ptr noundef nonnull @rscg_.nb, ptr noundef %156, ptr noundef %158)
  %160 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %161 = add nsw i64 %160, 1
  store i64 %161, ptr @rscg_.itmax1, align 8, !tbaa !5
  store i64 1, ptr @rscg_.loop, align 8, !tbaa !5
  %.not185194 = icmp slt i64 %160, 0
  br i1 %.not185194, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %136, %184
  %storemerge195 = phi i64 [ %185, %184 ], [ 0, %136 ]
  store i64 %storemerge195, ptr @itcom1_, align 8, !tbaa !21
  %162 = and i64 %storemerge195, -9223372036854775807
  %163 = icmp eq i64 %162, 1
  %164 = load i64, ptr @rscg_.ib1, align 8, !tbaa !5
  %165 = getelementptr inbounds double, ptr %8, i64 %164
  %166 = load i64, ptr @rscg_.ib4, align 8, !tbaa !5
  %167 = getelementptr inbounds double, ptr %8, i64 %166
  %168 = load i64, ptr @rscg_.ib5, align 8, !tbaa !5
  %169 = getelementptr inbounds double, ptr %8, i64 %168
  br i1 %163, label %177, label %170

170:                                              ; preds = %.lr.ph
  %171 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %172 = getelementptr inbounds double, ptr %8, i64 %171
  %173 = load i64, ptr @rscg_.ib3, align 8, !tbaa !5
  %174 = getelementptr inbounds double, ptr %8, i64 %173
  %175 = tail call i32 @itrscg_(ptr noundef nonnull %0, ptr noundef nonnull @rscg_.nb, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %5, ptr noundef %165, ptr noundef %172, ptr noundef %174, ptr noundef %167, ptr noundef %169)
  %176 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !22
  %.not186 = icmp eq i64 %176, 0
  br i1 %.not186, label %184, label %.loopexit

177:                                              ; preds = %.lr.ph
  %178 = load i64, ptr @rscg_.ib3, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %8, i64 %178
  %180 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %181 = getelementptr inbounds double, ptr %8, i64 %180
  %182 = tail call i32 @itrscg_(ptr noundef nonnull %0, ptr noundef nonnull @rscg_.nb, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %165, ptr noundef %5, ptr noundef %179, ptr noundef %181, ptr noundef %167, ptr noundef %169)
  %183 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !22
  %.not187 = icmp eq i64 %183, 0
  br i1 %.not187, label %184, label %.loopexit

184:                                              ; preds = %177, %170
  %185 = load i64, ptr @rscg_.loop, align 8, !tbaa !5
  %186 = add nsw i64 %185, 1
  store i64 %186, ptr @rscg_.loop, align 8, !tbaa !5
  %187 = load i64, ptr @rscg_.itmax1, align 8, !tbaa !5
  %.not185.not = icmp slt i64 %185, %187
  br i1 %.not185.not, label %.lr.ph, label %._crit_edge, !llvm.loop !24

._crit_edge:                                      ; preds = %184, %136
  %188 = load i64, ptr %20, align 8, !tbaa !5
  %189 = icmp eq i64 %188, 0
  br i1 %189, label %190, label %196

190:                                              ; preds = %._crit_edge
  %191 = tail call double @dsrc_timer_(ptr noundef null)
  %192 = fptrunc double %191 to float
  store float %192, ptr @rscg_.timi2, align 4, !tbaa !12
  %193 = load float, ptr @rscg_.timi1, align 4, !tbaa !12
  %194 = fsub float %192, %193
  %195 = fpext float %194 to double
  store double %195, ptr @rscg_.time1, align 8, !tbaa !17
  br label %196

196:                                              ; preds = %190, %._crit_edge
  store i64 63, ptr @rscg_.ier, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %9, i64 16
  %198 = load i64, ptr %197, align 8, !tbaa !5
  %199 = icmp eq i64 %198, 0
  br i1 %199, label %200, label %210

200:                                              ; preds = %196
  %201 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 136), align 8, !tbaa !26
  store double %201, ptr %10, align 8, !tbaa !17
  br label %210

.loopexit:                                        ; preds = %177, %170, %134
  %202 = load i64, ptr %20, align 8, !tbaa !5
  %203 = icmp eq i64 %202, 0
  br i1 %203, label %204, label %210

204:                                              ; preds = %.loopexit
  %205 = tail call double @dsrc_timer_(ptr noundef null)
  %206 = fptrunc double %205 to float
  store float %206, ptr @rscg_.timi2, align 4, !tbaa !12
  %207 = load float, ptr @rscg_.timi1, align 4, !tbaa !12
  %208 = fsub float %206, %207
  %209 = fpext float %208 to double
  store double %209, ptr @rscg_.time1, align 8, !tbaa !17
  br label %210

210:                                              ; preds = %.loopexit, %204, %196, %200
  %211 = load i64, ptr %0, align 8, !tbaa !5
  %.not188 = icmp eq i64 %211, 1
  br i1 %.not188, label %225, label %212

212:                                              ; preds = %210
  %213 = load i64, ptr @itcom1_, align 8, !tbaa !21
  %214 = and i64 %213, -9223372036854775807
  %215 = icmp eq i64 %214, 1
  br i1 %215, label %216, label %220

216:                                              ; preds = %212
  %217 = load i64, ptr @rscg_.ib1, align 8, !tbaa !5
  %218 = getelementptr inbounds double, ptr %8, i64 %217
  %219 = tail call i32 @itpackdcopy_(ptr noundef nonnull %0, ptr noundef %218, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1)
  br label %220

220:                                              ; preds = %216, %212
  %221 = tail call i32 @itpackdcopy_(ptr noundef nonnull @rscg_.nr, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1)
  %222 = load i64, ptr @rscg_.nr, align 8, !tbaa !5
  %223 = getelementptr inbounds double, ptr %5, i64 %222
  %224 = tail call i32 @prsred_(ptr noundef nonnull @rscg_.nb, ptr noundef nonnull @rscg_.nr, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %223, ptr noundef %5)
  br label %225

225:                                              ; preds = %220, %210
  %226 = tail call i32 @unscal_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %8)
  %227 = load i64, ptr %64, align 8, !tbaa !5
  %228 = icmp sgt i64 %227, -1
  br i1 %228, label %247, label %229

229:                                              ; preds = %225
  %230 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %231 = getelementptr inbounds i64, ptr %6, i64 %230
  %232 = load i64, ptr @rscg_.jb3, align 8, !tbaa !5
  %233 = getelementptr inbounds i64, ptr %6, i64 %232
  %234 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %231, ptr noundef %233, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 16), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @rscg_.ierper)
  %235 = load i64, ptr @rscg_.ierper, align 8, !tbaa !5
  %.not189 = icmp eq i64 %235, 0
  br i1 %.not189, label %240, label %236

236:                                              ; preds = %229
  %237 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  %238 = icmp eq i64 %237, 0
  br i1 %238, label %239, label %289

239:                                              ; preds = %236
  store i64 %235, ptr @rscg_.ier, align 8, !tbaa !5
  br label %289

240:                                              ; preds = %229
  %241 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %242 = getelementptr inbounds i64, ptr %6, i64 %241
  %243 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %242)
  %244 = load i64, ptr @rscg_.ib2, align 8, !tbaa !5
  %245 = getelementptr inbounds i64, ptr %6, i64 %244
  %246 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %245)
  br label %247

247:                                              ; preds = %225, %240
  %248 = getelementptr inbounds i8, ptr %9, i64 88
  %249 = load i64, ptr %248, align 8, !tbaa !5
  store i64 %249, ptr @rscg_.idgts, align 8, !tbaa !5
  %250 = icmp sgt i64 %249, -1
  br i1 %250, label %251, label %257

251:                                              ; preds = %247
  %252 = load i64, ptr %13, align 8, !tbaa !5
  %253 = icmp slt i64 %252, 1
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  store i64 0, ptr @rscg_.idgts, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %254, %251
  %256 = tail call i32 @perror_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %8, ptr noundef nonnull @rscg_.digit1, ptr noundef nonnull @rscg_.digit2, ptr noundef nonnull @rscg_.idgts)
  br label %257

257:                                              ; preds = %255, %247
  %258 = load i64, ptr %20, align 8, !tbaa !5
  %259 = icmp eq i64 %258, 0
  br i1 %259, label %260, label %266

260:                                              ; preds = %257
  %261 = tail call double @dsrc_timer_(ptr noundef null)
  %262 = fptrunc double %261 to float
  store float %262, ptr @rscg_.timj2, align 4, !tbaa !12
  %263 = load float, ptr @rscg_.timj1, align 4, !tbaa !12
  %264 = fsub float %262, %263
  %265 = fpext float %264 to double
  store double %265, ptr @rscg_.time2, align 8, !tbaa !17
  br label %266

266:                                              ; preds = %260, %257
  %267 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %268 = load i64, ptr @itcom1_, align 8, !tbaa !21
  %.neg = sub i64 %268, %267
  %.neg190 = shl i64 %.neg, 1
  %269 = load i64, ptr %112, align 8, !tbaa !5
  %270 = add i64 %.neg190, %269
  store i64 %270, ptr %112, align 8, !tbaa !5
  %271 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 16), align 8, !tbaa !20
  %.not191 = icmp eq i64 %271, 0
  br i1 %.not191, label %275, label %272

272:                                              ; preds = %266
  %273 = shl i64 %.neg, 2
  %274 = add i64 %273, %269
  store i64 %274, ptr %112, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %272, %266
  %276 = getelementptr inbounds i8, ptr %9, i64 16
  %277 = load i64, ptr %276, align 8, !tbaa !5
  %278 = icmp eq i64 %277, 0
  br i1 %278, label %279, label %289

279:                                              ; preds = %275
  store i64 %268, ptr %9, align 8, !tbaa !5
  %280 = load i64, ptr @rscg_.nb, align 8, !tbaa !5
  store i64 %280, ptr %64, align 8, !tbaa !5
  %281 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 16), align 8, !tbaa !27
  %282 = getelementptr inbounds i8, ptr %10, i64 8
  store double %281, ptr %282, align 8, !tbaa !17
  %283 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 104), align 8, !tbaa !28
  %284 = getelementptr inbounds i8, ptr %10, i64 16
  store double %283, ptr %284, align 8, !tbaa !17
  %285 = load double, ptr @rscg_.time1, align 8, !tbaa !17
  store double %285, ptr %40, align 8, !tbaa !17
  %286 = load double, ptr @rscg_.time2, align 8, !tbaa !17
  store double %286, ptr %42, align 8, !tbaa !17
  %287 = load double, ptr @rscg_.digit1, align 8, !tbaa !17
  store double %287, ptr %44, align 8, !tbaa !17
  %288 = load double, ptr @rscg_.digit2, align 8, !tbaa !17
  store double %288, ptr %46, align 8, !tbaa !17
  br label %289

289:                                              ; preds = %275, %279, %236, %239, %121, %90, %67, %54, %120, %80, %50
  %290 = load i64, ptr @rscg_.ier, align 8, !tbaa !5
  store i64 %290, ptr %11, align 8, !tbaa !5
  %291 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 32), align 8, !tbaa !9
  %292 = icmp sgt i64 %291, 2
  br i1 %292, label %293, label %295

293:                                              ; preds = %289
  %294 = tail call i32 @echall_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c__2)
  br label %295

295:                                              ; preds = %289, %293, %12
  ret i32 0
}

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

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

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

attributes #0 = { 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" }

!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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 32}
!10 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!11 = !{!10, !6, i64 40}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!15, !16, i64 128}
!15 = !{!"", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152}
!16 = !{!"double", !7, i64 0}
!17 = !{!16, !16, i64 0}
!18 = !{!15, !16, i64 152}
!19 = !{!10, !6, i64 24}
!20 = !{!10, !6, i64 16}
!21 = !{!10, !6, i64 0}
!22 = !{!23, !6, i64 24}
!23 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!15, !16, i64 136}
!27 = !{!15, !16, i64 16}
!28 = !{!15, !16, i64 104}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass