; LLVM IR from gem5/gem5 :: ext/mcpat/cacti/mat.ll (ZN3Mat20compute_power_energyEv)

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

%class.Mat = type { %class.Component, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, double, double, double, double, double, double, double, double, double, double, double, double, double, %class.Subarray, %class.powerDef, %class.powerDef, %class.powerDef, double, i32, i32, double, %class.Area, %class.Area, i8, i8, i8, i8, i32, %class.powerDef, double, double, double, double, double, double, %class.powerDef, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32 }
%class.Component = type { %class.Area, %class.powerDef, %class.powerDef, double, double }
%class.Subarray = type { %class.Component, ptr, i32, i32, i32, i32, %class.Area, %class.Area, i8, double, double, double, double, double, double, double, double }
%class.Area = type { double, double, double }
%class.powerDef = type { %class.powerComponents, %class.powerComponents, %class.powerComponents }
%class.powerComponents = type { double, double, double, double, double }
%class.Driver = type <{ %class.Component, i32, i32, [20 x double], [20 x double], double, double, double, double, %class.powerDef, i8, [7 x i8] }>
%class.DynamicParameter = type <{ i8, i8, i8, i8, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, [7 x i8], double, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], double, i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], %class.Area, %class.Area, i8, [7 x i8] }>

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Mat20compute_power_energyEv(ptr noundef nonnull align 8 dereferenceable(3064) %0) #2 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %6 = load ptr, ptr %2, align 8
  %7 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %8 = load ptr, ptr %7, align 8, !tbaa !9
  %9 = getelementptr inbounds %class.Component, ptr %8, i32 0, i32 1
  %10 = getelementptr inbounds %class.powerDef, ptr %9, i32 0, i32 0
  %11 = getelementptr inbounds %class.powerComponents, ptr %10, i32 0, i32 0
  %12 = load double, ptr %11, align 8, !tbaa !19
  %13 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 11
  %14 = load ptr, ptr %13, align 8, !tbaa !20
  %15 = getelementptr inbounds %class.Component, ptr %14, i32 0, i32 1
  %16 = getelementptr inbounds %class.powerDef, ptr %15, i32 0, i32 0
  %17 = getelementptr inbounds %class.powerComponents, ptr %16, i32 0, i32 0
  %18 = load double, ptr %17, align 8, !tbaa !19
  %19 = fadd double %12, %18
  %20 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 12
  %21 = load ptr, ptr %20, align 8, !tbaa !21
  %22 = getelementptr inbounds %class.Component, ptr %21, i32 0, i32 1
  %23 = getelementptr inbounds %class.powerDef, ptr %22, i32 0, i32 0
  %24 = getelementptr inbounds %class.powerComponents, ptr %23, i32 0, i32 0
  %25 = load double, ptr %24, align 8, !tbaa !19
  %26 = fadd double %19, %25
  %27 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 13
  %28 = load ptr, ptr %27, align 8, !tbaa !22
  %29 = getelementptr inbounds %class.Component, ptr %28, i32 0, i32 1
  %30 = getelementptr inbounds %class.powerDef, ptr %29, i32 0, i32 0
  %31 = getelementptr inbounds %class.powerComponents, ptr %30, i32 0, i32 0
  %32 = load double, ptr %31, align 8, !tbaa !19
  %33 = fadd double %26, %32
  %34 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %35 = getelementptr inbounds %class.powerDef, ptr %34, i32 0, i32 0
  %36 = getelementptr inbounds %class.powerComponents, ptr %35, i32 0, i32 0
  %37 = load double, ptr %36, align 8, !tbaa !19
  %38 = fadd double %37, %33
  store double %38, ptr %36, align 8, !tbaa !19
  %39 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %40 = load ptr, ptr %39, align 8, !tbaa !23
  %41 = getelementptr inbounds %class.Component, ptr %40, i32 0, i32 1
  %42 = getelementptr inbounds %class.powerDef, ptr %41, i32 0, i32 0
  %43 = getelementptr inbounds %class.powerComponents, ptr %42, i32 0, i32 0
  %44 = load double, ptr %43, align 8, !tbaa !19
  %45 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %46 = getelementptr inbounds %class.powerDef, ptr %45, i32 0, i32 0
  %47 = getelementptr inbounds %class.powerComponents, ptr %46, i32 0, i32 0
  store double %44, ptr %47, align 8, !tbaa !24
  %48 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 56
  %49 = load i8, ptr %48, align 1, !tbaa !25, !range !26, !noundef !27
  %50 = trunc i8 %49 to i1
  br i1 %50, label %64, label %51

51:                                               ; preds = %1
  %52 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 57
  %53 = load i8, ptr %52, align 2, !tbaa !28, !range !26, !noundef !27
  %54 = trunc i8 %53 to i1
  br i1 %54, label %64, label %55

55:                                               ; preds = %51
  %56 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %57 = load i32, ptr %56, align 8, !tbaa !29
  %58 = uitofp i32 %57 to double
  %59 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %60 = getelementptr inbounds %class.powerDef, ptr %59, i32 0, i32 0
  %61 = getelementptr inbounds %class.powerComponents, ptr %60, i32 0, i32 0
  %62 = load double, ptr %61, align 8, !tbaa !24
  %63 = fmul double %62, %58
  store double %63, ptr %61, align 8, !tbaa !24
  br label %64

64:                                               ; preds = %55, %51, %1
  %65 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 56
  %66 = load i8, ptr %65, align 1, !tbaa !25, !range !26, !noundef !27
  %67 = trunc i8 %66 to i1
  br i1 %67, label %209, label %68

68:                                               ; preds = %64
  %69 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 57
  %70 = load i8, ptr %69, align 2, !tbaa !28, !range !26, !noundef !27
  %71 = trunc i8 %70 to i1
  br i1 %71, label %209, label %72

72:                                               ; preds = %68
  %73 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %74 = load ptr, ptr %73, align 8, !tbaa !30
  %75 = getelementptr inbounds %class.Driver, ptr %74, i32 0, i32 9
  %76 = getelementptr inbounds %class.powerDef, ptr %75, i32 0, i32 0
  %77 = getelementptr inbounds %class.powerComponents, ptr %76, i32 0, i32 0
  %78 = load double, ptr %77, align 8, !tbaa !31
  %79 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %80 = getelementptr inbounds %class.powerDef, ptr %79, i32 0, i32 0
  %81 = getelementptr inbounds %class.powerComponents, ptr %80, i32 0, i32 0
  store double %78, ptr %81, align 8, !tbaa !33
  %82 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %83 = load i32, ptr %82, align 8, !tbaa !29
  %84 = uitofp i32 %83 to double
  %85 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %86 = getelementptr inbounds %class.powerDef, ptr %85, i32 0, i32 0
  %87 = getelementptr inbounds %class.powerComponents, ptr %86, i32 0, i32 0
  %88 = load double, ptr %87, align 8, !tbaa !33
  %89 = fmul double %88, %84
  store double %89, ptr %87, align 8, !tbaa !33
  %90 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %91 = getelementptr inbounds %class.Subarray, ptr %90, i32 0, i32 3
  %92 = load i32, ptr %91, align 4, !tbaa !34
  %93 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %94 = load i32, ptr %93, align 8, !tbaa !35
  %95 = udiv i32 %92, %94
  %96 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  store i32 %95, ptr %96, align 8, !tbaa !36
  %97 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %98 = load i32, ptr %97, align 8, !tbaa !36
  %99 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %100 = load i32, ptr %99, align 8, !tbaa !29
  %101 = mul i32 %98, %100
  %102 = uitofp i32 %101 to double
  %103 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %104 = getelementptr inbounds %class.powerDef, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds %class.powerComponents, ptr %104, i32 0, i32 0
  %106 = load double, ptr %105, align 8, !tbaa !37
  %107 = fmul double %106, %102
  store double %107, ptr %105, align 8, !tbaa !37
  %108 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %109 = load i32, ptr %108, align 8, !tbaa !29
  %110 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %111 = getelementptr inbounds %class.Subarray, ptr %110, i32 0, i32 3
  %112 = load i32, ptr %111, align 4, !tbaa !34
  %113 = mul i32 %109, %112
  %114 = uitofp i32 %113 to double
  %115 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %116 = getelementptr inbounds %class.powerDef, ptr %115, i32 0, i32 0
  %117 = getelementptr inbounds %class.powerComponents, ptr %116, i32 0, i32 0
  %118 = load double, ptr %117, align 8, !tbaa !38
  %119 = fmul double %118, %114
  store double %119, ptr %117, align 8, !tbaa !38
  %120 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %121 = load i32, ptr %120, align 8, !tbaa !29
  %122 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %123 = getelementptr inbounds %class.Subarray, ptr %122, i32 0, i32 3
  %124 = load i32, ptr %123, align 4, !tbaa !34
  %125 = mul i32 %121, %124
  %126 = uitofp i32 %125 to double
  %127 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %128 = getelementptr inbounds %class.powerDef, ptr %127, i32 0, i32 1
  %129 = getelementptr inbounds %class.powerComponents, ptr %128, i32 0, i32 0
  %130 = load double, ptr %129, align 8, !tbaa !39
  %131 = fmul double %130, %126
  store double %131, ptr %129, align 8, !tbaa !39
  %132 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %133 = getelementptr inbounds %class.powerDef, ptr %132, i32 0, i32 0
  %134 = getelementptr inbounds %class.powerComponents, ptr %133, i32 0, i32 0
  %135 = load double, ptr %134, align 8, !tbaa !40
  %136 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %137 = load ptr, ptr %136, align 8, !tbaa !41
  %138 = getelementptr inbounds %class.Component, ptr %137, i32 0, i32 1
  %139 = getelementptr inbounds %class.powerDef, ptr %138, i32 0, i32 0
  %140 = getelementptr inbounds %class.powerComponents, ptr %139, i32 0, i32 0
  %141 = load double, ptr %140, align 8, !tbaa !19
  %142 = fadd double %135, %141
  %143 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 68
  %144 = load i32, ptr %143, align 8, !tbaa !42
  %145 = sitofp i32 %144 to double
  %146 = fmul double %142, %145
  %147 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %148 = getelementptr inbounds %class.powerDef, ptr %147, i32 0, i32 0
  %149 = getelementptr inbounds %class.powerComponents, ptr %148, i32 0, i32 0
  store double %146, ptr %149, align 8, !tbaa !40
  %150 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %151 = getelementptr inbounds %class.powerDef, ptr %150, i32 0, i32 0
  %152 = getelementptr inbounds %class.powerComponents, ptr %151, i32 0, i32 0
  %153 = load double, ptr %152, align 8, !tbaa !33
  %154 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %155 = getelementptr inbounds %class.powerDef, ptr %154, i32 0, i32 0
  %156 = getelementptr inbounds %class.powerComponents, ptr %155, i32 0, i32 0
  %157 = load double, ptr %156, align 8, !tbaa !37
  %158 = fadd double %153, %157
  %159 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %160 = getelementptr inbounds %class.powerDef, ptr %159, i32 0, i32 0
  %161 = getelementptr inbounds %class.powerComponents, ptr %160, i32 0, i32 0
  %162 = load double, ptr %161, align 8, !tbaa !38
  %163 = fadd double %158, %162
  %164 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %165 = getelementptr inbounds %class.powerDef, ptr %164, i32 0, i32 0
  %166 = getelementptr inbounds %class.powerComponents, ptr %165, i32 0, i32 0
  %167 = load double, ptr %166, align 8, !tbaa !40
  %168 = fadd double %163, %167
  %169 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %170 = getelementptr inbounds %class.powerDef, ptr %169, i32 0, i32 0
  %171 = getelementptr inbounds %class.powerComponents, ptr %170, i32 0, i32 0
  %172 = load double, ptr %171, align 8, !tbaa !19
  %173 = fadd double %172, %168
  store double %173, ptr %171, align 8, !tbaa !19
  %174 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %175 = getelementptr inbounds %class.powerDef, ptr %174, i32 0, i32 0
  %176 = getelementptr inbounds %class.powerComponents, ptr %175, i32 0, i32 0
  %177 = load double, ptr %176, align 8, !tbaa !24
  %178 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 3
  %179 = load ptr, ptr %178, align 8, !tbaa !43
  %180 = getelementptr inbounds %class.Component, ptr %179, i32 0, i32 1
  %181 = getelementptr inbounds %class.powerDef, ptr %180, i32 0, i32 0
  %182 = getelementptr inbounds %class.powerComponents, ptr %181, i32 0, i32 0
  %183 = load double, ptr %182, align 8, !tbaa !19
  %184 = fadd double %177, %183
  %185 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 4
  %186 = load ptr, ptr %185, align 8, !tbaa !44
  %187 = getelementptr inbounds %class.Component, ptr %186, i32 0, i32 1
  %188 = getelementptr inbounds %class.powerDef, ptr %187, i32 0, i32 0
  %189 = getelementptr inbounds %class.powerComponents, ptr %188, i32 0, i32 0
  %190 = load double, ptr %189, align 8, !tbaa !19
  %191 = fadd double %184, %190
  %192 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 5
  %193 = load ptr, ptr %192, align 8, !tbaa !45
  %194 = getelementptr inbounds %class.Component, ptr %193, i32 0, i32 1
  %195 = getelementptr inbounds %class.powerDef, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds %class.powerComponents, ptr %195, i32 0, i32 0
  %197 = load double, ptr %196, align 8, !tbaa !19
  %198 = fadd double %191, %197
  %199 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %200 = getelementptr inbounds %class.powerDef, ptr %199, i32 0, i32 0
  %201 = getelementptr inbounds %class.powerComponents, ptr %200, i32 0, i32 0
  %202 = load double, ptr %201, align 8, !tbaa !46
  %203 = fadd double %198, %202
  %204 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %205 = getelementptr inbounds %class.powerDef, ptr %204, i32 0, i32 0
  %206 = getelementptr inbounds %class.powerComponents, ptr %205, i32 0, i32 0
  %207 = load double, ptr %206, align 8, !tbaa !19
  %208 = fadd double %207, %203
  store double %208, ptr %206, align 8, !tbaa !19
  br label %794

209:                                              ; preds = %68, %64
  %210 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 56
  %211 = load i8, ptr %210, align 1, !tbaa !25, !range !26, !noundef !27
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %531

213:                                              ; preds = %209
  %214 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %215 = load ptr, ptr %214, align 8, !tbaa !30
  %216 = getelementptr inbounds %class.Driver, ptr %215, i32 0, i32 9
  %217 = getelementptr inbounds %class.powerDef, ptr %216, i32 0, i32 0
  %218 = getelementptr inbounds %class.powerComponents, ptr %217, i32 0, i32 0
  %219 = load double, ptr %218, align 8, !tbaa !31
  %220 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %221 = load ptr, ptr %220, align 8, !tbaa !47
  %222 = getelementptr inbounds %class.Driver, ptr %221, i32 0, i32 9
  %223 = getelementptr inbounds %class.powerDef, ptr %222, i32 0, i32 0
  %224 = getelementptr inbounds %class.powerComponents, ptr %223, i32 0, i32 0
  %225 = load double, ptr %224, align 8, !tbaa !31
  %226 = fadd double %219, %225
  %227 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %228 = getelementptr inbounds %class.powerDef, ptr %227, i32 0, i32 0
  %229 = getelementptr inbounds %class.powerComponents, ptr %228, i32 0, i32 0
  store double %226, ptr %229, align 8, !tbaa !33
  %230 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %231 = load ptr, ptr %230, align 8, !tbaa !30
  %232 = getelementptr inbounds %class.Driver, ptr %231, i32 0, i32 9
  %233 = getelementptr inbounds %class.powerDef, ptr %232, i32 0, i32 0
  %234 = getelementptr inbounds %class.powerComponents, ptr %233, i32 0, i32 0
  %235 = load double, ptr %234, align 8, !tbaa !31
  %236 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %237 = getelementptr inbounds %class.powerDef, ptr %236, i32 0, i32 2
  %238 = getelementptr inbounds %class.powerComponents, ptr %237, i32 0, i32 0
  store double %235, ptr %238, align 8, !tbaa !48
  %239 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %240 = getelementptr inbounds %class.Subarray, ptr %239, i32 0, i32 4
  %241 = load i32, ptr %240, align 8, !tbaa !49
  %242 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %243 = getelementptr inbounds %class.Subarray, ptr %242, i32 0, i32 5
  %244 = load i32, ptr %243, align 4, !tbaa !50
  %245 = add nsw i32 %241, %244
  %246 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %247 = load i32, ptr %246, align 8, !tbaa !35
  %248 = sdiv i32 %245, %247
  %249 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  store i32 %248, ptr %249, align 8, !tbaa !36
  %250 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %251 = getelementptr inbounds %class.Subarray, ptr %250, i32 0, i32 5
  %252 = load i32, ptr %251, align 4, !tbaa !50
  %253 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %254 = load i32, ptr %253, align 8, !tbaa !35
  %255 = sdiv i32 %252, %254
  %256 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 71
  store i32 %255, ptr %256, align 4, !tbaa !51
  %257 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %258 = getelementptr inbounds %class.powerDef, ptr %257, i32 0, i32 0
  %259 = getelementptr inbounds %class.powerComponents, ptr %258, i32 0, i32 0
  %260 = load double, ptr %259, align 8, !tbaa !37
  %261 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 71
  %262 = load i32, ptr %261, align 4, !tbaa !51
  %263 = sitofp i32 %262 to double
  %264 = fmul double %260, %263
  %265 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %266 = getelementptr inbounds %class.powerDef, ptr %265, i32 0, i32 2
  %267 = getelementptr inbounds %class.powerComponents, ptr %266, i32 0, i32 0
  store double %264, ptr %267, align 8, !tbaa !52
  %268 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %269 = load i32, ptr %268, align 8, !tbaa !36
  %270 = sitofp i32 %269 to double
  %271 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %272 = getelementptr inbounds %class.powerDef, ptr %271, i32 0, i32 0
  %273 = getelementptr inbounds %class.powerComponents, ptr %272, i32 0, i32 0
  %274 = load double, ptr %273, align 8, !tbaa !37
  %275 = fmul double %274, %270
  store double %275, ptr %273, align 8, !tbaa !37
  %276 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %277 = getelementptr inbounds %class.powerDef, ptr %276, i32 0, i32 0
  %278 = getelementptr inbounds %class.powerComponents, ptr %277, i32 0, i32 0
  %279 = load double, ptr %278, align 8, !tbaa !38
  %280 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %281 = getelementptr inbounds %class.powerDef, ptr %280, i32 0, i32 2
  %282 = getelementptr inbounds %class.powerComponents, ptr %281, i32 0, i32 0
  store double %279, ptr %282, align 8, !tbaa !53
  %283 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %284 = getelementptr inbounds %class.Subarray, ptr %283, i32 0, i32 4
  %285 = load i32, ptr %284, align 8, !tbaa !49
  %286 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %287 = getelementptr inbounds %class.Subarray, ptr %286, i32 0, i32 5
  %288 = load i32, ptr %287, align 4, !tbaa !50
  %289 = add nsw i32 %285, %288
  %290 = sitofp i32 %289 to double
  %291 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %292 = getelementptr inbounds %class.powerDef, ptr %291, i32 0, i32 0
  %293 = getelementptr inbounds %class.powerComponents, ptr %292, i32 0, i32 0
  %294 = load double, ptr %293, align 8, !tbaa !38
  %295 = fmul double %294, %290
  store double %295, ptr %293, align 8, !tbaa !38
  %296 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %297 = getelementptr inbounds %class.Subarray, ptr %296, i32 0, i32 4
  %298 = load i32, ptr %297, align 8, !tbaa !49
  %299 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %300 = getelementptr inbounds %class.Subarray, ptr %299, i32 0, i32 5
  %301 = load i32, ptr %300, align 4, !tbaa !50
  %302 = add nsw i32 %298, %301
  %303 = sitofp i32 %302 to double
  %304 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %305 = getelementptr inbounds %class.powerDef, ptr %304, i32 0, i32 1
  %306 = getelementptr inbounds %class.powerComponents, ptr %305, i32 0, i32 0
  %307 = load double, ptr %306, align 8, !tbaa !39
  %308 = fmul double %307, %303
  store double %308, ptr %306, align 8, !tbaa !39
  %309 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %310 = getelementptr inbounds %class.Subarray, ptr %309, i32 0, i32 5
  %311 = load i32, ptr %310, align 4, !tbaa !50
  %312 = sitofp i32 %311 to double
  %313 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %314 = getelementptr inbounds %class.powerDef, ptr %313, i32 0, i32 2
  %315 = getelementptr inbounds %class.powerComponents, ptr %314, i32 0, i32 0
  %316 = load double, ptr %315, align 8, !tbaa !53
  %317 = fmul double %316, %312
  store double %317, ptr %315, align 8, !tbaa !53
  %318 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %319 = getelementptr inbounds %class.powerDef, ptr %318, i32 0, i32 0
  %320 = getelementptr inbounds %class.powerComponents, ptr %319, i32 0, i32 0
  %321 = load double, ptr %320, align 8, !tbaa !40
  %322 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %323 = load ptr, ptr %322, align 8, !tbaa !41
  %324 = getelementptr inbounds %class.Component, ptr %323, i32 0, i32 1
  %325 = getelementptr inbounds %class.powerDef, ptr %324, i32 0, i32 0
  %326 = getelementptr inbounds %class.powerComponents, ptr %325, i32 0, i32 0
  %327 = load double, ptr %326, align 8, !tbaa !19
  %328 = fadd double %321, %327
  %329 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 69
  %330 = load i32, ptr %329, align 4, !tbaa !54
  %331 = sitofp i32 %330 to double
  %332 = fmul double %328, %331
  %333 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %334 = getelementptr inbounds %class.powerDef, ptr %333, i32 0, i32 2
  %335 = getelementptr inbounds %class.powerComponents, ptr %334, i32 0, i32 0
  store double %332, ptr %335, align 8, !tbaa !55
  %336 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %337 = getelementptr inbounds %class.powerDef, ptr %336, i32 0, i32 0
  %338 = getelementptr inbounds %class.powerComponents, ptr %337, i32 0, i32 0
  %339 = load double, ptr %338, align 8, !tbaa !40
  %340 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %341 = load ptr, ptr %340, align 8, !tbaa !41
  %342 = getelementptr inbounds %class.Component, ptr %341, i32 0, i32 1
  %343 = getelementptr inbounds %class.powerDef, ptr %342, i32 0, i32 0
  %344 = getelementptr inbounds %class.powerComponents, ptr %343, i32 0, i32 0
  %345 = load double, ptr %344, align 8, !tbaa !19
  %346 = fadd double %339, %345
  %347 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 68
  %348 = load i32, ptr %347, align 8, !tbaa !42
  %349 = sitofp i32 %348 to double
  %350 = fmul double %346, %349
  %351 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %352 = getelementptr inbounds %class.powerDef, ptr %351, i32 0, i32 0
  %353 = getelementptr inbounds %class.powerComponents, ptr %352, i32 0, i32 0
  store double %350, ptr %353, align 8, !tbaa !40
  %354 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %355 = getelementptr inbounds %class.powerDef, ptr %354, i32 0, i32 0
  %356 = getelementptr inbounds %class.powerComponents, ptr %355, i32 0, i32 0
  %357 = load double, ptr %356, align 8, !tbaa !33
  %358 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %359 = getelementptr inbounds %class.powerDef, ptr %358, i32 0, i32 0
  %360 = getelementptr inbounds %class.powerComponents, ptr %359, i32 0, i32 0
  %361 = load double, ptr %360, align 8, !tbaa !37
  %362 = fadd double %357, %361
  %363 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %364 = getelementptr inbounds %class.powerDef, ptr %363, i32 0, i32 0
  %365 = getelementptr inbounds %class.powerComponents, ptr %364, i32 0, i32 0
  %366 = load double, ptr %365, align 8, !tbaa !38
  %367 = fadd double %362, %366
  %368 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %369 = getelementptr inbounds %class.powerDef, ptr %368, i32 0, i32 0
  %370 = getelementptr inbounds %class.powerComponents, ptr %369, i32 0, i32 0
  %371 = load double, ptr %370, align 8, !tbaa !40
  %372 = fadd double %367, %371
  %373 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %374 = getelementptr inbounds %class.powerDef, ptr %373, i32 0, i32 0
  %375 = getelementptr inbounds %class.powerComponents, ptr %374, i32 0, i32 0
  %376 = load double, ptr %375, align 8, !tbaa !19
  %377 = fadd double %376, %372
  store double %377, ptr %375, align 8, !tbaa !19
  %378 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %379 = getelementptr inbounds %class.powerDef, ptr %378, i32 0, i32 0
  %380 = getelementptr inbounds %class.powerComponents, ptr %379, i32 0, i32 0
  %381 = load double, ptr %380, align 8, !tbaa !24
  %382 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 3
  %383 = load ptr, ptr %382, align 8, !tbaa !43
  %384 = getelementptr inbounds %class.Component, ptr %383, i32 0, i32 1
  %385 = getelementptr inbounds %class.powerDef, ptr %384, i32 0, i32 0
  %386 = getelementptr inbounds %class.powerComponents, ptr %385, i32 0, i32 0
  %387 = load double, ptr %386, align 8, !tbaa !19
  %388 = fadd double %381, %387
  %389 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 4
  %390 = load ptr, ptr %389, align 8, !tbaa !44
  %391 = getelementptr inbounds %class.Component, ptr %390, i32 0, i32 1
  %392 = getelementptr inbounds %class.powerDef, ptr %391, i32 0, i32 0
  %393 = getelementptr inbounds %class.powerComponents, ptr %392, i32 0, i32 0
  %394 = load double, ptr %393, align 8, !tbaa !19
  %395 = fadd double %388, %394
  %396 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 5
  %397 = load ptr, ptr %396, align 8, !tbaa !45
  %398 = getelementptr inbounds %class.Component, ptr %397, i32 0, i32 1
  %399 = getelementptr inbounds %class.powerDef, ptr %398, i32 0, i32 0
  %400 = getelementptr inbounds %class.powerComponents, ptr %399, i32 0, i32 0
  %401 = load double, ptr %400, align 8, !tbaa !19
  %402 = fadd double %395, %401
  %403 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %404 = getelementptr inbounds %class.powerDef, ptr %403, i32 0, i32 0
  %405 = getelementptr inbounds %class.powerComponents, ptr %404, i32 0, i32 0
  %406 = load double, ptr %405, align 8, !tbaa !46
  %407 = fadd double %402, %406
  %408 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %409 = getelementptr inbounds %class.powerDef, ptr %408, i32 0, i32 0
  %410 = getelementptr inbounds %class.powerComponents, ptr %409, i32 0, i32 0
  %411 = load double, ptr %410, align 8, !tbaa !19
  %412 = fadd double %411, %407
  store double %412, ptr %410, align 8, !tbaa !19
  %413 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %414 = load i32, ptr %413, align 8, !tbaa !29
  %415 = uitofp i32 %414 to double
  %416 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %417 = getelementptr inbounds %class.powerDef, ptr %416, i32 0, i32 2
  %418 = getelementptr inbounds %class.powerComponents, ptr %417, i32 0, i32 0
  %419 = load double, ptr %418, align 8, !tbaa !56
  %420 = fmul double %419, %415
  store double %420, ptr %418, align 8, !tbaa !56
  %421 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %422 = load ptr, ptr %421, align 8, !tbaa !57
  %423 = getelementptr inbounds %class.Driver, ptr %422, i32 0, i32 9
  %424 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %425 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %424, ptr noundef nonnull align 8 dereferenceable(120) %423)
  %426 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %427 = getelementptr inbounds %class.powerDef, ptr %426, i32 0, i32 0
  %428 = getelementptr inbounds %class.powerComponents, ptr %427, i32 0, i32 0
  %429 = load double, ptr %428, align 8, !tbaa !58
  %430 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %431 = load i32, ptr %430, align 8, !tbaa !29
  %432 = uitofp i32 %431 to double
  %433 = fmul double %429, %432
  %434 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %435 = getelementptr inbounds %class.powerDef, ptr %434, i32 0, i32 2
  %436 = getelementptr inbounds %class.powerComponents, ptr %435, i32 0, i32 0
  store double %433, ptr %436, align 8, !tbaa !59
  %437 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %438 = load ptr, ptr %437, align 8, !tbaa !60
  %439 = getelementptr inbounds %class.Driver, ptr %438, i32 0, i32 9
  %440 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %441 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %440, ptr noundef nonnull align 8 dereferenceable(120) %439)
  %442 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %443 = getelementptr inbounds %class.powerDef, ptr %442, i32 0, i32 0
  %444 = getelementptr inbounds %class.powerComponents, ptr %443, i32 0, i32 0
  %445 = load double, ptr %444, align 8, !tbaa !61
  %446 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %447 = getelementptr inbounds %class.Subarray, ptr %446, i32 0, i32 4
  %448 = load i32, ptr %447, align 8, !tbaa !49
  %449 = sitofp i32 %448 to double
  %450 = fmul double %445, %449
  %451 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %452 = load i32, ptr %451, align 8, !tbaa !29
  %453 = uitofp i32 %452 to double
  %454 = fmul double %450, %453
  %455 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %456 = getelementptr inbounds %class.powerDef, ptr %455, i32 0, i32 2
  %457 = getelementptr inbounds %class.powerComponents, ptr %456, i32 0, i32 0
  store double %454, ptr %457, align 8, !tbaa !62
  %458 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %459 = load ptr, ptr %458, align 8, !tbaa !63
  %460 = getelementptr inbounds %class.Driver, ptr %459, i32 0, i32 9
  %461 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %462 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %461, ptr noundef nonnull align 8 dereferenceable(120) %460)
  %463 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %464 = getelementptr inbounds %class.powerDef, ptr %463, i32 0, i32 0
  %465 = getelementptr inbounds %class.powerComponents, ptr %464, i32 0, i32 0
  %466 = load double, ptr %465, align 8, !tbaa !64
  %467 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %468 = load i32, ptr %467, align 8, !tbaa !29
  %469 = uitofp i32 %468 to double
  %470 = fmul double %466, %469
  %471 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %472 = getelementptr inbounds %class.powerDef, ptr %471, i32 0, i32 2
  %473 = getelementptr inbounds %class.powerComponents, ptr %472, i32 0, i32 0
  store double %470, ptr %473, align 8, !tbaa !65
  %474 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 20
  %475 = load ptr, ptr %474, align 8, !tbaa !66
  %476 = getelementptr inbounds %class.Driver, ptr %475, i32 0, i32 9
  %477 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 31
  %478 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %477, ptr noundef nonnull align 8 dereferenceable(120) %476)
  %479 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 20
  %480 = load ptr, ptr %479, align 8, !tbaa !66
  %481 = getelementptr inbounds %class.Driver, ptr %480, i32 0, i32 9
  %482 = getelementptr inbounds %class.powerDef, ptr %481, i32 0, i32 0
  %483 = getelementptr inbounds %class.powerComponents, ptr %482, i32 0, i32 0
  %484 = load double, ptr %483, align 8, !tbaa !31
  %485 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 31
  %486 = getelementptr inbounds %class.powerDef, ptr %485, i32 0, i32 2
  %487 = getelementptr inbounds %class.powerComponents, ptr %486, i32 0, i32 0
  store double %484, ptr %487, align 8, !tbaa !67
  %488 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %489 = getelementptr inbounds %class.powerDef, ptr %488, i32 0, i32 2
  %490 = getelementptr inbounds %class.powerComponents, ptr %489, i32 0, i32 0
  %491 = load double, ptr %490, align 8, !tbaa !56
  %492 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %493 = getelementptr inbounds %class.powerDef, ptr %492, i32 0, i32 2
  %494 = getelementptr inbounds %class.powerComponents, ptr %493, i32 0, i32 0
  store double %491, ptr %494, align 8, !tbaa !68
  %495 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %496 = getelementptr inbounds %class.powerDef, ptr %495, i32 0, i32 2
  %497 = getelementptr inbounds %class.powerComponents, ptr %496, i32 0, i32 0
  %498 = load double, ptr %497, align 8, !tbaa !59
  %499 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %500 = getelementptr inbounds %class.powerDef, ptr %499, i32 0, i32 2
  %501 = getelementptr inbounds %class.powerComponents, ptr %500, i32 0, i32 0
  %502 = load double, ptr %501, align 8, !tbaa !68
  %503 = fadd double %502, %498
  store double %503, ptr %501, align 8, !tbaa !68
  %504 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %505 = getelementptr inbounds %class.powerDef, ptr %504, i32 0, i32 2
  %506 = getelementptr inbounds %class.powerComponents, ptr %505, i32 0, i32 0
  %507 = load double, ptr %506, align 8, !tbaa !62
  %508 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %509 = getelementptr inbounds %class.powerDef, ptr %508, i32 0, i32 2
  %510 = getelementptr inbounds %class.powerComponents, ptr %509, i32 0, i32 0
  %511 = load double, ptr %510, align 8, !tbaa !68
  %512 = fadd double %511, %507
  store double %512, ptr %510, align 8, !tbaa !68
  %513 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %514 = getelementptr inbounds %class.powerDef, ptr %513, i32 0, i32 2
  %515 = getelementptr inbounds %class.powerComponents, ptr %514, i32 0, i32 0
  %516 = load double, ptr %515, align 8, !tbaa !65
  %517 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %518 = getelementptr inbounds %class.powerDef, ptr %517, i32 0, i32 2
  %519 = getelementptr inbounds %class.powerComponents, ptr %518, i32 0, i32 0
  %520 = load double, ptr %519, align 8, !tbaa !68
  %521 = fadd double %520, %516
  store double %521, ptr %519, align 8, !tbaa !68
  %522 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %523 = getelementptr inbounds %class.powerDef, ptr %522, i32 0, i32 2
  %524 = getelementptr inbounds %class.powerComponents, ptr %523, i32 0, i32 0
  %525 = load double, ptr %524, align 8, !tbaa !68
  %526 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %527 = getelementptr inbounds %class.powerDef, ptr %526, i32 0, i32 2
  %528 = getelementptr inbounds %class.powerComponents, ptr %527, i32 0, i32 0
  %529 = load double, ptr %528, align 8, !tbaa !69
  %530 = fadd double %529, %525
  store double %530, ptr %528, align 8, !tbaa !69
  br label %793

