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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @jcg_(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 @jcg_.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 %507

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 @jcg_.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__1)
  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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 11, ptr @jcg_.ier, align 8, !tbaa !9
  br label %492

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

111:                                              ; preds = %91
  br label %492

112:                                              ; preds = %91
  br label %113

113:                                              ; preds = %112, %86
  store i64 0, ptr @jcg_.ib1, align 8, !tbaa !9
  %114 = load i64, ptr @jcg_.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 @jcg_.ib2, align 8, !tbaa !9
  %118 = load i64, ptr @jcg_.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 @jcg_.ib3, align 8, !tbaa !9
  %122 = load i64, ptr @jcg_.ib3, align 8, !tbaa !9
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = add nsw i64 %122, %124
  store i64 %125, ptr @jcg_.ib4, align 8, !tbaa !9
  %126 = load i64, ptr @jcg_.ib4, align 8, !tbaa !9
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = add nsw i64 %126, %128
  store i64 %129, ptr @jcg_.ib5, align 8, !tbaa !9
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = shl i64 %131, 2
  %133 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %134 = shl i64 %133, 1
  %135 = add nsw i64 %132, %134
  %136 = load ptr, ptr %23, align 8, !tbaa !5
  %137 = getelementptr inbounds i64, ptr %136, i64 7
  store i64 %135, ptr %137, align 8, !tbaa !9
  %138 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), align 8, !tbaa !22
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %140, label %147

140:                                              ; preds = %113
  %141 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %142 = shl i64 %141, 1
  %143 = load ptr, ptr %23, align 8, !tbaa !5
  %144 = getelementptr inbounds i64, ptr %143, i64 7
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = add nsw i64 %145, %142
  store i64 %146, ptr %144, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %140, %113
  %148 = load ptr, ptr %21, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = load ptr, ptr %23, align 8, !tbaa !5
  %151 = getelementptr inbounds i64, ptr %150, i64 7
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp slt i64 %149, %152
  br i1 %153, label %154, label %155

154:                                              ; preds = %147
  store i64 12, ptr @jcg_.ier, align 8, !tbaa !9
  br label %492

155:                                              ; preds = %147
  %156 = load ptr, ptr %23, align 8, !tbaa !5
  %157 = getelementptr inbounds i64, ptr %156, i64 8
  %158 = load i64, ptr %157, align 8, !tbaa !9
  store i64 %158, ptr @jcg_.nb, align 8, !tbaa !9
  %159 = load i64, ptr @jcg_.nb, align 8, !tbaa !9
  %160 = icmp slt i64 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %155
  br label %201

162:                                              ; preds = %155
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = mul nsw i64 %164, 3
  store i64 %165, ptr @jcg_.n3, align 8, !tbaa !9
  %166 = load ptr, ptr %20, align 8, !tbaa !5
  %167 = call i32 @ivfill_(ptr noundef @jcg_.n3, ptr noundef %166, ptr noundef @c__0)
  %168 = load ptr, ptr %14, align 8, !tbaa !5
  %169 = load ptr, ptr %15, align 8, !tbaa !5
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = load ptr, ptr %20, align 8, !tbaa !5
  %172 = load ptr, ptr %20, align 8, !tbaa !5
  %173 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %174 = getelementptr inbounds i64, ptr %172, i64 %173
  %175 = call i32 @prbndx_(ptr noundef %168, ptr noundef @jcg_.nb, ptr noundef %169, ptr noundef %170, ptr noundef %171, ptr noundef %174, 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 @jcg_.ier)
  %176 = load i64, ptr @jcg_.ier, align 8, !tbaa !9
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %178, label %179

178:                                              ; preds = %162
  br label %492

179:                                              ; preds = %162
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  %181 = load ptr, ptr %15, align 8, !tbaa !5
  %182 = load ptr, ptr %16, align 8, !tbaa !5
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = load ptr, ptr %20, align 8, !tbaa !5
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = load i64, ptr @jcg_.ib3, align 8, !tbaa !9
  %187 = getelementptr inbounds i64, ptr %185, i64 %186
  %188 = call i32 @permat_(ptr noundef %180, ptr noundef %181, ptr noundef %182, ptr noundef %183, ptr noundef %184, ptr noundef %187, 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 @jcg_.ier)
  %189 = load i64, ptr @jcg_.ier, align 8, !tbaa !9
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %191, label %192

191:                                              ; preds = %179
  br label %492

192:                                              ; preds = %179
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = load ptr, ptr %18, align 8, !tbaa !5
  %195 = load ptr, ptr %20, align 8, !tbaa !5
  %196 = call i32 @pervec_(ptr noundef %193, ptr noundef %194, ptr noundef %195)
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  %198 = load ptr, ptr %19, align 8, !tbaa !5
  %199 = load ptr, ptr %20, align 8, !tbaa !5
  %200 = call i32 @pervec_(ptr noundef %197, ptr noundef %198, ptr noundef %199)
  br label %201

201:                                              ; preds = %192, %161
  %202 = load ptr, ptr %23, align 8, !tbaa !5
  %203 = getelementptr inbounds i64, ptr %202, i64 7
  %204 = load ptr, ptr %22, align 8, !tbaa !5
  %205 = call i32 @vfill_(ptr noundef %203, ptr noundef %204, ptr noundef @c_b21)
  %206 = load ptr, ptr %14, align 8, !tbaa !5
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = load ptr, ptr %16, align 8, !tbaa !5
  %209 = load ptr, ptr %17, align 8, !tbaa !5
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = load ptr, ptr %19, align 8, !tbaa !5
  %212 = load ptr, ptr %22, align 8, !tbaa !5
  %213 = call i32 @scal_(ptr noundef %206, ptr noundef %207, ptr noundef %208, ptr noundef %209, ptr noundef %210, ptr noundef %211, ptr noundef %212, 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 @jcg_.ier)
  %214 = load i64, ptr @jcg_.ier, align 8, !tbaa !9
  %215 = icmp ne i64 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %201
  br label %492

217:                                              ; preds = %201
  %218 = load ptr, ptr %23, align 8, !tbaa !5
  %219 = getelementptr inbounds i64, ptr %218, i64 10
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp eq i64 %220, 0
  br i1 %221, label %222, label %225

222:                                              ; preds = %217
  %223 = call double @dsrc_timer_(ptr noundef null)
  %224 = fptrunc double %223 to float
  store float %224, ptr @jcg_.timi1, align 4, !tbaa !14
  br label %225

225:                                              ; preds = %222, %217
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = load ptr, ptr %22, align 8, !tbaa !5
  %229 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %228, i64 %229
  %231 = call i32 @itpackdcopy_(ptr noundef %226, ptr noundef %227, ptr noundef @c__1, ptr noundef %230, ptr noundef @c__1)
  %232 = load ptr, ptr %14, align 8, !tbaa !5
  %233 = load ptr, ptr %15, align 8, !tbaa !5
  %234 = load ptr, ptr %16, align 8, !tbaa !5
  %235 = load ptr, ptr %17, align 8, !tbaa !5
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = load ptr, ptr %22, align 8, !tbaa !5
  %238 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %237, i64 %238
  %240 = call i32 @pjac_(ptr noundef %232, ptr noundef %233, ptr noundef %234, ptr noundef %235, ptr noundef %236, ptr noundef %239)
  %241 = load ptr, ptr %14, align 8, !tbaa !5
  %242 = load ptr, ptr %22, align 8, !tbaa !5
  %243 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %242, i64 %243
  %245 = load ptr, ptr %19, align 8, !tbaa !5
  %246 = call i32 @vevmw_(ptr noundef %241, ptr noundef %244, ptr noundef %245)
  %247 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %248 = add nsw i64 %247, 1
  store i64 %248, ptr @jcg_.itmax1, align 8, !tbaa !9
  store i64 1, ptr @jcg_.loop, align 8, !tbaa !9
  br label %249

249:                                              ; preds = %312, %225
  %250 = load i64, ptr @jcg_.loop, align 8, !tbaa !9
  %251 = load i64, ptr @jcg_.itmax1, align 8, !tbaa !9
  %252 = icmp sle i64 %250, %251
  br i1 %252, label %253, label %315

253:                                              ; preds = %249
  %254 = load i64, ptr @jcg_.loop, align 8, !tbaa !9
  %255 = sub nsw i64 %254, 1
  store i64 %255, ptr @itcom1_, align 8, !tbaa !23
  %256 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %257 = srem i64 %256, 2
  %258 = icmp eq i64 %257, 1
  br i1 %258, label %259, label %260

259:                                              ; preds = %253
  br label %286

260:                                              ; preds = %253
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  %262 = load ptr, ptr %15, align 8, !tbaa !5
  %263 = load ptr, ptr %16, align 8, !tbaa !5
  %264 = load ptr, ptr %17, align 8, !tbaa !5
  %265 = load ptr, ptr %19, align 8, !tbaa !5
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = load i64, ptr @jcg_.ib1, align 8, !tbaa !9
  %268 = getelementptr inbounds double, ptr %266, i64 %267
  %269 = load ptr, ptr %22, align 8, !tbaa !5
  %270 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  %272 = load ptr, ptr %22, align 8, !tbaa !5
  %273 = load i64, ptr @jcg_.ib3, align 8, !tbaa !9
  %274 = getelementptr inbounds double, ptr %272, i64 %273
  %275 = load ptr, ptr %22, align 8, !tbaa !5
  %276 = load i64, ptr @jcg_.ib4, align 8, !tbaa !9
  %277 = getelementptr inbounds double, ptr %275, i64 %276
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = load i64, ptr @jcg_.ib5, align 8, !tbaa !9
  %280 = getelementptr inbounds double, ptr %278, i64 %279
  %281 = call i32 @itjcg_(ptr noundef %261, ptr noundef %262, ptr noundef %263, ptr noundef %264, ptr noundef %265, ptr noundef %268, ptr noundef %271, ptr noundef %274, ptr noundef %277, ptr noundef %280)
  %282 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !24
  %283 = icmp ne i64 %282, 0
  br i1 %283, label %284, label %285

284:                                              ; preds = %260
  br label %337

285:                                              ; preds = %260
  br label %312

286:                                              ; preds = %259
  %287 = load ptr, ptr %14, align 8, !tbaa !5
  %288 = load ptr, ptr %15, align 8, !tbaa !5
  %289 = load ptr, ptr %16, align 8, !tbaa !5
  %290 = load ptr, ptr %17, align 8, !tbaa !5
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = load i64, ptr @jcg_.ib1, align 8, !tbaa !9
  %293 = getelementptr inbounds double, ptr %291, i64 %292
  %294 = load ptr, ptr %19, align 8, !tbaa !5
  %295 = load ptr, ptr %22, align 8, !tbaa !5
  %296 = load i64, ptr @jcg_.ib3, align 8, !tbaa !9
  %297 = getelementptr inbounds double, ptr %295, i64 %296
  %298 = load ptr, ptr %22, align 8, !tbaa !5
  %299 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = load i64, ptr @jcg_.ib4, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %301, i64 %302
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = load i64, ptr @jcg_.ib5, align 8, !tbaa !9
  %306 = getelementptr inbounds double, ptr %304, i64 %305
  %307 = call i32 @itjcg_(ptr noundef %287, ptr noundef %288, ptr noundef %289, ptr noundef %290, ptr noundef %293, ptr noundef %294, ptr noundef %297, ptr noundef %300, ptr noundef %303, ptr noundef %306)
  %308 = load i64, ptr getelementptr inbounds (%struct.anon.1, ptr @itcom2_, i32 0, i32 3), align 8, !tbaa !24
  %309 = icmp ne i64 %308, 0
  br i1 %309, label %310, label %311

310:                                              ; preds = %286
  br label %337

311:                                              ; preds = %286
  br label %312

312:                                              ; preds = %311, %285
  %313 = load i64, ptr @jcg_.loop, align 8, !tbaa !9
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr @jcg_.loop, align 8, !tbaa !9
  br label %249, !llvm.loop !26

315:                                              ; preds = %249
  %316 = load ptr, ptr %23, align 8, !tbaa !5
  %317 = getelementptr inbounds i64, ptr %316, i64 10
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp eq i64 %318, 0
  br i1 %319, label %320, label %327

320:                                              ; preds = %315
  %321 = call double @dsrc_timer_(ptr noundef null)
  %322 = fptrunc double %321 to float
  store float %322, ptr @jcg_.timi2, align 4, !tbaa !14
  %323 = load float, ptr @jcg_.timi2, align 4, !tbaa !14
  %324 = load float, ptr @jcg_.timi1, align 4, !tbaa !14
  %325 = fsub float %323, %324
  %326 = fpext float %325 to double
  store double %326, ptr @jcg_.time1, align 8, !tbaa !19
  br label %327

327:                                              ; preds = %320, %315
  store i64 13, ptr @jcg_.ier, align 8, !tbaa !9
  %328 = load ptr, ptr %23, align 8, !tbaa !5
  %329 = getelementptr inbounds i64, ptr %328, i64 2
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = icmp eq i64 %330, 0
  br i1 %331, label %332, label %336

332:                                              ; preds = %327
  %333 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 17), align 8, !tbaa !28
  %334 = load ptr, ptr %24, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 0
  store double %333, ptr %335, align 8, !tbaa !19
  br label %336

336:                                              ; preds = %332, %327
  br label %350

337:                                              ; preds = %310, %284
  %338 = load ptr, ptr %23, align 8, !tbaa !5
  %339 = getelementptr inbounds i64, ptr %338, i64 10
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = icmp eq i64 %340, 0
  br i1 %341, label %342, label %349

342:                                              ; preds = %337
  %343 = call double @dsrc_timer_(ptr noundef null)
  %344 = fptrunc double %343 to float
  store float %344, ptr @jcg_.timi2, align 4, !tbaa !14
  %345 = load float, ptr @jcg_.timi2, align 4, !tbaa !14
  %346 = load float, ptr @jcg_.timi1, align 4, !tbaa !14
  %347 = fsub float %345, %346
  %348 = fpext float %347 to double
  store double %348, ptr @jcg_.time1, align 8, !tbaa !19
  br label %349

349:                                              ; preds = %342, %337
  br label %350

350:                                              ; preds = %349, %336
  %351 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %352 = srem i64 %351, 2
  %353 = icmp eq i64 %352, 1
  br i1 %353, label %354, label %361

354:                                              ; preds = %350
  %355 = load ptr, ptr %14, align 8, !tbaa !5
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr @jcg_.ib1, align 8, !tbaa !9
  %358 = getelementptr inbounds double, ptr %356, i64 %357
  %359 = load ptr, ptr %19, align 8, !tbaa !5
  %360 = call i32 @itpackdcopy_(ptr noundef %355, ptr noundef %358, ptr noundef @c__1, ptr noundef %359, ptr noundef @c__1)
  br label %361

361:                                              ; preds = %354, %350
  %362 = load ptr, ptr %14, align 8, !tbaa !5
  %363 = load ptr, ptr %15, align 8, !tbaa !5
  %364 = load ptr, ptr %16, align 8, !tbaa !5
  %365 = load ptr, ptr %17, align 8, !tbaa !5
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load ptr, ptr %19, align 8, !tbaa !5
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = call i32 @unscal_(ptr noundef %362, ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef %367, ptr noundef %368)
  %370 = load ptr, ptr %23, align 8, !tbaa !5
  %371 = getelementptr inbounds i64, ptr %370, i64 8
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = icmp slt i64 %372, 0
  br i1 %373, label %374, label %375

374:                                              ; preds = %361
  br label %408

375:                                              ; preds = %361
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = load ptr, ptr %15, align 8, !tbaa !5
  %378 = load ptr, ptr %16, align 8, !tbaa !5
  %379 = load ptr, ptr %17, align 8, !tbaa !5
  %380 = load ptr, ptr %20, align 8, !tbaa !5
  %381 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %382 = getelementptr inbounds i64, ptr %380, i64 %381
  %383 = load ptr, ptr %20, align 8, !tbaa !5
  %384 = load i64, ptr @jcg_.ib3, align 8, !tbaa !9
  %385 = getelementptr inbounds i64, ptr %383, i64 %384
  %386 = call i32 @permat_(ptr noundef %376, ptr noundef %377, ptr noundef %378, ptr noundef %379, ptr noundef %382, ptr noundef %385, 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 @jcg_.ierper)
  %387 = load i64, ptr @jcg_.ierper, align 8, !tbaa !9
  %388 = icmp ne i64 %387, 0
  br i1 %388, label %389, label %395

389:                                              ; preds = %375
  %390 = load i64, ptr @jcg_.ier, align 8, !tbaa !9
  %391 = icmp eq i64 %390, 0
  br i1 %391, label %392, label %394

392:                                              ; preds = %389
  %393 = load i64, ptr @jcg_.ierper, align 8, !tbaa !9
  store i64 %393, ptr @jcg_.ier, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %392, %389
  br label %492

395:                                              ; preds = %375
  %396 = load ptr, ptr %14, align 8, !tbaa !5
  %397 = load ptr, ptr %18, align 8, !tbaa !5
  %398 = load ptr, ptr %20, align 8, !tbaa !5
  %399 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %400 = getelementptr inbounds i64, ptr %398, i64 %399
  %401 = call i32 @pervec_(ptr noundef %396, ptr noundef %397, ptr noundef %400)
  %402 = load ptr, ptr %14, align 8, !tbaa !5
  %403 = load ptr, ptr %19, align 8, !tbaa !5
  %404 = load ptr, ptr %20, align 8, !tbaa !5
  %405 = load i64, ptr @jcg_.ib2, align 8, !tbaa !9
  %406 = getelementptr inbounds i64, ptr %404, i64 %405
  %407 = call i32 @pervec_(ptr noundef %402, ptr noundef %403, ptr noundef %406)
  br label %408

408:                                              ; preds = %395, %374
  %409 = load ptr, ptr %23, align 8, !tbaa !5
  %410 = getelementptr inbounds i64, ptr %409, i64 11
  %411 = load i64, ptr %410, align 8, !tbaa !9
  store i64 %411, ptr @jcg_.idgts, align 8, !tbaa !9
  %412 = load i64, ptr @jcg_.idgts, align 8, !tbaa !9
  %413 = icmp sge i64 %412, 0
  br i1 %413, label %414, label %429

414:                                              ; preds = %408
  %415 = load ptr, ptr %23, align 8, !tbaa !5
  %416 = getelementptr inbounds i64, ptr %415, i64 1
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = icmp sle i64 %417, 0
  br i1 %418, label %419, label %420

419:                                              ; preds = %414
  store i64 0, ptr @jcg_.idgts, align 8, !tbaa !9
  br label %420

420:                                              ; preds = %419, %414
  %421 = load ptr, ptr %14, align 8, !tbaa !5
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  %423 = load ptr, ptr %16, align 8, !tbaa !5
  %424 = load ptr, ptr %17, align 8, !tbaa !5
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = load ptr, ptr %22, align 8, !tbaa !5
  %428 = call i32 @perror_(ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef %424, ptr noundef %425, ptr noundef %426, ptr noundef %427, ptr noundef @jcg_.digit1, ptr noundef @jcg_.digit2, ptr noundef @jcg_.idgts)
  br label %429

429:                                              ; preds = %420, %408
  %430 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %431 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %432 = sub nsw i64 %430, %431
  %433 = shl i64 %432, 1
  %434 = load ptr, ptr %23, align 8, !tbaa !5
  %435 = getelementptr inbounds i64, ptr %434, i64 7
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = sub nsw i64 %436, %433
  store i64 %437, ptr %435, align 8, !tbaa !9
  %438 = load ptr, ptr %23, align 8, !tbaa !5
  %439 = getelementptr inbounds i64, ptr %438, i64 10
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = icmp eq i64 %440, 0
  br i1 %441, label %442, label %449

442:                                              ; preds = %429
  %443 = call double @dsrc_timer_(ptr noundef null)
  %444 = fptrunc double %443 to float
  store float %444, ptr @jcg_.timj2, align 4, !tbaa !14
  %445 = load float, ptr @jcg_.timj2, align 4, !tbaa !14
  %446 = load float, ptr @jcg_.timj1, align 4, !tbaa !14
  %447 = fsub float %445, %446
  %448 = fpext float %447 to double
  store double %448, ptr @jcg_.time2, align 8, !tbaa !19
  br label %449

449:                                              ; preds = %442, %429
  %450 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 2), align 8, !tbaa !22
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %452, label %461

452:                                              ; preds = %449
  %453 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 3), align 8, !tbaa !21
  %454 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %455 = sub nsw i64 %453, %454
  %456 = shl i64 %455, 1
  %457 = load ptr, ptr %23, align 8, !tbaa !5
  %458 = getelementptr inbounds i64, ptr %457, i64 7
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = sub nsw i64 %459, %456
  store i64 %460, ptr %458, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %452, %449
  %462 = load ptr, ptr %23, align 8, !tbaa !5
  %463 = getelementptr inbounds i64, ptr %462, i64 2
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp eq i64 %464, 0
  br i1 %465, label %466, label %491

466:                                              ; preds = %461
  %467 = load i64, ptr @itcom1_, align 8, !tbaa !23
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = getelementptr inbounds i64, ptr %468, i64 0
  store i64 %467, ptr %469, align 8, !tbaa !9
  %470 = load i64, ptr @jcg_.nb, align 8, !tbaa !9
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = getelementptr inbounds i64, ptr %471, i64 8
  store i64 %470, ptr %472, align 8, !tbaa !9
  %473 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 2), align 8, !tbaa !29
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = getelementptr inbounds double, ptr %474, i64 1
  store double %473, ptr %475, align 8, !tbaa !19
  %476 = load double, ptr getelementptr inbounds (%struct.anon.0, ptr @itcom3_, i32 0, i32 13), align 8, !tbaa !30
  %477 = load ptr, ptr %24, align 8, !tbaa !5
  %478 = getelementptr inbounds double, ptr %477, i64 2
  store double %476, ptr %478, align 8, !tbaa !19
  %479 = load double, ptr @jcg_.time1, align 8, !tbaa !19
  %480 = load ptr, ptr %24, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 8
  store double %479, ptr %481, align 8, !tbaa !19
  %482 = load double, ptr @jcg_.time2, align 8, !tbaa !19
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 9
  store double %482, ptr %484, align 8, !tbaa !19
  %485 = load double, ptr @jcg_.digit1, align 8, !tbaa !19
  %486 = load ptr, ptr %24, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 10
  store double %485, ptr %487, align 8, !tbaa !19
  %488 = load double, ptr @jcg_.digit2, align 8, !tbaa !19
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = getelementptr inbounds double, ptr %489, i64 11
  store double %488, ptr %490, align 8, !tbaa !19
  br label %491

491:                                              ; preds = %466, %461
  br label %492

492:                                              ; preds = %491, %394, %216, %191, %178, %154, %111, %85
  %493 = load i64, ptr @jcg_.ier, align 8, !tbaa !9
  %494 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 %493, ptr %494, align 8, !tbaa !9
  %495 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @itcom1_, i32 0, i32 4), align 8, !tbaa !11
  %496 = icmp sge i64 %495, 3
  br i1 %496, label %497, label %506

497:                                              ; preds = %492
  %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 %23, align 8, !tbaa !5
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = call i32 @echall_(ptr noundef %498, ptr noundef %499, ptr noundef %500, ptr noundef %501, ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef @c__2)
  br label %506

506:                                              ; preds = %497, %492
  store i32 0, ptr %13, align 4
  br label %507

507:                                              ; preds = %506, %36
  %508 = load i32, ptr %13, align 4
  ret i32 %508
}

; 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 @pjac_(ptr noundef, 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 @itjcg_(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 @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

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 }

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @jcg_(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 @jcg_.ier, align 8, !tbaa !5
  %17 = load i64, ptr %9, align 8, !tbaa !5
  %18 = icmp slt i64 %17, 1
  br i1 %18, label %254, 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 @jcg_.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__1)
  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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 @jcg_.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 11, ptr @jcg_.ier, align 8, !tbaa !5
  br label %248

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

61:                                               ; preds = %54, %51
  store i64 0, ptr @jcg_.ib1, align 8, !tbaa !5
  %62 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %62, ptr @jcg_.ib2, align 8, !tbaa !5
  %63 = shl nsw i64 %62, 1
  store i64 %63, ptr @jcg_.ib3, align 8, !tbaa !5
  %64 = load i64, ptr %0, align 8, !tbaa !5
  %65 = add nsw i64 %64, %63
  store i64 %65, ptr @jcg_.ib4, align 8, !tbaa !5
  %66 = load i64, ptr %0, align 8, !tbaa !5
  %67 = add nsw i64 %66, %65
  store i64 %67, ptr @jcg_.ib5, align 8, !tbaa !5
  %68 = load i64, ptr %0, align 8, !tbaa !5
  %69 = shl i64 %68, 2
  %70 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %71 = shl i64 %70, 1
  %72 = add nsw i64 %71, %69
  %73 = getelementptr inbounds i8, ptr %9, i64 56
  store i64 %72, ptr %73, align 8, !tbaa !5
  %74 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 16), align 8, !tbaa !20
  %.not161 = icmp eq i64 %74, 0
  br i1 %.not161, label %77, label %75

75:                                               ; preds = %61
  %76 = add nsw i64 %72, %71
  store i64 %76, ptr %73, align 8, !tbaa !5
  br label %77

77:                                               ; preds = %75, %61
  %78 = phi i64 [ %76, %75 ], [ %72, %61 ]
  %79 = load i64, ptr %7, align 8, !tbaa !5
  %80 = icmp slt i64 %79, %78
  br i1 %80, label %81, label %82

81:                                               ; preds = %77
  store i64 12, ptr @jcg_.ier, align 8, !tbaa !5
  br label %248

82:                                               ; preds = %77
  %83 = getelementptr inbounds i8, ptr %9, i64 64
  %84 = load i64, ptr %83, align 8, !tbaa !5
  store i64 %84, ptr @jcg_.nb, align 8, !tbaa !5
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %102, label %86

86:                                               ; preds = %82
  %87 = load i64, ptr %0, align 8, !tbaa !5
  %88 = mul nsw i64 %87, 3
  store i64 %88, ptr @jcg_.n3, align 8, !tbaa !5
  %89 = tail call i32 @ivfill_(ptr noundef nonnull @jcg_.n3, ptr noundef %6, ptr noundef nonnull @c__0)
  %90 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %91 = getelementptr inbounds i64, ptr %6, i64 %90
  %92 = tail call i32 @prbndx_(ptr noundef nonnull %0, ptr noundef nonnull @jcg_.nb, ptr noundef %1, ptr noundef %2, ptr noundef %6, ptr noundef %91, ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @itcom1_, i64 40), ptr noundef nonnull @jcg_.ier)
  %93 = load i64, ptr @jcg_.ier, align 8, !tbaa !5
  %.not162 = icmp eq i64 %93, 0
  br i1 %.not162, label %94, label %248

94:                                               ; preds = %86
  %95 = load i64, ptr @jcg_.ib3, align 8, !tbaa !5
  %96 = getelementptr inbounds i64, ptr %6, i64 %95
  %97 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %6, ptr noundef %96, 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 @jcg_.ier)
  %98 = load i64, ptr @jcg_.ier, align 8, !tbaa !5
  %.not163 = icmp eq i64 %98, 0
  br i1 %.not163, label %99, label %248

99:                                               ; preds = %94
  %100 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %6)
  %101 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %6)
  br label %102

102:                                              ; preds = %82, %99
  %103 = tail call i32 @vfill_(ptr noundef nonnull %73, ptr noundef %8, ptr noundef nonnull @c_b21)
  %104 = 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 @jcg_.ier)
  %105 = load i64, ptr @jcg_.ier, align 8, !tbaa !5
  %.not164 = icmp eq i64 %105, 0
  br i1 %.not164, label %106, label %248

106:                                              ; preds = %102
  %107 = load i64, ptr %20, align 8, !tbaa !5
  %108 = icmp eq i64 %107, 0
  br i1 %108, label %109, label %112

109:                                              ; preds = %106
  %110 = tail call double @dsrc_timer_(ptr noundef null)
  %111 = fptrunc double %110 to float
  store float %111, ptr @jcg_.timi1, align 4, !tbaa !12
  br label %112

112:                                              ; preds = %109, %106
  %113 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %114 = getelementptr inbounds double, ptr %8, i64 %113
  %115 = tail call i32 @itpackdcopy_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %114, ptr noundef nonnull @c__1)
  %116 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %117 = getelementptr inbounds double, ptr %8, i64 %116
  %118 = tail call i32 @pjac_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %5, ptr noundef %117)
  %119 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %120 = getelementptr inbounds double, ptr %8, i64 %119
  %121 = tail call i32 @vevmw_(ptr noundef nonnull %0, ptr noundef %120, ptr noundef %5)
  %122 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %123 = add nsw i64 %122, 1
  store i64 %123, ptr @jcg_.itmax1, align 8, !tbaa !5
  store i64 1, ptr @jcg_.loop, align 8, !tbaa !5
  %.not165173 = icmp slt i64 %122, 0
  br i1 %.not165173, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %112, %146
  %storemerge174 = phi i64 [ %147, %146 ], [ 0, %112 ]
  store i64 %storemerge174, ptr @itcom1_, align 8, !tbaa !21
  %124 = and i64 %storemerge174, -9223372036854775807
  %125 = icmp eq i64 %124, 1
  %126 = load i64, ptr @jcg_.ib1, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %8, i64 %126
  %128 = load i64, ptr @jcg_.ib4, align 8, !tbaa !5
  %129 = getelementptr inbounds double, ptr %8, i64 %128
  %130 = load i64, ptr @jcg_.ib5, align 8, !tbaa !5
  %131 = getelementptr inbounds double, ptr %8, i64 %130
  br i1 %125, label %139, label %132

132:                                              ; preds = %.lr.ph
  %133 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %134 = getelementptr inbounds double, ptr %8, i64 %133
  %135 = load i64, ptr @jcg_.ib3, align 8, !tbaa !5
  %136 = getelementptr inbounds double, ptr %8, i64 %135
  %137 = tail call i32 @itjcg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %5, ptr noundef %127, ptr noundef %134, ptr noundef %136, ptr noundef %129, ptr noundef %131)
  %138 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !22
  %.not166 = icmp eq i64 %138, 0
  br i1 %.not166, label %146, label %164

139:                                              ; preds = %.lr.ph
  %140 = load i64, ptr @jcg_.ib3, align 8, !tbaa !5
  %141 = getelementptr inbounds double, ptr %8, i64 %140
  %142 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %143 = getelementptr inbounds double, ptr %8, i64 %142
  %144 = tail call i32 @itjcg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %127, ptr noundef %5, ptr noundef %141, ptr noundef %143, ptr noundef %129, ptr noundef %131)
  %145 = load i64, ptr getelementptr inbounds (i8, ptr @itcom2_, i64 24), align 8, !tbaa !22
  %.not167 = icmp eq i64 %145, 0
  br i1 %.not167, label %146, label %164

146:                                              ; preds = %139, %132
  %147 = load i64, ptr @jcg_.loop, align 8, !tbaa !5
  %148 = add nsw i64 %147, 1
  store i64 %148, ptr @jcg_.loop, align 8, !tbaa !5
  %149 = load i64, ptr @jcg_.itmax1, align 8, !tbaa !5
  %.not165.not = icmp slt i64 %147, %149
  br i1 %.not165.not, label %.lr.ph, label %._crit_edge, !llvm.loop !24

._crit_edge:                                      ; preds = %146, %112
  %150 = load i64, ptr %20, align 8, !tbaa !5
  %151 = icmp eq i64 %150, 0
  br i1 %151, label %152, label %158

152:                                              ; preds = %._crit_edge
  %153 = tail call double @dsrc_timer_(ptr noundef null)
  %154 = fptrunc double %153 to float
  store float %154, ptr @jcg_.timi2, align 4, !tbaa !12
  %155 = load float, ptr @jcg_.timi1, align 4, !tbaa !12
  %156 = fsub float %154, %155
  %157 = fpext float %156 to double
  store double %157, ptr @jcg_.time1, align 8, !tbaa !17
  br label %158

158:                                              ; preds = %152, %._crit_edge
  store i64 13, ptr @jcg_.ier, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %9, i64 16
  %160 = load i64, ptr %159, align 8, !tbaa !5
  %161 = icmp eq i64 %160, 0
  br i1 %161, label %162, label %173

162:                                              ; preds = %158
  %163 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 136), align 8, !tbaa !26
  store double %163, ptr %10, align 8, !tbaa !17
  br label %173

164:                                              ; preds = %139, %132
  %165 = load i64, ptr %20, align 8, !tbaa !5
  %166 = icmp eq i64 %165, 0
  br i1 %166, label %167, label %173

167:                                              ; preds = %164
  %168 = tail call double @dsrc_timer_(ptr noundef null)
  %169 = fptrunc double %168 to float
  store float %169, ptr @jcg_.timi2, align 4, !tbaa !12
  %170 = load float, ptr @jcg_.timi1, align 4, !tbaa !12
  %171 = fsub float %169, %170
  %172 = fpext float %171 to double
  store double %172, ptr @jcg_.time1, align 8, !tbaa !17
  br label %173

173:                                              ; preds = %164, %167, %158, %162
  %174 = load i64, ptr @itcom1_, align 8, !tbaa !21
  %175 = and i64 %174, -9223372036854775807
  %176 = icmp eq i64 %175, 1
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = load i64, ptr @jcg_.ib1, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %8, i64 %178
  %180 = tail call i32 @itpackdcopy_(ptr noundef nonnull %0, ptr noundef %179, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1)
  br label %181

181:                                              ; preds = %177, %173
  %182 = 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)
  %183 = load i64, ptr %83, align 8, !tbaa !5
  %184 = icmp slt i64 %183, 0
  br i1 %184, label %203, label %185

185:                                              ; preds = %181
  %186 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %187 = getelementptr inbounds i64, ptr %6, i64 %186
  %188 = load i64, ptr @jcg_.ib3, align 8, !tbaa !5
  %189 = getelementptr inbounds i64, ptr %6, i64 %188
  %190 = tail call i32 @permat_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %187, ptr noundef %189, 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 @jcg_.ierper)
  %191 = load i64, ptr @jcg_.ierper, align 8, !tbaa !5
  %.not168 = icmp eq i64 %191, 0
  br i1 %.not168, label %196, label %192

192:                                              ; preds = %185
  %193 = load i64, ptr @jcg_.ier, align 8, !tbaa !5
  %194 = icmp eq i64 %193, 0
  br i1 %194, label %195, label %248

195:                                              ; preds = %192
  store i64 %191, ptr @jcg_.ier, align 8, !tbaa !5
  br label %248

196:                                              ; preds = %185
  %197 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %198 = getelementptr inbounds i64, ptr %6, i64 %197
  %199 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %4, ptr noundef %198)
  %200 = load i64, ptr @jcg_.ib2, align 8, !tbaa !5
  %201 = getelementptr inbounds i64, ptr %6, i64 %200
  %202 = tail call i32 @pervec_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef %201)
  br label %203

203:                                              ; preds = %181, %196
  %204 = getelementptr inbounds i8, ptr %9, i64 88
  %205 = load i64, ptr %204, align 8, !tbaa !5
  store i64 %205, ptr @jcg_.idgts, align 8, !tbaa !5
  %206 = icmp sgt i64 %205, -1
  br i1 %206, label %207, label %213

207:                                              ; preds = %203
  %208 = load i64, ptr %13, align 8, !tbaa !5
  %209 = icmp slt i64 %208, 1
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  store i64 0, ptr @jcg_.idgts, align 8, !tbaa !5
  br label %211

211:                                              ; preds = %210, %207
  %212 = 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 @jcg_.digit1, ptr noundef nonnull @jcg_.digit2, ptr noundef nonnull @jcg_.idgts)
  br label %213

213:                                              ; preds = %211, %203
  %214 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %215 = load i64, ptr @itcom1_, align 8, !tbaa !21
  %.neg = sub i64 %215, %214
  %.neg169 = shl i64 %.neg, 1
  %216 = load i64, ptr %73, align 8, !tbaa !5
  %217 = add i64 %.neg169, %216
  store i64 %217, ptr %73, align 8, !tbaa !5
  %218 = load i64, ptr %20, align 8, !tbaa !5
  %219 = icmp eq i64 %218, 0
  br i1 %219, label %220, label %226

220:                                              ; preds = %213
  %221 = tail call double @dsrc_timer_(ptr noundef null)
  %222 = fptrunc double %221 to float
  store float %222, ptr @jcg_.timj2, align 4, !tbaa !12
  %223 = load float, ptr @jcg_.timj1, align 4, !tbaa !12
  %224 = fsub float %222, %223
  %225 = fpext float %224 to double
  store double %225, ptr @jcg_.time2, align 8, !tbaa !17
  br label %226

226:                                              ; preds = %220, %213
  %227 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 16), align 8, !tbaa !20
  %.not170 = icmp eq i64 %227, 0
  br i1 %.not170, label %233, label %228

228:                                              ; preds = %226
  %229 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 24), align 8, !tbaa !19
  %230 = load i64, ptr @itcom1_, align 8, !tbaa !21
  %.neg171 = sub i64 %230, %229
  %.neg172 = shl i64 %.neg171, 1
  %231 = load i64, ptr %73, align 8, !tbaa !5
  %232 = add i64 %.neg172, %231
  store i64 %232, ptr %73, align 8, !tbaa !5
  br label %233

233:                                              ; preds = %228, %226
  %234 = getelementptr inbounds i8, ptr %9, i64 16
  %235 = load i64, ptr %234, align 8, !tbaa !5
  %236 = icmp eq i64 %235, 0
  br i1 %236, label %237, label %248

237:                                              ; preds = %233
  %238 = load i64, ptr @itcom1_, align 8, !tbaa !21
  store i64 %238, ptr %9, align 8, !tbaa !5
  %239 = load i64, ptr @jcg_.nb, align 8, !tbaa !5
  store i64 %239, ptr %83, align 8, !tbaa !5
  %240 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 16), align 8, !tbaa !27
  %241 = getelementptr inbounds i8, ptr %10, i64 8
  store double %240, ptr %241, align 8, !tbaa !17
  %242 = load double, ptr getelementptr inbounds (i8, ptr @itcom3_, i64 104), align 8, !tbaa !28
  %243 = getelementptr inbounds i8, ptr %10, i64 16
  store double %242, ptr %243, align 8, !tbaa !17
  %244 = load double, ptr @jcg_.time1, align 8, !tbaa !17
  store double %244, ptr %40, align 8, !tbaa !17
  %245 = load double, ptr @jcg_.time2, align 8, !tbaa !17
  store double %245, ptr %42, align 8, !tbaa !17
  %246 = load double, ptr @jcg_.digit1, align 8, !tbaa !17
  store double %246, ptr %44, align 8, !tbaa !17
  %247 = load double, ptr @jcg_.digit2, align 8, !tbaa !17
  store double %247, ptr %46, align 8, !tbaa !17
  br label %248

248:                                              ; preds = %233, %237, %192, %195, %102, %94, %86, %54, %81, %50
  %249 = load i64, ptr @jcg_.ier, align 8, !tbaa !5
  store i64 %249, ptr %11, align 8, !tbaa !5
  %250 = load i64, ptr getelementptr inbounds (i8, ptr @itcom1_, i64 32), align 8, !tbaa !9
  %251 = icmp sgt i64 %250, 2
  br i1 %251, label %252, label %254

252:                                              ; preds = %248
  %253 = 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 %254

254:                                              ; preds = %248, %252, %12
  ret i32 0
}

; 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 @pjac_(ptr noundef, 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 @itjcg_(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 @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

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: EarlyCSEPass,GVNPass,GlobalOptPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass