; 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
@jsi_.n3 = external hidden global i64, align 8
@jsi_.nb = external hidden global i64, align 8
@jsi_.ib1 = external hidden global i64, align 8
@jsi_.ib2 = external hidden global i64, align 8
@jsi_.ib3 = external hidden global i64, align 8
@jsi_.ier = external hidden global i64, align 8
@jsi_.tol = external hidden global double, align 8
@jsi_.icnt = external hidden global i64, align 8
@jsi_.temp = external hidden global double, align 8
@jsi_.loop = external hidden global i64, align 8
@jsi_.time1 = external hidden global double, align 8
@jsi_.time2 = external hidden global double, align 8
@jsi_.timi1 = external hidden global float, align 4
@jsi_.timj1 = external hidden global float, align 4
@jsi_.timi2 = external hidden global float, align 4
@jsi_.timj2 = external hidden global float, align 4
@jsi_.idgts = external hidden global i64, align 8
@jsi_.digit1 = external hidden global double, align 8
@jsi_.digit2 = external hidden global double, align 8
@jsi_.itmax1 = external hidden global i64, align 8
@jsi_.ierper = 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 @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 @jsi_(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 @jsi_.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 %429

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 @jsi_.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__2)
  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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 21, ptr @jsi_.ier, align 8, !tbaa !9
  br label %414

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 @jsi_.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 @jsi_.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 @jsi_.ier)
  %109 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %110 = icmp ne i64 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %91
  br label %414

112:                                              ; preds = %91
  br label %113

113:                                              ; preds = %112, %86
  store i64 0, ptr @jsi_.ib1, align 8, !tbaa !9
  %114 = load i64, ptr @jsi_.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 @jsi_.ib2, align 8, !tbaa !9
  %118 = load i64, ptr @jsi_.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 @jsi_.ib3, align 8, !tbaa !9
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = shl i64 %123, 1
  %125 = load ptr, ptr %23, align 8, !tbaa !5
  %126 = getelementptr inbounds i64, ptr %125, i64 7
  store i64 %124, ptr %126, align 8, !tbaa !9
  %127 = load ptr, ptr %21, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = getelementptr inbounds i64, ptr %129, i64 7
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = icmp slt i64 %128, %131
  br i1 %132, label %133, label %134

133:                                              ; preds = %113
  store i64 22, ptr @jsi_.ier, align 8, !tbaa !9
  br label %414

134:                                              ; preds = %113
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = getelementptr inbounds i64, ptr %135, i64 8
  %137 = load i64, ptr %136, align 8, !tbaa !9
  store i64 %137, ptr @jsi_.nb, align 8, !tbaa !9
  %138 = load i64, ptr @jsi_.nb, align 8, !tbaa !9
  %139 = icmp slt i64 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  br label %180

141:                                              ; preds = %134
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = mul nsw i64 %143, 3
  store i64 %144, ptr @jsi_.n3, align 8, !tbaa !9
  %145 = load ptr, ptr %20, align 8, !tbaa !5
  %146 = call i32 @ivfill_(ptr noundef @jsi_.n3, ptr noundef %145, ptr noundef @c__0)
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = load ptr, ptr %15, align 8, !tbaa !5
  %149 = load ptr, ptr %16, align 8, !tbaa !5
  %150 = load ptr, ptr %20, align 8, !tbaa !5
  %151 = load ptr, ptr %20, align 8, !tbaa !5
  %152 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %153 = getelementptr inbounds i64, ptr %151, i64 %152
  %154 = call i32 @prbndx_(ptr noundef %147, ptr noundef @jsi_.nb, ptr noundef %148, ptr noundef %149, ptr noundef %150, ptr noundef %153, 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 @jsi_.ier)
  %155 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %156 = icmp ne i64 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %141
  br label %414

158:                                              ; preds = %141
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = load ptr, ptr %15, align 8, !tbaa !5
  %161 = load ptr, ptr %16, align 8, !tbaa !5
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = load ptr, ptr %20, align 8, !tbaa !5
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i64, ptr @jsi_.ib3, align 8, !tbaa !9
  %166 = getelementptr inbounds i64, ptr %164, i64 %165
  %167 = call i32 @permat_(ptr noundef %159, ptr noundef %160, ptr noundef %161, ptr noundef %162, ptr noundef %163, ptr noundef %166, 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 @jsi_.ier)
  %168 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %171

170:                                              ; preds = %158
  br label %414

171:                                              ; preds = %158
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  %173 = load ptr, ptr %18, align 8, !tbaa !5
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = call i32 @pervec_(ptr noundef %172, ptr noundef %173, ptr noundef %174)
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = load ptr, ptr %19, align 8, !tbaa !5
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = call i32 @pervec_(ptr noundef %176, ptr noundef %177, ptr noundef %178)
  br label %180

180:                                              ; preds = %171, %140
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = getelementptr inbounds i64, ptr %181, i64 7
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = call i32 @vfill_(ptr noundef %182, ptr noundef %183, ptr noundef @c_b21)
  %185 = load ptr, ptr %14, align 8, !tbaa !5
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  %187 = load ptr, ptr %16, align 8, !tbaa !5
  %188 = load ptr, ptr %17, align 8, !tbaa !5
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %22, align 8, !tbaa !5
  %192 = call i32 @scal_(ptr noundef %185, ptr noundef %186, ptr noundef %187, ptr noundef %188, ptr noundef %189, ptr noundef %190, ptr noundef %191, 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 @jsi_.ier)
  %193 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %196

195:                                              ; preds = %180
  br label %414

196:                                              ; preds = %180
  %197 = load ptr, ptr %23, align 8, !tbaa !5
  %198 = getelementptr inbounds i64, ptr %197, i64 10
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp eq i64 %199, 0
  br i1 %200, label %201, label %204

201:                                              ; preds = %196
  %202 = call double @dsrc_timer_(ptr noundef null)
  %203 = fptrunc double %202 to float
  store float %203, ptr @jsi_.timi1, align 4, !tbaa !14
  br label %204

204:                                              ; preds = %201, %196
  %205 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %206 = add nsw i64 %205, 1
  store i64 %206, ptr @jsi_.itmax1, align 8, !tbaa !9
  store i64 1, ptr @jsi_.loop, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %254, %204
  %208 = load i64, ptr @jsi_.loop, align 8, !tbaa !9
  %209 = load i64, ptr @jsi_.itmax1, align 8, !tbaa !9
  %210 = icmp sle i64 %208, %209
  br i1 %210, label %211, label %257

211:                                              ; preds = %207
  %212 = load i64, ptr @jsi_.loop, align 8, !tbaa !9
  %213 = sub nsw i64 %212, 1
  store i64 %213, ptr @itcom1_, align 8, !tbaa !22
  %214 = load i64, ptr @itcom1_, align 8, !tbaa !22
  %215 = srem i64 %214, 2
  %216 = icmp eq i64 %215, 1
  br i1 %216, label %217, label %218

217:                                              ; preds = %211
  br label %236

218:                                              ; preds = %211
  %219 = load ptr, ptr %14, align 8, !tbaa !5
  %220 = load ptr, ptr %15, align 8, !tbaa !5
  %221 = load ptr, ptr %16, align 8, !tbaa !5
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = load ptr, ptr %18, align 8, !tbaa !5
  %224 = load ptr, ptr %19, align 8, !tbaa !5
  %225 = load ptr, ptr %22, align 8, !tbaa !5
  %226 = load i64, ptr @jsi_.ib1, align 8, !tbaa !9
  %227 = getelementptr inbounds double, ptr %225, i64 %226
  %228 = load ptr, ptr %22, align 8, !tbaa !5
  %229 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %228, i64 %229
  %231 = call i32 @itjsi_(ptr noundef %219, ptr noundef %220, ptr noundef %221, ptr noundef %222, ptr noundef %223, ptr noundef %224, ptr noundef %227, ptr noundef %230, ptr noundef @jsi_.icnt)
  %232 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !23
  %233 = icmp ne i64 %232, 0
  br i1 %233, label %234, label %235

234:                                              ; preds = %218
  br label %279

235:                                              ; preds = %218
  br label %254

236:                                              ; preds = %217
  %237 = load ptr, ptr %14, align 8, !tbaa !5
  %238 = load ptr, ptr %15, align 8, !tbaa !5
  %239 = load ptr, ptr %16, align 8, !tbaa !5
  %240 = load ptr, ptr %17, align 8, !tbaa !5
  %241 = load ptr, ptr %18, align 8, !tbaa !5
  %242 = load ptr, ptr %22, align 8, !tbaa !5
  %243 = load i64, ptr @jsi_.ib1, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %242, i64 %243
  %245 = load ptr, ptr %19, align 8, !tbaa !5
  %246 = load ptr, ptr %22, align 8, !tbaa !5
  %247 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %248 = getelementptr inbounds double, ptr %246, i64 %247
  %249 = call i32 @itjsi_(ptr noundef %237, ptr noundef %238, ptr noundef %239, ptr noundef %240, ptr noundef %241, ptr noundef %244, ptr noundef %245, ptr noundef %248, ptr noundef @jsi_.icnt)
  %250 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !23
  %251 = icmp ne i64 %250, 0
  br i1 %251, label %252, label %253

252:                                              ; preds = %236
  br label %279

253:                                              ; preds = %236
  br label %254

254:                                              ; preds = %253, %235
  %255 = load i64, ptr @jsi_.loop, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr @jsi_.loop, align 8, !tbaa !9
  br label %207, !llvm.loop !25

257:                                              ; preds = %207
  %258 = load ptr, ptr %23, align 8, !tbaa !5
  %259 = getelementptr inbounds i64, ptr %258, i64 10
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp eq i64 %260, 0
  br i1 %261, label %262, label %269

262:                                              ; preds = %257
  %263 = call double @dsrc_timer_(ptr noundef null)
  %264 = fptrunc double %263 to float
  store float %264, ptr @jsi_.timi2, align 4, !tbaa !14
  %265 = load float, ptr @jsi_.timi2, align 4, !tbaa !14
  %266 = load float, ptr @jsi_.timi1, align 4, !tbaa !14
  %267 = fsub float %265, %266
  %268 = fpext float %267 to double
  store double %268, ptr @jsi_.time1, align 8, !tbaa !19
  br label %269

269:                                              ; preds = %262, %257
  store i64 23, ptr @jsi_.ier, align 8, !tbaa !9
  %270 = load ptr, ptr %23, align 8, !tbaa !5
  %271 = getelementptr inbounds i64, ptr %270, i64 2
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = icmp eq i64 %272, 0
  br i1 %273, label %274, label %278

274:                                              ; preds = %269
  %275 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 17), align 8, !tbaa !27
  %276 = load ptr, ptr %24, align 8, !tbaa !5
  %277 = getelementptr inbounds double, ptr %276, i64 0
  store double %275, ptr %277, align 8, !tbaa !19
  br label %278

278:                                              ; preds = %274, %269
  br label %292

279:                                              ; preds = %252, %234
  %280 = load ptr, ptr %23, align 8, !tbaa !5
  %281 = getelementptr inbounds i64, ptr %280, i64 10
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp eq i64 %282, 0
  br i1 %283, label %284, label %291

284:                                              ; preds = %279
  %285 = call double @dsrc_timer_(ptr noundef null)
  %286 = fptrunc double %285 to float
  store float %286, ptr @jsi_.timi2, align 4, !tbaa !14
  %287 = load float, ptr @jsi_.timi2, align 4, !tbaa !14
  %288 = load float, ptr @jsi_.timi1, align 4, !tbaa !14
  %289 = fsub float %287, %288
  %290 = fpext float %289 to double
  store double %290, ptr @jsi_.time1, align 8, !tbaa !19
  br label %291

291:                                              ; preds = %284, %279
  br label %292

292:                                              ; preds = %291, %278
  %293 = load i64, ptr @itcom1_, align 8, !tbaa !22
  %294 = srem i64 %293, 2
  %295 = icmp eq i64 %294, 1
  br i1 %295, label %296, label %303

296:                                              ; preds = %292
  %297 = load ptr, ptr %14, align 8, !tbaa !5
  %298 = load ptr, ptr %22, align 8, !tbaa !5
  %299 = load i64, ptr @jsi_.ib1, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load ptr, ptr %19, align 8, !tbaa !5
  %302 = call i32 @itpackdcopy_(ptr noundef %297, ptr noundef %300, ptr noundef @c__1, ptr noundef %301, ptr noundef @c__1)
  br label %303

303:                                              ; preds = %296, %292
  %304 = load ptr, ptr %14, align 8, !tbaa !5
  %305 = load ptr, ptr %15, align 8, !tbaa !5
  %306 = load ptr, ptr %16, align 8, !tbaa !5
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = load ptr, ptr %19, align 8, !tbaa !5
  %310 = load ptr, ptr %22, align 8, !tbaa !5
  %311 = call i32 @unscal_(ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef %307, ptr noundef %308, ptr noundef %309, ptr noundef %310)
  %312 = load ptr, ptr %23, align 8, !tbaa !5
  %313 = getelementptr inbounds i64, ptr %312, i64 8
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = icmp slt i64 %314, 0
  br i1 %315, label %316, label %317

316:                                              ; preds = %303
  br label %350

317:                                              ; preds = %303
  %318 = load ptr, ptr %14, align 8, !tbaa !5
  %319 = load ptr, ptr %15, align 8, !tbaa !5
  %320 = load ptr, ptr %16, align 8, !tbaa !5
  %321 = load ptr, ptr %17, align 8, !tbaa !5
  %322 = load ptr, ptr %20, align 8, !tbaa !5
  %323 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %324 = getelementptr inbounds i64, ptr %322, i64 %323
  %325 = load ptr, ptr %20, align 8, !tbaa !5
  %326 = load i64, ptr @jsi_.ib3, align 8, !tbaa !9
  %327 = getelementptr inbounds i64, ptr %325, i64 %326
  %328 = call i32 @permat_(ptr noundef %318, ptr noundef %319, ptr noundef %320, ptr noundef %321, ptr noundef %324, ptr noundef %327, 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 @jsi_.ierper)
  %329 = load i64, ptr @jsi_.ierper, align 8, !tbaa !9
  %330 = icmp ne i64 %329, 0
  br i1 %330, label %331, label %337

331:                                              ; preds = %317
  %332 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %333 = icmp eq i64 %332, 0
  br i1 %333, label %334, label %336

334:                                              ; preds = %331
  %335 = load i64, ptr @jsi_.ierper, align 8, !tbaa !9
  store i64 %335, ptr @jsi_.ier, align 8, !tbaa !9
  br label %336

336:                                              ; preds = %334, %331
  br label %414

337:                                              ; preds = %317
  %338 = load ptr, ptr %14, align 8, !tbaa !5
  %339 = load ptr, ptr %18, align 8, !tbaa !5
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %342 = getelementptr inbounds i64, ptr %340, i64 %341
  %343 = call i32 @pervec_(ptr noundef %338, ptr noundef %339, ptr noundef %342)
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  %345 = load ptr, ptr %19, align 8, !tbaa !5
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = load i64, ptr @jsi_.ib2, align 8, !tbaa !9
  %348 = getelementptr inbounds i64, ptr %346, i64 %347
  %349 = call i32 @pervec_(ptr noundef %344, ptr noundef %345, ptr noundef %348)
  br label %350

350:                                              ; preds = %337, %316
  %351 = load ptr, ptr %23, align 8, !tbaa !5
  %352 = getelementptr inbounds i64, ptr %351, i64 11
  %353 = load i64, ptr %352, align 8, !tbaa !9
  store i64 %353, ptr @jsi_.idgts, align 8, !tbaa !9
  %354 = load i64, ptr @jsi_.idgts, align 8, !tbaa !9
  %355 = icmp sge i64 %354, 0
  br i1 %355, label %356, label %371

356:                                              ; preds = %350
  %357 = load ptr, ptr %23, align 8, !tbaa !5
  %358 = getelementptr inbounds i64, ptr %357, i64 1
  %359 = load i64, ptr %358, align 8, !tbaa !9
  %360 = icmp sle i64 %359, 0
  br i1 %360, label %361, label %362

361:                                              ; preds = %356
  store i64 0, ptr @jsi_.idgts, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %361, %356
  %363 = load ptr, ptr %14, align 8, !tbaa !5
  %364 = load ptr, ptr %15, align 8, !tbaa !5
  %365 = load ptr, ptr %16, align 8, !tbaa !5
  %366 = load ptr, ptr %17, align 8, !tbaa !5
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = load ptr, ptr %19, align 8, !tbaa !5
  %369 = load ptr, ptr %22, align 8, !tbaa !5
  %370 = call i32 @perror_(ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef %367, ptr noundef %368, ptr noundef %369, ptr noundef @jsi_.digit1, ptr noundef @jsi_.digit2, ptr noundef @jsi_.idgts)
  br label %371

371:                                              ; preds = %362, %350
  %372 = load ptr, ptr %23, align 8, !tbaa !5
  %373 = getelementptr inbounds i64, ptr %372, i64 10
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = icmp eq i64 %374, 0
  br i1 %375, label %376, label %383

376:                                              ; preds = %371
  %377 = call double @dsrc_timer_(ptr noundef null)
  %378 = fptrunc double %377 to float
  store float %378, ptr @jsi_.timj2, align 4, !tbaa !14
  %379 = load float, ptr @jsi_.timj2, align 4, !tbaa !14
  %380 = load float, ptr @jsi_.timj1, align 4, !tbaa !14
  %381 = fsub float %379, %380
  %382 = fpext float %381 to double
  store double %382, ptr @jsi_.time2, align 8, !tbaa !19
  br label %383

383:                                              ; preds = %376, %371
  %384 = load ptr, ptr %23, align 8, !tbaa !5
  %385 = getelementptr inbounds i64, ptr %384, i64 2
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = icmp eq i64 %386, 0
  br i1 %387, label %388, label %413

388:                                              ; preds = %383
  %389 = load i64, ptr @itcom1_, align 8, !tbaa !22
  %390 = load ptr, ptr %23, align 8, !tbaa !5
  %391 = getelementptr inbounds i64, ptr %390, i64 0
  store i64 %389, ptr %391, align 8, !tbaa !9
  %392 = load i64, ptr @jsi_.nb, align 8, !tbaa !9
  %393 = load ptr, ptr %23, align 8, !tbaa !5
  %394 = getelementptr inbounds i64, ptr %393, i64 8
  store i64 %392, ptr %394, align 8, !tbaa !9
  %395 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 2), align 8, !tbaa !28
  %396 = load ptr, ptr %24, align 8, !tbaa !5
  %397 = getelementptr inbounds double, ptr %396, i64 1
  store double %395, ptr %397, align 8, !tbaa !19
  %398 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 13), align 8, !tbaa !29
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = getelementptr inbounds double, ptr %399, i64 2
  store double %398, ptr %400, align 8, !tbaa !19
  %401 = load double, ptr @jsi_.time1, align 8, !tbaa !19
  %402 = load ptr, ptr %24, align 8, !tbaa !5
  %403 = getelementptr inbounds double, ptr %402, i64 8
  store double %401, ptr %403, align 8, !tbaa !19
  %404 = load double, ptr @jsi_.time2, align 8, !tbaa !19
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  %406 = getelementptr inbounds double, ptr %405, i64 9
  store double %404, ptr %406, align 8, !tbaa !19
  %407 = load double, ptr @jsi_.digit1, align 8, !tbaa !19
  %408 = load ptr, ptr %24, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %408, i64 10
  store double %407, ptr %409, align 8, !tbaa !19
  %410 = load double, ptr @jsi_.digit2, align 8, !tbaa !19
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = getelementptr inbounds double, ptr %411, i64 11
  store double %410, ptr %412, align 8, !tbaa !19
  br label %413

413:                                              ; preds = %388, %383
  br label %414

414:                                              ; preds = %413, %336, %195, %170, %157, %133, %111, %85
  %415 = load i64, ptr @jsi_.ier, align 8, !tbaa !9
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 %415, ptr %416, align 8, !tbaa !9
  %417 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), align 8, !tbaa !11
  %418 = icmp sge i64 %417, 3
  br i1 %418, label %419, label %428

419:                                              ; preds = %414
  %420 = load ptr, ptr %14, align 8, !tbaa !5
  %421 = load ptr, ptr %15, align 8, !tbaa !5
  %422 = load ptr, ptr %16, align 8, !tbaa !5
  %423 = load ptr, ptr %17, align 8, !tbaa !5
  %424 = load ptr, ptr %18, align 8, !tbaa !5
  %425 = load ptr, ptr %23, align 8, !tbaa !5
  %426 = load ptr, ptr %24, align 8, !tbaa !5
  %427 = call i32 @echall_(ptr noundef %420, ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef %424, ptr noundef %425, ptr noundef %426, ptr noundef @c__2)
  br label %428

428:                                              ; preds = %419, %414
  store i32 0, ptr %13, align 4
  br label %429

429:                                              ; preds = %428, %36
  %430 = load i32, ptr %13, align 4
  ret i32 %430
}

; Function Attrs: nounwind uwtable
declare dso_local i32 @itjsi_(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 0}
!23 = !{!24, !10, i64 24}
!24 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!17, !18, i64 136}
!28 = !{!17, !18, i64 16}
!29 = !{!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
@jsi_.n3 = external hidden global i64, align 8
@jsi_.nb = external hidden global i64, align 8
@jsi_.ib1 = external hidden local_unnamed_addr global i64, align 8
@jsi_.ib2 = external hidden local_unnamed_addr global i64, align 8
@jsi_.ib3 = external hidden local_unnamed_addr global i64, align 8
@jsi_.ier = external hidden global i64, align 8
@jsi_.tol = external hidden global double, align 8
@jsi_.icnt = external hidden global i64, align 8
@jsi_.temp = external hidden local_unnamed_addr global double, align 8
@jsi_.loop = external hidden local_unnamed_addr global i64, align 8
@jsi_.time1 = external hidden local_unnamed_addr global double, align 8
@jsi_.time2 = external hidden local_unnamed_addr global double, align 8
@jsi_.timi1 = external hidden local_unnamed_addr global float, align 4
@jsi_.timj1 = external hidden local_unnamed_addr global float, align 4
@jsi_.timi2 = external hidden local_unnamed_addr global float, align 4
@jsi_.timj2 = external hidden local_unnamed_addr global float, align 4
@jsi_.idgts = external hidden global i64, align 8
@jsi_.digit1 = external hidden global double, align 8
@jsi_.digit2 = external hidden global double, align 8
@jsi_.itmax1 = external hidden local_unnamed_addr global i64, align 8
@jsi_.ierper = 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 @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 @jsi_(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 @jsi_.ier, align 8, !tbaa !5
  %17 = load i64, ptr %9, align 8, !tbaa !5
  %18 = icmp slt i64 %17, 1
  br i1 %18, label %212, 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 @jsi_.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__2)
  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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 @jsi_.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 21, ptr @jsi_.ier, align 8, !tbaa !5
  br label %206

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 @jsi_.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 @jsi_.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 @jsi_.ier)
  %60 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  %.not139 = icmp eq i64 %60, 0
  br i1 %.not139, label %61, label %206

61:                                               ; preds = %54, %51
  store i64 0, ptr @jsi_.ib1, align 8, !tbaa !5
  %62 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %62, ptr @jsi_.ib2, align 8, !tbaa !5
  %63 = shl nsw i64 %62, 1
  store i64 %63, ptr @jsi_.ib3, align 8, !tbaa !5
  %64 = load i64, ptr %0, align 8, !tbaa !5
  %65 = shl i64 %64, 1
  %66 = getelementptr inbounds i8, ptr %9, i64 56
  store i64 %65, ptr %66, align 8, !tbaa !5
  %67 = load i64, ptr %7, align 8, !tbaa !5
  %68 = icmp slt i64 %67, %65
  br i1 %68, label %69, label %70

69:                                               ; preds = %61
  store i64 22, ptr @jsi_.ier, align 8, !tbaa !5
  br label %206

70:                                               ; preds = %61
  %71 = getelementptr inbounds i8, ptr %9, i64 64
  %72 = load i64, ptr %71, align 8, !tbaa !5
  store i64 %72, ptr @jsi_.nb, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %90, label %74

74:                                               ; preds = %70
  %75 = load i64, ptr %0, align 8, !tbaa !5
  %76 = mul nsw i64 %75, 3
  store i64 %76, ptr @jsi_.n3, align 8, !tbaa !5
  %77 = tail call i32 @ivfill_(ptr noundef nonnull @jsi_.n3, ptr noundef %6, ptr noundef nonnull @c__0)
  %78 = load i64, ptr @jsi_.ib2, align 8, !tbaa !5
  %79 = getelementptr inbounds i64, ptr %6, i64 %78
  %80 = tail call i32 @prbndx_(ptr noundef nonnull %0, ptr noundef nonnull @jsi_.nb, ptr noundef %1, ptr noundef %2, ptr noundef %6, ptr noundef %79, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @jsi_.ier)
  %81 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  %.not140 = icmp eq i64 %81, 0
  br i1 %.not140, label %82, label %206

82:                                               ; preds = %74
  %83 = load i64, ptr @jsi_.ib3, align 8, !tbaa !5
  %84 = getelementptr inbounds i64, ptr %6, i64 %83
  %85 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %6, ptr noundef %84, 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 @jsi_.ier)
  %86 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  %.not141 = icmp eq i64 %86, 0
  br i1 %.not141, label %87, label %206

87:                                               ; preds = %82
  %88 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %6)
  %89 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %6)
  br label %90

90:                                               ; preds = %70, %87
  %91 = tail call i32 @vfill_(ptr noundef nonnull %66, ptr noundef %8, ptr noundef nonnull @c_b21)
  %92 = 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 @jsi_.ier)
  %93 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  %.not142 = icmp eq i64 %93, 0
  br i1 %.not142, label %94, label %206

94:                                               ; preds = %90
  %95 = load i64, ptr %20, align 8, !tbaa !5
  %96 = icmp eq i64 %95, 0
  br i1 %96, label %97, label %100

97:                                               ; preds = %94
  %98 = tail call double @dsrc_timer_(ptr noundef null)
  %99 = fptrunc double %98 to float
  store float %99, ptr @jsi_.timi1, align 4, !tbaa !12
  br label %100

100:                                              ; preds = %97, %94
  %101 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %102 = add nsw i64 %101, 1
  store i64 %102, ptr @jsi_.itmax1, align 8, !tbaa !5
  store i64 1, ptr @jsi_.loop, align 8, !tbaa !5
  %.not143147 = icmp slt i64 %101, 0
  br i1 %.not143147, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %100, %115
  %storemerge148 = phi i64 [ %116, %115 ], [ 0, %100 ]
  store i64 %storemerge148, ptr @itcom1_, align 8, !tbaa !20
  %103 = and i64 %storemerge148, -9223372036854775807
  %104 = icmp eq i64 %103, 1
  %105 = load i64, ptr @jsi_.ib1, align 8, !tbaa !5
  %106 = getelementptr inbounds double, ptr %8, i64 %105
  %107 = load i64, ptr @jsi_.ib2, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %8, i64 %107
  br i1 %104, label %112, label %109

109:                                              ; preds = %.lr.ph
  %110 = tail call i32 @itjsi_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %106, ptr noundef %108, ptr noundef nonnull @jsi_.icnt)
  %111 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !21
  %.not144 = icmp eq i64 %111, 0
  br i1 %.not144, label %115, label %133

112:                                              ; preds = %.lr.ph
  %113 = tail call i32 @itjsi_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %106, ptr noundef %5, ptr noundef %108, ptr noundef nonnull @jsi_.icnt)
  %114 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !21
  %.not145 = icmp eq i64 %114, 0
  br i1 %.not145, label %115, label %133

115:                                              ; preds = %112, %109
  %116 = load i64, ptr @jsi_.loop, align 8, !tbaa !5
  %117 = add nsw i64 %116, 1
  store i64 %117, ptr @jsi_.loop, align 8, !tbaa !5
  %118 = load i64, ptr @jsi_.itmax1, align 8, !tbaa !5
  %.not143.not = icmp slt i64 %116, %118
  br i1 %.not143.not, label %.lr.ph, label %._crit_edge, !llvm.loop !23

._crit_edge:                                      ; preds = %115, %100
  %119 = load i64, ptr %20, align 8, !tbaa !5
  %120 = icmp eq i64 %119, 0
  br i1 %120, label %121, label %127

121:                                              ; preds = %._crit_edge
  %122 = tail call double @dsrc_timer_(ptr noundef null)
  %123 = fptrunc double %122 to float
  store float %123, ptr @jsi_.timi2, align 4, !tbaa !12
  %124 = load float, ptr @jsi_.timi1, align 4, !tbaa !12
  %125 = fsub float %123, %124
  %126 = fpext float %125 to double
  store double %126, ptr @jsi_.time1, align 8, !tbaa !17
  br label %127

127:                                              ; preds = %121, %._crit_edge
  store i64 23, ptr @jsi_.ier, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %9, i64 16
  %129 = load i64, ptr %128, align 8, !tbaa !5
  %130 = icmp eq i64 %129, 0
  br i1 %130, label %131, label %142

131:                                              ; preds = %127
  %132 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 136), align 8, !tbaa !25
  store double %132, ptr %10, align 8, !tbaa !17
  br label %142

133:                                              ; preds = %112, %109
  %134 = load i64, ptr %20, align 8, !tbaa !5
  %135 = icmp eq i64 %134, 0
  br i1 %135, label %136, label %142

136:                                              ; preds = %133
  %137 = tail call double @dsrc_timer_(ptr noundef null)
  %138 = fptrunc double %137 to float
  store float %138, ptr @jsi_.timi2, align 4, !tbaa !12
  %139 = load float, ptr @jsi_.timi1, align 4, !tbaa !12
  %140 = fsub float %138, %139
  %141 = fpext float %140 to double
  store double %141, ptr @jsi_.time1, align 8, !tbaa !17
  br label %142

142:                                              ; preds = %133, %136, %127, %131
  %143 = load i64, ptr @itcom1_, align 8, !tbaa !20
  %144 = and i64 %143, -9223372036854775807
  %145 = icmp eq i64 %144, 1
  br i1 %145, label %146, label %150

146:                                              ; preds = %142
  %147 = load i64, ptr @jsi_.ib1, align 8, !tbaa !5
  %148 = getelementptr inbounds double, ptr %8, i64 %147
  %149 = tail call i32 @itpackdcopy_(ptr noundef nonnull %0, ptr noundef %148, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1)
  br label %150

150:                                              ; preds = %146, %142
  %151 = 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)
  %152 = load i64, ptr %71, align 8, !tbaa !5
  %153 = icmp slt i64 %152, 0
  br i1 %153, label %172, label %154

154:                                              ; preds = %150
  %155 = load i64, ptr @jsi_.ib2, align 8, !tbaa !5
  %156 = getelementptr inbounds i64, ptr %6, i64 %155
  %157 = load i64, ptr @jsi_.ib3, align 8, !tbaa !5
  %158 = getelementptr inbounds i64, ptr %6, i64 %157
  %159 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %156, ptr noundef %158, 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 @jsi_.ierper)
  %160 = load i64, ptr @jsi_.ierper, align 8, !tbaa !5
  %.not146 = icmp eq i64 %160, 0
  br i1 %.not146, label %165, label %161

161:                                              ; preds = %154
  %162 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  %163 = icmp eq i64 %162, 0
  br i1 %163, label %164, label %206

164:                                              ; preds = %161
  store i64 %160, ptr @jsi_.ier, align 8, !tbaa !5
  br label %206

165:                                              ; preds = %154
  %166 = load i64, ptr @jsi_.ib2, align 8, !tbaa !5
  %167 = getelementptr inbounds i64, ptr %6, i64 %166
  %168 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %167)
  %169 = load i64, ptr @jsi_.ib2, align 8, !tbaa !5
  %170 = getelementptr inbounds i64, ptr %6, i64 %169
  %171 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %170)
  br label %172

172:                                              ; preds = %150, %165
  %173 = getelementptr inbounds i8, ptr %9, i64 88
  %174 = load i64, ptr %173, align 8, !tbaa !5
  store i64 %174, ptr @jsi_.idgts, align 8, !tbaa !5
  %175 = icmp sgt i64 %174, -1
  br i1 %175, label %176, label %182

176:                                              ; preds = %172
  %177 = load i64, ptr %13, align 8, !tbaa !5
  %178 = icmp slt i64 %177, 1
  br i1 %178, label %179, label %180

179:                                              ; preds = %176
  store i64 0, ptr @jsi_.idgts, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %179, %176
  %181 = 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 @jsi_.digit1, ptr noundef nonnull @jsi_.digit2, ptr noundef nonnull @jsi_.idgts)
  br label %182

182:                                              ; preds = %180, %172
  %183 = load i64, ptr %20, align 8, !tbaa !5
  %184 = icmp eq i64 %183, 0
  br i1 %184, label %185, label %191

185:                                              ; preds = %182
  %186 = tail call double @dsrc_timer_(ptr noundef null)
  %187 = fptrunc double %186 to float
  store float %187, ptr @jsi_.timj2, align 4, !tbaa !12
  %188 = load float, ptr @jsi_.timj1, align 4, !tbaa !12
  %189 = fsub float %187, %188
  %190 = fpext float %189 to double
  store double %190, ptr @jsi_.time2, align 8, !tbaa !17
  br label %191

191:                                              ; preds = %185, %182
  %192 = getelementptr inbounds i8, ptr %9, i64 16
  %193 = load i64, ptr %192, align 8, !tbaa !5
  %194 = icmp eq i64 %193, 0
  br i1 %194, label %195, label %206

195:                                              ; preds = %191
  %196 = load i64, ptr @itcom1_, align 8, !tbaa !20
  store i64 %196, ptr %9, align 8, !tbaa !5
  %197 = load i64, ptr @jsi_.nb, align 8, !tbaa !5
  store i64 %197, ptr %71, align 8, !tbaa !5
  %198 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 16), align 8, !tbaa !26
  %199 = getelementptr inbounds i8, ptr %10, i64 8
  store double %198, ptr %199, align 8, !tbaa !17
  %200 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 104), align 8, !tbaa !27
  %201 = getelementptr inbounds i8, ptr %10, i64 16
  store double %200, ptr %201, align 8, !tbaa !17
  %202 = load double, ptr @jsi_.time1, align 8, !tbaa !17
  store double %202, ptr %40, align 8, !tbaa !17
  %203 = load double, ptr @jsi_.time2, align 8, !tbaa !17
  store double %203, ptr %42, align 8, !tbaa !17
  %204 = load double, ptr @jsi_.digit1, align 8, !tbaa !17
  store double %204, ptr %44, align 8, !tbaa !17
  %205 = load double, ptr @jsi_.digit2, align 8, !tbaa !17
  store double %205, ptr %46, align 8, !tbaa !17
  br label %206

206:                                              ; preds = %191, %195, %161, %164, %90, %82, %74, %54, %69, %50
  %207 = load i64, ptr @jsi_.ier, align 8, !tbaa !5
  store i64 %207, ptr %11, align 8, !tbaa !5
  %208 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 32), align 8, !tbaa !9
  %209 = icmp sgt i64 %208, 2
  br i1 %209, label %210, label %212

210:                                              ; preds = %206
  %211 = 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 %212

212:                                              ; preds = %206, %210, %12
  ret i32 0
}

; Function Attrs: nounwind uwtable
declare dso_local i32 @itjsi_(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 0}
!21 = !{!22, !6, i64 24}
!22 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!15, !16, i64 136}
!26 = !{!15, !16, i64 16}
!27 = !{!15, !16, i64 104}


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