531:                                              ; preds = %209
  %532 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %533 = load ptr, ptr %532, align 8, !tbaa !47
  %534 = getelementptr inbounds %class.Driver, ptr %533, i32 0, i32 9
  %535 = getelementptr inbounds %class.powerDef, ptr %534, i32 0, i32 0
  %536 = getelementptr inbounds %class.powerComponents, ptr %535, i32 0, i32 0
  %537 = load double, ptr %536, align 8, !tbaa !31
  %538 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %539 = getelementptr inbounds %class.powerDef, ptr %538, i32 0, i32 0
  %540 = getelementptr inbounds %class.powerComponents, ptr %539, i32 0, i32 0
  store double %537, ptr %540, align 8, !tbaa !33
  %541 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %542 = getelementptr inbounds %class.Subarray, ptr %541, i32 0, i32 4
  %543 = load i32, ptr %542, align 8, !tbaa !49
  %544 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %545 = load i32, ptr %544, align 8, !tbaa !35
  %546 = sdiv i32 %543, %545
  %547 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  store i32 %546, ptr %547, align 8, !tbaa !36
  %548 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %549 = load i32, ptr %548, align 8, !tbaa !36
  %550 = sitofp i32 %549 to double
  %551 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %552 = getelementptr inbounds %class.powerDef, ptr %551, i32 0, i32 0
  %553 = getelementptr inbounds %class.powerComponents, ptr %552, i32 0, i32 0
  %554 = load double, ptr %553, align 8, !tbaa !37
  %555 = fmul double %554, %550
  store double %555, ptr %553, align 8, !tbaa !37
  %556 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %557 = getelementptr inbounds %class.powerDef, ptr %556, i32 0, i32 2
  %558 = getelementptr inbounds %class.powerComponents, ptr %557, i32 0, i32 0
  store double 0.000000e+00, ptr %558, align 8, !tbaa !52
  %559 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %560 = getelementptr inbounds %class.Subarray, ptr %559, i32 0, i32 4
  %561 = load i32, ptr %560, align 8, !tbaa !49
  %562 = sitofp i32 %561 to double
  %563 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %564 = getelementptr inbounds %class.powerDef, ptr %563, i32 0, i32 0
  %565 = getelementptr inbounds %class.powerComponents, ptr %564, i32 0, i32 0
  %566 = load double, ptr %565, align 8, !tbaa !38
  %567 = fmul double %566, %562
  store double %567, ptr %565, align 8, !tbaa !38
  %568 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %569 = getelementptr inbounds %class.powerDef, ptr %568, i32 0, i32 2
  %570 = getelementptr inbounds %class.powerComponents, ptr %569, i32 0, i32 0
  store double 0.000000e+00, ptr %570, align 8, !tbaa !53
  %571 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %572 = getelementptr inbounds %class.Subarray, ptr %571, i32 0, i32 4
  %573 = load i32, ptr %572, align 8, !tbaa !49
  %574 = sitofp i32 %573 to double
  %575 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %576 = getelementptr inbounds %class.powerDef, ptr %575, i32 0, i32 1
  %577 = getelementptr inbounds %class.powerComponents, ptr %576, i32 0, i32 0
  %578 = load double, ptr %577, align 8, !tbaa !39
  %579 = fmul double %578, %574
  store double %579, ptr %577, align 8, !tbaa !39
  %580 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %581 = getelementptr inbounds %class.powerDef, ptr %580, i32 0, i32 0
  %582 = getelementptr inbounds %class.powerComponents, ptr %581, i32 0, i32 0
  %583 = load double, ptr %582, align 8, !tbaa !40
  %584 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %585 = load ptr, ptr %584, align 8, !tbaa !41
  %586 = getelementptr inbounds %class.Component, ptr %585, i32 0, i32 1
  %587 = getelementptr inbounds %class.powerDef, ptr %586, i32 0, i32 0
  %588 = getelementptr inbounds %class.powerComponents, ptr %587, i32 0, i32 0
  %589 = load double, ptr %588, align 8, !tbaa !19
  %590 = fadd double %583, %589
  %591 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 69
  %592 = load i32, ptr %591, align 4, !tbaa !54
  %593 = sitofp i32 %592 to double
  %594 = fmul double %590, %593
  %595 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %596 = getelementptr inbounds %class.powerDef, ptr %595, i32 0, i32 2
  %597 = getelementptr inbounds %class.powerComponents, ptr %596, i32 0, i32 0
  store double %594, ptr %597, align 8, !tbaa !55
  %598 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %599 = getelementptr inbounds %class.powerDef, ptr %598, i32 0, i32 0
  %600 = getelementptr inbounds %class.powerComponents, ptr %599, i32 0, i32 0
  %601 = load double, ptr %600, align 8, !tbaa !40
  %602 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %603 = load ptr, ptr %602, align 8, !tbaa !41
  %604 = getelementptr inbounds %class.Component, ptr %603, i32 0, i32 1
  %605 = getelementptr inbounds %class.powerDef, ptr %604, i32 0, i32 0
  %606 = getelementptr inbounds %class.powerComponents, ptr %605, i32 0, i32 0
  %607 = load double, ptr %606, align 8, !tbaa !19
  %608 = fadd double %601, %607
  %609 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 68
  %610 = load i32, ptr %609, align 8, !tbaa !42
  %611 = sitofp i32 %610 to double
  %612 = fmul double %608, %611
  %613 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %614 = getelementptr inbounds %class.powerDef, ptr %613, i32 0, i32 0
  %615 = getelementptr inbounds %class.powerComponents, ptr %614, i32 0, i32 0
  store double %612, ptr %615, align 8, !tbaa !40
  %616 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %617 = getelementptr inbounds %class.powerDef, ptr %616, i32 0, i32 0
  %618 = getelementptr inbounds %class.powerComponents, ptr %617, i32 0, i32 0
  %619 = load double, ptr %618, align 8, !tbaa !33
  %620 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %621 = getelementptr inbounds %class.powerDef, ptr %620, i32 0, i32 0
  %622 = getelementptr inbounds %class.powerComponents, ptr %621, i32 0, i32 0
  %623 = load double, ptr %622, align 8, !tbaa !37
  %624 = fadd double %619, %623
  %625 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %626 = getelementptr inbounds %class.powerDef, ptr %625, i32 0, i32 0
  %627 = getelementptr inbounds %class.powerComponents, ptr %626, i32 0, i32 0
  %628 = load double, ptr %627, align 8, !tbaa !38
  %629 = fadd double %624, %628
  %630 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %631 = getelementptr inbounds %class.powerDef, ptr %630, i32 0, i32 0
  %632 = getelementptr inbounds %class.powerComponents, ptr %631, i32 0, i32 0
  %633 = load double, ptr %632, align 8, !tbaa !40
  %634 = fadd double %629, %633
  %635 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %636 = getelementptr inbounds %class.powerDef, ptr %635, i32 0, i32 0
  %637 = getelementptr inbounds %class.powerComponents, ptr %636, i32 0, i32 0
  %638 = load double, ptr %637, align 8, !tbaa !19
  %639 = fadd double %638, %634
  store double %639, ptr %637, align 8, !tbaa !19
  %640 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %641 = getelementptr inbounds %class.powerDef, ptr %640, i32 0, i32 0
  %642 = getelementptr inbounds %class.powerComponents, ptr %641, i32 0, i32 0
  %643 = load double, ptr %642, align 8, !tbaa !24
  %644 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 3
  %645 = load ptr, ptr %644, align 8, !tbaa !43
  %646 = getelementptr inbounds %class.Component, ptr %645, i32 0, i32 1
  %647 = getelementptr inbounds %class.powerDef, ptr %646, i32 0, i32 0
  %648 = getelementptr inbounds %class.powerComponents, ptr %647, i32 0, i32 0
  %649 = load double, ptr %648, align 8, !tbaa !19
  %650 = fadd double %643, %649
  %651 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 4
  %652 = load ptr, ptr %651, align 8, !tbaa !44
  %653 = getelementptr inbounds %class.Component, ptr %652, i32 0, i32 1
  %654 = getelementptr inbounds %class.powerDef, ptr %653, i32 0, i32 0
  %655 = getelementptr inbounds %class.powerComponents, ptr %654, i32 0, i32 0
  %656 = load double, ptr %655, align 8, !tbaa !19
  %657 = fadd double %650, %656
  %658 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 5
  %659 = load ptr, ptr %658, align 8, !tbaa !45
  %660 = getelementptr inbounds %class.Component, ptr %659, i32 0, i32 1
  %661 = getelementptr inbounds %class.powerDef, ptr %660, i32 0, i32 0
  %662 = getelementptr inbounds %class.powerComponents, ptr %661, i32 0, i32 0
  %663 = load double, ptr %662, align 8, !tbaa !19
  %664 = fadd double %657, %663
  %665 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %666 = getelementptr inbounds %class.powerDef, ptr %665, i32 0, i32 0
  %667 = getelementptr inbounds %class.powerComponents, ptr %666, i32 0, i32 0
  %668 = load double, ptr %667, align 8, !tbaa !46
  %669 = fadd double %664, %668
  %670 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %671 = getelementptr inbounds %class.powerDef, ptr %670, i32 0, i32 0
  %672 = getelementptr inbounds %class.powerComponents, ptr %671, i32 0, i32 0
  %673 = load double, ptr %672, align 8, !tbaa !19
  %674 = fadd double %673, %669
  store double %674, ptr %672, align 8, !tbaa !19
  %675 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %676 = load i32, ptr %675, align 8, !tbaa !29
  %677 = uitofp i32 %676 to double
  %678 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %679 = getelementptr inbounds %class.powerDef, ptr %678, i32 0, i32 2
  %680 = getelementptr inbounds %class.powerComponents, ptr %679, i32 0, i32 0
  %681 = load double, ptr %680, align 8, !tbaa !56
  %682 = fmul double %681, %677
  store double %682, ptr %680, align 8, !tbaa !56
  %683 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %684 = load ptr, ptr %683, align 8, !tbaa !57
  %685 = getelementptr inbounds %class.Driver, ptr %684, i32 0, i32 9
  %686 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %687 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %686, ptr noundef nonnull align 8 dereferenceable(120) %685)
  %688 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %689 = getelementptr inbounds %class.powerDef, ptr %688, i32 0, i32 0
  %690 = getelementptr inbounds %class.powerComponents, ptr %689, i32 0, i32 0
  %691 = load double, ptr %690, align 8, !tbaa !58
  %692 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %693 = load i32, ptr %692, align 8, !tbaa !29
  %694 = uitofp i32 %693 to double
  %695 = fmul double %691, %694
  %696 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %697 = getelementptr inbounds %class.powerDef, ptr %696, i32 0, i32 2
  %698 = getelementptr inbounds %class.powerComponents, ptr %697, i32 0, i32 0
  store double %695, ptr %698, align 8, !tbaa !59
  %699 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %700 = load ptr, ptr %699, align 8, !tbaa !60
  %701 = getelementptr inbounds %class.Driver, ptr %700, i32 0, i32 9
  %702 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %703 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %702, ptr noundef nonnull align 8 dereferenceable(120) %701)
  %704 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %705 = getelementptr inbounds %class.powerDef, ptr %704, i32 0, i32 0
  %706 = getelementptr inbounds %class.powerComponents, ptr %705, i32 0, i32 0
  %707 = load double, ptr %706, align 8, !tbaa !61
  %708 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %709 = getelementptr inbounds %class.Subarray, ptr %708, i32 0, i32 4
  %710 = load i32, ptr %709, align 8, !tbaa !49
  %711 = sitofp i32 %710 to double
  %712 = fmul double %707, %711
  %713 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %714 = load i32, ptr %713, align 8, !tbaa !29
  %715 = uitofp i32 %714 to double
  %716 = fmul double %712, %715
  %717 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %718 = getelementptr inbounds %class.powerDef, ptr %717, i32 0, i32 2
  %719 = getelementptr inbounds %class.powerComponents, ptr %718, i32 0, i32 0
  store double %716, ptr %719, align 8, !tbaa !62
  %720 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %721 = load ptr, ptr %720, align 8, !tbaa !63
  %722 = getelementptr inbounds %class.Driver, ptr %721, i32 0, i32 9
  %723 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %724 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %723, ptr noundef nonnull align 8 dereferenceable(120) %722)
  %725 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %726 = getelementptr inbounds %class.powerDef, ptr %725, i32 0, i32 0
  %727 = getelementptr inbounds %class.powerComponents, ptr %726, i32 0, i32 0
  %728 = load double, ptr %727, align 8, !tbaa !64
  %729 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %730 = load i32, ptr %729, align 8, !tbaa !29
  %731 = uitofp i32 %730 to double
  %732 = fmul double %728, %731
  %733 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %734 = getelementptr inbounds %class.powerDef, ptr %733, i32 0, i32 2
  %735 = getelementptr inbounds %class.powerComponents, ptr %734, i32 0, i32 0
  store double %732, ptr %735, align 8, !tbaa !65
  %736 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 20
  %737 = load ptr, ptr %736, align 8, !tbaa !66
  %738 = getelementptr inbounds %class.Driver, ptr %737, i32 0, i32 9
  %739 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 31
  %740 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %739, ptr noundef nonnull align 8 dereferenceable(120) %738)
  %741 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 20
  %742 = load ptr, ptr %741, align 8, !tbaa !66
  %743 = getelementptr inbounds %class.Driver, ptr %742, i32 0, i32 9
  %744 = getelementptr inbounds %class.powerDef, ptr %743, i32 0, i32 0
  %745 = getelementptr inbounds %class.powerComponents, ptr %744, i32 0, i32 0
  %746 = load double, ptr %745, align 8, !tbaa !31
  %747 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 31
  %748 = getelementptr inbounds %class.powerDef, ptr %747, i32 0, i32 2
  %749 = getelementptr inbounds %class.powerComponents, ptr %748, i32 0, i32 0
  store double %746, ptr %749, align 8, !tbaa !67
  %750 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %751 = getelementptr inbounds %class.powerDef, ptr %750, i32 0, i32 2
  %752 = getelementptr inbounds %class.powerComponents, ptr %751, i32 0, i32 0
  %753 = load double, ptr %752, align 8, !tbaa !56
  %754 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %755 = getelementptr inbounds %class.powerDef, ptr %754, i32 0, i32 2
  %756 = getelementptr inbounds %class.powerComponents, ptr %755, i32 0, i32 0
  store double %753, ptr %756, align 8, !tbaa !68
  %757 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 29
  %758 = getelementptr inbounds %class.powerDef, ptr %757, i32 0, i32 2
  %759 = getelementptr inbounds %class.powerComponents, ptr %758, i32 0, i32 0
  %760 = load double, ptr %759, align 8, !tbaa !59
  %761 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %762 = getelementptr inbounds %class.powerDef, ptr %761, i32 0, i32 2
  %763 = getelementptr inbounds %class.powerComponents, ptr %762, i32 0, i32 0
  %764 = load double, ptr %763, align 8, !tbaa !68
  %765 = fadd double %764, %760
  store double %765, ptr %763, align 8, !tbaa !68
  %766 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 47
  %767 = getelementptr inbounds %class.powerDef, ptr %766, i32 0, i32 2
  %768 = getelementptr inbounds %class.powerComponents, ptr %767, i32 0, i32 0
  %769 = load double, ptr %768, align 8, !tbaa !62
  %770 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %771 = getelementptr inbounds %class.powerDef, ptr %770, i32 0, i32 2
  %772 = getelementptr inbounds %class.powerComponents, ptr %771, i32 0, i32 0
  %773 = load double, ptr %772, align 8, !tbaa !68
  %774 = fadd double %773, %769
  store double %774, ptr %772, align 8, !tbaa !68
  %775 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 30
  %776 = getelementptr inbounds %class.powerDef, ptr %775, i32 0, i32 2
  %777 = getelementptr inbounds %class.powerComponents, ptr %776, i32 0, i32 0
  %778 = load double, ptr %777, align 8, !tbaa !65
  %779 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %780 = getelementptr inbounds %class.powerDef, ptr %779, i32 0, i32 2
  %781 = getelementptr inbounds %class.powerComponents, ptr %780, i32 0, i32 0
  %782 = load double, ptr %781, align 8, !tbaa !68
  %783 = fadd double %782, %778
  store double %783, ptr %781, align 8, !tbaa !68
  %784 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %785 = getelementptr inbounds %class.powerDef, ptr %784, i32 0, i32 2
  %786 = getelementptr inbounds %class.powerComponents, ptr %785, i32 0, i32 0
  %787 = load double, ptr %786, align 8, !tbaa !68
  %788 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %789 = getelementptr inbounds %class.powerDef, ptr %788, i32 0, i32 2
  %790 = getelementptr inbounds %class.powerComponents, ptr %789, i32 0, i32 0
  %791 = load double, ptr %790, align 8, !tbaa !69
  %792 = fadd double %791, %787
  store double %792, ptr %790, align 8, !tbaa !69
  br label %793

793:                                              ; preds = %531, %213
  br label %794

794:                                              ; preds = %793, %72
  %795 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 56
  %796 = load i8, ptr %795, align 1, !tbaa !25, !range !26, !noundef !27
  %797 = trunc i8 %796 to i1
  br i1 %797, label %1283, label %798

798:                                              ; preds = %794
  %799 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 57
  %800 = load i8, ptr %799, align 2, !tbaa !28, !range !26, !noundef !27
  %801 = trunc i8 %800 to i1
  br i1 %801, label %1283, label %802

802:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #4
  %803 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %804 = load i32, ptr %803, align 8, !tbaa !36
  %805 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %806 = load ptr, ptr %805, align 8, !tbaa !70
  %807 = getelementptr inbounds %class.DynamicParameter, ptr %806, i32 0, i32 13
  %808 = load i32, ptr %807, align 4, !tbaa !71
  %809 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %810 = load ptr, ptr %809, align 8, !tbaa !70
  %811 = getelementptr inbounds %class.DynamicParameter, ptr %810, i32 0, i32 14
  %812 = load i32, ptr %811, align 8, !tbaa !73
  %813 = mul nsw i32 %808, %812
  %814 = sdiv i32 %804, %813
  store i32 %814, ptr %3, align 4, !tbaa !74
  %815 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %816 = getelementptr inbounds %class.Subarray, ptr %815, i32 0, i32 2
  %817 = load i32, ptr %816, align 8, !tbaa !75
  %818 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %819 = getelementptr inbounds %class.Subarray, ptr %818, i32 0, i32 3
  %820 = load i32, ptr %819, align 4, !tbaa !34
  %821 = mul i32 %817, %820
  %822 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %823 = load i32, ptr %822, align 8, !tbaa !29
  %824 = mul i32 %821, %823
  %825 = uitofp i32 %824 to double
  %826 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %827 = getelementptr inbounds %class.powerDef, ptr %826, i32 0, i32 0
  %828 = getelementptr inbounds %class.powerComponents, ptr %827, i32 0, i32 1
  %829 = load double, ptr %828, align 8, !tbaa !76
  %830 = fmul double %829, %825
  store double %830, ptr %828, align 8, !tbaa !76
  %831 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %832 = load ptr, ptr %831, align 8, !tbaa !30
  %833 = getelementptr inbounds %class.Driver, ptr %832, i32 0, i32 9
  %834 = getelementptr inbounds %class.powerDef, ptr %833, i32 0, i32 0
  %835 = getelementptr inbounds %class.powerComponents, ptr %834, i32 0, i32 1
  %836 = load double, ptr %835, align 8, !tbaa !77
  %837 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %838 = load i32, ptr %837, align 8, !tbaa !29
  %839 = uitofp i32 %838 to double
  %840 = fmul double %836, %839
  %841 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %842 = getelementptr inbounds %class.powerDef, ptr %841, i32 0, i32 0
  %843 = getelementptr inbounds %class.powerComponents, ptr %842, i32 0, i32 1
  store double %840, ptr %843, align 8, !tbaa !78
  %844 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %845 = load i32, ptr %844, align 8, !tbaa !36
  %846 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %847 = load i32, ptr %846, align 8, !tbaa !29
  %848 = mul i32 %845, %847
  %849 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %850 = load i32, ptr %849, align 8, !tbaa !79
  %851 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %852 = load i32, ptr %851, align 4, !tbaa !80
  %853 = add nsw i32 %850, %852
  %854 = mul i32 %848, %853
  %855 = uitofp i32 %854 to double
  %856 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %857 = getelementptr inbounds %class.powerDef, ptr %856, i32 0, i32 0
  %858 = getelementptr inbounds %class.powerComponents, ptr %857, i32 0, i32 1
  %859 = load double, ptr %858, align 8, !tbaa !81
  %860 = fmul double %859, %855
  store double %860, ptr %858, align 8, !tbaa !81
  %861 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %862 = getelementptr inbounds %class.powerDef, ptr %861, i32 0, i32 0
  %863 = getelementptr inbounds %class.powerComponents, ptr %862, i32 0, i32 1
  %864 = load double, ptr %863, align 8, !tbaa !82
  %865 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %866 = load ptr, ptr %865, align 8, !tbaa !41
  %867 = getelementptr inbounds %class.Component, ptr %866, i32 0, i32 1
  %868 = getelementptr inbounds %class.powerDef, ptr %867, i32 0, i32 0
  %869 = getelementptr inbounds %class.powerComponents, ptr %868, i32 0, i32 1
  %870 = load double, ptr %869, align 8, !tbaa !83
  %871 = fadd double %864, %870
  %872 = load i32, ptr %3, align 4, !tbaa !74
  %873 = sitofp i32 %872 to double
  %874 = fmul double %871, %873
  %875 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %876 = load i32, ptr %875, align 8, !tbaa !29
  %877 = uitofp i32 %876 to double
  %878 = fmul double %874, %877
  %879 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %880 = load i32, ptr %879, align 8, !tbaa !79
  %881 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %882 = load i32, ptr %881, align 4, !tbaa !80
  %883 = add nsw i32 %880, %882
  %884 = sitofp i32 %883 to double
  %885 = fmul double %878, %884
  %886 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %887 = getelementptr inbounds %class.powerDef, ptr %886, i32 0, i32 0
  %888 = getelementptr inbounds %class.powerComponents, ptr %887, i32 0, i32 1
  store double %885, ptr %888, align 8, !tbaa !82
  %889 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %890 = getelementptr inbounds %class.powerDef, ptr %889, i32 0, i32 0
  %891 = getelementptr inbounds %class.powerComponents, ptr %890, i32 0, i32 1
  %892 = load double, ptr %891, align 8, !tbaa !76
  %893 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %894 = getelementptr inbounds %class.powerDef, ptr %893, i32 0, i32 0
  %895 = getelementptr inbounds %class.powerComponents, ptr %894, i32 0, i32 1
  %896 = load double, ptr %895, align 8, !tbaa !78
  %897 = fadd double %892, %896
  %898 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %899 = getelementptr inbounds %class.powerDef, ptr %898, i32 0, i32 0
  %900 = getelementptr inbounds %class.powerComponents, ptr %899, i32 0, i32 1
  %901 = load double, ptr %900, align 8, !tbaa !81
  %902 = fadd double %897, %901
  %903 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %904 = getelementptr inbounds %class.powerDef, ptr %903, i32 0, i32 0
  %905 = getelementptr inbounds %class.powerComponents, ptr %904, i32 0, i32 1
  %906 = load double, ptr %905, align 8, !tbaa !82
  %907 = fadd double %902, %906
  %908 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %909 = getelementptr inbounds %class.powerDef, ptr %908, i32 0, i32 0
  %910 = getelementptr inbounds %class.powerComponents, ptr %909, i32 0, i32 1
  %911 = load double, ptr %910, align 8, !tbaa !83
  %912 = fadd double %911, %907
  store double %912, ptr %910, align 8, !tbaa !83
  %913 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 68
  %914 = load i32, ptr %913, align 8, !tbaa !42
  %915 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %916 = load i32, ptr %915, align 8, !tbaa !79
  %917 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %918 = load i32, ptr %917, align 4, !tbaa !80
  %919 = add nsw i32 %916, %918
  %920 = mul nsw i32 %914, %919
  %921 = sitofp i32 %920 to double
  %922 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %923 = getelementptr inbounds %class.powerDef, ptr %922, i32 0, i32 0
  %924 = getelementptr inbounds %class.powerComponents, ptr %923, i32 0, i32 1
  %925 = load double, ptr %924, align 8, !tbaa !84
  %926 = fmul double %925, %921
  store double %926, ptr %924, align 8, !tbaa !84
  %927 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %928 = getelementptr inbounds %class.powerDef, ptr %927, i32 0, i32 0
  %929 = getelementptr inbounds %class.powerComponents, ptr %928, i32 0, i32 1
  %930 = load double, ptr %929, align 8, !tbaa !84
  %931 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %932 = getelementptr inbounds %class.powerDef, ptr %931, i32 0, i32 0
  %933 = getelementptr inbounds %class.powerComponents, ptr %932, i32 0, i32 1
  %934 = load double, ptr %933, align 8, !tbaa !83
  %935 = fadd double %934, %930
  store double %935, ptr %933, align 8, !tbaa !83
  %936 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %937 = load ptr, ptr %936, align 8, !tbaa !23
  %938 = getelementptr inbounds %class.Component, ptr %937, i32 0, i32 1
  %939 = getelementptr inbounds %class.powerDef, ptr %938, i32 0, i32 0
  %940 = getelementptr inbounds %class.powerComponents, ptr %939, i32 0, i32 1
  %941 = load double, ptr %940, align 8, !tbaa !83
  %942 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %943 = getelementptr inbounds %class.Subarray, ptr %942, i32 0, i32 2
  %944 = load i32, ptr %943, align 8, !tbaa !75
  %945 = uitofp i32 %944 to double
  %946 = fmul double %941, %945
  %947 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %948 = load i32, ptr %947, align 8, !tbaa !29
  %949 = uitofp i32 %948 to double
  %950 = fmul double %946, %949
  %951 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %952 = getelementptr inbounds %class.powerDef, ptr %951, i32 0, i32 0
  %953 = getelementptr inbounds %class.powerComponents, ptr %952, i32 0, i32 1
  store double %950, ptr %953, align 8, !tbaa !85
  %954 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 3
  %955 = load ptr, ptr %954, align 8, !tbaa !43
  %956 = getelementptr inbounds %class.Component, ptr %955, i32 0, i32 1
  %957 = getelementptr inbounds %class.powerDef, ptr %956, i32 0, i32 0
  %958 = getelementptr inbounds %class.powerComponents, ptr %957, i32 0, i32 1
  %959 = load double, ptr %958, align 8, !tbaa !83
  %960 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %961 = load i32, ptr %960, align 8, !tbaa !35
  %962 = sitofp i32 %961 to double
  %963 = fmul double %959, %962
  %964 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 22
  %965 = getelementptr inbounds %class.powerDef, ptr %964, i32 0, i32 0
  %966 = getelementptr inbounds %class.powerComponents, ptr %965, i32 0, i32 1
  store double %963, ptr %966, align 8, !tbaa !86
  %967 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 4
  %968 = load ptr, ptr %967, align 8, !tbaa !44
  %969 = getelementptr inbounds %class.Component, ptr %968, i32 0, i32 1
  %970 = getelementptr inbounds %class.powerDef, ptr %969, i32 0, i32 0
  %971 = getelementptr inbounds %class.powerComponents, ptr %970, i32 0, i32 1
  %972 = load double, ptr %971, align 8, !tbaa !83
  %973 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %974 = load ptr, ptr %973, align 8, !tbaa !70
  %975 = getelementptr inbounds %class.DynamicParameter, ptr %974, i32 0, i32 13
  %976 = load i32, ptr %975, align 4, !tbaa !71
  %977 = sitofp i32 %976 to double
  %978 = fmul double %972, %977
  %979 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 23
  %980 = getelementptr inbounds %class.powerDef, ptr %979, i32 0, i32 0
  %981 = getelementptr inbounds %class.powerComponents, ptr %980, i32 0, i32 1
  store double %978, ptr %981, align 8, !tbaa !87
  %982 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 5
  %983 = load ptr, ptr %982, align 8, !tbaa !45
  %984 = getelementptr inbounds %class.Component, ptr %983, i32 0, i32 1
  %985 = getelementptr inbounds %class.powerDef, ptr %984, i32 0, i32 0
  %986 = getelementptr inbounds %class.powerComponents, ptr %985, i32 0, i32 1
  %987 = load double, ptr %986, align 8, !tbaa !83
  %988 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %989 = load ptr, ptr %988, align 8, !tbaa !70
  %990 = getelementptr inbounds %class.DynamicParameter, ptr %989, i32 0, i32 14
  %991 = load i32, ptr %990, align 8, !tbaa !73
  %992 = sitofp i32 %991 to double
  %993 = fmul double %987, %992
  %994 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 24
  %995 = getelementptr inbounds %class.powerDef, ptr %994, i32 0, i32 0
  %996 = getelementptr inbounds %class.powerComponents, ptr %995, i32 0, i32 1
  store double %993, ptr %996, align 8, !tbaa !88
  %997 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %998 = load ptr, ptr %997, align 8, !tbaa !9
  %999 = getelementptr inbounds %class.Component, ptr %998, i32 0, i32 1
  %1000 = getelementptr inbounds %class.powerDef, ptr %999, i32 0, i32 0
  %1001 = getelementptr inbounds %class.powerComponents, ptr %1000, i32 0, i32 1
  %1002 = load double, ptr %1001, align 8, !tbaa !83
  %1003 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 11
  %1004 = load ptr, ptr %1003, align 8, !tbaa !20
  %1005 = getelementptr inbounds %class.Component, ptr %1004, i32 0, i32 1
  %1006 = getelementptr inbounds %class.powerDef, ptr %1005, i32 0, i32 0
  %1007 = getelementptr inbounds %class.powerComponents, ptr %1006, i32 0, i32 1
  %1008 = load double, ptr %1007, align 8, !tbaa !83
  %1009 = fadd double %1002, %1008
  %1010 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 12
  %1011 = load ptr, ptr %1010, align 8, !tbaa !21
  %1012 = getelementptr inbounds %class.Component, ptr %1011, i32 0, i32 1
  %1013 = getelementptr inbounds %class.powerDef, ptr %1012, i32 0, i32 0
  %1014 = getelementptr inbounds %class.powerComponents, ptr %1013, i32 0, i32 1
  %1015 = load double, ptr %1014, align 8, !tbaa !83
  %1016 = fadd double %1009, %1015
  %1017 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 13
  %1018 = load ptr, ptr %1017, align 8, !tbaa !22
  %1019 = getelementptr inbounds %class.Component, ptr %1018, i32 0, i32 1
  %1020 = getelementptr inbounds %class.powerDef, ptr %1019, i32 0, i32 0
  %1021 = getelementptr inbounds %class.powerComponents, ptr %1020, i32 0, i32 1
  %1022 = load double, ptr %1021, align 8, !tbaa !83
  %1023 = fadd double %1016, %1022
  %1024 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1025 = getelementptr inbounds %class.powerDef, ptr %1024, i32 0, i32 0
  %1026 = getelementptr inbounds %class.powerComponents, ptr %1025, i32 0, i32 1
  %1027 = load double, ptr %1026, align 8, !tbaa !85
  %1028 = fadd double %1023, %1027
  %1029 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 22
  %1030 = getelementptr inbounds %class.powerDef, ptr %1029, i32 0, i32 0
  %1031 = getelementptr inbounds %class.powerComponents, ptr %1030, i32 0, i32 1
  %1032 = load double, ptr %1031, align 8, !tbaa !86
  %1033 = fadd double %1028, %1032
  %1034 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 23
  %1035 = getelementptr inbounds %class.powerDef, ptr %1034, i32 0, i32 0
  %1036 = getelementptr inbounds %class.powerComponents, ptr %1035, i32 0, i32 1
  %1037 = load double, ptr %1036, align 8, !tbaa !87
  %1038 = fadd double %1033, %1037
  %1039 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 24
  %1040 = getelementptr inbounds %class.powerDef, ptr %1039, i32 0, i32 0
  %1041 = getelementptr inbounds %class.powerComponents, ptr %1040, i32 0, i32 1
  %1042 = load double, ptr %1041, align 8, !tbaa !88
  %1043 = fadd double %1038, %1042
  %1044 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1045 = getelementptr inbounds %class.powerDef, ptr %1044, i32 0, i32 0
  %1046 = getelementptr inbounds %class.powerComponents, ptr %1045, i32 0, i32 1
  %1047 = load double, ptr %1046, align 8, !tbaa !83
  %1048 = fadd double %1047, %1043
  store double %1048, ptr %1046, align 8, !tbaa !83
  %1049 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1050 = getelementptr inbounds %class.Subarray, ptr %1049, i32 0, i32 2
  %1051 = load i32, ptr %1050, align 8, !tbaa !75
  %1052 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1053 = getelementptr inbounds %class.Subarray, ptr %1052, i32 0, i32 3
  %1054 = load i32, ptr %1053, align 4, !tbaa !34
  %1055 = mul i32 %1051, %1054
  %1056 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1057 = load i32, ptr %1056, align 8, !tbaa !29
  %1058 = mul i32 %1055, %1057
  %1059 = uitofp i32 %1058 to double
  %1060 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1061 = getelementptr inbounds %class.powerDef, ptr %1060, i32 0, i32 0
  %1062 = getelementptr inbounds %class.powerComponents, ptr %1061, i32 0, i32 2
  %1063 = load double, ptr %1062, align 8, !tbaa !89
  %1064 = fmul double %1063, %1059
  store double %1064, ptr %1062, align 8, !tbaa !89
  %1065 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %1066 = load ptr, ptr %1065, align 8, !tbaa !30
  %1067 = getelementptr inbounds %class.Driver, ptr %1066, i32 0, i32 9
  %1068 = getelementptr inbounds %class.powerDef, ptr %1067, i32 0, i32 0
  %1069 = getelementptr inbounds %class.powerComponents, ptr %1068, i32 0, i32 2
  %1070 = load double, ptr %1069, align 8, !tbaa !90
  %1071 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1072 = load i32, ptr %1071, align 8, !tbaa !29
  %1073 = uitofp i32 %1072 to double
  %1074 = fmul double %1070, %1073
  %1075 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1076 = getelementptr inbounds %class.powerDef, ptr %1075, i32 0, i32 0
  %1077 = getelementptr inbounds %class.powerComponents, ptr %1076, i32 0, i32 2
  store double %1074, ptr %1077, align 8, !tbaa !91
  %1078 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1079 = load i32, ptr %1078, align 8, !tbaa !36
  %1080 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1081 = load i32, ptr %1080, align 8, !tbaa !29
  %1082 = mul i32 %1079, %1081
  %1083 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1084 = load i32, ptr %1083, align 8, !tbaa !79
  %1085 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1086 = load i32, ptr %1085, align 4, !tbaa !80
  %1087 = add nsw i32 %1084, %1086
  %1088 = mul i32 %1082, %1087
  %1089 = uitofp i32 %1088 to double
  %1090 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1091 = getelementptr inbounds %class.powerDef, ptr %1090, i32 0, i32 0
  %1092 = getelementptr inbounds %class.powerComponents, ptr %1091, i32 0, i32 2
  %1093 = load double, ptr %1092, align 8, !tbaa !92
  %1094 = fmul double %1093, %1089
  store double %1094, ptr %1092, align 8, !tbaa !92
  %1095 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1096 = getelementptr inbounds %class.powerDef, ptr %1095, i32 0, i32 0
  %1097 = getelementptr inbounds %class.powerComponents, ptr %1096, i32 0, i32 2
  %1098 = load double, ptr %1097, align 8, !tbaa !93
  %1099 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %1100 = load ptr, ptr %1099, align 8, !tbaa !41
  %1101 = getelementptr inbounds %class.Component, ptr %1100, i32 0, i32 1
  %1102 = getelementptr inbounds %class.powerDef, ptr %1101, i32 0, i32 0
  %1103 = getelementptr inbounds %class.powerComponents, ptr %1102, i32 0, i32 2
  %1104 = load double, ptr %1103, align 8, !tbaa !94
  %1105 = fadd double %1098, %1104
  %1106 = load i32, ptr %3, align 4, !tbaa !74
  %1107 = sitofp i32 %1106 to double
  %1108 = fmul double %1105, %1107
  %1109 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1110 = load i32, ptr %1109, align 8, !tbaa !29
  %1111 = uitofp i32 %1110 to double
  %1112 = fmul double %1108, %1111
  %1113 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1114 = load i32, ptr %1113, align 8, !tbaa !79
  %1115 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1116 = load i32, ptr %1115, align 4, !tbaa !80
  %1117 = add nsw i32 %1114, %1116
  %1118 = sitofp i32 %1117 to double
  %1119 = fmul double %1112, %1118
  %1120 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1121 = getelementptr inbounds %class.powerDef, ptr %1120, i32 0, i32 0
  %1122 = getelementptr inbounds %class.powerComponents, ptr %1121, i32 0, i32 2
  store double %1119, ptr %1122, align 8, !tbaa !93
  %1123 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1124 = getelementptr inbounds %class.powerDef, ptr %1123, i32 0, i32 0
  %1125 = getelementptr inbounds %class.powerComponents, ptr %1124, i32 0, i32 2
  %1126 = load double, ptr %1125, align 8, !tbaa !89
  %1127 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1128 = getelementptr inbounds %class.powerDef, ptr %1127, i32 0, i32 0
  %1129 = getelementptr inbounds %class.powerComponents, ptr %1128, i32 0, i32 2
  %1130 = load double, ptr %1129, align 8, !tbaa !91
  %1131 = fadd double %1126, %1130
  %1132 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1133 = getelementptr inbounds %class.powerDef, ptr %1132, i32 0, i32 0
  %1134 = getelementptr inbounds %class.powerComponents, ptr %1133, i32 0, i32 2
  %1135 = load double, ptr %1134, align 8, !tbaa !92
  %1136 = fadd double %1131, %1135
  %1137 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1138 = getelementptr inbounds %class.powerDef, ptr %1137, i32 0, i32 0
  %1139 = getelementptr inbounds %class.powerComponents, ptr %1138, i32 0, i32 2
  %1140 = load double, ptr %1139, align 8, !tbaa !93
  %1141 = fadd double %1136, %1140
  %1142 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1143 = getelementptr inbounds %class.powerDef, ptr %1142, i32 0, i32 0
  %1144 = getelementptr inbounds %class.powerComponents, ptr %1143, i32 0, i32 2
  %1145 = load double, ptr %1144, align 8, !tbaa !94
  %1146 = fadd double %1145, %1141
  store double %1146, ptr %1144, align 8, !tbaa !94
  %1147 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 68
  %1148 = load i32, ptr %1147, align 8, !tbaa !42
  %1149 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1150 = load i32, ptr %1149, align 8, !tbaa !79
  %1151 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1152 = load i32, ptr %1151, align 4, !tbaa !80
  %1153 = add nsw i32 %1150, %1152
  %1154 = mul nsw i32 %1148, %1153
  %1155 = sitofp i32 %1154 to double
  %1156 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %1157 = getelementptr inbounds %class.powerDef, ptr %1156, i32 0, i32 0
  %1158 = getelementptr inbounds %class.powerComponents, ptr %1157, i32 0, i32 2
  %1159 = load double, ptr %1158, align 8, !tbaa !95
  %1160 = fmul double %1159, %1155
  store double %1160, ptr %1158, align 8, !tbaa !95
  %1161 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 67
  %1162 = getelementptr inbounds %class.powerDef, ptr %1161, i32 0, i32 0
  %1163 = getelementptr inbounds %class.powerComponents, ptr %1162, i32 0, i32 2
  %1164 = load double, ptr %1163, align 8, !tbaa !95
  %1165 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1166 = getelementptr inbounds %class.powerDef, ptr %1165, i32 0, i32 0
  %1167 = getelementptr inbounds %class.powerComponents, ptr %1166, i32 0, i32 2
  %1168 = load double, ptr %1167, align 8, !tbaa !94
  %1169 = fadd double %1168, %1164
  store double %1169, ptr %1167, align 8, !tbaa !94
  %1170 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %1171 = load ptr, ptr %1170, align 8, !tbaa !23
  %1172 = getelementptr inbounds %class.Component, ptr %1171, i32 0, i32 1
  %1173 = getelementptr inbounds %class.powerDef, ptr %1172, i32 0, i32 0
  %1174 = getelementptr inbounds %class.powerComponents, ptr %1173, i32 0, i32 2
  %1175 = load double, ptr %1174, align 8, !tbaa !94
  %1176 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1177 = getelementptr inbounds %class.Subarray, ptr %1176, i32 0, i32 2
  %1178 = load i32, ptr %1177, align 8, !tbaa !75
  %1179 = uitofp i32 %1178 to double
  %1180 = fmul double %1175, %1179
  %1181 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1182 = load i32, ptr %1181, align 8, !tbaa !29
  %1183 = uitofp i32 %1182 to double
  %1184 = fmul double %1180, %1183
  %1185 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1186 = getelementptr inbounds %class.powerDef, ptr %1185, i32 0, i32 0
  %1187 = getelementptr inbounds %class.powerComponents, ptr %1186, i32 0, i32 2
  store double %1184, ptr %1187, align 8, !tbaa !96
  %1188 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 3
  %1189 = load ptr, ptr %1188, align 8, !tbaa !43
  %1190 = getelementptr inbounds %class.Component, ptr %1189, i32 0, i32 1
  %1191 = getelementptr inbounds %class.powerDef, ptr %1190, i32 0, i32 0
  %1192 = getelementptr inbounds %class.powerComponents, ptr %1191, i32 0, i32 2
  %1193 = load double, ptr %1192, align 8, !tbaa !94
  %1194 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 50
  %1195 = load i32, ptr %1194, align 8, !tbaa !35
  %1196 = sitofp i32 %1195 to double
  %1197 = fmul double %1193, %1196
  %1198 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 22
  %1199 = getelementptr inbounds %class.powerDef, ptr %1198, i32 0, i32 0
  %1200 = getelementptr inbounds %class.powerComponents, ptr %1199, i32 0, i32 2
  store double %1197, ptr %1200, align 8, !tbaa !97
  %1201 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 4
  %1202 = load ptr, ptr %1201, align 8, !tbaa !44
  %1203 = getelementptr inbounds %class.Component, ptr %1202, i32 0, i32 1
  %1204 = getelementptr inbounds %class.powerDef, ptr %1203, i32 0, i32 0
  %1205 = getelementptr inbounds %class.powerComponents, ptr %1204, i32 0, i32 2
  %1206 = load double, ptr %1205, align 8, !tbaa !94
  %1207 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %1208 = load ptr, ptr %1207, align 8, !tbaa !70
  %1209 = getelementptr inbounds %class.DynamicParameter, ptr %1208, i32 0, i32 13
  %1210 = load i32, ptr %1209, align 4, !tbaa !71
  %1211 = sitofp i32 %1210 to double
  %1212 = fmul double %1206, %1211
  %1213 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 23
  %1214 = getelementptr inbounds %class.powerDef, ptr %1213, i32 0, i32 0
  %1215 = getelementptr inbounds %class.powerComponents, ptr %1214, i32 0, i32 2
  store double %1212, ptr %1215, align 8, !tbaa !98
  %1216 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 5
  %1217 = load ptr, ptr %1216, align 8, !tbaa !45
  %1218 = getelementptr inbounds %class.Component, ptr %1217, i32 0, i32 1
  %1219 = getelementptr inbounds %class.powerDef, ptr %1218, i32 0, i32 0
  %1220 = getelementptr inbounds %class.powerComponents, ptr %1219, i32 0, i32 2
  %1221 = load double, ptr %1220, align 8, !tbaa !94
  %1222 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 1
  %1223 = load ptr, ptr %1222, align 8, !tbaa !70
  %1224 = getelementptr inbounds %class.DynamicParameter, ptr %1223, i32 0, i32 14
  %1225 = load i32, ptr %1224, align 8, !tbaa !73
  %1226 = sitofp i32 %1225 to double
  %1227 = fmul double %1221, %1226
  %1228 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 24
  %1229 = getelementptr inbounds %class.powerDef, ptr %1228, i32 0, i32 0
  %1230 = getelementptr inbounds %class.powerComponents, ptr %1229, i32 0, i32 2
  store double %1227, ptr %1230, align 8, !tbaa !99
  %1231 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %1232 = load ptr, ptr %1231, align 8, !tbaa !9
  %1233 = getelementptr inbounds %class.Component, ptr %1232, i32 0, i32 1
  %1234 = getelementptr inbounds %class.powerDef, ptr %1233, i32 0, i32 0
  %1235 = getelementptr inbounds %class.powerComponents, ptr %1234, i32 0, i32 2
  %1236 = load double, ptr %1235, align 8, !tbaa !94
  %1237 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 11
  %1238 = load ptr, ptr %1237, align 8, !tbaa !20
  %1239 = getelementptr inbounds %class.Component, ptr %1238, i32 0, i32 1
  %1240 = getelementptr inbounds %class.powerDef, ptr %1239, i32 0, i32 0
  %1241 = getelementptr inbounds %class.powerComponents, ptr %1240, i32 0, i32 2
  %1242 = load double, ptr %1241, align 8, !tbaa !94
  %1243 = fadd double %1236, %1242
  %1244 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 12
  %1245 = load ptr, ptr %1244, align 8, !tbaa !21
  %1246 = getelementptr inbounds %class.Component, ptr %1245, i32 0, i32 1
  %1247 = getelementptr inbounds %class.powerDef, ptr %1246, i32 0, i32 0
  %1248 = getelementptr inbounds %class.powerComponents, ptr %1247, i32 0, i32 2
  %1249 = load double, ptr %1248, align 8, !tbaa !94
  %1250 = fadd double %1243, %1249
  %1251 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 13
  %1252 = load ptr, ptr %1251, align 8, !tbaa !22
  %1253 = getelementptr inbounds %class.Component, ptr %1252, i32 0, i32 1
  %1254 = getelementptr inbounds %class.powerDef, ptr %1253, i32 0, i32 0
  %1255 = getelementptr inbounds %class.powerComponents, ptr %1254, i32 0, i32 2
  %1256 = load double, ptr %1255, align 8, !tbaa !94
  %1257 = fadd double %1250, %1256
  %1258 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1259 = getelementptr inbounds %class.powerDef, ptr %1258, i32 0, i32 0
  %1260 = getelementptr inbounds %class.powerComponents, ptr %1259, i32 0, i32 2
  %1261 = load double, ptr %1260, align 8, !tbaa !96
  %1262 = fadd double %1257, %1261
  %1263 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 22
  %1264 = getelementptr inbounds %class.powerDef, ptr %1263, i32 0, i32 0
  %1265 = getelementptr inbounds %class.powerComponents, ptr %1264, i32 0, i32 2
  %1266 = load double, ptr %1265, align 8, !tbaa !97
  %1267 = fadd double %1262, %1266
  %1268 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 23
  %1269 = getelementptr inbounds %class.powerDef, ptr %1268, i32 0, i32 0
  %1270 = getelementptr inbounds %class.powerComponents, ptr %1269, i32 0, i32 2
  %1271 = load double, ptr %1270, align 8, !tbaa !98
  %1272 = fadd double %1267, %1271
  %1273 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 24
  %1274 = getelementptr inbounds %class.powerDef, ptr %1273, i32 0, i32 0
  %1275 = getelementptr inbounds %class.powerComponents, ptr %1274, i32 0, i32 2
  %1276 = load double, ptr %1275, align 8, !tbaa !99
  %1277 = fadd double %1272, %1276
  %1278 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1279 = getelementptr inbounds %class.powerDef, ptr %1278, i32 0, i32 0
  %1280 = getelementptr inbounds %class.powerComponents, ptr %1279, i32 0, i32 2
  %1281 = load double, ptr %1280, align 8, !tbaa !94
  %1282 = fadd double %1281, %1277
  store double %1282, ptr %1280, align 8, !tbaa !94
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #4
  br label %2104

1283:                                             ; preds = %798, %794
  %1284 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 56
  %1285 = load i8, ptr %1284, align 1, !tbaa !25, !range !26, !noundef !27
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1724

1287:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  %1288 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1289 = load i32, ptr %1288, align 8, !tbaa !36
  store i32 %1289, ptr %4, align 4, !tbaa !74
  %1290 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1291 = getelementptr inbounds %class.Subarray, ptr %1290, i32 0, i32 2
  %1292 = load i32, ptr %1291, align 8, !tbaa !75
  %1293 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1294 = getelementptr inbounds %class.Subarray, ptr %1293, i32 0, i32 3
  %1295 = load i32, ptr %1294, align 4, !tbaa !34
  %1296 = mul i32 %1292, %1295
  %1297 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1298 = load i32, ptr %1297, align 8, !tbaa !29
  %1299 = mul i32 %1296, %1298
  %1300 = uitofp i32 %1299 to double
  %1301 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1302 = getelementptr inbounds %class.powerDef, ptr %1301, i32 0, i32 0
  %1303 = getelementptr inbounds %class.powerComponents, ptr %1302, i32 0, i32 1
  %1304 = load double, ptr %1303, align 8, !tbaa !76
  %1305 = fmul double %1304, %1300
  store double %1305, ptr %1303, align 8, !tbaa !76
  %1306 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %1307 = load ptr, ptr %1306, align 8, !tbaa !30
  %1308 = getelementptr inbounds %class.Driver, ptr %1307, i32 0, i32 9
  %1309 = getelementptr inbounds %class.powerDef, ptr %1308, i32 0, i32 0
  %1310 = getelementptr inbounds %class.powerComponents, ptr %1309, i32 0, i32 1
  %1311 = load double, ptr %1310, align 8, !tbaa !77
  %1312 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1313 = load i32, ptr %1312, align 8, !tbaa !29
  %1314 = uitofp i32 %1313 to double
  %1315 = fmul double %1311, %1314
  %1316 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1317 = getelementptr inbounds %class.powerDef, ptr %1316, i32 0, i32 0
  %1318 = getelementptr inbounds %class.powerComponents, ptr %1317, i32 0, i32 1
  store double %1315, ptr %1318, align 8, !tbaa !78
  %1319 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %1320 = load ptr, ptr %1319, align 8, !tbaa !47
  %1321 = getelementptr inbounds %class.Driver, ptr %1320, i32 0, i32 9
  %1322 = getelementptr inbounds %class.powerDef, ptr %1321, i32 0, i32 0
  %1323 = getelementptr inbounds %class.powerComponents, ptr %1322, i32 0, i32 1
  %1324 = load double, ptr %1323, align 8, !tbaa !77
  %1325 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1326 = load i32, ptr %1325, align 8, !tbaa !29
  %1327 = uitofp i32 %1326 to double
  %1328 = fmul double %1324, %1327
  %1329 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1330 = getelementptr inbounds %class.powerDef, ptr %1329, i32 0, i32 2
  %1331 = getelementptr inbounds %class.powerComponents, ptr %1330, i32 0, i32 1
  store double %1328, ptr %1331, align 8, !tbaa !100
  %1332 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1333 = load i32, ptr %1332, align 8, !tbaa !36
  %1334 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1335 = load i32, ptr %1334, align 8, !tbaa !29
  %1336 = mul i32 %1333, %1335
  %1337 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1338 = load i32, ptr %1337, align 8, !tbaa !79
  %1339 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1340 = load i32, ptr %1339, align 4, !tbaa !80
  %1341 = add nsw i32 %1338, %1340
  %1342 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1343 = load i32, ptr %1342, align 4, !tbaa !101
  %1344 = add nsw i32 %1341, %1343
  %1345 = mul i32 %1336, %1344
  %1346 = uitofp i32 %1345 to double
  %1347 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1348 = getelementptr inbounds %class.powerDef, ptr %1347, i32 0, i32 0
  %1349 = getelementptr inbounds %class.powerComponents, ptr %1348, i32 0, i32 1
  %1350 = load double, ptr %1349, align 8, !tbaa !81
  %1351 = fmul double %1350, %1346
  store double %1351, ptr %1349, align 8, !tbaa !81
  %1352 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1353 = getelementptr inbounds %class.powerDef, ptr %1352, i32 0, i32 0
  %1354 = getelementptr inbounds %class.powerComponents, ptr %1353, i32 0, i32 1
  %1355 = load double, ptr %1354, align 8, !tbaa !82
  %1356 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %1357 = load ptr, ptr %1356, align 8, !tbaa !41
  %1358 = getelementptr inbounds %class.Component, ptr %1357, i32 0, i32 1
  %1359 = getelementptr inbounds %class.powerDef, ptr %1358, i32 0, i32 0
  %1360 = getelementptr inbounds %class.powerComponents, ptr %1359, i32 0, i32 1
  %1361 = load double, ptr %1360, align 8, !tbaa !83
  %1362 = fadd double %1355, %1361
  %1363 = load i32, ptr %4, align 4, !tbaa !74
  %1364 = sitofp i32 %1363 to double
  %1365 = fmul double %1362, %1364
  %1366 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1367 = load i32, ptr %1366, align 8, !tbaa !29
  %1368 = uitofp i32 %1367 to double
  %1369 = fmul double %1365, %1368
  %1370 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1371 = load i32, ptr %1370, align 8, !tbaa !79
  %1372 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1373 = load i32, ptr %1372, align 4, !tbaa !80
  %1374 = add nsw i32 %1371, %1373
  %1375 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1376 = load i32, ptr %1375, align 4, !tbaa !101
  %1377 = add nsw i32 %1374, %1376
  %1378 = sitofp i32 %1377 to double
  %1379 = fmul double %1369, %1378
  %1380 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1381 = getelementptr inbounds %class.powerDef, ptr %1380, i32 0, i32 0
  %1382 = getelementptr inbounds %class.powerComponents, ptr %1381, i32 0, i32 1
  store double %1379, ptr %1382, align 8, !tbaa !82
  %1383 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1384 = getelementptr inbounds %class.powerDef, ptr %1383, i32 0, i32 0
  %1385 = getelementptr inbounds %class.powerComponents, ptr %1384, i32 0, i32 1
  %1386 = load double, ptr %1385, align 8, !tbaa !76
  %1387 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1388 = getelementptr inbounds %class.powerDef, ptr %1387, i32 0, i32 0
  %1389 = getelementptr inbounds %class.powerComponents, ptr %1388, i32 0, i32 1
  %1390 = load double, ptr %1389, align 8, !tbaa !78
  %1391 = fadd double %1386, %1390
  %1392 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1393 = getelementptr inbounds %class.powerDef, ptr %1392, i32 0, i32 2
  %1394 = getelementptr inbounds %class.powerComponents, ptr %1393, i32 0, i32 1
  %1395 = load double, ptr %1394, align 8, !tbaa !100
  %1396 = fadd double %1391, %1395
  %1397 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1398 = getelementptr inbounds %class.powerDef, ptr %1397, i32 0, i32 0
  %1399 = getelementptr inbounds %class.powerComponents, ptr %1398, i32 0, i32 1
  %1400 = load double, ptr %1399, align 8, !tbaa !81
  %1401 = fadd double %1396, %1400
  %1402 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1403 = getelementptr inbounds %class.powerDef, ptr %1402, i32 0, i32 0
  %1404 = getelementptr inbounds %class.powerComponents, ptr %1403, i32 0, i32 1
  %1405 = load double, ptr %1404, align 8, !tbaa !82
  %1406 = fadd double %1401, %1405
  %1407 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1408 = getelementptr inbounds %class.powerDef, ptr %1407, i32 0, i32 0
  %1409 = getelementptr inbounds %class.powerComponents, ptr %1408, i32 0, i32 1
  %1410 = load double, ptr %1409, align 8, !tbaa !83
  %1411 = fadd double %1410, %1406
  store double %1411, ptr %1409, align 8, !tbaa !83
  %1412 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %1413 = load ptr, ptr %1412, align 8, !tbaa !23
  %1414 = getelementptr inbounds %class.Component, ptr %1413, i32 0, i32 1
  %1415 = getelementptr inbounds %class.powerDef, ptr %1414, i32 0, i32 0
  %1416 = getelementptr inbounds %class.powerComponents, ptr %1415, i32 0, i32 1
  %1417 = load double, ptr %1416, align 8, !tbaa !83
  %1418 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1419 = getelementptr inbounds %class.Subarray, ptr %1418, i32 0, i32 2
  %1420 = load i32, ptr %1419, align 8, !tbaa !75
  %1421 = uitofp i32 %1420 to double
  %1422 = fmul double %1417, %1421
  %1423 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1424 = load i32, ptr %1423, align 8, !tbaa !29
  %1425 = uitofp i32 %1424 to double
  %1426 = fmul double %1422, %1425
  %1427 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1428 = getelementptr inbounds %class.powerDef, ptr %1427, i32 0, i32 0
  %1429 = getelementptr inbounds %class.powerComponents, ptr %1428, i32 0, i32 1
  store double %1426, ptr %1429, align 8, !tbaa !85
  %1430 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %1431 = load ptr, ptr %1430, align 8, !tbaa !9
  %1432 = getelementptr inbounds %class.Component, ptr %1431, i32 0, i32 1
  %1433 = getelementptr inbounds %class.powerDef, ptr %1432, i32 0, i32 0
  %1434 = getelementptr inbounds %class.powerComponents, ptr %1433, i32 0, i32 1
  %1435 = load double, ptr %1434, align 8, !tbaa !83
  %1436 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1437 = getelementptr inbounds %class.powerDef, ptr %1436, i32 0, i32 0
  %1438 = getelementptr inbounds %class.powerComponents, ptr %1437, i32 0, i32 1
  %1439 = load double, ptr %1438, align 8, !tbaa !85
  %1440 = fadd double %1435, %1439
  %1441 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1442 = getelementptr inbounds %class.powerDef, ptr %1441, i32 0, i32 0
  %1443 = getelementptr inbounds %class.powerComponents, ptr %1442, i32 0, i32 1
  %1444 = load double, ptr %1443, align 8, !tbaa !83
  %1445 = fadd double %1444, %1440
  store double %1445, ptr %1443, align 8, !tbaa !83
  %1446 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %1447 = getelementptr inbounds %class.powerDef, ptr %1446, i32 0, i32 2
  %1448 = getelementptr inbounds %class.powerComponents, ptr %1447, i32 0, i32 1
  %1449 = load double, ptr %1448, align 8, !tbaa !102
  %1450 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1451 = getelementptr inbounds %class.powerDef, ptr %1450, i32 0, i32 2
  %1452 = getelementptr inbounds %class.powerComponents, ptr %1451, i32 0, i32 1
  store double %1449, ptr %1452, align 8, !tbaa !103
  %1453 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %1454 = load ptr, ptr %1453, align 8, !tbaa !57
  %1455 = getelementptr inbounds %class.Driver, ptr %1454, i32 0, i32 9
  %1456 = getelementptr inbounds %class.powerDef, ptr %1455, i32 0, i32 0
  %1457 = getelementptr inbounds %class.powerComponents, ptr %1456, i32 0, i32 1
  %1458 = load double, ptr %1457, align 8, !tbaa !77
  %1459 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1460 = getelementptr inbounds %class.powerDef, ptr %1459, i32 0, i32 2
  %1461 = getelementptr inbounds %class.powerComponents, ptr %1460, i32 0, i32 1
  %1462 = load double, ptr %1461, align 8, !tbaa !103
  %1463 = fadd double %1462, %1458
  store double %1463, ptr %1461, align 8, !tbaa !103
  %1464 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %1465 = load ptr, ptr %1464, align 8, !tbaa !60
  %1466 = getelementptr inbounds %class.Driver, ptr %1465, i32 0, i32 9
  %1467 = getelementptr inbounds %class.powerDef, ptr %1466, i32 0, i32 0
  %1468 = getelementptr inbounds %class.powerComponents, ptr %1467, i32 0, i32 1
  %1469 = load double, ptr %1468, align 8, !tbaa !77
  %1470 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1471 = getelementptr inbounds %class.Subarray, ptr %1470, i32 0, i32 4
  %1472 = load i32, ptr %1471, align 8, !tbaa !49
  %1473 = sitofp i32 %1472 to double
  %1474 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1475 = getelementptr inbounds %class.powerDef, ptr %1474, i32 0, i32 2
  %1476 = getelementptr inbounds %class.powerComponents, ptr %1475, i32 0, i32 1
  %1477 = load double, ptr %1476, align 8, !tbaa !103
  %1478 = call double @llvm.fmuladd.f64(double %1469, double %1473, double %1477)
  store double %1478, ptr %1476, align 8, !tbaa !103
  %1479 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %1480 = load ptr, ptr %1479, align 8, !tbaa !63
  %1481 = getelementptr inbounds %class.Driver, ptr %1480, i32 0, i32 9
  %1482 = getelementptr inbounds %class.powerDef, ptr %1481, i32 0, i32 0
  %1483 = getelementptr inbounds %class.powerComponents, ptr %1482, i32 0, i32 0
  %1484 = load double, ptr %1483, align 8, !tbaa !31
  %1485 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1486 = getelementptr inbounds %class.powerDef, ptr %1485, i32 0, i32 2
  %1487 = getelementptr inbounds %class.powerComponents, ptr %1486, i32 0, i32 1
  %1488 = load double, ptr %1487, align 8, !tbaa !103
  %1489 = fadd double %1488, %1484
  store double %1489, ptr %1487, align 8, !tbaa !103
  %1490 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1491 = load i32, ptr %1490, align 8, !tbaa !29
  %1492 = uitofp i32 %1491 to double
  %1493 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1494 = getelementptr inbounds %class.powerDef, ptr %1493, i32 0, i32 2
  %1495 = getelementptr inbounds %class.powerComponents, ptr %1494, i32 0, i32 1
  %1496 = load double, ptr %1495, align 8, !tbaa !103
  %1497 = fmul double %1496, %1492
  store double %1497, ptr %1495, align 8, !tbaa !103
  %1498 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1499 = getelementptr inbounds %class.powerDef, ptr %1498, i32 0, i32 2
  %1500 = getelementptr inbounds %class.powerComponents, ptr %1499, i32 0, i32 1
  %1501 = load double, ptr %1500, align 8, !tbaa !103
  %1502 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1503 = getelementptr inbounds %class.powerDef, ptr %1502, i32 0, i32 0
  %1504 = getelementptr inbounds %class.powerComponents, ptr %1503, i32 0, i32 1
  %1505 = load double, ptr %1504, align 8, !tbaa !83
  %1506 = fadd double %1505, %1501
  store double %1506, ptr %1504, align 8, !tbaa !83
  %1507 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1508 = getelementptr inbounds %class.Subarray, ptr %1507, i32 0, i32 2
  %1509 = load i32, ptr %1508, align 8, !tbaa !75
  %1510 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1511 = getelementptr inbounds %class.Subarray, ptr %1510, i32 0, i32 3
  %1512 = load i32, ptr %1511, align 4, !tbaa !34
  %1513 = mul i32 %1509, %1512
  %1514 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1515 = load i32, ptr %1514, align 8, !tbaa !29
  %1516 = mul i32 %1513, %1515
  %1517 = uitofp i32 %1516 to double
  %1518 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1519 = getelementptr inbounds %class.powerDef, ptr %1518, i32 0, i32 0
  %1520 = getelementptr inbounds %class.powerComponents, ptr %1519, i32 0, i32 2
  %1521 = load double, ptr %1520, align 8, !tbaa !89
  %1522 = fmul double %1521, %1517
  store double %1522, ptr %1520, align 8, !tbaa !89
  %1523 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 15
  %1524 = load ptr, ptr %1523, align 8, !tbaa !30
  %1525 = getelementptr inbounds %class.Driver, ptr %1524, i32 0, i32 9
  %1526 = getelementptr inbounds %class.powerDef, ptr %1525, i32 0, i32 0
  %1527 = getelementptr inbounds %class.powerComponents, ptr %1526, i32 0, i32 2
  %1528 = load double, ptr %1527, align 8, !tbaa !90
  %1529 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1530 = load i32, ptr %1529, align 8, !tbaa !29
  %1531 = uitofp i32 %1530 to double
  %1532 = fmul double %1528, %1531
  %1533 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1534 = getelementptr inbounds %class.powerDef, ptr %1533, i32 0, i32 0
  %1535 = getelementptr inbounds %class.powerComponents, ptr %1534, i32 0, i32 2
  store double %1532, ptr %1535, align 8, !tbaa !91
  %1536 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %1537 = load ptr, ptr %1536, align 8, !tbaa !47
  %1538 = getelementptr inbounds %class.Driver, ptr %1537, i32 0, i32 9
  %1539 = getelementptr inbounds %class.powerDef, ptr %1538, i32 0, i32 0
  %1540 = getelementptr inbounds %class.powerComponents, ptr %1539, i32 0, i32 2
  %1541 = load double, ptr %1540, align 8, !tbaa !90
  %1542 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1543 = load i32, ptr %1542, align 8, !tbaa !29
  %1544 = uitofp i32 %1543 to double
  %1545 = fmul double %1541, %1544
  %1546 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1547 = getelementptr inbounds %class.powerDef, ptr %1546, i32 0, i32 2
  %1548 = getelementptr inbounds %class.powerComponents, ptr %1547, i32 0, i32 2
  store double %1545, ptr %1548, align 8, !tbaa !104
  %1549 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1550 = load i32, ptr %1549, align 8, !tbaa !36
  %1551 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1552 = load i32, ptr %1551, align 8, !tbaa !29
  %1553 = mul i32 %1550, %1552
  %1554 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1555 = load i32, ptr %1554, align 8, !tbaa !79
  %1556 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1557 = load i32, ptr %1556, align 4, !tbaa !80
  %1558 = add nsw i32 %1555, %1557
  %1559 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1560 = load i32, ptr %1559, align 4, !tbaa !101
  %1561 = add nsw i32 %1558, %1560
  %1562 = mul i32 %1553, %1561
  %1563 = uitofp i32 %1562 to double
  %1564 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1565 = getelementptr inbounds %class.powerDef, ptr %1564, i32 0, i32 0
  %1566 = getelementptr inbounds %class.powerComponents, ptr %1565, i32 0, i32 2
  %1567 = load double, ptr %1566, align 8, !tbaa !92
  %1568 = fmul double %1567, %1563
  store double %1568, ptr %1566, align 8, !tbaa !92
  %1569 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1570 = getelementptr inbounds %class.powerDef, ptr %1569, i32 0, i32 0
  %1571 = getelementptr inbounds %class.powerComponents, ptr %1570, i32 0, i32 2
  %1572 = load double, ptr %1571, align 8, !tbaa !93
  %1573 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %1574 = load ptr, ptr %1573, align 8, !tbaa !41
  %1575 = getelementptr inbounds %class.Component, ptr %1574, i32 0, i32 1
  %1576 = getelementptr inbounds %class.powerDef, ptr %1575, i32 0, i32 0
  %1577 = getelementptr inbounds %class.powerComponents, ptr %1576, i32 0, i32 2
  %1578 = load double, ptr %1577, align 8, !tbaa !94
  %1579 = fadd double %1572, %1578
  %1580 = load i32, ptr %4, align 4, !tbaa !74
  %1581 = sitofp i32 %1580 to double
  %1582 = fmul double %1579, %1581
  %1583 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1584 = load i32, ptr %1583, align 8, !tbaa !29
  %1585 = uitofp i32 %1584 to double
  %1586 = fmul double %1582, %1585
  %1587 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1588 = load i32, ptr %1587, align 8, !tbaa !79
  %1589 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1590 = load i32, ptr %1589, align 4, !tbaa !80
  %1591 = add nsw i32 %1588, %1590
  %1592 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1593 = load i32, ptr %1592, align 4, !tbaa !101
  %1594 = add nsw i32 %1591, %1593
  %1595 = sitofp i32 %1594 to double
  %1596 = fmul double %1586, %1595
  %1597 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1598 = getelementptr inbounds %class.powerDef, ptr %1597, i32 0, i32 0
  %1599 = getelementptr inbounds %class.powerComponents, ptr %1598, i32 0, i32 2
  store double %1596, ptr %1599, align 8, !tbaa !93
  %1600 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 46
  %1601 = getelementptr inbounds %class.powerDef, ptr %1600, i32 0, i32 0
  %1602 = getelementptr inbounds %class.powerComponents, ptr %1601, i32 0, i32 2
  %1603 = load double, ptr %1602, align 8, !tbaa !89
  %1604 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1605 = getelementptr inbounds %class.powerDef, ptr %1604, i32 0, i32 0
  %1606 = getelementptr inbounds %class.powerComponents, ptr %1605, i32 0, i32 2
  %1607 = load double, ptr %1606, align 8, !tbaa !91
  %1608 = fadd double %1603, %1607
  %1609 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1610 = getelementptr inbounds %class.powerDef, ptr %1609, i32 0, i32 2
  %1611 = getelementptr inbounds %class.powerComponents, ptr %1610, i32 0, i32 2
  %1612 = load double, ptr %1611, align 8, !tbaa !104
  %1613 = fadd double %1608, %1612
  %1614 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1615 = getelementptr inbounds %class.powerDef, ptr %1614, i32 0, i32 0
  %1616 = getelementptr inbounds %class.powerComponents, ptr %1615, i32 0, i32 2
  %1617 = load double, ptr %1616, align 8, !tbaa !92
  %1618 = fadd double %1613, %1617
  %1619 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1620 = getelementptr inbounds %class.powerDef, ptr %1619, i32 0, i32 0
  %1621 = getelementptr inbounds %class.powerComponents, ptr %1620, i32 0, i32 2
  %1622 = load double, ptr %1621, align 8, !tbaa !93
  %1623 = fadd double %1618, %1622
  %1624 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1625 = getelementptr inbounds %class.powerDef, ptr %1624, i32 0, i32 0
  %1626 = getelementptr inbounds %class.powerComponents, ptr %1625, i32 0, i32 2
  %1627 = load double, ptr %1626, align 8, !tbaa !94
  %1628 = fadd double %1627, %1623
  store double %1628, ptr %1626, align 8, !tbaa !94
  %1629 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %1630 = load ptr, ptr %1629, align 8, !tbaa !23
  %1631 = getelementptr inbounds %class.Component, ptr %1630, i32 0, i32 1
  %1632 = getelementptr inbounds %class.powerDef, ptr %1631, i32 0, i32 0
  %1633 = getelementptr inbounds %class.powerComponents, ptr %1632, i32 0, i32 2
  %1634 = load double, ptr %1633, align 8, !tbaa !94
  %1635 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1636 = getelementptr inbounds %class.Subarray, ptr %1635, i32 0, i32 2
  %1637 = load i32, ptr %1636, align 8, !tbaa !75
  %1638 = uitofp i32 %1637 to double
  %1639 = fmul double %1634, %1638
  %1640 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1641 = load i32, ptr %1640, align 8, !tbaa !29
  %1642 = uitofp i32 %1641 to double
  %1643 = fmul double %1639, %1642
  %1644 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1645 = getelementptr inbounds %class.powerDef, ptr %1644, i32 0, i32 0
  %1646 = getelementptr inbounds %class.powerComponents, ptr %1645, i32 0, i32 2
  store double %1643, ptr %1646, align 8, !tbaa !96
  %1647 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %1648 = load ptr, ptr %1647, align 8, !tbaa !9
  %1649 = getelementptr inbounds %class.Component, ptr %1648, i32 0, i32 1
  %1650 = getelementptr inbounds %class.powerDef, ptr %1649, i32 0, i32 0
  %1651 = getelementptr inbounds %class.powerComponents, ptr %1650, i32 0, i32 2
  %1652 = load double, ptr %1651, align 8, !tbaa !94
  %1653 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1654 = getelementptr inbounds %class.powerDef, ptr %1653, i32 0, i32 0
  %1655 = getelementptr inbounds %class.powerComponents, ptr %1654, i32 0, i32 2
  %1656 = load double, ptr %1655, align 8, !tbaa !96
  %1657 = fadd double %1652, %1656
  %1658 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1659 = getelementptr inbounds %class.powerDef, ptr %1658, i32 0, i32 0
  %1660 = getelementptr inbounds %class.powerComponents, ptr %1659, i32 0, i32 2
  %1661 = load double, ptr %1660, align 8, !tbaa !94
  %1662 = fadd double %1661, %1657
  store double %1662, ptr %1660, align 8, !tbaa !94
  %1663 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %1664 = getelementptr inbounds %class.powerDef, ptr %1663, i32 0, i32 2
  %1665 = getelementptr inbounds %class.powerComponents, ptr %1664, i32 0, i32 2
  %1666 = load double, ptr %1665, align 8, !tbaa !105
  %1667 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1668 = getelementptr inbounds %class.powerDef, ptr %1667, i32 0, i32 2
  %1669 = getelementptr inbounds %class.powerComponents, ptr %1668, i32 0, i32 2
  store double %1666, ptr %1669, align 8, !tbaa !106
  %1670 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %1671 = load ptr, ptr %1670, align 8, !tbaa !57
  %1672 = getelementptr inbounds %class.Driver, ptr %1671, i32 0, i32 9
  %1673 = getelementptr inbounds %class.powerDef, ptr %1672, i32 0, i32 0
  %1674 = getelementptr inbounds %class.powerComponents, ptr %1673, i32 0, i32 2
  %1675 = load double, ptr %1674, align 8, !tbaa !90
  %1676 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1677 = getelementptr inbounds %class.powerDef, ptr %1676, i32 0, i32 2
  %1678 = getelementptr inbounds %class.powerComponents, ptr %1677, i32 0, i32 2
  %1679 = load double, ptr %1678, align 8, !tbaa !106
  %1680 = fadd double %1679, %1675
  store double %1680, ptr %1678, align 8, !tbaa !106
  %1681 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %1682 = load ptr, ptr %1681, align 8, !tbaa !60
  %1683 = getelementptr inbounds %class.Driver, ptr %1682, i32 0, i32 9
  %1684 = getelementptr inbounds %class.powerDef, ptr %1683, i32 0, i32 0
  %1685 = getelementptr inbounds %class.powerComponents, ptr %1684, i32 0, i32 2
  %1686 = load double, ptr %1685, align 8, !tbaa !90
  %1687 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1688 = getelementptr inbounds %class.Subarray, ptr %1687, i32 0, i32 4
  %1689 = load i32, ptr %1688, align 8, !tbaa !49
  %1690 = sitofp i32 %1689 to double
  %1691 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1692 = getelementptr inbounds %class.powerDef, ptr %1691, i32 0, i32 2
  %1693 = getelementptr inbounds %class.powerComponents, ptr %1692, i32 0, i32 2
  %1694 = load double, ptr %1693, align 8, !tbaa !106
  %1695 = call double @llvm.fmuladd.f64(double %1686, double %1690, double %1694)
  store double %1695, ptr %1693, align 8, !tbaa !106
  %1696 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %1697 = load ptr, ptr %1696, align 8, !tbaa !63
  %1698 = getelementptr inbounds %class.Driver, ptr %1697, i32 0, i32 9
  %1699 = getelementptr inbounds %class.powerDef, ptr %1698, i32 0, i32 0
  %1700 = getelementptr inbounds %class.powerComponents, ptr %1699, i32 0, i32 0
  %1701 = load double, ptr %1700, align 8, !tbaa !31
  %1702 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1703 = getelementptr inbounds %class.powerDef, ptr %1702, i32 0, i32 2
  %1704 = getelementptr inbounds %class.powerComponents, ptr %1703, i32 0, i32 2
  %1705 = load double, ptr %1704, align 8, !tbaa !106
  %1706 = fadd double %1705, %1701
  store double %1706, ptr %1704, align 8, !tbaa !106
  %1707 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1708 = load i32, ptr %1707, align 8, !tbaa !29
  %1709 = uitofp i32 %1708 to double
  %1710 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1711 = getelementptr inbounds %class.powerDef, ptr %1710, i32 0, i32 2
  %1712 = getelementptr inbounds %class.powerComponents, ptr %1711, i32 0, i32 2
  %1713 = load double, ptr %1712, align 8, !tbaa !106
  %1714 = fmul double %1713, %1709
  store double %1714, ptr %1712, align 8, !tbaa !106
  %1715 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1716 = getelementptr inbounds %class.powerDef, ptr %1715, i32 0, i32 2
  %1717 = getelementptr inbounds %class.powerComponents, ptr %1716, i32 0, i32 2
  %1718 = load double, ptr %1717, align 8, !tbaa !106
  %1719 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1720 = getelementptr inbounds %class.powerDef, ptr %1719, i32 0, i32 0
  %1721 = getelementptr inbounds %class.powerComponents, ptr %1720, i32 0, i32 2
  %1722 = load double, ptr %1721, align 8, !tbaa !94
  %1723 = fadd double %1722, %1718
  store double %1723, ptr %1721, align 8, !tbaa !94
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  br label %2103

1724:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  %1725 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1726 = load i32, ptr %1725, align 8, !tbaa !36
  store i32 %1726, ptr %5, align 4, !tbaa !74
  %1727 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %1728 = load ptr, ptr %1727, align 8, !tbaa !47
  %1729 = getelementptr inbounds %class.Driver, ptr %1728, i32 0, i32 9
  %1730 = getelementptr inbounds %class.powerDef, ptr %1729, i32 0, i32 0
  %1731 = getelementptr inbounds %class.powerComponents, ptr %1730, i32 0, i32 1
  %1732 = load double, ptr %1731, align 8, !tbaa !77
  %1733 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1734 = load i32, ptr %1733, align 8, !tbaa !29
  %1735 = uitofp i32 %1734 to double
  %1736 = fmul double %1732, %1735
  %1737 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1738 = getelementptr inbounds %class.powerDef, ptr %1737, i32 0, i32 2
  %1739 = getelementptr inbounds %class.powerComponents, ptr %1738, i32 0, i32 1
  store double %1736, ptr %1739, align 8, !tbaa !100
  %1740 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1741 = load i32, ptr %1740, align 8, !tbaa !36
  %1742 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1743 = load i32, ptr %1742, align 8, !tbaa !29
  %1744 = mul i32 %1741, %1743
  %1745 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1746 = load i32, ptr %1745, align 8, !tbaa !79
  %1747 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1748 = load i32, ptr %1747, align 4, !tbaa !80
  %1749 = add nsw i32 %1746, %1748
  %1750 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1751 = load i32, ptr %1750, align 4, !tbaa !101
  %1752 = add nsw i32 %1749, %1751
  %1753 = mul i32 %1744, %1752
  %1754 = uitofp i32 %1753 to double
  %1755 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1756 = getelementptr inbounds %class.powerDef, ptr %1755, i32 0, i32 0
  %1757 = getelementptr inbounds %class.powerComponents, ptr %1756, i32 0, i32 1
  %1758 = load double, ptr %1757, align 8, !tbaa !81
  %1759 = fmul double %1758, %1754
  store double %1759, ptr %1757, align 8, !tbaa !81
  %1760 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1761 = getelementptr inbounds %class.powerDef, ptr %1760, i32 0, i32 0
  %1762 = getelementptr inbounds %class.powerComponents, ptr %1761, i32 0, i32 1
  %1763 = load double, ptr %1762, align 8, !tbaa !82
  %1764 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %1765 = load ptr, ptr %1764, align 8, !tbaa !41
  %1766 = getelementptr inbounds %class.Component, ptr %1765, i32 0, i32 1
  %1767 = getelementptr inbounds %class.powerDef, ptr %1766, i32 0, i32 0
  %1768 = getelementptr inbounds %class.powerComponents, ptr %1767, i32 0, i32 1
  %1769 = load double, ptr %1768, align 8, !tbaa !83
  %1770 = fadd double %1763, %1769
  %1771 = load i32, ptr %5, align 4, !tbaa !74
  %1772 = sitofp i32 %1771 to double
  %1773 = fmul double %1770, %1772
  %1774 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1775 = load i32, ptr %1774, align 8, !tbaa !29
  %1776 = uitofp i32 %1775 to double
  %1777 = fmul double %1773, %1776
  %1778 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1779 = load i32, ptr %1778, align 8, !tbaa !79
  %1780 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1781 = load i32, ptr %1780, align 4, !tbaa !80
  %1782 = add nsw i32 %1779, %1781
  %1783 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1784 = load i32, ptr %1783, align 4, !tbaa !101
  %1785 = add nsw i32 %1782, %1784
  %1786 = sitofp i32 %1785 to double
  %1787 = fmul double %1777, %1786
  %1788 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1789 = getelementptr inbounds %class.powerDef, ptr %1788, i32 0, i32 0
  %1790 = getelementptr inbounds %class.powerComponents, ptr %1789, i32 0, i32 1
  store double %1787, ptr %1790, align 8, !tbaa !82
  %1791 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1792 = getelementptr inbounds %class.powerDef, ptr %1791, i32 0, i32 2
  %1793 = getelementptr inbounds %class.powerComponents, ptr %1792, i32 0, i32 1
  %1794 = load double, ptr %1793, align 8, !tbaa !100
  %1795 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1796 = getelementptr inbounds %class.powerDef, ptr %1795, i32 0, i32 0
  %1797 = getelementptr inbounds %class.powerComponents, ptr %1796, i32 0, i32 1
  %1798 = load double, ptr %1797, align 8, !tbaa !81
  %1799 = fadd double %1794, %1798
  %1800 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1801 = getelementptr inbounds %class.powerDef, ptr %1800, i32 0, i32 0
  %1802 = getelementptr inbounds %class.powerComponents, ptr %1801, i32 0, i32 1
  %1803 = load double, ptr %1802, align 8, !tbaa !82
  %1804 = fadd double %1799, %1803
  %1805 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1806 = getelementptr inbounds %class.powerDef, ptr %1805, i32 0, i32 0
  %1807 = getelementptr inbounds %class.powerComponents, ptr %1806, i32 0, i32 1
  %1808 = load double, ptr %1807, align 8, !tbaa !83
  %1809 = fadd double %1808, %1804
  store double %1809, ptr %1807, align 8, !tbaa !83
  %1810 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %1811 = load ptr, ptr %1810, align 8, !tbaa !23
  %1812 = getelementptr inbounds %class.Component, ptr %1811, i32 0, i32 1
  %1813 = getelementptr inbounds %class.powerDef, ptr %1812, i32 0, i32 0
  %1814 = getelementptr inbounds %class.powerComponents, ptr %1813, i32 0, i32 1
  %1815 = load double, ptr %1814, align 8, !tbaa !83
  %1816 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1817 = getelementptr inbounds %class.Subarray, ptr %1816, i32 0, i32 2
  %1818 = load i32, ptr %1817, align 8, !tbaa !75
  %1819 = uitofp i32 %1818 to double
  %1820 = fmul double %1815, %1819
  %1821 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1822 = load i32, ptr %1821, align 8, !tbaa !29
  %1823 = uitofp i32 %1822 to double
  %1824 = fmul double %1820, %1823
  %1825 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1826 = load i32, ptr %1825, align 8, !tbaa !79
  %1827 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1828 = load i32, ptr %1827, align 4, !tbaa !80
  %1829 = add nsw i32 %1826, %1828
  %1830 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 77
  %1831 = load i32, ptr %1830, align 8, !tbaa !107
  %1832 = add nsw i32 %1829, %1831
  %1833 = sitofp i32 %1832 to double
  %1834 = fmul double %1824, %1833
  %1835 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1836 = getelementptr inbounds %class.powerDef, ptr %1835, i32 0, i32 0
  %1837 = getelementptr inbounds %class.powerComponents, ptr %1836, i32 0, i32 1
  store double %1834, ptr %1837, align 8, !tbaa !85
  %1838 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %1839 = load ptr, ptr %1838, align 8, !tbaa !9
  %1840 = getelementptr inbounds %class.Component, ptr %1839, i32 0, i32 1
  %1841 = getelementptr inbounds %class.powerDef, ptr %1840, i32 0, i32 0
  %1842 = getelementptr inbounds %class.powerComponents, ptr %1841, i32 0, i32 1
  %1843 = load double, ptr %1842, align 8, !tbaa !83
  %1844 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %1845 = getelementptr inbounds %class.powerDef, ptr %1844, i32 0, i32 0
  %1846 = getelementptr inbounds %class.powerComponents, ptr %1845, i32 0, i32 1
  %1847 = load double, ptr %1846, align 8, !tbaa !85
  %1848 = fadd double %1843, %1847
  %1849 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1850 = getelementptr inbounds %class.powerDef, ptr %1849, i32 0, i32 0
  %1851 = getelementptr inbounds %class.powerComponents, ptr %1850, i32 0, i32 1
  %1852 = load double, ptr %1851, align 8, !tbaa !83
  %1853 = fadd double %1852, %1848
  store double %1853, ptr %1851, align 8, !tbaa !83
  %1854 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %1855 = getelementptr inbounds %class.powerDef, ptr %1854, i32 0, i32 2
  %1856 = getelementptr inbounds %class.powerComponents, ptr %1855, i32 0, i32 1
  %1857 = load double, ptr %1856, align 8, !tbaa !102
  %1858 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1859 = getelementptr inbounds %class.powerDef, ptr %1858, i32 0, i32 2
  %1860 = getelementptr inbounds %class.powerComponents, ptr %1859, i32 0, i32 1
  store double %1857, ptr %1860, align 8, !tbaa !103
  %1861 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %1862 = load ptr, ptr %1861, align 8, !tbaa !57
  %1863 = getelementptr inbounds %class.Driver, ptr %1862, i32 0, i32 9
  %1864 = getelementptr inbounds %class.powerDef, ptr %1863, i32 0, i32 0
  %1865 = getelementptr inbounds %class.powerComponents, ptr %1864, i32 0, i32 1
  %1866 = load double, ptr %1865, align 8, !tbaa !77
  %1867 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1868 = getelementptr inbounds %class.powerDef, ptr %1867, i32 0, i32 2
  %1869 = getelementptr inbounds %class.powerComponents, ptr %1868, i32 0, i32 1
  %1870 = load double, ptr %1869, align 8, !tbaa !103
  %1871 = fadd double %1870, %1866
  store double %1871, ptr %1869, align 8, !tbaa !103
  %1872 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %1873 = load ptr, ptr %1872, align 8, !tbaa !60
  %1874 = getelementptr inbounds %class.Driver, ptr %1873, i32 0, i32 9
  %1875 = getelementptr inbounds %class.powerDef, ptr %1874, i32 0, i32 0
  %1876 = getelementptr inbounds %class.powerComponents, ptr %1875, i32 0, i32 1
  %1877 = load double, ptr %1876, align 8, !tbaa !77
  %1878 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %1879 = getelementptr inbounds %class.Subarray, ptr %1878, i32 0, i32 4
  %1880 = load i32, ptr %1879, align 8, !tbaa !49
  %1881 = sitofp i32 %1880 to double
  %1882 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1883 = getelementptr inbounds %class.powerDef, ptr %1882, i32 0, i32 2
  %1884 = getelementptr inbounds %class.powerComponents, ptr %1883, i32 0, i32 1
  %1885 = load double, ptr %1884, align 8, !tbaa !103
  %1886 = call double @llvm.fmuladd.f64(double %1877, double %1881, double %1885)
  store double %1886, ptr %1884, align 8, !tbaa !103
  %1887 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %1888 = load ptr, ptr %1887, align 8, !tbaa !63
  %1889 = getelementptr inbounds %class.Driver, ptr %1888, i32 0, i32 9
  %1890 = getelementptr inbounds %class.powerDef, ptr %1889, i32 0, i32 0
  %1891 = getelementptr inbounds %class.powerComponents, ptr %1890, i32 0, i32 0
  %1892 = load double, ptr %1891, align 8, !tbaa !31
  %1893 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1894 = getelementptr inbounds %class.powerDef, ptr %1893, i32 0, i32 2
  %1895 = getelementptr inbounds %class.powerComponents, ptr %1894, i32 0, i32 1
  %1896 = load double, ptr %1895, align 8, !tbaa !103
  %1897 = fadd double %1896, %1892
  store double %1897, ptr %1895, align 8, !tbaa !103
  %1898 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1899 = load i32, ptr %1898, align 8, !tbaa !29
  %1900 = uitofp i32 %1899 to double
  %1901 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1902 = getelementptr inbounds %class.powerDef, ptr %1901, i32 0, i32 2
  %1903 = getelementptr inbounds %class.powerComponents, ptr %1902, i32 0, i32 1
  %1904 = load double, ptr %1903, align 8, !tbaa !103
  %1905 = fmul double %1904, %1900
  store double %1905, ptr %1903, align 8, !tbaa !103
  %1906 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %1907 = getelementptr inbounds %class.powerDef, ptr %1906, i32 0, i32 2
  %1908 = getelementptr inbounds %class.powerComponents, ptr %1907, i32 0, i32 1
  %1909 = load double, ptr %1908, align 8, !tbaa !103
  %1910 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1911 = getelementptr inbounds %class.powerDef, ptr %1910, i32 0, i32 0
  %1912 = getelementptr inbounds %class.powerComponents, ptr %1911, i32 0, i32 1
  %1913 = load double, ptr %1912, align 8, !tbaa !83
  %1914 = fadd double %1913, %1909
  store double %1914, ptr %1912, align 8, !tbaa !83
  %1915 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 16
  %1916 = load ptr, ptr %1915, align 8, !tbaa !47
  %1917 = getelementptr inbounds %class.Driver, ptr %1916, i32 0, i32 9
  %1918 = getelementptr inbounds %class.powerDef, ptr %1917, i32 0, i32 0
  %1919 = getelementptr inbounds %class.powerComponents, ptr %1918, i32 0, i32 2
  %1920 = load double, ptr %1919, align 8, !tbaa !90
  %1921 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1922 = load i32, ptr %1921, align 8, !tbaa !29
  %1923 = uitofp i32 %1922 to double
  %1924 = fmul double %1920, %1923
  %1925 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1926 = getelementptr inbounds %class.powerDef, ptr %1925, i32 0, i32 2
  %1927 = getelementptr inbounds %class.powerComponents, ptr %1926, i32 0, i32 2
  store double %1924, ptr %1927, align 8, !tbaa !104
  %1928 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 70
  %1929 = load i32, ptr %1928, align 8, !tbaa !36
  %1930 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1931 = load i32, ptr %1930, align 8, !tbaa !29
  %1932 = mul i32 %1929, %1931
  %1933 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1934 = load i32, ptr %1933, align 8, !tbaa !79
  %1935 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1936 = load i32, ptr %1935, align 4, !tbaa !80
  %1937 = add nsw i32 %1934, %1936
  %1938 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1939 = load i32, ptr %1938, align 4, !tbaa !101
  %1940 = add nsw i32 %1937, %1939
  %1941 = mul i32 %1932, %1940
  %1942 = uitofp i32 %1941 to double
  %1943 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1944 = getelementptr inbounds %class.powerDef, ptr %1943, i32 0, i32 0
  %1945 = getelementptr inbounds %class.powerComponents, ptr %1944, i32 0, i32 2
  %1946 = load double, ptr %1945, align 8, !tbaa !92
  %1947 = fmul double %1946, %1942
  store double %1947, ptr %1945, align 8, !tbaa !92
  %1948 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1949 = getelementptr inbounds %class.powerDef, ptr %1948, i32 0, i32 0
  %1950 = getelementptr inbounds %class.powerComponents, ptr %1949, i32 0, i32 2
  %1951 = load double, ptr %1950, align 8, !tbaa !93
  %1952 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 14
  %1953 = load ptr, ptr %1952, align 8, !tbaa !41
  %1954 = getelementptr inbounds %class.Component, ptr %1953, i32 0, i32 1
  %1955 = getelementptr inbounds %class.powerDef, ptr %1954, i32 0, i32 0
  %1956 = getelementptr inbounds %class.powerComponents, ptr %1955, i32 0, i32 2
  %1957 = load double, ptr %1956, align 8, !tbaa !94
  %1958 = fadd double %1951, %1957
  %1959 = load i32, ptr %5, align 4, !tbaa !74
  %1960 = sitofp i32 %1959 to double
  %1961 = fmul double %1958, %1960
  %1962 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %1963 = load i32, ptr %1962, align 8, !tbaa !29
  %1964 = uitofp i32 %1963 to double
  %1965 = fmul double %1961, %1964
  %1966 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %1967 = load i32, ptr %1966, align 8, !tbaa !79
  %1968 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %1969 = load i32, ptr %1968, align 4, !tbaa !80
  %1970 = add nsw i32 %1967, %1969
  %1971 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 78
  %1972 = load i32, ptr %1971, align 4, !tbaa !101
  %1973 = add nsw i32 %1970, %1972
  %1974 = sitofp i32 %1973 to double
  %1975 = fmul double %1965, %1974
  %1976 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1977 = getelementptr inbounds %class.powerDef, ptr %1976, i32 0, i32 0
  %1978 = getelementptr inbounds %class.powerComponents, ptr %1977, i32 0, i32 2
  store double %1975, ptr %1978, align 8, !tbaa !93
  %1979 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 26
  %1980 = getelementptr inbounds %class.powerDef, ptr %1979, i32 0, i32 2
  %1981 = getelementptr inbounds %class.powerComponents, ptr %1980, i32 0, i32 2
  %1982 = load double, ptr %1981, align 8, !tbaa !104
  %1983 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 60
  %1984 = getelementptr inbounds %class.powerDef, ptr %1983, i32 0, i32 0
  %1985 = getelementptr inbounds %class.powerComponents, ptr %1984, i32 0, i32 2
  %1986 = load double, ptr %1985, align 8, !tbaa !92
  %1987 = fadd double %1982, %1986
  %1988 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 27
  %1989 = getelementptr inbounds %class.powerDef, ptr %1988, i32 0, i32 0
  %1990 = getelementptr inbounds %class.powerComponents, ptr %1989, i32 0, i32 2
  %1991 = load double, ptr %1990, align 8, !tbaa !93
  %1992 = fadd double %1987, %1991
  %1993 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %1994 = getelementptr inbounds %class.powerDef, ptr %1993, i32 0, i32 0
  %1995 = getelementptr inbounds %class.powerComponents, ptr %1994, i32 0, i32 2
  %1996 = load double, ptr %1995, align 8, !tbaa !94
  %1997 = fadd double %1996, %1992
  store double %1997, ptr %1995, align 8, !tbaa !94
  %1998 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 2
  %1999 = load ptr, ptr %1998, align 8, !tbaa !23
  %2000 = getelementptr inbounds %class.Component, ptr %1999, i32 0, i32 1
  %2001 = getelementptr inbounds %class.powerDef, ptr %2000, i32 0, i32 0
  %2002 = getelementptr inbounds %class.powerComponents, ptr %2001, i32 0, i32 2
  %2003 = load double, ptr %2002, align 8, !tbaa !94
  %2004 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %2005 = getelementptr inbounds %class.Subarray, ptr %2004, i32 0, i32 2
  %2006 = load i32, ptr %2005, align 8, !tbaa !75
  %2007 = uitofp i32 %2006 to double
  %2008 = fmul double %2003, %2007
  %2009 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %2010 = load i32, ptr %2009, align 8, !tbaa !29
  %2011 = uitofp i32 %2010 to double
  %2012 = fmul double %2008, %2011
  %2013 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 75
  %2014 = load i32, ptr %2013, align 8, !tbaa !79
  %2015 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 76
  %2016 = load i32, ptr %2015, align 4, !tbaa !80
  %2017 = add nsw i32 %2014, %2016
  %2018 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 77
  %2019 = load i32, ptr %2018, align 8, !tbaa !107
  %2020 = add nsw i32 %2017, %2019
  %2021 = sitofp i32 %2020 to double
  %2022 = fmul double %2012, %2021
  %2023 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %2024 = getelementptr inbounds %class.powerDef, ptr %2023, i32 0, i32 0
  %2025 = getelementptr inbounds %class.powerComponents, ptr %2024, i32 0, i32 2
  store double %2022, ptr %2025, align 8, !tbaa !96
  %2026 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 10
  %2027 = load ptr, ptr %2026, align 8, !tbaa !9
  %2028 = getelementptr inbounds %class.Component, ptr %2027, i32 0, i32 1
  %2029 = getelementptr inbounds %class.powerDef, ptr %2028, i32 0, i32 0
  %2030 = getelementptr inbounds %class.powerComponents, ptr %2029, i32 0, i32 2
  %2031 = load double, ptr %2030, align 8, !tbaa !94
  %2032 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 21
  %2033 = getelementptr inbounds %class.powerDef, ptr %2032, i32 0, i32 0
  %2034 = getelementptr inbounds %class.powerComponents, ptr %2033, i32 0, i32 2
  %2035 = load double, ptr %2034, align 8, !tbaa !96
  %2036 = fadd double %2031, %2035
  %2037 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %2038 = getelementptr inbounds %class.powerDef, ptr %2037, i32 0, i32 0
  %2039 = getelementptr inbounds %class.powerComponents, ptr %2038, i32 0, i32 2
  %2040 = load double, ptr %2039, align 8, !tbaa !94
  %2041 = fadd double %2040, %2036
  store double %2041, ptr %2039, align 8, !tbaa !94
  %2042 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 48
  %2043 = getelementptr inbounds %class.powerDef, ptr %2042, i32 0, i32 2
  %2044 = getelementptr inbounds %class.powerComponents, ptr %2043, i32 0, i32 2
  %2045 = load double, ptr %2044, align 8, !tbaa !105
  %2046 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2047 = getelementptr inbounds %class.powerDef, ptr %2046, i32 0, i32 2
  %2048 = getelementptr inbounds %class.powerComponents, ptr %2047, i32 0, i32 2
  store double %2045, ptr %2048, align 8, !tbaa !106
  %2049 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 18
  %2050 = load ptr, ptr %2049, align 8, !tbaa !57
  %2051 = getelementptr inbounds %class.Driver, ptr %2050, i32 0, i32 9
  %2052 = getelementptr inbounds %class.powerDef, ptr %2051, i32 0, i32 0
  %2053 = getelementptr inbounds %class.powerComponents, ptr %2052, i32 0, i32 2
  %2054 = load double, ptr %2053, align 8, !tbaa !90
  %2055 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2056 = getelementptr inbounds %class.powerDef, ptr %2055, i32 0, i32 2
  %2057 = getelementptr inbounds %class.powerComponents, ptr %2056, i32 0, i32 2
  %2058 = load double, ptr %2057, align 8, !tbaa !106
  %2059 = fadd double %2058, %2054
  store double %2059, ptr %2057, align 8, !tbaa !106
  %2060 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 19
  %2061 = load ptr, ptr %2060, align 8, !tbaa !60
  %2062 = getelementptr inbounds %class.Driver, ptr %2061, i32 0, i32 9
  %2063 = getelementptr inbounds %class.powerDef, ptr %2062, i32 0, i32 0
  %2064 = getelementptr inbounds %class.powerComponents, ptr %2063, i32 0, i32 2
  %2065 = load double, ptr %2064, align 8, !tbaa !90
  %2066 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 45
  %2067 = getelementptr inbounds %class.Subarray, ptr %2066, i32 0, i32 4
  %2068 = load i32, ptr %2067, align 8, !tbaa !49
  %2069 = sitofp i32 %2068 to double
  %2070 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2071 = getelementptr inbounds %class.powerDef, ptr %2070, i32 0, i32 2
  %2072 = getelementptr inbounds %class.powerComponents, ptr %2071, i32 0, i32 2
  %2073 = load double, ptr %2072, align 8, !tbaa !106
  %2074 = call double @llvm.fmuladd.f64(double %2065, double %2069, double %2073)
  store double %2074, ptr %2072, align 8, !tbaa !106
  %2075 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 17
  %2076 = load ptr, ptr %2075, align 8, !tbaa !63
  %2077 = getelementptr inbounds %class.Driver, ptr %2076, i32 0, i32 9
  %2078 = getelementptr inbounds %class.powerDef, ptr %2077, i32 0, i32 0
  %2079 = getelementptr inbounds %class.powerComponents, ptr %2078, i32 0, i32 0
  %2080 = load double, ptr %2079, align 8, !tbaa !31
  %2081 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2082 = getelementptr inbounds %class.powerDef, ptr %2081, i32 0, i32 2
  %2083 = getelementptr inbounds %class.powerComponents, ptr %2082, i32 0, i32 2
  %2084 = load double, ptr %2083, align 8, !tbaa !106
  %2085 = fadd double %2084, %2080
  store double %2085, ptr %2083, align 8, !tbaa !106
  %2086 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 73
  %2087 = load i32, ptr %2086, align 8, !tbaa !29
  %2088 = uitofp i32 %2087 to double
  %2089 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2090 = getelementptr inbounds %class.powerDef, ptr %2089, i32 0, i32 2
  %2091 = getelementptr inbounds %class.powerComponents, ptr %2090, i32 0, i32 2
  %2092 = load double, ptr %2091, align 8, !tbaa !106
  %2093 = fmul double %2092, %2088
  store double %2093, ptr %2091, align 8, !tbaa !106
  %2094 = getelementptr inbounds %class.Mat, ptr %6, i32 0, i32 28
  %2095 = getelementptr inbounds %class.powerDef, ptr %2094, i32 0, i32 2
  %2096 = getelementptr inbounds %class.powerComponents, ptr %2095, i32 0, i32 2
  %2097 = load double, ptr %2096, align 8, !tbaa !106
  %2098 = getelementptr inbounds %class.Component, ptr %6, i32 0, i32 1
  %2099 = getelementptr inbounds %class.powerDef, ptr %2098, i32 0, i32 0
  %2100 = getelementptr inbounds %class.powerComponents, ptr %2099, i32 0, i32 2
  %2101 = load double, ptr %2100, align 8, !tbaa !94
  %2102 = fadd double %2101, %2097
  store double %2102, ptr %2100, align 8, !tbaa !94
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  br label %2103

2103:                                             ; preds = %1724, %1287
  br label %2104

2104:                                             ; preds = %2103, %802
  ret void
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) #3 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 352}
!10 = !{!"_ZTS3Mat", !11, i64 0, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !6, i64 432, !14, i64 440, !14, i64 560, !14, i64 680, !14, i64 800, !14, i64 920, !14, i64 1040, !14, i64 1160, !14, i64 1280, !14, i64 1400, !14, i64 1520, !14, i64 1640, !13, i64 1760, !13, i64 1768, !13, i64 1776, !13, i64 1784, !13, i64 1792, !13, i64 1800, !13, i64 1808, !13, i64 1816, !13, i64 1824, !13, i64 1832, !13, i64 1840, !13, i64 1848, !13, i64 1856, !16, i64 1864, !14, i64 2288, !14, i64 2408, !14, i64 2528, !13, i64 2648, !17, i64 2656, !17, i64 2660, !13, i64 2664, !12, i64 2672, !12, i64 2696, !18, i64 2720, !18, i64 2721, !18, i64 2722, !18, i64 2723, !17, i64 2724, !14, i64 2728, !13, i64 2848, !13, i64 2856, !13, i64 2864, !13, i64 2872, !13, i64 2880, !13, i64 2888, !14, i64 2896, !17, i64 3016, !17, i64 3020, !17, i64 3024, !17, i64 3028, !13, i64 3032, !17, i64 3040, !17, i64 3044, !17, i64 3048, !17, i64 3052, !17, i64 3056, !17, i64 3060}
!11 = !{!"_ZTS9Component", !12, i64 0, !14, i64 24, !14, i64 144, !13, i64 264, !13, i64 272}
!12 = !{!"_ZTS4Area", !13, i64 0, !13, i64 8, !13, i64 16}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTS8powerDef", !15, i64 0, !15, i64 40, !15, i64 80}
!15 = !{!"_ZTS15powerComponents", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32}
!16 = !{!"_ZTS8Subarray", !11, i64 0, !6, i64 280, !17, i64 288, !17, i64 292, !17, i64 296, !17, i64 300, !12, i64 304, !12, i64 328, !18, i64 352, !13, i64 360, !13, i64 368, !13, i64 376, !13, i64 384, !13, i64 392, !13, i64 400, !13, i64 408, !13, i64 416}
!17 = !{!"int", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!11, !13, i64 24}
!20 = !{!10, !6, i64 360}
!21 = !{!10, !6, i64 368}
!22 = !{!10, !6, i64 376}
!23 = !{!10, !6, i64 288}
!24 = !{!10, !13, i64 440}
!25 = !{!10, !18, i64 2721}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!10, !18, i64 2722}
!29 = !{!10, !17, i64 3040}
!30 = !{!10, !6, i64 392}
!31 = !{!32, !13, i64 640}
!32 = !{!"_ZTS6Driver", !11, i64 0, !17, i64 280, !17, i64 284, !7, i64 288, !7, i64 448, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !14, i64 640, !18, i64 760}
!33 = !{!10, !13, i64 1040}
!34 = !{!10, !17, i64 2156}
!35 = !{!10, !17, i64 2656}
!36 = !{!10, !17, i64 3024}
!37 = !{!10, !13, i64 2728}
!38 = !{!10, !13, i64 2288}
!39 = !{!10, !13, i64 2328}
!40 = !{!10, !13, i64 1160}
!41 = !{!10, !6, i64 384}
!42 = !{!10, !17, i64 3016}
!43 = !{!10, !6, i64 296}
!44 = !{!10, !6, i64 304}
!45 = !{!10, !6, i64 312}
!46 = !{!10, !13, i64 2896}
!47 = !{!10, !6, i64 400}
!48 = !{!10, !13, i64 1120}
!49 = !{!10, !17, i64 2160}
!50 = !{!10, !17, i64 2164}
!51 = !{!10, !17, i64 3028}
!52 = !{!10, !13, i64 2808}
!53 = !{!10, !13, i64 2368}
!54 = !{!10, !17, i64 3020}
!55 = !{!10, !13, i64 1240}
!56 = !{!10, !13, i64 2608}
!57 = !{!10, !6, i64 416}
!58 = !{!10, !13, i64 1400}
!59 = !{!10, !13, i64 1480}
!60 = !{!10, !6, i64 424}
!61 = !{!10, !13, i64 2408}
!62 = !{!10, !13, i64 2488}
!63 = !{!10, !6, i64 408}
!64 = !{!10, !13, i64 1520}
!65 = !{!10, !13, i64 1600}
!66 = !{!10, !6, i64 432}
!67 = !{!10, !13, i64 1720}
!68 = !{!10, !13, i64 1360}
!69 = !{!11, !13, i64 104}
!70 = !{!10, !6, i64 280}
!71 = !{!72, !17, i64 44}
!72 = !{!"_ZTS16DynamicParameter", !18, i64 0, !18, i64 1, !18, i64 2, !18, i64 3, !17, i64 4, !17, i64 8, !17, i64 12, !13, i64 16, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !17, i64 60, !17, i64 64, !17, i64 68, !17, i64 72, !17, i64 76, !17, i64 80, !17, i64 84, !17, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !18, i64 120, !13, i64 128, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !17, i64 168, !13, i64 176, !17, i64 184, !17, i64 188, !17, i64 192, !17, i64 196, !17, i64 200, !17, i64 204, !17, i64 208, !18, i64 212, !12, i64 216, !12, i64 240, !18, i64 264}
!73 = !{!72, !17, i64 48}
!74 = !{!17, !17, i64 0}
!75 = !{!10, !17, i64 2152}
!76 = !{!10, !13, i64 2296}
!77 = !{!32, !13, i64 648}
!78 = !{!10, !13, i64 1048}
!79 = !{!10, !17, i64 3048}
!80 = !{!10, !17, i64 3052}
!81 = !{!10, !13, i64 2736}
!82 = !{!10, !13, i64 1168}
!83 = !{!11, !13, i64 32}
!84 = !{!10, !13, i64 2904}
!85 = !{!10, !13, i64 448}
!86 = !{!10, !13, i64 568}
!87 = !{!10, !13, i64 688}
!88 = !{!10, !13, i64 808}
!89 = !{!10, !13, i64 2304}
!90 = !{!32, !13, i64 656}
!91 = !{!10, !13, i64 1056}
!92 = !{!10, !13, i64 2744}
!93 = !{!10, !13, i64 1176}
!94 = !{!11, !13, i64 40}
!95 = !{!10, !13, i64 2912}
!96 = !{!10, !13, i64 456}
!97 = !{!10, !13, i64 576}
!98 = !{!10, !13, i64 696}
!99 = !{!10, !13, i64 816}
!100 = !{!10, !13, i64 1128}
!101 = !{!10, !17, i64 3060}
!102 = !{!10, !13, i64 2616}
!103 = !{!10, !13, i64 1368}
!104 = !{!10, !13, i64 1136}
!105 = !{!10, !13, i64 2624}
!106 = !{!10, !13, i64 1376}
!107 = !{!10, !17, i64 3056}


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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Mat20compute_power_energyEv(ptr noundef nonnull align 8 dereferenceable(3064) %0) local_unnamed_addr #1 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 352
  %3 = load ptr, ptr %2, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %3, i64 24
  %5 = load double, ptr %4, align 8, !tbaa !18
  %6 = getelementptr inbounds i8, ptr %0, i64 360
  %7 = load ptr, ptr %6, align 8, !tbaa !19
  %8 = getelementptr inbounds i8, ptr %7, i64 24
  %9 = load double, ptr %8, align 8, !tbaa !18
  %10 = fadd double %5, %9
  %11 = getelementptr inbounds i8, ptr %0, i64 368
  %12 = load ptr, ptr %11, align 8, !tbaa !20
  %13 = getelementptr inbounds i8, ptr %12, i64 24
  %14 = load double, ptr %13, align 8, !tbaa !18
  %15 = fadd double %10, %14
  %16 = getelementptr inbounds i8, ptr %0, i64 376
  %17 = load ptr, ptr %16, align 8, !tbaa !21
  %18 = getelementptr inbounds i8, ptr %17, i64 24
  %19 = load double, ptr %18, align 8, !tbaa !18
  %20 = fadd double %15, %19
  %21 = getelementptr inbounds i8, ptr %0, i64 24
  %22 = load double, ptr %21, align 8, !tbaa !18
  %23 = fadd double %22, %20
  store double %23, ptr %21, align 8, !tbaa !18
  %24 = getelementptr inbounds i8, ptr %0, i64 288
  %25 = load ptr, ptr %24, align 8, !tbaa !22
  %26 = getelementptr inbounds i8, ptr %25, i64 24
  %27 = load double, ptr %26, align 8, !tbaa !18
  %28 = getelementptr inbounds i8, ptr %0, i64 440
  store double %27, ptr %28, align 8, !tbaa !23
  %29 = getelementptr inbounds i8, ptr %0, i64 2721
  %30 = load i8, ptr %29, align 1, !tbaa !24, !range !25, !noundef !26
  %31 = trunc nuw i8 %30 to i1
  br i1 %31, label %103, label %32

32:                                               ; preds = %1
  %33 = getelementptr inbounds i8, ptr %0, i64 2722
  %34 = load i8, ptr %33, align 2, !tbaa !27, !range !25, !noundef !26
  %35 = trunc nuw i8 %34 to i1
  br i1 %35, label %241, label %36

36:                                               ; preds = %32
  %37 = getelementptr inbounds i8, ptr %0, i64 3040
  %38 = load i32, ptr %37, align 8, !tbaa !28
  %39 = uitofp i32 %38 to double
  %40 = fmul double %27, %39
  store double %40, ptr %28, align 8, !tbaa !23
  %41 = getelementptr inbounds i8, ptr %0, i64 392
  %42 = load ptr, ptr %41, align 8, !tbaa !29
  %43 = getelementptr inbounds i8, ptr %42, i64 640
  %44 = load double, ptr %43, align 8, !tbaa !30
  %45 = getelementptr inbounds i8, ptr %0, i64 1040
  %46 = getelementptr inbounds i8, ptr %0, i64 3040
  %47 = load i32, ptr %46, align 8, !tbaa !28
  %48 = uitofp i32 %47 to double
  %49 = fmul double %44, %48
  store double %49, ptr %45, align 8, !tbaa !32
  %50 = getelementptr inbounds i8, ptr %0, i64 2156
  %51 = load i32, ptr %50, align 4, !tbaa !33
  %52 = getelementptr inbounds i8, ptr %0, i64 2656
  %53 = load i32, ptr %52, align 8, !tbaa !34
  %54 = udiv i32 %51, %53
  %55 = getelementptr inbounds i8, ptr %0, i64 3024
  store i32 %54, ptr %55, align 8, !tbaa !35
  %56 = mul i32 %54, %47
  %57 = uitofp i32 %56 to double
  %58 = getelementptr inbounds i8, ptr %0, i64 2728
  %59 = load double, ptr %58, align 8, !tbaa !36
  %60 = fmul double %59, %57
  store double %60, ptr %58, align 8, !tbaa !36
  %61 = mul i32 %51, %47
  %62 = uitofp i32 %61 to double
  %63 = getelementptr inbounds i8, ptr %0, i64 2288
  %64 = load double, ptr %63, align 8, !tbaa !37
  %65 = fmul double %64, %62
  store double %65, ptr %63, align 8, !tbaa !37
  %66 = getelementptr inbounds i8, ptr %0, i64 2328
  %67 = load double, ptr %66, align 8, !tbaa !38
  %68 = fmul double %67, %62
  store double %68, ptr %66, align 8, !tbaa !38
  %69 = getelementptr inbounds i8, ptr %0, i64 1160
  %70 = load double, ptr %69, align 8, !tbaa !39
  %71 = getelementptr inbounds i8, ptr %0, i64 384
  %72 = load ptr, ptr %71, align 8, !tbaa !40
  %73 = getelementptr inbounds i8, ptr %72, i64 24
  %74 = load double, ptr %73, align 8, !tbaa !18
  %75 = fadd double %70, %74
  %76 = getelementptr inbounds i8, ptr %0, i64 3016
  %77 = load i32, ptr %76, align 8, !tbaa !41
  %78 = sitofp i32 %77 to double
  %79 = fmul double %75, %78
  store double %79, ptr %69, align 8, !tbaa !39
  %80 = fadd double %49, %60
  %81 = fadd double %80, %65
  %82 = fadd double %81, %79
  %83 = fadd double %23, %82
  store double %83, ptr %21, align 8, !tbaa !18
  %84 = getelementptr inbounds i8, ptr %0, i64 296
  %85 = load ptr, ptr %84, align 8, !tbaa !42
  %86 = getelementptr inbounds i8, ptr %85, i64 24
  %87 = load double, ptr %86, align 8, !tbaa !18
  %88 = fadd double %40, %87
  %89 = getelementptr inbounds i8, ptr %0, i64 304
  %90 = load ptr, ptr %89, align 8, !tbaa !43
  %91 = getelementptr inbounds i8, ptr %90, i64 24
  %92 = load double, ptr %91, align 8, !tbaa !18
  %93 = fadd double %88, %92
  %94 = getelementptr inbounds i8, ptr %0, i64 312
  %95 = load ptr, ptr %94, align 8, !tbaa !44
  %96 = getelementptr inbounds i8, ptr %95, i64 24
  %97 = load double, ptr %96, align 8, !tbaa !18
  %98 = fadd double %93, %97
  %99 = getelementptr inbounds i8, ptr %0, i64 2896
  %100 = load double, ptr %99, align 8, !tbaa !45
  %101 = fadd double %98, %100
  %102 = fadd double %83, %101
  store double %102, ptr %21, align 8, !tbaa !18
  br label %364

103:                                              ; preds = %1
  %104 = getelementptr inbounds i8, ptr %0, i64 392
  %105 = load ptr, ptr %104, align 8, !tbaa !29
  %106 = getelementptr inbounds i8, ptr %105, i64 640
  %107 = load double, ptr %106, align 8, !tbaa !30
  %108 = getelementptr inbounds i8, ptr %0, i64 400
  %109 = load ptr, ptr %108, align 8, !tbaa !46
  %110 = getelementptr inbounds i8, ptr %109, i64 640
  %111 = load double, ptr %110, align 8, !tbaa !30
  %112 = fadd double %107, %111
  %113 = getelementptr inbounds i8, ptr %0, i64 1040
  store double %112, ptr %113, align 8, !tbaa !32
  %114 = getelementptr inbounds i8, ptr %0, i64 1120
  store double %107, ptr %114, align 8, !tbaa !47
  %115 = getelementptr inbounds i8, ptr %0, i64 2160
  %116 = load i32, ptr %115, align 8, !tbaa !48
  %117 = getelementptr inbounds i8, ptr %0, i64 2164
  %118 = load i32, ptr %117, align 4, !tbaa !49
  %119 = add nsw i32 %118, %116
  %120 = getelementptr inbounds i8, ptr %0, i64 2656
  %121 = load i32, ptr %120, align 8, !tbaa !34
  %122 = sdiv i32 %119, %121
  %123 = getelementptr inbounds i8, ptr %0, i64 3024
  store i32 %122, ptr %123, align 8, !tbaa !35
  %124 = sdiv i32 %118, %121
  %125 = getelementptr inbounds i8, ptr %0, i64 3028
  store i32 %124, ptr %125, align 4, !tbaa !50
  %126 = getelementptr inbounds i8, ptr %0, i64 2728
  %127 = load double, ptr %126, align 8, !tbaa !36
  %128 = sitofp i32 %124 to double
  %129 = fmul double %127, %128
  %130 = getelementptr inbounds i8, ptr %0, i64 2808
  store double %129, ptr %130, align 8, !tbaa !51
  %131 = sitofp i32 %122 to double
  %132 = fmul double %127, %131
  store double %132, ptr %126, align 8, !tbaa !36
  %133 = getelementptr inbounds i8, ptr %0, i64 2288
  %134 = load double, ptr %133, align 8, !tbaa !37
  %135 = getelementptr inbounds i8, ptr %0, i64 2368
  %136 = sitofp i32 %119 to double
  %137 = fmul double %134, %136
  store double %137, ptr %133, align 8, !tbaa !37
  %138 = getelementptr inbounds i8, ptr %0, i64 2328
  %139 = load double, ptr %138, align 8, !tbaa !38
  %140 = fmul double %139, %136
  store double %140, ptr %138, align 8, !tbaa !38
  %141 = sitofp i32 %118 to double
  %142 = fmul double %134, %141
  store double %142, ptr %135, align 8, !tbaa !52
  %143 = getelementptr inbounds i8, ptr %0, i64 1160
  %144 = load double, ptr %143, align 8, !tbaa !39
  %145 = getelementptr inbounds i8, ptr %0, i64 384
  %146 = load ptr, ptr %145, align 8, !tbaa !40
  %147 = getelementptr inbounds i8, ptr %146, i64 24
  %148 = load double, ptr %147, align 8, !tbaa !18
  %149 = fadd double %144, %148
  %150 = getelementptr inbounds i8, ptr %0, i64 3020
  %151 = load i32, ptr %150, align 4, !tbaa !53
  %152 = sitofp i32 %151 to double
  %153 = fmul double %149, %152
  %154 = getelementptr inbounds i8, ptr %0, i64 1240
  store double %153, ptr %154, align 8, !tbaa !54
  %155 = getelementptr inbounds i8, ptr %0, i64 3016
  %156 = load i32, ptr %155, align 8, !tbaa !41
  %157 = sitofp i32 %156 to double
  %158 = fmul double %149, %157
  store double %158, ptr %143, align 8, !tbaa !39
  %159 = fadd double %112, %132
  %160 = fadd double %159, %137
  %161 = fadd double %160, %158
  %162 = fadd double %23, %161
  store double %162, ptr %21, align 8, !tbaa !18
  %163 = getelementptr inbounds i8, ptr %0, i64 296
  %164 = load ptr, ptr %163, align 8, !tbaa !42
  %165 = getelementptr inbounds i8, ptr %164, i64 24
  %166 = load double, ptr %165, align 8, !tbaa !18
  %167 = fadd double %27, %166
  %168 = getelementptr inbounds i8, ptr %0, i64 304
  %169 = load ptr, ptr %168, align 8, !tbaa !43
  %170 = getelementptr inbounds i8, ptr %169, i64 24
  %171 = load double, ptr %170, align 8, !tbaa !18
  %172 = fadd double %167, %171
  %173 = getelementptr inbounds i8, ptr %0, i64 312
  %174 = load ptr, ptr %173, align 8, !tbaa !44
  %175 = getelementptr inbounds i8, ptr %174, i64 24
  %176 = load double, ptr %175, align 8, !tbaa !18
  %177 = fadd double %172, %176
  %178 = getelementptr inbounds i8, ptr %0, i64 2896
  %179 = load double, ptr %178, align 8, !tbaa !45
  %180 = fadd double %177, %179
  %181 = fadd double %162, %180
  store double %181, ptr %21, align 8, !tbaa !18
  %182 = getelementptr inbounds i8, ptr %0, i64 3040
  %183 = load i32, ptr %182, align 8, !tbaa !28
  %184 = uitofp i32 %183 to double
  %185 = getelementptr inbounds i8, ptr %0, i64 2608
  %186 = load double, ptr %185, align 8, !tbaa !55
  %187 = fmul double %186, %184
  store double %187, ptr %185, align 8, !tbaa !55
  %188 = getelementptr inbounds i8, ptr %0, i64 416
  %189 = load ptr, ptr %188, align 8, !tbaa !56
  %190 = getelementptr inbounds i8, ptr %189, i64 640
  %191 = getelementptr inbounds i8, ptr %0, i64 1400
  %192 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %191, ptr noundef nonnull align 8 dereferenceable(120) %190)
  %193 = load double, ptr %191, align 8, !tbaa !57
  %194 = load i32, ptr %182, align 8, !tbaa !28
  %195 = uitofp i32 %194 to double
  %196 = fmul double %193, %195
  %197 = getelementptr inbounds i8, ptr %0, i64 1480
  store double %196, ptr %197, align 8, !tbaa !58
  %198 = getelementptr inbounds i8, ptr %0, i64 424
  %199 = load ptr, ptr %198, align 8, !tbaa !59
  %200 = getelementptr inbounds i8, ptr %199, i64 640
  %201 = getelementptr inbounds i8, ptr %0, i64 2408
  %202 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %201, ptr noundef nonnull align 8 dereferenceable(120) %200)
  %203 = load double, ptr %201, align 8, !tbaa !60
  %204 = load i32, ptr %115, align 8, !tbaa !48
  %205 = sitofp i32 %204 to double
  %206 = fmul double %203, %205
  %207 = load i32, ptr %182, align 8, !tbaa !28
  %208 = uitofp i32 %207 to double
  %209 = fmul double %206, %208
  %210 = getelementptr inbounds i8, ptr %0, i64 2488
  store double %209, ptr %210, align 8, !tbaa !61
  %211 = getelementptr inbounds i8, ptr %0, i64 408
  %212 = load ptr, ptr %211, align 8, !tbaa !62
  %213 = getelementptr inbounds i8, ptr %212, i64 640
  %214 = getelementptr inbounds i8, ptr %0, i64 1520
  %215 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %214, ptr noundef nonnull align 8 dereferenceable(120) %213)
  %216 = load double, ptr %214, align 8, !tbaa !63
  %217 = load i32, ptr %182, align 8, !tbaa !28
  %218 = uitofp i32 %217 to double
  %219 = fmul double %216, %218
  %220 = getelementptr inbounds i8, ptr %0, i64 1600
  store double %219, ptr %220, align 8, !tbaa !64
  %221 = getelementptr inbounds i8, ptr %0, i64 432
  %222 = load ptr, ptr %221, align 8, !tbaa !65
  %223 = getelementptr inbounds i8, ptr %222, i64 640
  %224 = getelementptr inbounds i8, ptr %0, i64 1640
  %225 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %224, ptr noundef nonnull align 8 dereferenceable(120) %223)
  %226 = load ptr, ptr %221, align 8, !tbaa !65
  %227 = getelementptr inbounds i8, ptr %226, i64 640
  %228 = load double, ptr %227, align 8, !tbaa !30
  %229 = getelementptr inbounds i8, ptr %0, i64 1720
  store double %228, ptr %229, align 8, !tbaa !66
  %230 = load double, ptr %185, align 8, !tbaa !55
  %231 = getelementptr inbounds i8, ptr %0, i64 1360
  %232 = load double, ptr %197, align 8, !tbaa !58
  %233 = fadd double %230, %232
  %234 = load double, ptr %210, align 8, !tbaa !61
  %235 = fadd double %233, %234
  %236 = load double, ptr %220, align 8, !tbaa !64
  %237 = fadd double %235, %236
  store double %237, ptr %231, align 8, !tbaa !67
  %238 = getelementptr inbounds i8, ptr %0, i64 104
  %239 = load double, ptr %238, align 8, !tbaa !68
  %240 = fadd double %237, %239
  store double %240, ptr %238, align 8, !tbaa !68
  br label %364

241:                                              ; preds = %32
  %242 = getelementptr inbounds i8, ptr %0, i64 400
  %243 = load ptr, ptr %242, align 8, !tbaa !46
  %244 = getelementptr inbounds i8, ptr %243, i64 640
  %245 = load double, ptr %244, align 8, !tbaa !30
  %246 = getelementptr inbounds i8, ptr %0, i64 1040
  store double %245, ptr %246, align 8, !tbaa !32
  %247 = getelementptr inbounds i8, ptr %0, i64 2160
  %248 = load i32, ptr %247, align 8, !tbaa !48
  %249 = getelementptr inbounds i8, ptr %0, i64 2656
  %250 = load i32, ptr %249, align 8, !tbaa !34
  %251 = sdiv i32 %248, %250
  %252 = getelementptr inbounds i8, ptr %0, i64 3024
  store i32 %251, ptr %252, align 8, !tbaa !35
  %253 = sitofp i32 %251 to double
  %254 = getelementptr inbounds i8, ptr %0, i64 2728
  %255 = load double, ptr %254, align 8, !tbaa !36
  %256 = fmul double %255, %253
  store double %256, ptr %254, align 8, !tbaa !36
  %257 = getelementptr inbounds i8, ptr %0, i64 2808
  store double 0.000000e+00, ptr %257, align 8, !tbaa !51
  %258 = sitofp i32 %248 to double
  %259 = getelementptr inbounds i8, ptr %0, i64 2288
  %260 = load double, ptr %259, align 8, !tbaa !37
  %261 = fmul double %260, %258
  store double %261, ptr %259, align 8, !tbaa !37
  %262 = getelementptr inbounds i8, ptr %0, i64 2368
  store double 0.000000e+00, ptr %262, align 8, !tbaa !52
  %263 = getelementptr inbounds i8, ptr %0, i64 2328
  %264 = load double, ptr %263, align 8, !tbaa !38
  %265 = fmul double %264, %258
  store double %265, ptr %263, align 8, !tbaa !38
  %266 = getelementptr inbounds i8, ptr %0, i64 1160
  %267 = load double, ptr %266, align 8, !tbaa !39
  %268 = getelementptr inbounds i8, ptr %0, i64 384
  %269 = load ptr, ptr %268, align 8, !tbaa !40
  %270 = getelementptr inbounds i8, ptr %269, i64 24
  %271 = load double, ptr %270, align 8, !tbaa !18
  %272 = fadd double %267, %271
  %273 = getelementptr inbounds i8, ptr %0, i64 3020
  %274 = load i32, ptr %273, align 4, !tbaa !53
  %275 = sitofp i32 %274 to double
  %276 = fmul double %272, %275
  %277 = getelementptr inbounds i8, ptr %0, i64 1240
  store double %276, ptr %277, align 8, !tbaa !54
  %278 = getelementptr inbounds i8, ptr %0, i64 3016
  %279 = load i32, ptr %278, align 8, !tbaa !41
  %280 = sitofp i32 %279 to double
  %281 = fmul double %272, %280
  store double %281, ptr %266, align 8, !tbaa !39
  %282 = fadd double %245, %256
  %283 = fadd double %282, %261
  %284 = fadd double %283, %281
  %285 = fadd double %23, %284
  store double %285, ptr %21, align 8, !tbaa !18
  %286 = getelementptr inbounds i8, ptr %0, i64 296
  %287 = load ptr, ptr %286, align 8, !tbaa !42
  %288 = getelementptr inbounds i8, ptr %287, i64 24
  %289 = load double, ptr %288, align 8, !tbaa !18
  %290 = fadd double %27, %289
  %291 = getelementptr inbounds i8, ptr %0, i64 304
  %292 = load ptr, ptr %291, align 8, !tbaa !43
  %293 = getelementptr inbounds i8, ptr %292, i64 24
  %294 = load double, ptr %293, align 8, !tbaa !18
  %295 = fadd double %290, %294
  %296 = getelementptr inbounds i8, ptr %0, i64 312
  %297 = load ptr, ptr %296, align 8, !tbaa !44
  %298 = getelementptr inbounds i8, ptr %297, i64 24
  %299 = load double, ptr %298, align 8, !tbaa !18
  %300 = fadd double %295, %299
  %301 = getelementptr inbounds i8, ptr %0, i64 2896
  %302 = load double, ptr %301, align 8, !tbaa !45
  %303 = fadd double %300, %302
  %304 = fadd double %285, %303
  store double %304, ptr %21, align 8, !tbaa !18
  %305 = getelementptr inbounds i8, ptr %0, i64 3040
  %306 = load i32, ptr %305, align 8, !tbaa !28
  %307 = uitofp i32 %306 to double
  %308 = getelementptr inbounds i8, ptr %0, i64 2608
  %309 = load double, ptr %308, align 8, !tbaa !55
  %310 = fmul double %309, %307
  store double %310, ptr %308, align 8, !tbaa !55
  %311 = getelementptr inbounds i8, ptr %0, i64 416
  %312 = load ptr, ptr %311, align 8, !tbaa !56
  %313 = getelementptr inbounds i8, ptr %312, i64 640
  %314 = getelementptr inbounds i8, ptr %0, i64 1400
  %315 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %314, ptr noundef nonnull align 8 dereferenceable(120) %313)
  %316 = load double, ptr %314, align 8, !tbaa !57
  %317 = load i32, ptr %305, align 8, !tbaa !28
  %318 = uitofp i32 %317 to double
  %319 = fmul double %316, %318
  %320 = getelementptr inbounds i8, ptr %0, i64 1480
  store double %319, ptr %320, align 8, !tbaa !58
  %321 = getelementptr inbounds i8, ptr %0, i64 424
  %322 = load ptr, ptr %321, align 8, !tbaa !59
  %323 = getelementptr inbounds i8, ptr %322, i64 640
  %324 = getelementptr inbounds i8, ptr %0, i64 2408
  %325 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %324, ptr noundef nonnull align 8 dereferenceable(120) %323)
  %326 = load double, ptr %324, align 8, !tbaa !60
  %327 = load i32, ptr %247, align 8, !tbaa !48
  %328 = sitofp i32 %327 to double
  %329 = fmul double %326, %328
  %330 = load i32, ptr %305, align 8, !tbaa !28
  %331 = uitofp i32 %330 to double
  %332 = fmul double %329, %331
  %333 = getelementptr inbounds i8, ptr %0, i64 2488
  store double %332, ptr %333, align 8, !tbaa !61
  %334 = getelementptr inbounds i8, ptr %0, i64 408
  %335 = load ptr, ptr %334, align 8, !tbaa !62
  %336 = getelementptr inbounds i8, ptr %335, i64 640
  %337 = getelementptr inbounds i8, ptr %0, i64 1520
  %338 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %337, ptr noundef nonnull align 8 dereferenceable(120) %336)
  %339 = load double, ptr %337, align 8, !tbaa !63
  %340 = load i32, ptr %305, align 8, !tbaa !28
  %341 = uitofp i32 %340 to double
  %342 = fmul double %339, %341
  %343 = getelementptr inbounds i8, ptr %0, i64 1600
  store double %342, ptr %343, align 8, !tbaa !64
  %344 = getelementptr inbounds i8, ptr %0, i64 432
  %345 = load ptr, ptr %344, align 8, !tbaa !65
  %346 = getelementptr inbounds i8, ptr %345, i64 640
  %347 = getelementptr inbounds i8, ptr %0, i64 1640
  %348 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120) %347, ptr noundef nonnull align 8 dereferenceable(120) %346)
  %349 = load ptr, ptr %344, align 8, !tbaa !65
  %350 = getelementptr inbounds i8, ptr %349, i64 640
  %351 = load double, ptr %350, align 8, !tbaa !30
  %352 = getelementptr inbounds i8, ptr %0, i64 1720
  store double %351, ptr %352, align 8, !tbaa !66
  %353 = load double, ptr %308, align 8, !tbaa !55
  %354 = getelementptr inbounds i8, ptr %0, i64 1360
  %355 = load double, ptr %320, align 8, !tbaa !58
  %356 = fadd double %353, %355
  %357 = load double, ptr %333, align 8, !tbaa !61
  %358 = fadd double %356, %357
  %359 = load double, ptr %343, align 8, !tbaa !64
  %360 = fadd double %358, %359
  store double %360, ptr %354, align 8, !tbaa !67
  %361 = getelementptr inbounds i8, ptr %0, i64 104
  %362 = load double, ptr %361, align 8, !tbaa !68
  %363 = fadd double %360, %362
  store double %363, ptr %361, align 8, !tbaa !68
  br label %364

364:                                              ; preds = %103, %241, %36
  %365 = load i8, ptr %29, align 1, !tbaa !24, !range !25, !noundef !26
  %366 = trunc nuw i8 %365 to i1
  br i1 %366, label %550, label %367

367:                                              ; preds = %364
  %368 = getelementptr inbounds i8, ptr %0, i64 2722
  %369 = load i8, ptr %368, align 2, !tbaa !27, !range !25, !noundef !26
  %370 = trunc nuw i8 %369 to i1
  %371 = getelementptr inbounds i8, ptr %0, i64 3024
  %372 = load i32, ptr %371, align 8, !tbaa !35
  br i1 %370, label %697, label %373

373:                                              ; preds = %367
  %374 = getelementptr inbounds i8, ptr %0, i64 280
  %375 = load ptr, ptr %374, align 8, !tbaa !69
  %376 = getelementptr inbounds i8, ptr %375, i64 44
  %377 = load i32, ptr %376, align 4, !tbaa !70
  %378 = getelementptr inbounds i8, ptr %375, i64 48
  %379 = load i32, ptr %378, align 8, !tbaa !72
  %380 = mul nsw i32 %379, %377
  %381 = sdiv i32 %372, %380
  %382 = getelementptr inbounds i8, ptr %0, i64 2152
  %383 = load i32, ptr %382, align 8, !tbaa !73
  %384 = getelementptr inbounds i8, ptr %0, i64 2156
  %385 = load i32, ptr %384, align 4, !tbaa !33
  %386 = mul i32 %385, %383
  %387 = getelementptr inbounds i8, ptr %0, i64 3040
  %388 = load i32, ptr %387, align 8, !tbaa !28
  %389 = mul i32 %386, %388
  %390 = uitofp i32 %389 to double
  %391 = getelementptr inbounds i8, ptr %0, i64 2296
  %392 = load double, ptr %391, align 8, !tbaa !74
  %393 = fmul double %392, %390
  store double %393, ptr %391, align 8, !tbaa !74
  %394 = getelementptr inbounds i8, ptr %0, i64 392
  %395 = load ptr, ptr %394, align 8, !tbaa !29
  %396 = getelementptr inbounds i8, ptr %395, i64 648
  %397 = load double, ptr %396, align 8, !tbaa !75
  %398 = uitofp i32 %388 to double
  %399 = fmul double %397, %398
  %400 = getelementptr inbounds i8, ptr %0, i64 1048
  store double %399, ptr %400, align 8, !tbaa !76
  %401 = mul i32 %388, %372
  %402 = getelementptr inbounds i8, ptr %0, i64 3048
  %403 = load i32, ptr %402, align 8, !tbaa !77
  %404 = getelementptr inbounds i8, ptr %0, i64 3052
  %405 = load i32, ptr %404, align 4, !tbaa !78
  %406 = add nsw i32 %405, %403
  %407 = mul i32 %401, %406
  %408 = uitofp i32 %407 to double
  %409 = getelementptr inbounds i8, ptr %0, i64 2736
  %410 = load double, ptr %409, align 8, !tbaa !79
  %411 = fmul double %410, %408
  store double %411, ptr %409, align 8, !tbaa !79
  %412 = getelementptr inbounds i8, ptr %0, i64 1168
  %413 = load double, ptr %412, align 8, !tbaa !80
  %414 = getelementptr inbounds i8, ptr %0, i64 384
  %415 = load ptr, ptr %414, align 8, !tbaa !40
  %416 = getelementptr inbounds i8, ptr %415, i64 32
  %417 = load double, ptr %416, align 8, !tbaa !81
  %418 = fadd double %413, %417
  %419 = sitofp i32 %381 to double
  %420 = fmul double %418, %419
  %421 = fmul double %420, %398
  %422 = sitofp i32 %406 to double
  %423 = fmul double %421, %422
  store double %423, ptr %412, align 8, !tbaa !80
  %424 = fadd double %393, %399
  %425 = fadd double %424, %411
  %426 = fadd double %425, %423
  %427 = getelementptr inbounds i8, ptr %0, i64 32
  %428 = load double, ptr %427, align 8, !tbaa !81
  %429 = fadd double %428, %426
  %430 = getelementptr inbounds i8, ptr %0, i64 3016
  %431 = load i32, ptr %430, align 8, !tbaa !41
  %432 = mul nsw i32 %431, %406
  %433 = sitofp i32 %432 to double
  %434 = getelementptr inbounds i8, ptr %0, i64 2904
  %435 = load double, ptr %434, align 8, !tbaa !82
  %436 = fmul double %435, %433
  store double %436, ptr %434, align 8, !tbaa !82
  %437 = fadd double %429, %436
  store double %437, ptr %427, align 8, !tbaa !81
  %438 = load ptr, ptr %24, align 8, !tbaa !22
  %439 = getelementptr inbounds i8, ptr %438, i64 32
  %440 = uitofp i32 %383 to double
  %441 = getelementptr inbounds i8, ptr %0, i64 448
  %442 = getelementptr inbounds i8, ptr %0, i64 296
  %443 = load ptr, ptr %442, align 8, !tbaa !42
  %444 = getelementptr inbounds i8, ptr %443, i64 32
  %445 = load double, ptr %444, align 8, !tbaa !81
  %446 = getelementptr inbounds i8, ptr %0, i64 2656
  %447 = load i32, ptr %446, align 8, !tbaa !34
  %448 = sitofp i32 %447 to double
  %449 = fmul double %445, %448
  %450 = getelementptr inbounds i8, ptr %0, i64 568
  store double %449, ptr %450, align 8, !tbaa !83
  %451 = getelementptr inbounds i8, ptr %0, i64 304
  %452 = load ptr, ptr %451, align 8, !tbaa !43
  %453 = getelementptr inbounds i8, ptr %452, i64 32
  %454 = load double, ptr %453, align 8, !tbaa !81
  %455 = sitofp i32 %377 to double
  %456 = fmul double %454, %455
  %457 = getelementptr inbounds i8, ptr %0, i64 688
  store double %456, ptr %457, align 8, !tbaa !84
  %458 = getelementptr inbounds i8, ptr %0, i64 312
  %459 = load ptr, ptr %458, align 8, !tbaa !44
  %460 = getelementptr inbounds i8, ptr %459, i64 32
  %461 = load double, ptr %460, align 8, !tbaa !81
  %462 = sitofp i32 %379 to double
  %463 = fmul double %461, %462
  %464 = getelementptr inbounds i8, ptr %0, i64 808
  store double %463, ptr %464, align 8, !tbaa !85
  %465 = load ptr, ptr %2, align 8, !tbaa !5
  %466 = getelementptr inbounds i8, ptr %465, i64 32
  %467 = load double, ptr %466, align 8, !tbaa !81
  %468 = load ptr, ptr %6, align 8, !tbaa !19
  %469 = getelementptr inbounds i8, ptr %468, i64 32
  %470 = load double, ptr %469, align 8, !tbaa !81
  %471 = fadd double %467, %470
  %472 = load ptr, ptr %11, align 8, !tbaa !20
  %473 = getelementptr inbounds i8, ptr %472, i64 32
  %474 = load double, ptr %473, align 8, !tbaa !81
  %475 = fadd double %471, %474
  %476 = load ptr, ptr %16, align 8, !tbaa !21
  %477 = getelementptr inbounds i8, ptr %476, i64 32
  %478 = load double, ptr %477, align 8, !tbaa !81
  %479 = fadd double %475, %478
  %480 = getelementptr inbounds i8, ptr %0, i64 2304
  %481 = load double, ptr %480, align 8, !tbaa !86
  %482 = fmul double %481, %390
  store double %482, ptr %480, align 8, !tbaa !86
  %483 = getelementptr inbounds i8, ptr %395, i64 656
  %484 = load double, ptr %483, align 8, !tbaa !87
  %485 = fmul double %484, %398
  %486 = getelementptr inbounds i8, ptr %0, i64 1056
  store double %485, ptr %486, align 8, !tbaa !88
  %487 = getelementptr inbounds i8, ptr %0, i64 2744
  %488 = load double, ptr %487, align 8, !tbaa !89
  %489 = fmul double %488, %408
  store double %489, ptr %487, align 8, !tbaa !89
  %490 = getelementptr inbounds i8, ptr %0, i64 1176
  %491 = load double, ptr %490, align 8, !tbaa !90
  %492 = getelementptr inbounds i8, ptr %415, i64 40
  %493 = load double, ptr %492, align 8, !tbaa !91
  %494 = fadd double %491, %493
  %495 = fmul double %494, %419
  %496 = fmul double %495, %398
  %497 = fmul double %496, %422
  store double %497, ptr %490, align 8, !tbaa !90
  %498 = fadd double %482, %485
  %499 = fadd double %498, %489
  %500 = fadd double %499, %497
  %501 = getelementptr inbounds i8, ptr %0, i64 40
  %502 = load double, ptr %501, align 8, !tbaa !91
  %503 = fadd double %502, %500
  %504 = getelementptr inbounds i8, ptr %0, i64 2912
  %505 = load double, ptr %504, align 8, !tbaa !92
  %506 = fmul double %505, %433
  store double %506, ptr %504, align 8, !tbaa !92
  %507 = fadd double %506, %503
  store double %507, ptr %501, align 8, !tbaa !91
  %508 = load <2 x double>, ptr %439, align 8, !tbaa !93
  %509 = insertelement <2 x double> poison, double %440, i64 0
  %510 = shufflevector <2 x double> %509, <2 x double> poison, <2 x i32> zeroinitializer
  %511 = fmul <2 x double> %508, %510
  %512 = insertelement <2 x double> poison, double %398, i64 0
  %513 = shufflevector <2 x double> %512, <2 x double> poison, <2 x i32> zeroinitializer
  %514 = fmul <2 x double> %511, %513
  %515 = extractelement <2 x double> %514, i64 0
  %516 = fadd double %515, %479
  %517 = fadd double %449, %516
  %518 = fadd double %456, %517
  %519 = fadd double %463, %518
  %520 = fadd double %437, %519
  store double %520, ptr %427, align 8, !tbaa !81
  store <2 x double> %514, ptr %441, align 8, !tbaa !93
  %521 = getelementptr inbounds i8, ptr %443, i64 40
  %522 = load double, ptr %521, align 8, !tbaa !91
  %523 = fmul double %522, %448
  %524 = getelementptr inbounds i8, ptr %0, i64 576
  store double %523, ptr %524, align 8, !tbaa !94
  %525 = getelementptr inbounds i8, ptr %452, i64 40
  %526 = load double, ptr %525, align 8, !tbaa !91
  %527 = fmul double %526, %455
  %528 = getelementptr inbounds i8, ptr %0, i64 696
  store double %527, ptr %528, align 8, !tbaa !95
  %529 = getelementptr inbounds i8, ptr %459, i64 40
  %530 = load double, ptr %529, align 8, !tbaa !91
  %531 = fmul double %530, %462
  %532 = getelementptr inbounds i8, ptr %0, i64 816
  store double %531, ptr %532, align 8, !tbaa !96
  %533 = getelementptr inbounds i8, ptr %465, i64 40
  %534 = load double, ptr %533, align 8, !tbaa !91
  %535 = getelementptr inbounds i8, ptr %468, i64 40
  %536 = load double, ptr %535, align 8, !tbaa !91
  %537 = fadd double %534, %536
  %538 = getelementptr inbounds i8, ptr %472, i64 40
  %539 = load double, ptr %538, align 8, !tbaa !91
  %540 = fadd double %537, %539
  %541 = getelementptr inbounds i8, ptr %476, i64 40
  %542 = load double, ptr %541, align 8, !tbaa !91
  %543 = fadd double %540, %542
  %544 = extractelement <2 x double> %514, i64 1
  %545 = fadd double %544, %543
  %546 = fadd double %523, %545
  %547 = fadd double %527, %546
  %548 = fadd double %531, %547
  %549 = fadd double %507, %548
  store double %549, ptr %501, align 8, !tbaa !91
  br label %835

550:                                              ; preds = %364
  %551 = getelementptr inbounds i8, ptr %0, i64 3024
  %552 = load i32, ptr %551, align 8, !tbaa !35
  %553 = getelementptr inbounds i8, ptr %0, i64 2152
  %554 = load i32, ptr %553, align 8, !tbaa !73
  %555 = getelementptr inbounds i8, ptr %0, i64 2156
  %556 = load i32, ptr %555, align 4, !tbaa !33
  %557 = mul i32 %556, %554
  %558 = getelementptr inbounds i8, ptr %0, i64 3040
  %559 = load i32, ptr %558, align 8, !tbaa !28
  %560 = mul i32 %557, %559
  %561 = uitofp i32 %560 to double
  %562 = getelementptr inbounds i8, ptr %0, i64 2296
  %563 = load double, ptr %562, align 8, !tbaa !74
  %564 = fmul double %563, %561
  store double %564, ptr %562, align 8, !tbaa !74
  %565 = getelementptr inbounds i8, ptr %0, i64 392
  %566 = load ptr, ptr %565, align 8, !tbaa !29
  %567 = getelementptr inbounds i8, ptr %566, i64 648
  %568 = load double, ptr %567, align 8, !tbaa !75
  %569 = uitofp i32 %559 to double
  %570 = fmul double %568, %569
  %571 = getelementptr inbounds i8, ptr %0, i64 1048
  store double %570, ptr %571, align 8, !tbaa !76
  %572 = getelementptr inbounds i8, ptr %0, i64 400
  %573 = load ptr, ptr %572, align 8, !tbaa !46
  %574 = getelementptr inbounds i8, ptr %573, i64 648
  %575 = load double, ptr %574, align 8, !tbaa !75
  %576 = fmul double %575, %569
  %577 = getelementptr inbounds i8, ptr %0, i64 1128
  store double %576, ptr %577, align 8, !tbaa !97
  %578 = mul i32 %559, %552
  %579 = getelementptr inbounds i8, ptr %0, i64 3048
  %580 = load i32, ptr %579, align 8, !tbaa !77
  %581 = getelementptr inbounds i8, ptr %0, i64 3052
  %582 = load i32, ptr %581, align 4, !tbaa !78
  %583 = add nsw i32 %582, %580
  %584 = getelementptr inbounds i8, ptr %0, i64 3060
  %585 = load i32, ptr %584, align 4, !tbaa !98
  %586 = add nsw i32 %583, %585
  %587 = mul i32 %578, %586
  %588 = uitofp i32 %587 to double
  %589 = getelementptr inbounds i8, ptr %0, i64 2736
  %590 = load double, ptr %589, align 8, !tbaa !79
  %591 = fmul double %590, %588
  store double %591, ptr %589, align 8, !tbaa !79
  %592 = getelementptr inbounds i8, ptr %0, i64 1168
  %593 = load double, ptr %592, align 8, !tbaa !80
  %594 = getelementptr inbounds i8, ptr %0, i64 384
  %595 = load ptr, ptr %594, align 8, !tbaa !40
  %596 = getelementptr inbounds i8, ptr %595, i64 32
  %597 = load double, ptr %596, align 8, !tbaa !81
  %598 = fadd double %593, %597
  %599 = sitofp i32 %552 to double
  %600 = fmul double %598, %599
  %601 = fmul double %600, %569
  %602 = sitofp i32 %586 to double
  %603 = fmul double %601, %602
  store double %603, ptr %592, align 8, !tbaa !80
  %604 = fadd double %564, %570
  %605 = fadd double %604, %576
  %606 = fadd double %605, %591
  %607 = fadd double %606, %603
  %608 = getelementptr inbounds i8, ptr %0, i64 32
  %609 = load double, ptr %608, align 8, !tbaa !81
  %610 = fadd double %609, %607
  store double %610, ptr %608, align 8, !tbaa !81
  %611 = load ptr, ptr %24, align 8, !tbaa !22
  %612 = getelementptr inbounds i8, ptr %611, i64 32
  %613 = uitofp i32 %554 to double
  %614 = getelementptr inbounds i8, ptr %0, i64 448
  %615 = load ptr, ptr %2, align 8, !tbaa !5
  %616 = getelementptr inbounds i8, ptr %615, i64 32
  %617 = load double, ptr %616, align 8, !tbaa !81
  %618 = getelementptr inbounds i8, ptr %0, i64 2616
  %619 = load double, ptr %618, align 8, !tbaa !99
  %620 = getelementptr inbounds i8, ptr %0, i64 1368
  %621 = getelementptr inbounds i8, ptr %0, i64 416
  %622 = load ptr, ptr %621, align 8, !tbaa !56
  %623 = getelementptr inbounds i8, ptr %622, i64 648
  %624 = load double, ptr %623, align 8, !tbaa !75
  %625 = fadd double %619, %624
  %626 = getelementptr inbounds i8, ptr %0, i64 424
  %627 = load ptr, ptr %626, align 8, !tbaa !59
  %628 = getelementptr inbounds i8, ptr %627, i64 648
  %629 = load double, ptr %628, align 8, !tbaa !75
  %630 = getelementptr inbounds i8, ptr %0, i64 2160
  %631 = load i32, ptr %630, align 8, !tbaa !48
  %632 = sitofp i32 %631 to double
  %633 = tail call double @llvm.fmuladd.f64(double %629, double %632, double %625)
  %634 = getelementptr inbounds i8, ptr %0, i64 408
  %635 = load ptr, ptr %634, align 8, !tbaa !62
  %636 = getelementptr inbounds i8, ptr %635, i64 640
  %637 = load double, ptr %636, align 8, !tbaa !30
  %638 = fadd double %633, %637
  %639 = fmul double %638, %569
  store double %639, ptr %620, align 8, !tbaa !100
  %640 = getelementptr inbounds i8, ptr %0, i64 2304
  %641 = load double, ptr %640, align 8, !tbaa !86
  %642 = fmul double %641, %561
  store double %642, ptr %640, align 8, !tbaa !86
  %643 = getelementptr inbounds i8, ptr %566, i64 656
  %644 = load double, ptr %643, align 8, !tbaa !87
  %645 = fmul double %644, %569
  %646 = getelementptr inbounds i8, ptr %0, i64 1056
  store double %645, ptr %646, align 8, !tbaa !88
  %647 = getelementptr inbounds i8, ptr %573, i64 656
  %648 = load double, ptr %647, align 8, !tbaa !87
  %649 = fmul double %648, %569
  %650 = getelementptr inbounds i8, ptr %0, i64 1136
  store double %649, ptr %650, align 8, !tbaa !101
  %651 = getelementptr inbounds i8, ptr %0, i64 2744
  %652 = load double, ptr %651, align 8, !tbaa !89
  %653 = fmul double %652, %588
  store double %653, ptr %651, align 8, !tbaa !89
  %654 = getelementptr inbounds i8, ptr %0, i64 1176
  %655 = load double, ptr %654, align 8, !tbaa !90
  %656 = getelementptr inbounds i8, ptr %595, i64 40
  %657 = load double, ptr %656, align 8, !tbaa !91
  %658 = fadd double %655, %657
  %659 = fmul double %658, %599
  %660 = fmul double %659, %569
  %661 = fmul double %660, %602
  store double %661, ptr %654, align 8, !tbaa !90
  %662 = fadd double %642, %645
  %663 = fadd double %662, %649
  %664 = fadd double %663, %653
  %665 = fadd double %664, %661
  %666 = getelementptr inbounds i8, ptr %0, i64 40
  %667 = load double, ptr %666, align 8, !tbaa !91
  %668 = fadd double %667, %665
  store double %668, ptr %666, align 8, !tbaa !91
  %669 = load <2 x double>, ptr %612, align 8, !tbaa !93
  %670 = insertelement <2 x double> poison, double %613, i64 0
  %671 = shufflevector <2 x double> %670, <2 x double> poison, <2 x i32> zeroinitializer
  %672 = fmul <2 x double> %669, %671
  %673 = insertelement <2 x double> poison, double %569, i64 0
  %674 = shufflevector <2 x double> %673, <2 x double> poison, <2 x i32> zeroinitializer
  %675 = fmul <2 x double> %672, %674
  %676 = extractelement <2 x double> %675, i64 0
  %677 = fadd double %676, %617
  %678 = fadd double %610, %677
  %679 = fadd double %678, %639
  store double %679, ptr %608, align 8, !tbaa !81
  store <2 x double> %675, ptr %614, align 8, !tbaa !93
  %680 = getelementptr inbounds i8, ptr %615, i64 40
  %681 = load double, ptr %680, align 8, !tbaa !91
  %682 = extractelement <2 x double> %675, i64 1
  %683 = fadd double %681, %682
  %684 = fadd double %668, %683
  %685 = getelementptr inbounds i8, ptr %0, i64 2624
  %686 = load double, ptr %685, align 8, !tbaa !102
  %687 = getelementptr inbounds i8, ptr %0, i64 1376
  %688 = getelementptr inbounds i8, ptr %622, i64 656
  %689 = load double, ptr %688, align 8, !tbaa !87
  %690 = fadd double %686, %689
  %691 = getelementptr inbounds i8, ptr %627, i64 656
  %692 = load double, ptr %691, align 8, !tbaa !87
  %693 = tail call double @llvm.fmuladd.f64(double %692, double %632, double %690)
  %694 = fadd double %637, %693
  %695 = fmul double %694, %569
  store double %695, ptr %687, align 8, !tbaa !103
  %696 = fadd double %684, %695
  store double %696, ptr %666, align 8, !tbaa !91
  br label %835

697:                                              ; preds = %367
  %698 = getelementptr inbounds i8, ptr %0, i64 400
  %699 = load ptr, ptr %698, align 8, !tbaa !46
  %700 = getelementptr inbounds i8, ptr %699, i64 648
  %701 = load double, ptr %700, align 8, !tbaa !75
  %702 = getelementptr inbounds i8, ptr %0, i64 3040
  %703 = load i32, ptr %702, align 8, !tbaa !28
  %704 = uitofp i32 %703 to double
  %705 = fmul double %701, %704
  %706 = getelementptr inbounds i8, ptr %0, i64 1128
  store double %705, ptr %706, align 8, !tbaa !97
  %707 = mul i32 %703, %372
  %708 = getelementptr inbounds i8, ptr %0, i64 3048
  %709 = load i32, ptr %708, align 8, !tbaa !77
  %710 = getelementptr inbounds i8, ptr %0, i64 3052
  %711 = load i32, ptr %710, align 4, !tbaa !78
  %712 = add nsw i32 %711, %709
  %713 = getelementptr inbounds i8, ptr %0, i64 3060
  %714 = load i32, ptr %713, align 4, !tbaa !98
  %715 = add nsw i32 %712, %714
  %716 = mul i32 %707, %715
  %717 = uitofp i32 %716 to double
  %718 = getelementptr inbounds i8, ptr %0, i64 2736
  %719 = load double, ptr %718, align 8, !tbaa !79
  %720 = fmul double %719, %717
  store double %720, ptr %718, align 8, !tbaa !79
  %721 = getelementptr inbounds i8, ptr %0, i64 1168
  %722 = load double, ptr %721, align 8, !tbaa !80
  %723 = getelementptr inbounds i8, ptr %0, i64 384
  %724 = load ptr, ptr %723, align 8, !tbaa !40
  %725 = getelementptr inbounds i8, ptr %724, i64 32
  %726 = load double, ptr %725, align 8, !tbaa !81
  %727 = fadd double %722, %726
  %728 = sitofp i32 %372 to double
  %729 = fmul double %727, %728
  %730 = fmul double %729, %704
  %731 = sitofp i32 %715 to double
  %732 = fmul double %730, %731
  store double %732, ptr %721, align 8, !tbaa !80
  %733 = fadd double %705, %720
  %734 = fadd double %733, %732
  %735 = getelementptr inbounds i8, ptr %0, i64 32
  %736 = load <2 x double>, ptr %735, align 8
  %737 = load ptr, ptr %24, align 8, !tbaa !22
  %738 = getelementptr inbounds i8, ptr %737, i64 32
  %739 = getelementptr inbounds i8, ptr %0, i64 2152
  %740 = load i32, ptr %739, align 8, !tbaa !73
  %741 = uitofp i32 %740 to double
  %742 = getelementptr inbounds i8, ptr %0, i64 3056
  %743 = load i32, ptr %742, align 8, !tbaa !104
  %744 = add nsw i32 %743, %712
  %745 = sitofp i32 %744 to double
  %746 = getelementptr inbounds i8, ptr %0, i64 448
  %747 = load ptr, ptr %2, align 8, !tbaa !5
  %748 = getelementptr inbounds i8, ptr %747, i64 32
  %749 = getelementptr inbounds i8, ptr %0, i64 2616
  %750 = load double, ptr %749, align 8, !tbaa !99
  %751 = getelementptr inbounds i8, ptr %0, i64 1368
  %752 = getelementptr inbounds i8, ptr %0, i64 416
  %753 = load ptr, ptr %752, align 8, !tbaa !56
  %754 = getelementptr inbounds i8, ptr %753, i64 648
  %755 = load double, ptr %754, align 8, !tbaa !75
  %756 = fadd double %750, %755
  %757 = getelementptr inbounds i8, ptr %0, i64 424
  %758 = load ptr, ptr %757, align 8, !tbaa !59
  %759 = getelementptr inbounds i8, ptr %758, i64 648
  %760 = load double, ptr %759, align 8, !tbaa !75
  %761 = getelementptr inbounds i8, ptr %0, i64 2160
  %762 = load i32, ptr %761, align 8, !tbaa !48
  %763 = sitofp i32 %762 to double
  %764 = tail call double @llvm.fmuladd.f64(double %760, double %763, double %756)
  %765 = getelementptr inbounds i8, ptr %0, i64 408
  %766 = load ptr, ptr %765, align 8, !tbaa !62
  %767 = getelementptr inbounds i8, ptr %766, i64 640
  %768 = load double, ptr %767, align 8, !tbaa !30
  %769 = fadd double %764, %768
  %770 = fmul double %769, %704
  store double %770, ptr %751, align 8, !tbaa !100
  %771 = getelementptr inbounds i8, ptr %699, i64 656
  %772 = load double, ptr %771, align 8, !tbaa !87
  %773 = fmul double %772, %704
  %774 = getelementptr inbounds i8, ptr %0, i64 1136
  store double %773, ptr %774, align 8, !tbaa !101
  %775 = getelementptr inbounds i8, ptr %0, i64 2744
  %776 = load double, ptr %775, align 8, !tbaa !89
  %777 = fmul double %776, %717
  store double %777, ptr %775, align 8, !tbaa !89
  %778 = getelementptr inbounds i8, ptr %0, i64 1176
  %779 = load double, ptr %778, align 8, !tbaa !90
  %780 = getelementptr inbounds i8, ptr %724, i64 40
  %781 = load double, ptr %780, align 8, !tbaa !91
  %782 = fadd double %779, %781
  %783 = getelementptr inbounds i8, ptr %0, i64 40
  %784 = load double, ptr %783, align 8, !tbaa !91
  %785 = insertelement <2 x double> %736, double %773, i64 1
  %786 = insertelement <2 x double> poison, double %734, i64 0
  %787 = insertelement <2 x double> %786, double %777, i64 1
  %788 = fadd <2 x double> %785, %787
  %789 = extractelement <2 x double> %788, i64 0
  store double %789, ptr %735, align 8, !tbaa !81
  %790 = load double, ptr %738, align 8, !tbaa !81
  %791 = fmul double %790, %741
  %792 = insertelement <2 x double> poison, double %791, i64 0
  %793 = insertelement <2 x double> %792, double %782, i64 1
  %794 = insertelement <2 x double> poison, double %704, i64 0
  %795 = insertelement <2 x double> %794, double %728, i64 1
  %796 = fmul <2 x double> %793, %795
  %797 = insertelement <2 x double> poison, double %745, i64 0
  %798 = insertelement <2 x double> %797, double %704, i64 1
  %799 = fmul <2 x double> %796, %798
  %800 = extractelement <2 x double> %799, i64 0
  store double %800, ptr %746, align 8, !tbaa !105
  %801 = load double, ptr %748, align 8, !tbaa !81
  %802 = insertelement <2 x double> poison, double %801, i64 0
  %803 = insertelement <2 x double> %802, double %731, i64 1
  %804 = fadd <2 x double> %803, %799
  %805 = fmul <2 x double> %803, %799
  %806 = shufflevector <2 x double> %804, <2 x double> %805, <2 x i32> <i32 0, i32 3>
  %807 = extractelement <2 x double> %805, i64 1
  store double %807, ptr %778, align 8, !tbaa !90
  %808 = fadd <2 x double> %788, %806
  %809 = insertelement <2 x double> poison, double %770, i64 0
  %810 = insertelement <2 x double> %809, double %784, i64 1
  %811 = fadd <2 x double> %810, %808
  store <2 x double> %811, ptr %735, align 8, !tbaa !93
  %812 = getelementptr inbounds i8, ptr %737, i64 40
  %813 = load double, ptr %812, align 8, !tbaa !91
  %814 = fmul double %813, %741
  %815 = fmul double %814, %704
  %816 = fmul double %815, %745
  %817 = getelementptr inbounds i8, ptr %0, i64 456
  store double %816, ptr %817, align 8, !tbaa !106
  %818 = getelementptr inbounds i8, ptr %747, i64 40
  %819 = load double, ptr %818, align 8, !tbaa !91
  %820 = fadd double %819, %816
  %821 = extractelement <2 x double> %811, i64 1
  %822 = fadd double %821, %820
  %823 = getelementptr inbounds i8, ptr %0, i64 2624
  %824 = load double, ptr %823, align 8, !tbaa !102
  %825 = getelementptr inbounds i8, ptr %0, i64 1376
  %826 = getelementptr inbounds i8, ptr %753, i64 656
  %827 = load double, ptr %826, align 8, !tbaa !87
  %828 = fadd double %824, %827
  %829 = getelementptr inbounds i8, ptr %758, i64 656
  %830 = load double, ptr %829, align 8, !tbaa !87
  %831 = tail call double @llvm.fmuladd.f64(double %830, double %763, double %828)
  %832 = fadd double %768, %831
  %833 = fmul double %832, %704
  store double %833, ptr %825, align 8, !tbaa !103
  %834 = fadd double %822, %833
  store double %834, ptr %783, align 8, !tbaa !91
  br label %835

835:                                              ; preds = %550, %697, %373
  ret void
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZN8powerDefaSERKS_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #2 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress 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, !14, i64 352}
!6 = !{!"_ZTS3Mat", !7, i64 0, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312, !14, i64 320, !14, i64 328, !14, i64 336, !14, i64 344, !14, i64 352, !14, i64 360, !14, i64 368, !14, i64 376, !14, i64 384, !14, i64 392, !14, i64 400, !14, i64 408, !14, i64 416, !14, i64 424, !14, i64 432, !12, i64 440, !12, i64 560, !12, i64 680, !12, i64 800, !12, i64 920, !12, i64 1040, !12, i64 1160, !12, i64 1280, !12, i64 1400, !12, i64 1520, !12, i64 1640, !9, i64 1760, !9, i64 1768, !9, i64 1776, !9, i64 1784, !9, i64 1792, !9, i64 1800, !9, i64 1808, !9, i64 1816, !9, i64 1824, !9, i64 1832, !9, i64 1840, !9, i64 1848, !9, i64 1856, !15, i64 1864, !12, i64 2288, !12, i64 2408, !12, i64 2528, !9, i64 2648, !16, i64 2656, !16, i64 2660, !9, i64 2664, !8, i64 2672, !8, i64 2696, !17, i64 2720, !17, i64 2721, !17, i64 2722, !17, i64 2723, !16, i64 2724, !12, i64 2728, !9, i64 2848, !9, i64 2856, !9, i64 2864, !9, i64 2872, !9, i64 2880, !9, i64 2888, !12, i64 2896, !16, i64 3016, !16, i64 3020, !16, i64 3024, !16, i64 3028, !9, i64 3032, !16, i64 3040, !16, i64 3044, !16, i64 3048, !16, i64 3052, !16, i64 3056, !16, i64 3060}
!7 = !{!"_ZTS9Component", !8, i64 0, !12, i64 24, !12, i64 144, !9, i64 264, !9, i64 272}
!8 = !{!"_ZTS4Area", !9, i64 0, !9, i64 8, !9, i64 16}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTS8powerDef", !13, i64 0, !13, i64 40, !13, i64 80}
!13 = !{!"_ZTS15powerComponents", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32}
!14 = !{!"any pointer", !10, i64 0}
!15 = !{!"_ZTS8Subarray", !7, i64 0, !14, i64 280, !16, i64 288, !16, i64 292, !16, i64 296, !16, i64 300, !8, i64 304, !8, i64 328, !17, i64 352, !9, i64 360, !9, i64 368, !9, i64 376, !9, i64 384, !9, i64 392, !9, i64 400, !9, i64 408, !9, i64 416}
!16 = !{!"int", !10, i64 0}
!17 = !{!"bool", !10, i64 0}
!18 = !{!7, !9, i64 24}
!19 = !{!6, !14, i64 360}
!20 = !{!6, !14, i64 368}
!21 = !{!6, !14, i64 376}
!22 = !{!6, !14, i64 288}
!23 = !{!6, !9, i64 440}
!24 = !{!6, !17, i64 2721}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!6, !17, i64 2722}
!28 = !{!6, !16, i64 3040}
!29 = !{!6, !14, i64 392}
!30 = !{!31, !9, i64 640}
!31 = !{!"_ZTS6Driver", !7, i64 0, !16, i64 280, !16, i64 284, !10, i64 288, !10, i64 448, !9, i64 608, !9, i64 616, !9, i64 624, !9, i64 632, !12, i64 640, !17, i64 760}
!32 = !{!6, !9, i64 1040}
!33 = !{!6, !16, i64 2156}
!34 = !{!6, !16, i64 2656}
!35 = !{!6, !16, i64 3024}
!36 = !{!6, !9, i64 2728}
!37 = !{!6, !9, i64 2288}
!38 = !{!6, !9, i64 2328}
!39 = !{!6, !9, i64 1160}
!40 = !{!6, !14, i64 384}
!41 = !{!6, !16, i64 3016}
!42 = !{!6, !14, i64 296}
!43 = !{!6, !14, i64 304}
!44 = !{!6, !14, i64 312}
!45 = !{!6, !9, i64 2896}
!46 = !{!6, !14, i64 400}
!47 = !{!6, !9, i64 1120}
!48 = !{!6, !16, i64 2160}
!49 = !{!6, !16, i64 2164}
!50 = !{!6, !16, i64 3028}
!51 = !{!6, !9, i64 2808}
!52 = !{!6, !9, i64 2368}
!53 = !{!6, !16, i64 3020}
!54 = !{!6, !9, i64 1240}
!55 = !{!6, !9, i64 2608}
!56 = !{!6, !14, i64 416}
!57 = !{!6, !9, i64 1400}
!58 = !{!6, !9, i64 1480}
!59 = !{!6, !14, i64 424}
!60 = !{!6, !9, i64 2408}
!61 = !{!6, !9, i64 2488}
!62 = !{!6, !14, i64 408}
!63 = !{!6, !9, i64 1520}
!64 = !{!6, !9, i64 1600}
!65 = !{!6, !14, i64 432}
!66 = !{!6, !9, i64 1720}
!67 = !{!6, !9, i64 1360}
!68 = !{!7, !9, i64 104}
!69 = !{!6, !14, i64 280}
!70 = !{!71, !16, i64 44}
!71 = !{!"_ZTS16DynamicParameter", !17, i64 0, !17, i64 1, !17, i64 2, !17, i64 3, !16, i64 4, !16, i64 8, !16, i64 12, !9, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68, !16, i64 72, !16, i64 76, !16, i64 80, !16, i64 84, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !17, i64 120, !9, i64 128, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !9, i64 176, !16, i64 184, !16, i64 188, !16, i64 192, !16, i64 196, !16, i64 200, !16, i64 204, !16, i64 208, !17, i64 212, !8, i64 216, !8, i64 240, !17, i64 264}
!72 = !{!71, !16, i64 48}
!73 = !{!6, !16, i64 2152}
!74 = !{!6, !9, i64 2296}
!75 = !{!31, !9, i64 648}
!76 = !{!6, !9, i64 1048}
!77 = !{!6, !16, i64 3048}
!78 = !{!6, !16, i64 3052}
!79 = !{!6, !9, i64 2736}
!80 = !{!6, !9, i64 1168}
!81 = !{!7, !9, i64 32}
!82 = !{!6, !9, i64 2904}
!83 = !{!6, !9, i64 568}
!84 = !{!6, !9, i64 688}
!85 = !{!6, !9, i64 808}
!86 = !{!6, !9, i64 2304}
!87 = !{!31, !9, i64 656}
!88 = !{!6, !9, i64 1056}
!89 = !{!6, !9, i64 2744}
!90 = !{!6, !9, i64 1176}
!91 = !{!7, !9, i64 40}
!92 = !{!6, !9, i64 2912}
!93 = !{!9, !9, i64 0}
!94 = !{!6, !9, i64 576}
!95 = !{!6, !9, i64 696}
!96 = !{!6, !9, i64 816}
!97 = !{!6, !9, i64 1128}
!98 = !{!6, !16, i64 3060}
!99 = !{!6, !9, i64 2616}
!100 = !{!6, !9, i64 1368}
!101 = !{!6, !9, i64 1136}
!102 = !{!6, !9, i64 2624}
!103 = !{!6, !9, i64 1376}
!104 = !{!6, !16, i64 3056}
!105 = !{!6, !9, i64 448}
!106 = !{!6, !9, i64 456}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass