Index: lib/CodeGen/PPCGCodeGeneration.cpp =================================================================== --- lib/CodeGen/PPCGCodeGeneration.cpp +++ lib/CodeGen/PPCGCodeGeneration.cpp @@ -777,6 +777,16 @@ ArraySize, Builder.CreateMul(Offset, Builder.getInt64(ScopArray->getElemSizeInBytes()))); + const SCEV *SizeSCEV = SE.getSCEV(ArraySize); + if (SizeSCEV->isZero()) { + BuildSuccessful = 0; + DEBUG(dbgs() << getUniqueScopName(&S) << + " has comupted array size 0: " << + *ArraySize << + " | for array: " << *(ScopArray->getBasePtr()) << + ". Bailing out.\n";); + } + Value *DevArray = createCallAllocateMemoryForDevice(ArraySize); DevArray->setName(DevArrayName); DeviceAllocations[ScopArray] = DevArray; Index: test/GPGPU/__pp_utilities_MOD_ascent.unoptimised.ll =================================================================== --- /dev/null +++ test/GPGPU/__pp_utilities_MOD_ascent.unoptimised.ll @@ -0,0 +1,2546 @@ +; RUN: opt %loadPolly -S -polly-codegen-ppcg \ +; RUN: -polly-invariant-load-hoisting < %s | FileCheck %s -check-prefix=HOST-IR + + +; HOST-IR-NOT: (i64 0) + +target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" +target triple = "x86_64-unknown-linux-gnu" + +; Function Attrs: nounwind readnone +declare double @exp(double) #0 + +; Function Attrs: nounwind readnone +declare double @pow(double, double) #0 + +; Function Attrs: nounwind uwtable +define void @__pp_utilities_MOD_ascent(i32* noalias %idim, i32* noalias %jdim, i32* noalias %kdim, [0 x i32]* noalias %kstart, [0 x double]* noalias %tp_start, [0 x double]* noalias %qvp_start, [0 x i32]* noalias %lcomp, [0 x double]* noalias %te, [0 x double]* noalias %qve, [0 x double]* noalias %hsurf, [0 x double]* noalias %prs, [0 x double]* noalias %hhl, double* noalias %p0, double* noalias %sistopprs, double* noalias %cp_d, double* noalias %lh_v, double* noalias %r_d, double* noalias %rdv, double* noalias %rvd_m_o, double* noalias %o_m_rdv, double* noalias %b1, double* noalias %b2w, double* noalias %b3, double* noalias %b4w, double* noalias %g, double* noalias %missing_value, double* noalias %eps_conv, double* noalias %r1, double* noalias %r2, double* noalias %esat, double* noalias %tguess1, double* noalias %tguess2, double* noalias %thetae1, double* noalias %thetae2, [0 x double]* noalias %ttt, [0 x double]* noalias %thp_start, [0 x double]* noalias %cape, [0 x double]* noalias %cape3km, [0 x double]* noalias %cin, [0 x double]* noalias %cin_help, [0 x double]* noalias %buo, [0 x double]* noalias %thp, [0 x double]* noalias %tp, [0 x double]* noalias %qvp, [0 x double]* noalias %rp, [0 x i32]* noalias %k3000, [0 x i32]* noalias %ellev, [0 x i32]* noalias %lfclev, [0 x i32]* noalias %lcllev, [0 x i32]* noalias %lfcfound, [0 x i32]* noalias %icount, [0 x i32]* noalias %ldone, [0 x i32]* noalias %lzcompute, [0 x double]* noalias %acape, [0 x double]* noalias %acin, [0 x double]* noalias %acape3km, [0 x i32]* noalias %ael, [0 x i32]* noalias %alfc, [0 x i32]* noalias %alcl, [0 x double]* noalias %asi, [0 x double]* noalias %tp_print, i32* %lacc) #1 { +entry: + br label %entry.split + +entry.split: ; preds = %entry + %0 = icmp eq [0 x double]* %acape, null + br i1 %0, label %"4", label %"3" + +"3": ; preds = %entry.split + %1 = load i32, i32* %idim, align 4 + %2 = sext i32 %1 to i64 + %3 = icmp sgt i64 %2, 0 + %4 = select i1 %3, i64 %2, i64 0 + %not = xor i64 %4, -1 + br label %"4" + +"4": ; preds = %"3", %entry.split + %5 = phi i64 [ %4, %"3" ], [ undef, %entry.split ] + %6 = phi i64 [ %not, %"3" ], [ undef, %entry.split ] + %7 = icmp eq [0 x double]* %acin, null + br i1 %7, label %"6", label %"5" + +"5": ; preds = %"4" + %8 = load i32, i32* %idim, align 4 + %9 = sext i32 %8 to i64 + %10 = icmp sgt i64 %9, 0 + %11 = select i1 %10, i64 %9, i64 0 + %not1 = xor i64 %11, -1 + br label %"6" + +"6": ; preds = %"5", %"4" + %12 = phi i64 [ %11, %"5" ], [ undef, %"4" ] + %13 = phi i64 [ %not1, %"5" ], [ undef, %"4" ] + %14 = icmp eq [0 x double]* %acape3km, null + br i1 %14, label %"8", label %"7" + +"7": ; preds = %"6" + %15 = load i32, i32* %idim, align 4 + %16 = sext i32 %15 to i64 + %17 = icmp sgt i64 %16, 0 + %18 = select i1 %17, i64 %16, i64 0 + %not2 = xor i64 %18, -1 + br label %"8" + +"8": ; preds = %"7", %"6" + %19 = phi i64 [ %18, %"7" ], [ undef, %"6" ] + %20 = phi i64 [ %not2, %"7" ], [ undef, %"6" ] + %21 = icmp eq [0 x double]* %asi, null + br i1 %21, label %"10", label %"9" + +"9": ; preds = %"8" + %22 = load i32, i32* %idim, align 4 + %23 = sext i32 %22 to i64 + %24 = icmp sgt i64 %23, 0 + %25 = select i1 %24, i64 %23, i64 0 + %not3 = xor i64 %25, -1 + br label %"10" + +"10": ; preds = %"9", %"8" + %26 = phi i64 [ %25, %"9" ], [ undef, %"8" ] + %27 = phi i64 [ %not3, %"9" ], [ undef, %"8" ] + %28 = icmp eq [0 x i32]* %ael, null + br i1 %28, label %"12", label %"11" + +"11": ; preds = %"10" + %29 = load i32, i32* %idim, align 4 + %30 = sext i32 %29 to i64 + %31 = icmp sgt i64 %30, 0 + %32 = select i1 %31, i64 %30, i64 0 + %not4 = xor i64 %32, -1 + br label %"12" + +"12": ; preds = %"11", %"10" + %33 = phi i64 [ %32, %"11" ], [ undef, %"10" ] + %34 = phi i64 [ %not4, %"11" ], [ undef, %"10" ] + %35 = icmp eq [0 x i32]* %alfc, null + br i1 %35, label %"14", label %"13" + +"13": ; preds = %"12" + %36 = load i32, i32* %idim, align 4 + %37 = sext i32 %36 to i64 + %38 = icmp sgt i64 %37, 0 + %39 = select i1 %38, i64 %37, i64 0 + %not5 = xor i64 %39, -1 + br label %"14" + +"14": ; preds = %"13", %"12" + %40 = phi i64 [ %39, %"13" ], [ undef, %"12" ] + %41 = phi i64 [ %not5, %"13" ], [ undef, %"12" ] + %42 = icmp eq [0 x i32]* %alcl, null + br i1 %42, label %"16", label %"15" + +"15": ; preds = %"14" + %43 = load i32, i32* %idim, align 4 + %44 = sext i32 %43 to i64 + %45 = icmp sgt i64 %44, 0 + %46 = select i1 %45, i64 %44, i64 0 + %not6 = xor i64 %46, -1 + br label %"16" + +"16": ; preds = %"15", %"14" + %47 = phi i64 [ %46, %"15" ], [ undef, %"14" ] + %48 = phi i64 [ %not6, %"15" ], [ undef, %"14" ] + %49 = load i32, i32* %idim, align 4 + %50 = sext i32 %49 to i64 + %51 = icmp sgt i64 %50, 0 + %52 = select i1 %51, i64 %50, i64 0 + %not7 = xor i64 %52, -1 + %53 = sext i32 %49 to i64 + %54 = icmp sgt i64 %53, 0 + %55 = select i1 %54, i64 %53, i64 0 + %not8 = xor i64 %55, -1 + %56 = load i32, i32* %idim, align 4 + %57 = sext i32 %56 to i64 + %58 = icmp sgt i64 %57, 0 + %59 = select i1 %58, i64 %57, i64 0 + %not9 = xor i64 %59, -1 + %60 = sext i32 %56 to i64 + %61 = icmp sgt i64 %60, 0 + %62 = select i1 %61, i64 %60, i64 0 + %not10 = xor i64 %62, -1 + %63 = load i32, i32* %idim, align 4 + %64 = sext i32 %63 to i64 + %65 = icmp sgt i64 %64, 0 + %66 = select i1 %65, i64 %64, i64 0 + %not11 = xor i64 %66, -1 + %67 = sext i32 %63 to i64 + %68 = icmp sgt i64 %67, 0 + %69 = select i1 %68, i64 %67, i64 0 + %not12 = xor i64 %69, -1 + %70 = load i32, i32* %idim, align 4 + %71 = sext i32 %70 to i64 + %72 = icmp sgt i64 %71, 0 + %73 = select i1 %72, i64 %71, i64 0 + %not13 = xor i64 %73, -1 + %74 = sext i32 %70 to i64 + %75 = icmp sgt i64 %74, 0 + %76 = select i1 %75, i64 %74, i64 0 + %not14 = xor i64 %76, -1 + %77 = load i32, i32* %idim, align 4 + %78 = sext i32 %77 to i64 + %79 = icmp sgt i64 %78, 0 + %80 = select i1 %79, i64 %78, i64 0 + %not15 = xor i64 %80, -1 + %81 = sext i32 %77 to i64 + %82 = icmp sgt i64 %81, 0 + %83 = select i1 %82, i64 %81, i64 0 + %84 = load i32, i32* %jdim, align 4 + %85 = sext i32 %84 to i64 + %86 = mul nsw i64 %83, %85 + %87 = icmp sgt i64 %86, 0 + %88 = select i1 %87, i64 %86, i64 0 + %not16 = xor i64 %83, -1 + %89 = sub nuw i64 %not16, %88 + %90 = load i32, i32* %idim, align 4 + %91 = sext i32 %90 to i64 + %92 = icmp sgt i64 %91, 0 + %93 = select i1 %92, i64 %91, i64 0 + %94 = load i32, i32* %jdim, align 4 + %95 = sext i32 %94 to i64 + %96 = mul nsw i64 %93, %95 + %97 = icmp sgt i64 %96, 0 + %98 = select i1 %97, i64 %96, i64 0 + %not17 = xor i64 %93, -1 + %99 = sub nuw i64 %not17, %98 + %100 = load i32, i32* %idim, align 4 + %101 = sext i32 %100 to i64 + %102 = icmp sgt i64 %101, 0 + %103 = select i1 %102, i64 %101, i64 0 + %104 = load i32, i32* %jdim, align 4 + %105 = sext i32 %104 to i64 + %106 = mul nsw i64 %103, %105 + %107 = icmp sgt i64 %106, 0 + %108 = select i1 %107, i64 %106, i64 0 + %not18 = xor i64 %103, -1 + %109 = sub nuw i64 %not18, %108 + %110 = load i32, i32* %idim, align 4 + %111 = sext i32 %110 to i64 + %112 = icmp sgt i64 %111, 0 + %113 = select i1 %112, i64 %111, i64 0 + %not19 = xor i64 %113, -1 + %114 = sext i32 %110 to i64 + %115 = icmp sgt i64 %114, 0 + %116 = select i1 %115, i64 %114, i64 0 + %117 = load i32, i32* %jdim, align 4 + %118 = sext i32 %117 to i64 + %119 = mul nsw i64 %116, %118 + %120 = icmp sgt i64 %119, 0 + %121 = select i1 %120, i64 %119, i64 0 + %not20 = xor i64 %116, -1 + %122 = sub nuw i64 %not20, %121 + %123 = load i32, i32* %idim, align 4 + %124 = sext i32 %123 to i64 + %125 = icmp sgt i64 %124, 0 + %126 = select i1 %125, i64 %124, i64 0 + %not21 = xor i64 %126, -1 + %127 = sext i32 %123 to i64 + %128 = icmp sgt i64 %127, 0 + %129 = select i1 %128, i64 %127, i64 0 + %not22 = xor i64 %129, -1 + %130 = load i32, i32* %idim, align 4 + %131 = sext i32 %130 to i64 + %132 = icmp sgt i64 %131, 0 + %133 = select i1 %132, i64 %131, i64 0 + %not23 = xor i64 %133, -1 + %134 = sext i32 %130 to i64 + %135 = icmp sgt i64 %134, 0 + %136 = select i1 %135, i64 %134, i64 0 + %137 = load i32, i32* %jdim, align 4 + %138 = sext i32 %137 to i64 + %139 = mul nsw i64 %136, %138 + %140 = icmp sgt i64 %139, 0 + %141 = select i1 %140, i64 %139, i64 0 + %not24 = xor i64 %136, -1 + %142 = sub nuw i64 %not24, %141 + %143 = load i32, i32* %idim, align 4 + %144 = sext i32 %143 to i64 + %145 = icmp sgt i64 %144, 0 + %146 = select i1 %145, i64 %144, i64 0 + %not25 = xor i64 %146, -1 + %147 = sext i32 %143 to i64 + %148 = icmp sgt i64 %147, 0 + %149 = select i1 %148, i64 %147, i64 0 + %not26 = xor i64 %149, -1 + %150 = load i32, i32* %idim, align 4 + %151 = sext i32 %150 to i64 + %152 = icmp sgt i64 %151, 0 + %153 = select i1 %152, i64 %151, i64 0 + %not27 = xor i64 %153, -1 + %154 = sext i32 %150 to i64 + %155 = icmp sgt i64 %154, 0 + %156 = select i1 %155, i64 %154, i64 0 + %not28 = xor i64 %156, -1 + %157 = load i32, i32* %idim, align 4 + %158 = sext i32 %157 to i64 + %159 = icmp sgt i64 %158, 0 + %160 = select i1 %159, i64 %158, i64 0 + %not29 = xor i64 %160, -1 + %161 = sext i32 %157 to i64 + %162 = icmp sgt i64 %161, 0 + %163 = select i1 %162, i64 %161, i64 0 + %not30 = xor i64 %163, -1 + %164 = load i32, i32* %idim, align 4 + %165 = sext i32 %164 to i64 + %166 = icmp sgt i64 %165, 0 + %167 = select i1 %166, i64 %165, i64 0 + %not31 = xor i64 %167, -1 + %168 = sext i32 %164 to i64 + %169 = icmp sgt i64 %168, 0 + %170 = select i1 %169, i64 %168, i64 0 + %171 = load i32, i32* %jdim, align 4 + %172 = sext i32 %171 to i64 + %173 = mul nsw i64 %170, %172 + %174 = icmp sgt i64 %173, 0 + %175 = select i1 %174, i64 %173, i64 0 + %not32 = xor i64 %170, -1 + %176 = sub nuw i64 %not32, %175 + %177 = load i32, i32* %idim, align 4 + %178 = sext i32 %177 to i64 + %179 = icmp sgt i64 %178, 0 + %180 = select i1 %179, i64 %178, i64 0 + %not33 = xor i64 %180, -1 + %181 = sext i32 %177 to i64 + %182 = icmp sgt i64 %181, 0 + %183 = select i1 %182, i64 %181, i64 0 + %184 = load i32, i32* %jdim, align 4 + %185 = sext i32 %184 to i64 + %186 = mul nsw i64 %183, %185 + %187 = icmp sgt i64 %186, 0 + %188 = select i1 %187, i64 %186, i64 0 + %not34 = xor i64 %183, -1 + %189 = sub nuw i64 %not34, %188 + %190 = icmp eq [0 x double]* %acape, null + %191 = icmp eq [0 x double]* %acin, null + %192 = icmp ne [0 x double]* %acape3km, null + %193 = icmp eq [0 x double]* %asi, null + %194 = icmp eq [0 x i32]* %ael, null + %195 = icmp eq [0 x i32]* %alfc, null + %196 = icmp eq [0 x i32]* %alcl, null + %197 = load i32, i32* %jdim, align 4 + %198 = icmp sgt i32 %197, 0 + br i1 %198, label %"22.preheader", label %"27" + +"22.preheader": ; preds = %"16" + br label %"22" + +"22": ; preds = %"25", %"22.preheader" + %199 = phi i32 [ %260, %"25" ], [ 1, %"22.preheader" ] + %200 = load i32, i32* %idim, align 4 + %201 = icmp sgt i32 %200, 0 + br i1 %201, label %"23.preheader", label %"25" + +"23.preheader": ; preds = %"22" + br label %"23" + +"23": ; preds = %"23", %"23.preheader" + %202 = phi i32 [ %258, %"23" ], [ 1, %"23.preheader" ] + %203 = sext i32 %202 to i64 + %204 = sext i32 %199 to i64 + %205 = mul nsw i64 %52, %204 + %206 = add i64 %205, %not7 + %207 = add i64 %206, %203 + %208 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %207 + store i32 0, i32* %208, align 4 + %209 = sext i32 %202 to i64 + %210 = sext i32 %199 to i64 + %211 = mul nsw i64 %55, %210 + %212 = add i64 %211, %not8 + %213 = add i64 %212, %209 + %214 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %213 + store i32 0, i32* %214, align 4 + %215 = sext i32 %202 to i64 + %216 = sext i32 %199 to i64 + %217 = mul nsw i64 %59, %216 + %218 = add i64 %217, %not9 + %219 = add i64 %218, %215 + %220 = getelementptr [0 x i32], [0 x i32]* %ellev, i64 0, i64 %219 + store i32 0, i32* %220, align 4 + %221 = sext i32 %202 to i64 + %222 = sext i32 %199 to i64 + %223 = mul nsw i64 %62, %222 + %224 = add i64 %223, %not10 + %225 = add i64 %224, %221 + %226 = getelementptr [0 x i32], [0 x i32]* %lfcfound, i64 0, i64 %225 + store i32 0, i32* %226, align 4 + %227 = sext i32 %202 to i64 + %228 = sext i32 %199 to i64 + %229 = mul nsw i64 %66, %228 + %230 = add i64 %229, %not11 + %231 = add i64 %230, %227 + %232 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %231 + store double 0.000000e+00, double* %232, align 8 + %233 = sext i32 %202 to i64 + %234 = sext i32 %199 to i64 + %235 = mul nsw i64 %69, %234 + %236 = add i64 %235, %not12 + %237 = add i64 %236, %233 + %238 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %237 + store double 0.000000e+00, double* %238, align 8 + %239 = sext i32 %202 to i64 + %240 = sext i32 %199 to i64 + %241 = mul nsw i64 %73, %240 + %242 = add i64 %241, %not13 + %243 = add i64 %242, %239 + %244 = getelementptr [0 x double], [0 x double]* %cape3km, i64 0, i64 %243 + store double 0.000000e+00, double* %244, align 8 + %245 = sext i32 %202 to i64 + %246 = sext i32 %199 to i64 + %247 = mul nsw i64 %76, %246 + %248 = add i64 %247, %not14 + %249 = add i64 %248, %245 + %250 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %249 + store double 0.000000e+00, double* %250, align 8 + %251 = sext i32 %202 to i64 + %252 = sext i32 %199 to i64 + %253 = mul nsw i64 %80, %252 + %254 = add i64 %253, %not15 + %255 = add i64 %254, %251 + %256 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %255 + store double 0.000000e+00, double* %256, align 8 + %257 = icmp eq i32 %202, %200 + %258 = add i32 %202, 1 + br i1 %257, label %"25.loopexit", label %"23" + +"25.loopexit": ; preds = %"23" + br label %"25" + +"25": ; preds = %"25.loopexit", %"22" + %259 = icmp eq i32 %199, %197 + %260 = add i32 %199, 1 + br i1 %259, label %"27.loopexit", label %"22" + +"27.loopexit": ; preds = %"25" + br label %"27" + +"27": ; preds = %"27.loopexit", %"16" + %261 = load i32, i32* %kdim, align 4 + %262 = icmp sgt i32 %261, 0 + br i1 %262, label %"28.preheader", label %"36" + +"28.preheader": ; preds = %"27" + br label %"28" + +"28": ; preds = %"34", %"28.preheader" + %263 = phi i32 [ %302, %"34" ], [ 1, %"28.preheader" ] + %264 = load i32, i32* %jdim, align 4 + %265 = icmp sgt i32 %264, 0 + br i1 %265, label %"29.preheader", label %"34" + +"29.preheader": ; preds = %"28" + br label %"29" + +"29": ; preds = %"32", %"29.preheader" + %266 = phi i32 [ %300, %"32" ], [ 1, %"29.preheader" ] + %267 = load i32, i32* %idim, align 4 + %268 = icmp sgt i32 %267, 0 + br i1 %268, label %"30.preheader", label %"32" + +"30.preheader": ; preds = %"29" + br label %"30" + +"30": ; preds = %"30", %"30.preheader" + %269 = phi i32 [ %298, %"30" ], [ 1, %"30.preheader" ] + %270 = sext i32 %269 to i64 + %271 = sext i32 %263 to i64 + %272 = mul i64 %88, %271 + %273 = sext i32 %266 to i64 + %274 = mul nsw i64 %83, %273 + %275 = add i64 %272, %89 + %276 = add i64 %275, %274 + %277 = add i64 %276, %270 + %278 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %277 + store double 0.000000e+00, double* %278, align 8 + %279 = sext i32 %269 to i64 + %280 = sext i32 %263 to i64 + %281 = mul i64 %98, %280 + %282 = sext i32 %266 to i64 + %283 = mul nsw i64 %93, %282 + %284 = add i64 %281, %99 + %285 = add i64 %284, %283 + %286 = add i64 %285, %279 + %287 = getelementptr [0 x double], [0 x double]* %rp, i64 0, i64 %286 + store double 0.000000e+00, double* %287, align 8 + %288 = sext i32 %269 to i64 + %289 = sext i32 %263 to i64 + %290 = mul i64 %108, %289 + %291 = sext i32 %266 to i64 + %292 = mul nsw i64 %103, %291 + %293 = add i64 %290, %109 + %294 = add i64 %293, %292 + %295 = add i64 %294, %288 + %296 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %295 + store double 0.000000e+00, double* %296, align 8 + %297 = icmp eq i32 %269, %267 + %298 = add i32 %269, 1 + br i1 %297, label %"32.loopexit", label %"30" + +"32.loopexit": ; preds = %"30" + br label %"32" + +"32": ; preds = %"32.loopexit", %"29" + %299 = icmp eq i32 %266, %264 + %300 = add i32 %266, 1 + br i1 %299, label %"34.loopexit", label %"29" + +"34.loopexit": ; preds = %"32" + br label %"34" + +"34": ; preds = %"34.loopexit", %"28" + %301 = icmp eq i32 %263, %261 + %302 = add i32 %263, 1 + br i1 %301, label %"36.loopexit", label %"28" + +"36.loopexit": ; preds = %"34" + br label %"36" + +"36": ; preds = %"36.loopexit", %"27" + br i1 %192, label %"37", label %"57" + +"37": ; preds = %"36" + %303 = load i32, i32* %jdim, align 4 + %304 = icmp sgt i32 %303, 0 + br i1 %304, label %"38.preheader", label %"43" + +"38.preheader": ; preds = %"37" + br label %"38" + +"38": ; preds = %"41", %"38.preheader" + %305 = phi i32 [ %318, %"41" ], [ 1, %"38.preheader" ] + %306 = load i32, i32* %idim, align 4 + %307 = icmp sgt i32 %306, 0 + br i1 %307, label %"39.preheader", label %"41" + +"39.preheader": ; preds = %"38" + br label %"39" + +"39": ; preds = %"39", %"39.preheader" + %308 = phi i32 [ %316, %"39" ], [ 1, %"39.preheader" ] + %309 = sext i32 %308 to i64 + %310 = sext i32 %305 to i64 + %311 = mul nsw i64 %113, %310 + %312 = add i64 %311, %not19 + %313 = add i64 %312, %309 + %314 = getelementptr [0 x i32], [0 x i32]* %k3000, i64 0, i64 %313 + store i32 -1, i32* %314, align 4 + %315 = icmp eq i32 %308, %306 + %316 = add i32 %308, 1 + br i1 %315, label %"41.loopexit", label %"39" + +"41.loopexit": ; preds = %"39" + br label %"41" + +"41": ; preds = %"41.loopexit", %"38" + %317 = icmp eq i32 %305, %303 + %318 = add i32 %305, 1 + br i1 %317, label %"43.loopexit", label %"38" + +"43.loopexit": ; preds = %"41" + br label %"43" + +"43": ; preds = %"43.loopexit", %"37" + %319 = load i32, i32* %kdim, align 4 + %320 = icmp sgt i32 %319, 1 + br i1 %320, label %"44.preheader", label %"57" + +"44.preheader": ; preds = %"43" + br label %"44" + +"44": ; preds = %"55", %"44.preheader" + %321 = phi i32 [ %409, %"55" ], [ %319, %"44.preheader" ] + %322 = load i32, i32* %jdim, align 4 + %323 = icmp sgt i32 %322, 0 + br i1 %323, label %"45.preheader", label %"55" + +"45.preheader": ; preds = %"44" + br label %"45" + +"45": ; preds = %"53", %"45.preheader" + %324 = phi i32 [ %407, %"53" ], [ 1, %"45.preheader" ] + %325 = load i32, i32* %idim, align 4 + %326 = icmp sgt i32 %325, 0 + br i1 %326, label %"46.preheader", label %"53" + +"46.preheader": ; preds = %"45" + br label %"46" + +"46": ; preds = %"51", %"46.preheader" + %327 = phi i32 [ %405, %"51" ], [ 1, %"46.preheader" ] + %328 = sext i32 %327 to i64 + %329 = sext i32 %321 to i64 + %330 = mul i64 %121, %329 + %331 = sext i32 %324 to i64 + %332 = mul nsw i64 %116, %331 + %333 = add i64 %330, %122 + %334 = add i64 %333, %332 + %335 = add i64 %334, %328 + %336 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %335 + %337 = load double, double* %336, align 8 + %338 = sext i32 %327 to i64 + %339 = add i32 %321, 1 + %340 = sext i32 %339 to i64 + %341 = mul i64 %121, %340 + %342 = sext i32 %324 to i64 + %343 = mul nsw i64 %116, %342 + %344 = add i64 %341, %122 + %345 = add i64 %344, %343 + %346 = add i64 %345, %338 + %347 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %346 + %348 = load double, double* %347, align 8 + %349 = fadd double %337, %348 + %350 = fmul double %349, 5.000000e-01 + %351 = sext i32 %327 to i64 + %352 = sext i32 %324 to i64 + %353 = mul nsw i64 %126, %352 + %354 = add i64 %353, %not21 + %355 = add i64 %354, %351 + %356 = getelementptr [0 x double], [0 x double]* %hsurf, i64 0, i64 %355 + %357 = load double, double* %356, align 8 + %358 = fsub double %350, %357 + %359 = sext i32 %327 to i64 + %360 = add i32 %321, -1 + %361 = sext i32 %360 to i64 + %362 = mul i64 %121, %361 + %363 = sext i32 %324 to i64 + %364 = mul nsw i64 %116, %363 + %365 = add i64 %362, %122 + %366 = add i64 %365, %364 + %367 = add i64 %366, %359 + %368 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %367 + %369 = load double, double* %368, align 8 + %370 = sext i32 %327 to i64 + %371 = sext i32 %321 to i64 + %372 = mul i64 %121, %371 + %373 = sext i32 %324 to i64 + %374 = mul nsw i64 %116, %373 + %375 = add i64 %372, %122 + %376 = add i64 %375, %374 + %377 = add i64 %376, %370 + %378 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %377 + %379 = load double, double* %378, align 8 + %380 = fadd double %369, %379 + %381 = fmul double %380, 5.000000e-01 + %382 = sext i32 %327 to i64 + %383 = sext i32 %324 to i64 + %384 = mul nsw i64 %126, %383 + %385 = add i64 %384, %not21 + %386 = add i64 %385, %382 + %387 = getelementptr [0 x double], [0 x double]* %hsurf, i64 0, i64 %386 + %388 = load double, double* %387, align 8 + %389 = fsub double %381, %388 + %390 = fcmp ugt double %358, 3.000000e+03 + %391 = fcmp ult double %389, 3.000000e+03 + %or.cond = or i1 %390, %391 + br i1 %or.cond, label %"51", label %"48" + +"48": ; preds = %"46" + %392 = fadd double %358, -3.000000e+03 + %393 = tail call double @llvm.fabs.f64(double %392) + %394 = fadd double %389, -3.000000e+03 + %395 = tail call double @llvm.fabs.f64(double %394) + %396 = fcmp ugt double %393, %395 + %397 = sext i32 %327 to i64 + %398 = sext i32 %324 to i64 + %399 = mul nsw i64 %113, %398 + %400 = add i64 %399, %not19 + %401 = add i64 %400, %397 + %402 = sext i1 %396 to i32 + %.sink = add i32 %321, %402 + %403 = getelementptr [0 x i32], [0 x i32]* %k3000, i64 0, i64 %401 + store i32 %.sink, i32* %403, align 4 + br label %"51" + +"51": ; preds = %"48", %"46" + %404 = icmp eq i32 %327, %325 + %405 = add i32 %327, 1 + br i1 %404, label %"53.loopexit", label %"46" + +"53.loopexit": ; preds = %"51" + br label %"53" + +"53": ; preds = %"53.loopexit", %"45" + %406 = icmp eq i32 %324, %322 + %407 = add i32 %324, 1 + br i1 %406, label %"55.loopexit", label %"45" + +"55.loopexit": ; preds = %"53" + br label %"55" + +"55": ; preds = %"55.loopexit", %"44" + %408 = icmp eq i32 %321, 2 + %409 = add i32 %321, -1 + br i1 %408, label %"57.loopexit", label %"44" + +"57.loopexit": ; preds = %"55" + br label %"57" + +"57": ; preds = %"57.loopexit", %"43", %"36" + %410 = load i32, i32* %jdim, align 4 + %411 = icmp sgt i32 %410, 0 + br i1 %411, label %"58.preheader", label %"63" + +"58.preheader": ; preds = %"57" + br label %"58" + +"58": ; preds = %"61", %"58.preheader" + %412 = phi i32 [ %488, %"61" ], [ 1, %"58.preheader" ] + %413 = load i32, i32* %idim, align 4 + %414 = icmp sgt i32 %413, 0 + br i1 %414, label %"59.preheader", label %"61" + +"59.preheader": ; preds = %"58" + br label %"59" + +"59": ; preds = %"59", %"59.preheader" + %415 = phi i32 [ %486, %"59" ], [ 1, %"59.preheader" ] + %416 = load double, double* %p0, align 8 + %417 = sext i32 %415 to i64 + %418 = sext i32 %415 to i64 + %419 = sext i32 %412 to i64 + %420 = mul nsw i64 %146, %419 + %421 = add i64 %420, %not25 + %422 = add i64 %421, %418 + %423 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %422 + %424 = load i32, i32* %423, align 4 + %425 = sext i32 %424 to i64 + %426 = mul i64 %141, %425 + %427 = sext i32 %412 to i64 + %428 = mul nsw i64 %136, %427 + %429 = add i64 %428, %142 + %430 = add i64 %429, %417 + %431 = add i64 %430, %426 + %432 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %431 + %433 = load double, double* %432, align 8 + %434 = fdiv double %416, %433 + %435 = sext i32 %415 to i64 + %436 = sext i32 %412 to i64 + %437 = mul nsw i64 %129, %436 + %438 = add i64 %437, %not22 + %439 = add i64 %438, %435 + %440 = sext i32 %415 to i64 + %441 = sext i32 %412 to i64 + %442 = mul nsw i64 %133, %441 + %443 = add i64 %442, %not23 + %444 = add i64 %443, %440 + %445 = getelementptr [0 x double], [0 x double]* %tp_start, i64 0, i64 %444 + %446 = load double, double* %445, align 8 + %447 = load double, double* %r_d, align 8 + %448 = load double, double* %cp_d, align 8 + %449 = fdiv double %447, %448 + %450 = tail call double @pow(double %434, double %449) #0 + %451 = fmul double %446, %450 + %452 = getelementptr [0 x double], [0 x double]* %thp_start, i64 0, i64 %439 + store double %451, double* %452, align 8 + %453 = sext i32 %415 to i64 + %454 = sext i32 %415 to i64 + %455 = sext i32 %412 to i64 + %456 = mul nsw i64 %146, %455 + %457 = add i64 %456, %not25 + %458 = add i64 %457, %454 + %459 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %458 + %460 = load i32, i32* %459, align 4 + %461 = sext i32 %460 to i64 + %462 = mul i64 %98, %461 + %463 = sext i32 %412 to i64 + %464 = mul nsw i64 %93, %463 + %465 = add i64 %464, %99 + %466 = add i64 %465, %453 + %467 = add i64 %466, %462 + %468 = sext i32 %415 to i64 + %469 = sext i32 %412 to i64 + %470 = mul nsw i64 %149, %469 + %471 = add i64 %470, %not26 + %472 = add i64 %471, %468 + %473 = getelementptr [0 x double], [0 x double]* %qvp_start, i64 0, i64 %472 + %474 = load double, double* %473, align 8 + %475 = sext i32 %415 to i64 + %476 = sext i32 %412 to i64 + %477 = mul nsw i64 %149, %476 + %478 = add i64 %477, %not26 + %479 = add i64 %478, %475 + %480 = getelementptr [0 x double], [0 x double]* %qvp_start, i64 0, i64 %479 + %481 = load double, double* %480, align 8 + %482 = fsub double 1.000000e+00, %481 + %483 = fdiv double %474, %482 + %484 = getelementptr [0 x double], [0 x double]* %rp, i64 0, i64 %467 + store double %483, double* %484, align 8 + %485 = icmp eq i32 %415, %413 + %486 = add i32 %415, 1 + br i1 %485, label %"61.loopexit", label %"59" + +"61.loopexit": ; preds = %"59" + br label %"61" + +"61": ; preds = %"61.loopexit", %"58" + %487 = icmp eq i32 %412, %410 + %488 = add i32 %412, 1 + br i1 %487, label %"63.loopexit", label %"58" + +"63.loopexit": ; preds = %"61" + br label %"63" + +"63": ; preds = %"63.loopexit", %"57" + %489 = load i32, i32* %kdim, align 4 + %490 = icmp sgt i32 %489, 0 + br i1 %490, label %"64.preheader", label %"156" + +"64.preheader": ; preds = %"63" + br label %"64" + +"64": ; preds = %"154", %"64.preheader" + %491 = phi i32 [ %1652, %"154" ], [ %489, %"64.preheader" ] + %492 = load i32, i32* %jdim, align 4 + %493 = icmp sgt i32 %492, 0 + br i1 %493, label %"65.preheader", label %"70" + +"65.preheader": ; preds = %"64" + br label %"65" + +"65": ; preds = %"68", %"65.preheader" + %494 = phi i32 [ %513, %"68" ], [ 1, %"65.preheader" ] + %495 = load i32, i32* %idim, align 4 + %496 = icmp sgt i32 %495, 0 + br i1 %496, label %"66.preheader", label %"68" + +"66.preheader": ; preds = %"65" + br label %"66" + +"66": ; preds = %"66", %"66.preheader" + %497 = phi i32 [ %511, %"66" ], [ 1, %"66.preheader" ] + %498 = sext i32 %497 to i64 + %499 = sext i32 %494 to i64 + %500 = mul nsw i64 %153, %499 + %501 = add i64 %500, %not27 + %502 = add i64 %501, %498 + %503 = getelementptr [0 x i32], [0 x i32]* %icount, i64 0, i64 %502 + store i32 0, i32* %503, align 4 + %504 = sext i32 %497 to i64 + %505 = sext i32 %494 to i64 + %506 = mul nsw i64 %156, %505 + %507 = add i64 %506, %not28 + %508 = add i64 %507, %504 + %509 = getelementptr [0 x i32], [0 x i32]* %ldone, i64 0, i64 %508 + store i32 0, i32* %509, align 4 + %510 = icmp eq i32 %497, %495 + %511 = add i32 %497, 1 + br i1 %510, label %"68.loopexit", label %"66" + +"68.loopexit": ; preds = %"66" + br label %"68" + +"68": ; preds = %"68.loopexit", %"65" + %512 = icmp eq i32 %494, %492 + %513 = add i32 %494, 1 + br i1 %512, label %"70.loopexit", label %"65" + +"70.loopexit": ; preds = %"68" + br label %"70" + +"70": ; preds = %"70.loopexit", %"64" + %514 = load i32, i32* %jdim, align 4 + %515 = icmp sgt i32 %514, 0 + br i1 %515, label %"71.preheader", label %"88" + +"71.preheader": ; preds = %"70" + br label %"71" + +"71": ; preds = %"86", %"71.preheader" + %516 = phi i32 [ %798, %"86" ], [ 1, %"71.preheader" ] + %517 = load i32, i32* %idim, align 4 + %518 = icmp sgt i32 %517, 0 + br i1 %518, label %"72.preheader", label %"86" + +"72.preheader": ; preds = %"71" + br label %"72" + +"72": ; preds = %"84", %"72.preheader" + %519 = phi i32 [ %796, %"84" ], [ 1, %"72.preheader" ] + %520 = sext i32 %519 to i64 + %521 = sext i32 %516 to i64 + %522 = mul nsw i64 %146, %521 + %523 = add i64 %522, %not25 + %524 = add i64 %523, %520 + %525 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %524 + %526 = load i32, i32* %525, align 4 + %527 = icmp slt i32 %526, %491 + br i1 %527, label %"84", label %"73" + +"73": ; preds = %"72" + %528 = sext i32 %519 to i64 + %529 = sext i32 %516 to i64 + %530 = mul nsw i64 %160, %529 + %531 = add i64 %530, %not29 + %532 = add i64 %531, %528 + %533 = getelementptr [0 x i32], [0 x i32]* %lcomp, i64 0, i64 %532 + %534 = load i32, i32* %533, align 4, !range !0 + %535 = icmp eq i32 %534, 0 + br i1 %535, label %"84", label %"74" + +"74": ; preds = %"73" + %536 = sext i32 %519 to i64 + %537 = sext i32 %516 to i64 + %538 = mul nsw i64 %52, %537 + %539 = add i64 %538, %not7 + %540 = add i64 %539, %536 + %541 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %540 + %542 = load i32, i32* %541, align 4 + %543 = icmp slt i32 %542, %491 + br i1 %543, label %"75", label %"78" + +"75": ; preds = %"74" + %544 = sext i32 %519 to i64 + %545 = sext i32 %491 to i64 + %546 = mul i64 %141, %545 + %547 = sext i32 %516 to i64 + %548 = mul nsw i64 %136, %547 + %549 = add i64 %546, %142 + %550 = add i64 %549, %548 + %551 = add i64 %550, %544 + %552 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %551 + %553 = load double, double* %552, align 8 + %554 = load double, double* %p0, align 8 + %555 = fdiv double %553, %554 + %556 = sext i32 %519 to i64 + %557 = sext i32 %491 to i64 + %558 = mul i64 %88, %557 + %559 = sext i32 %516 to i64 + %560 = mul nsw i64 %83, %559 + %561 = add i64 %558, %89 + %562 = add i64 %561, %560 + %563 = add i64 %562, %556 + %564 = sext i32 %519 to i64 + %565 = sext i32 %516 to i64 + %566 = mul nsw i64 %129, %565 + %567 = add i64 %566, %not22 + %568 = add i64 %567, %564 + %569 = getelementptr [0 x double], [0 x double]* %thp_start, i64 0, i64 %568 + %570 = load double, double* %569, align 8 + %571 = load double, double* %r_d, align 8 + %572 = load double, double* %cp_d, align 8 + %573 = fdiv double %571, %572 + %574 = tail call double @pow(double %555, double %573) #0 + %575 = fmul double %570, %574 + %576 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %563 + store double %575, double* %576, align 8 + %577 = sext i32 %519 to i64 + %578 = sext i32 %491 to i64 + %579 = mul i64 %108, %578 + %580 = sext i32 %516 to i64 + %581 = mul nsw i64 %103, %580 + %582 = add i64 %579, %109 + %583 = add i64 %582, %581 + %584 = add i64 %583, %577 + %585 = sext i32 %519 to i64 + %586 = sext i32 %516 to i64 + %587 = mul nsw i64 %149, %586 + %588 = add i64 %587, %not26 + %589 = add i64 %588, %585 + %590 = getelementptr [0 x double], [0 x double]* %qvp_start, i64 0, i64 %589 + %591 = bitcast double* %590 to i64* + %592 = load i64, i64* %591, align 8 + %593 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %584 + %594 = bitcast double* %593 to i64* + store i64 %592, i64* %594, align 8 + %595 = sext i32 %519 to i64 + %596 = sext i32 %491 to i64 + %597 = mul i64 %98, %596 + %598 = sext i32 %516 to i64 + %599 = mul nsw i64 %93, %598 + %600 = add i64 %597, %99 + %601 = add i64 %600, %599 + %602 = add i64 %601, %595 + %603 = sext i32 %519 to i64 + %604 = sext i32 %519 to i64 + %605 = sext i32 %516 to i64 + %606 = mul nsw i64 %146, %605 + %607 = add i64 %606, %not25 + %608 = add i64 %607, %604 + %609 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %608 + %610 = load i32, i32* %609, align 4 + %611 = sext i32 %610 to i64 + %612 = mul i64 %98, %611 + %613 = sext i32 %516 to i64 + %614 = mul nsw i64 %93, %613 + %615 = add i64 %614, %99 + %616 = add i64 %615, %603 + %617 = add i64 %616, %612 + %618 = getelementptr [0 x double], [0 x double]* %rp, i64 0, i64 %617 + %619 = bitcast double* %618 to i64* + %620 = load i64, i64* %619, align 8 + %621 = getelementptr [0 x double], [0 x double]* %rp, i64 0, i64 %602 + %622 = bitcast double* %621 to i64* + store i64 %620, i64* %622, align 8 + %623 = sext i32 %519 to i64 + %624 = sext i32 %491 to i64 + %625 = mul i64 %88, %624 + %626 = sext i32 %516 to i64 + %627 = mul nsw i64 %83, %626 + %628 = add i64 %625, %89 + %629 = add i64 %628, %627 + %630 = add i64 %629, %623 + %631 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %630 + %632 = load double, double* %631, align 8 + %633 = load double, double* %b1, align 8 + %634 = load double, double* %b2w, align 8 + %635 = load double, double* %b3, align 8 + %636 = fsub double %632, %635 + %637 = fmul double %634, %636 + %638 = load double, double* %b4w, align 8 + %639 = fsub double %632, %638 + %640 = fdiv double %637, %639 + %641 = tail call double @exp(double %640) #0 + %642 = fmul double %633, %641 + %643 = sext i32 %519 to i64 + %644 = sext i32 %491 to i64 + %645 = mul i64 %141, %644 + %646 = sext i32 %516 to i64 + %647 = mul nsw i64 %136, %646 + %648 = add i64 %645, %142 + %649 = add i64 %648, %647 + %650 = add i64 %649, %643 + %651 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %650 + %652 = load double, double* %651, align 8 + %653 = load double, double* %rdv, align 8 + %654 = fmul double %642, %653 + %655 = load double, double* %o_m_rdv, align 8 + %656 = fmul double %642, %655 + %657 = fsub double %652, %656 + %658 = fdiv double %654, %657 + %659 = sext i32 %519 to i64 + %660 = sext i32 %491 to i64 + %661 = mul i64 %108, %660 + %662 = sext i32 %516 to i64 + %663 = mul nsw i64 %103, %662 + %664 = add i64 %661, %109 + %665 = add i64 %664, %663 + %666 = add i64 %665, %659 + %667 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %666 + %668 = load double, double* %667, align 8 + %669 = fcmp ult double %668, %658 + br i1 %669, label %"78", label %"76" + +"76": ; preds = %"75" + %670 = sext i32 %519 to i64 + %671 = sext i32 %516 to i64 + %672 = mul nsw i64 %52, %671 + %673 = add i64 %672, %not7 + %674 = add i64 %673, %670 + %675 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %674 + %676 = load i32, i32* %675, align 4 + %677 = icmp eq i32 %676, 0 + br i1 %677, label %"77", label %"78" + +"77": ; preds = %"76" + %678 = sext i32 %519 to i64 + %679 = sext i32 %516 to i64 + %680 = mul nsw i64 %52, %679 + %681 = add i64 %680, %not7 + %682 = add i64 %681, %678 + %683 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %682 + store i32 %491, i32* %683, align 4 + br label %"78" + +"78": ; preds = %"77", %"76", %"75", %"74" + %684 = sext i32 %519 to i64 + %685 = sext i32 %516 to i64 + %686 = mul nsw i64 %52, %685 + %687 = add i64 %686, %not7 + %688 = add i64 %687, %684 + %689 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %688 + %690 = load i32, i32* %689, align 4 + %691 = icmp eq i32 %690, %491 + br i1 %691, label %"79", label %"80" + +"79": ; preds = %"78" + %692 = sext i32 %519 to i64 + %693 = sext i32 %491 to i64 + %694 = mul i64 %88, %693 + %695 = sext i32 %516 to i64 + %696 = mul nsw i64 %83, %695 + %697 = add i64 %694, %89 + %698 = add i64 %697, %696 + %699 = add i64 %698, %692 + %700 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %699 + %701 = load double, double* %700, align 8 + %702 = sext i32 %519 to i64 + %703 = sext i32 %491 to i64 + %704 = mul i64 %141, %703 + %705 = sext i32 %516 to i64 + %706 = mul nsw i64 %136, %705 + %707 = add i64 %704, %142 + %708 = add i64 %707, %706 + %709 = add i64 %708, %702 + %710 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %709 + %711 = load double, double* %710, align 8 + %712 = sext i32 %519 to i64 + %713 = sext i32 %491 to i64 + %714 = mul i64 %98, %713 + %715 = sext i32 %516 to i64 + %716 = mul nsw i64 %93, %715 + %717 = add i64 %714, %99 + %718 = add i64 %717, %716 + %719 = add i64 %718, %712 + %720 = getelementptr [0 x double], [0 x double]* %rp, i64 0, i64 %719 + %721 = load double, double* %720, align 8 + %722 = load double, double* %p0, align 8 + %723 = fdiv double %722, %711 + %724 = sext i32 %519 to i64 + %725 = sext i32 %516 to i64 + %726 = mul nsw i64 %163, %725 + %727 = add i64 %726, %not30 + %728 = add i64 %727, %724 + %729 = load double, double* %r_d, align 8 + %730 = load double, double* %cp_d, align 8 + %731 = fdiv double %729, %730 + %732 = tail call double @pow(double %723, double %731) #0 + %733 = fmul double %701, %732 + %734 = load double, double* %lh_v, align 8 + %735 = fdiv double %734, %730 + %736 = fmul double %721, %735 + %737 = fdiv double %736, %701 + %738 = tail call double @exp(double %737) #0 + %739 = fmul double %733, %738 + %740 = getelementptr [0 x double], [0 x double]* %thp, i64 0, i64 %728 + store double %739, double* %740, align 8 + br label %"80" + +"80": ; preds = %"79", %"78" + %741 = sext i32 %519 to i64 + %742 = sext i32 %516 to i64 + %743 = mul nsw i64 %52, %742 + %744 = add i64 %743, %not7 + %745 = add i64 %744, %741 + %746 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %745 + %747 = load i32, i32* %746, align 4 + %748 = icmp slt i32 %747, %491 + br i1 %748, label %"84", label %"81" + +"81": ; preds = %"80" + %749 = sext i32 %519 to i64 + %750 = sext i32 %516 to i64 + %751 = mul nsw i64 %146, %750 + %752 = add i64 %751, %not25 + %753 = add i64 %752, %749 + %754 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %753 + %755 = load i32, i32* %754, align 4 + %756 = icmp eq i32 %755, %491 + %757 = sext i32 %519 to i64 + %758 = sext i32 %516 to i64 + %759 = mul nsw i64 %167, %758 + %760 = add i64 %759, %not31 + %761 = add i64 %760, %757 + %762 = sext i32 %519 to i64 + br i1 %756, label %"82", label %"83" + +"82": ; preds = %"81" + %763 = sext i32 %519 to i64 + %764 = sext i32 %516 to i64 + %765 = mul nsw i64 %146, %764 + %766 = add i64 %765, %not25 + %767 = add i64 %766, %763 + %768 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %767 + %769 = load i32, i32* %768, align 4 + %770 = sext i32 %769 to i64 + %771 = mul i64 %175, %770 + %772 = sext i32 %516 to i64 + %773 = mul nsw i64 %170, %772 + %774 = add i64 %773, %176 + %775 = add i64 %774, %762 + %776 = add i64 %775, %771 + %777 = getelementptr [0 x double], [0 x double]* %te, i64 0, i64 %776 + %778 = bitcast double* %777 to i64* + %779 = load i64, i64* %778, align 8 + %780 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %761 + %781 = bitcast double* %780 to i64* + store i64 %779, i64* %781, align 8 + br label %"84" + +"83": ; preds = %"81" + %782 = add i32 %491, 1 + %783 = sext i32 %782 to i64 + %784 = mul i64 %88, %783 + %785 = sext i32 %516 to i64 + %786 = mul nsw i64 %83, %785 + %787 = add i64 %784, %89 + %788 = add i64 %787, %786 + %789 = add i64 %788, %762 + %790 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %789 + %791 = bitcast double* %790 to i64* + %792 = load i64, i64* %791, align 8 + %793 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %761 + %794 = bitcast double* %793 to i64* + store i64 %792, i64* %794, align 8 + br label %"84" + +"84": ; preds = %"83", %"82", %"80", %"73", %"72" + %795 = icmp eq i32 %519, %517 + %796 = add i32 %519, 1 + br i1 %795, label %"86.loopexit", label %"72" + +"86.loopexit": ; preds = %"84" + br label %"86" + +"86": ; preds = %"86.loopexit", %"71" + %797 = icmp eq i32 %516, %514 + %798 = add i32 %516, 1 + br i1 %797, label %"88.loopexit", label %"71" + +"88.loopexit": ; preds = %"86" + br label %"88" + +"88": ; preds = %"88.loopexit", %"70" + %799 = load i32, i32* %jdim, align 4 + %800 = icmp sgt i32 %799, 0 + br i1 %800, label %"89.preheader", label %"99" + +"89.preheader": ; preds = %"88" + br label %"89" + +"89": ; preds = %"97", %"89.preheader" + %801 = phi i32 [ %838, %"97" ], [ 1, %"89.preheader" ] + %802 = load i32, i32* %idim, align 4 + %803 = icmp sgt i32 %802, 0 + br i1 %803, label %"90.preheader", label %"97" + +"90.preheader": ; preds = %"89" + br label %"90" + +"90": ; preds = %"95", %"90.preheader" + %804 = phi i32 [ %836, %"95" ], [ 1, %"90.preheader" ] + %805 = sext i32 %804 to i64 + %806 = sext i32 %801 to i64 + %807 = mul nsw i64 %146, %806 + %808 = add i64 %807, %not25 + %809 = add i64 %808, %805 + %810 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %809 + %811 = load i32, i32* %810, align 4 + %812 = icmp slt i32 %811, %491 + br i1 %812, label %"95", label %"91" + +"91": ; preds = %"90" + %813 = sext i32 %804 to i64 + %814 = sext i32 %801 to i64 + %815 = mul nsw i64 %160, %814 + %816 = add i64 %815, %not29 + %817 = add i64 %816, %813 + %818 = getelementptr [0 x i32], [0 x i32]* %lcomp, i64 0, i64 %817 + %819 = load i32, i32* %818, align 4, !range !0 + %820 = icmp eq i32 %819, 0 + br i1 %820, label %"95", label %"92" + +"92": ; preds = %"91" + %821 = sext i32 %804 to i64 + %822 = sext i32 %801 to i64 + %823 = mul nsw i64 %52, %822 + %824 = add i64 %823, %not7 + %825 = add i64 %824, %821 + %826 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %825 + %827 = load i32, i32* %826, align 4 + %828 = icmp sge i32 %827, %491 + %. = zext i1 %828 to i32 + br label %"95" + +"95": ; preds = %"92", %"91", %"90" + %.sink2 = phi i32 [ 0, %"91" ], [ 0, %"90" ], [ %., %"92" ] + %829 = sext i32 %804 to i64 + %830 = sext i32 %801 to i64 + %831 = mul nsw i64 %180, %830 + %832 = add i64 %831, %not33 + %833 = add i64 %832, %829 + %834 = getelementptr [0 x i32], [0 x i32]* %lzcompute, i64 0, i64 %833 + store i32 %.sink2, i32* %834, align 4 + %835 = icmp eq i32 %804, %802 + %836 = add i32 %804, 1 + br i1 %835, label %"97.loopexit", label %"90" + +"97.loopexit": ; preds = %"95" + br label %"97" + +"97": ; preds = %"97.loopexit", %"89" + %837 = icmp eq i32 %801, %799 + %838 = add i32 %801, 1 + br i1 %837, label %"99.loopexit", label %"89" + +"99.loopexit": ; preds = %"97" + br label %"99" + +"99": ; preds = %"99.loopexit", %"88" + %839 = load i32, i32* %idim, align 4 + %840 = load i32, i32* %jdim, align 4 + %841 = mul i32 %840, %839 + %842 = icmp sgt i32 %841, 0 + %843 = icmp sgt i32 %840, 0 + br i1 %842, label %"101.lr.ph", label %"115" + +"101.lr.ph": ; preds = %"99" + br label %"101" + +"101": ; preds = %"114", %"101.lr.ph" + %844 = phi i1 [ %843, %"101.lr.ph" ], [ %1082, %"114" ] + %845 = phi i32 [ %840, %"101.lr.ph" ], [ %1079, %"114" ] + br i1 %844, label %"102.preheader", label %"114" + +"102.preheader": ; preds = %"101" + br label %"102" + +"102": ; preds = %"112", %"102.preheader" + %846 = phi i32 [ %1074, %"112" ], [ 0, %"102.preheader" ] + %847 = phi i32 [ %1076, %"112" ], [ 1, %"102.preheader" ] + %848 = load i32, i32* %idim, align 4 + %849 = icmp sgt i32 %848, 0 + br i1 %849, label %"103.preheader", label %"112" + +"103.preheader": ; preds = %"102" + br label %"103" + +"103": ; preds = %"110", %"103.preheader" + %850 = phi i32 [ %1073, %"110" ], [ 1, %"103.preheader" ] + %851 = phi i32 [ %1071, %"110" ], [ %846, %"103.preheader" ] + %852 = sext i32 %850 to i64 + %853 = sext i32 %847 to i64 + %854 = mul nsw i64 %180, %853 + %855 = add i64 %854, %not33 + %856 = add i64 %855, %852 + %857 = getelementptr [0 x i32], [0 x i32]* %lzcompute, i64 0, i64 %856 + %858 = load i32, i32* %857, align 4, !range !0 + %859 = icmp eq i32 %858, 0 + br i1 %859, label %"109", label %"104" + +"104": ; preds = %"103" + %860 = sext i32 %850 to i64 + %861 = sext i32 %847 to i64 + %862 = mul nsw i64 %156, %861 + %863 = add i64 %862, %not28 + %864 = add i64 %863, %860 + %865 = getelementptr [0 x i32], [0 x i32]* %ldone, i64 0, i64 %864 + %866 = load i32, i32* %865, align 4, !range !0 + %867 = icmp eq i32 %866, 0 + br i1 %867, label %"105", label %"109" + +"105": ; preds = %"104" + %868 = sext i32 %850 to i64 + %869 = sext i32 %847 to i64 + %870 = mul nsw i64 %167, %869 + %871 = add i64 %870, %not31 + %872 = add i64 %871, %868 + %873 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %872 + %874 = bitcast double* %873 to i64* + %875 = load i64, i64* %874, align 8 + %876 = bitcast double* %tguess1 to i64* + store i64 %875, i64* %876, align 8 + %.cast = bitcast i64 %875 to double + %877 = load double, double* %b1, align 8 + %878 = load double, double* %b2w, align 8 + %879 = load double, double* %b3, align 8 + %880 = fsub double %.cast, %879 + %881 = fmul double %878, %880 + %882 = load double, double* %b4w, align 8 + %883 = fsub double %.cast, %882 + %884 = fdiv double %881, %883 + %885 = tail call double @exp(double %884) #0 + %886 = fmul double %877, %885 + store double %886, double* %esat, align 8 + %887 = load double, double* %rdv, align 8 + %888 = fmul double %886, %887 + %889 = sext i32 %850 to i64 + %890 = sext i32 %491 to i64 + %891 = mul i64 %141, %890 + %892 = sext i32 %847 to i64 + %893 = mul nsw i64 %136, %892 + %894 = add i64 %891, %142 + %895 = add i64 %894, %893 + %896 = add i64 %895, %889 + %897 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %896 + %898 = load double, double* %897, align 8 + %899 = load double, double* %esat, align 8 + %900 = fsub double %898, %899 + %901 = fdiv double %888, %900 + store double %901, double* %r1, align 8 + %902 = sext i32 %850 to i64 + %903 = sext i32 %847 to i64 + %904 = mul nsw i64 %167, %903 + %905 = add i64 %904, %not31 + %906 = add i64 %905, %902 + %907 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %906 + %908 = load double, double* %907, align 8 + %909 = fadd double %908, -1.000000e+00 + store double %909, double* %tguess2, align 8 + %910 = load double, double* %b1, align 8 + %911 = load double, double* %b2w, align 8 + %912 = load double, double* %b3, align 8 + %913 = fsub double %909, %912 + %914 = fmul double %911, %913 + %915 = load double, double* %b4w, align 8 + %916 = fsub double %909, %915 + %917 = fdiv double %914, %916 + %918 = tail call double @exp(double %917) #0 + %919 = fmul double %910, %918 + store double %919, double* %esat, align 8 + %920 = load double, double* %rdv, align 8 + %921 = fmul double %919, %920 + %922 = sext i32 %850 to i64 + %923 = sext i32 %491 to i64 + %924 = mul i64 %141, %923 + %925 = sext i32 %847 to i64 + %926 = mul nsw i64 %136, %925 + %927 = add i64 %924, %142 + %928 = add i64 %927, %926 + %929 = add i64 %928, %922 + %930 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %929 + %931 = load double, double* %930, align 8 + %932 = load double, double* %esat, align 8 + %933 = fsub double %931, %932 + %934 = fdiv double %921, %933 + store double %934, double* %r2, align 8 + %935 = load double, double* %tguess1, align 8 + %936 = sext i32 %850 to i64 + %937 = sext i32 %491 to i64 + %938 = mul i64 %141, %937 + %939 = sext i32 %847 to i64 + %940 = mul nsw i64 %136, %939 + %941 = add i64 %938, %142 + %942 = add i64 %941, %940 + %943 = add i64 %942, %936 + %944 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %943 + %945 = load double, double* %944, align 8 + %946 = load double, double* %r1, align 8 + %947 = load double, double* %p0, align 8 + %948 = fdiv double %947, %945 + %949 = load double, double* %r_d, align 8 + %950 = load double, double* %cp_d, align 8 + %951 = fdiv double %949, %950 + %952 = tail call double @pow(double %948, double %951) #0 + %953 = fmul double %935, %952 + %954 = load double, double* %lh_v, align 8 + %955 = fdiv double %954, %950 + %956 = fmul double %946, %955 + %957 = fdiv double %956, %935 + %958 = tail call double @exp(double %957) #0 + %959 = fmul double %953, %958 + store double %959, double* %thetae1, align 8 + %960 = load double, double* %tguess2, align 8 + %961 = sext i32 %850 to i64 + %962 = sext i32 %491 to i64 + %963 = mul i64 %141, %962 + %964 = sext i32 %847 to i64 + %965 = mul nsw i64 %136, %964 + %966 = add i64 %963, %142 + %967 = add i64 %966, %965 + %968 = add i64 %967, %961 + %969 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %968 + %970 = load double, double* %969, align 8 + %971 = load double, double* %r2, align 8 + %972 = load double, double* %p0, align 8 + %973 = fdiv double %972, %970 + %974 = load double, double* %r_d, align 8 + %975 = load double, double* %cp_d, align 8 + %976 = fdiv double %974, %975 + %977 = tail call double @pow(double %973, double %976) #0 + %978 = fmul double %960, %977 + %979 = load double, double* %lh_v, align 8 + %980 = fdiv double %979, %975 + %981 = fmul double %971, %980 + %982 = fdiv double %981, %960 + %983 = tail call double @exp(double %982) #0 + %984 = fmul double %978, %983 + store double %984, double* %thetae2, align 8 + %985 = sext i32 %850 to i64 + %986 = sext i32 %847 to i64 + %987 = mul nsw i64 %167, %986 + %988 = add i64 %987, %not31 + %989 = add i64 %988, %985 + %990 = sext i32 %850 to i64 + %991 = sext i32 %847 to i64 + %992 = mul nsw i64 %167, %991 + %993 = add i64 %992, %not31 + %994 = add i64 %993, %990 + %995 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %994 + %996 = load double, double* %995, align 8 + %997 = load double, double* %thetae1, align 8 + %998 = sext i32 %850 to i64 + %999 = sext i32 %847 to i64 + %1000 = mul nsw i64 %163, %999 + %1001 = add i64 %1000, %not30 + %1002 = add i64 %1001, %998 + %1003 = getelementptr [0 x double], [0 x double]* %thp, i64 0, i64 %1002 + %1004 = load double, double* %1003, align 8 + %1005 = fsub double %997, %1004 + %1006 = load double, double* %thetae2, align 8 + %1007 = load double, double* %thetae1, align 8 + %1008 = fsub double %1006, %1007 + %1009 = fdiv double %1005, %1008 + %1010 = fadd double %996, %1009 + %1011 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %989 + store double %1010, double* %1011, align 8 + %1012 = sext i32 %850 to i64 + %1013 = sext i32 %491 to i64 + %1014 = mul i64 %88, %1013 + %1015 = sext i32 %847 to i64 + %1016 = mul nsw i64 %83, %1015 + %1017 = add i64 %1014, %89 + %1018 = add i64 %1017, %1016 + %1019 = add i64 %1018, %1012 + %1020 = sext i32 %850 to i64 + %1021 = sext i32 %847 to i64 + %1022 = mul nsw i64 %167, %1021 + %1023 = add i64 %1022, %not31 + %1024 = add i64 %1023, %1020 + %1025 = getelementptr [0 x double], [0 x double]* %ttt, i64 0, i64 %1024 + %1026 = bitcast double* %1025 to i64* + %1027 = load i64, i64* %1026, align 8 + %1028 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %1019 + %1029 = bitcast double* %1028 to i64* + store i64 %1027, i64* %1029, align 8 + %1030 = sext i32 %850 to i64 + %1031 = sext i32 %847 to i64 + %1032 = mul nsw i64 %153, %1031 + %1033 = add i64 %1032, %not27 + %1034 = add i64 %1033, %1030 + %1035 = sext i32 %850 to i64 + %1036 = sext i32 %847 to i64 + %1037 = mul nsw i64 %153, %1036 + %1038 = add i64 %1037, %not27 + %1039 = add i64 %1038, %1035 + %1040 = getelementptr [0 x i32], [0 x i32]* %icount, i64 0, i64 %1039 + %1041 = load i32, i32* %1040, align 4 + %1042 = add i32 %1041, 1 + %1043 = getelementptr [0 x i32], [0 x i32]* %icount, i64 0, i64 %1034 + store i32 %1042, i32* %1043, align 4 + %1044 = load double, double* %thetae1, align 8 + %1045 = sext i32 %850 to i64 + %1046 = sext i32 %847 to i64 + %1047 = mul nsw i64 %163, %1046 + %1048 = add i64 %1047, %not30 + %1049 = add i64 %1048, %1045 + %1050 = getelementptr [0 x double], [0 x double]* %thp, i64 0, i64 %1049 + %1051 = load double, double* %1050, align 8 + %1052 = fsub double %1044, %1051 + %1053 = tail call double @llvm.fabs.f64(double %1052) + %1054 = load double, double* %eps_conv, align 8 + %1055 = fcmp olt double %1053, %1054 + br i1 %1055, label %"107", label %"106" + +"106": ; preds = %"105" + %1056 = sext i32 %850 to i64 + %1057 = sext i32 %847 to i64 + %1058 = mul nsw i64 %153, %1057 + %1059 = add i64 %1058, %not27 + %1060 = add i64 %1059, %1056 + %1061 = getelementptr [0 x i32], [0 x i32]* %icount, i64 0, i64 %1060 + %1062 = load i32, i32* %1061, align 4 + %1063 = icmp sgt i32 %1062, 20 + br i1 %1063, label %"107", label %"110" + +"107": ; preds = %"106", %"105" + %1064 = sext i32 %850 to i64 + %1065 = sext i32 %847 to i64 + %1066 = mul nsw i64 %156, %1065 + %1067 = add i64 %1066, %not28 + %1068 = add i64 %1067, %1064 + %1069 = getelementptr [0 x i32], [0 x i32]* %ldone, i64 0, i64 %1068 + store i32 1, i32* %1069, align 4 + br label %"110" + +"109": ; preds = %"104", %"103" + %1070 = add i32 %851, 1 + br label %"110" + +"110": ; preds = %"109", %"107", %"106" + %1071 = phi i32 [ %1070, %"109" ], [ %851, %"107" ], [ %851, %"106" ] + %1072 = icmp eq i32 %850, %848 + %1073 = add i32 %850, 1 + br i1 %1072, label %"112.loopexit", label %"103" + +"112.loopexit": ; preds = %"110" + %.lcssa = phi i32 [ %1071, %"110" ] + br label %"112" + +"112": ; preds = %"112.loopexit", %"102" + %1074 = phi i32 [ %846, %"102" ], [ %.lcssa, %"112.loopexit" ] + %1075 = icmp eq i32 %847, %845 + %1076 = add i32 %847, 1 + br i1 %1075, label %"114.loopexit", label %"102" + +"114.loopexit": ; preds = %"112" + %.lcssa15 = phi i32 [ %1074, %"112" ] + br label %"114" + +"114": ; preds = %"114.loopexit", %"101" + %1077 = phi i32 [ 0, %"101" ], [ %.lcssa15, %"114.loopexit" ] + %1078 = load i32, i32* %idim, align 4 + %1079 = load i32, i32* %jdim, align 4 + %1080 = mul i32 %1079, %1078 + %1081 = icmp sgt i32 %1080, %1077 + %1082 = icmp sgt i32 %1079, 0 + br i1 %1081, label %"101", label %"100.115_crit_edge" + +"100.115_crit_edge": ; preds = %"114" + %.lcssa17 = phi i32 [ %1079, %"114" ] + %.lcssa16 = phi i1 [ %1082, %"114" ] + br label %"115" + +"115": ; preds = %"100.115_crit_edge", %"99" + %.lcssa13 = phi i32 [ %.lcssa17, %"100.115_crit_edge" ], [ %840, %"99" ] + %.lcssa12 = phi i1 [ %.lcssa16, %"100.115_crit_edge" ], [ %843, %"99" ] + br i1 %.lcssa12, label %"116.preheader", label %"154" + +"116.preheader": ; preds = %"115" + br label %"116" + +"116": ; preds = %"152", %"116.preheader" + %1083 = phi i32 [ %1650, %"152" ], [ 1, %"116.preheader" ] + %1084 = load i32, i32* %idim, align 4 + %1085 = icmp sgt i32 %1084, 0 + br i1 %1085, label %"117.preheader", label %"152" + +"117.preheader": ; preds = %"116" + br label %"117" + +"117": ; preds = %"150", %"117.preheader" + %1086 = phi i32 [ %1648, %"150" ], [ 1, %"117.preheader" ] + %1087 = sext i32 %1086 to i64 + %1088 = sext i32 %1083 to i64 + %1089 = mul nsw i64 %146, %1088 + %1090 = add i64 %1089, %not25 + %1091 = add i64 %1090, %1087 + %1092 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %1091 + %1093 = load i32, i32* %1092, align 4 + %1094 = icmp slt i32 %1093, %491 + br i1 %1094, label %"150", label %"118" + +"118": ; preds = %"117" + %1095 = sext i32 %1086 to i64 + %1096 = sext i32 %1083 to i64 + %1097 = mul nsw i64 %160, %1096 + %1098 = add i64 %1097, %not29 + %1099 = add i64 %1098, %1095 + %1100 = getelementptr [0 x i32], [0 x i32]* %lcomp, i64 0, i64 %1099 + %1101 = load i32, i32* %1100, align 4, !range !0 + %1102 = icmp eq i32 %1101, 0 + br i1 %1102, label %"150", label %"119" + +"119": ; preds = %"118" + %1103 = sext i32 %1086 to i64 + %1104 = sext i32 %1083 to i64 + %1105 = mul nsw i64 %52, %1104 + %1106 = add i64 %1105, %not7 + %1107 = add i64 %1106, %1103 + %1108 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %1107 + %1109 = load i32, i32* %1108, align 4 + %1110 = icmp slt i32 %1109, %491 + br i1 %1110, label %"121", label %"120" + +"120": ; preds = %"119" + %1111 = sext i32 %1086 to i64 + %1112 = sext i32 %491 to i64 + %1113 = mul i64 %88, %1112 + %1114 = sext i32 %1083 to i64 + %1115 = mul nsw i64 %83, %1114 + %1116 = add i64 %1113, %89 + %1117 = add i64 %1116, %1115 + %1118 = add i64 %1117, %1111 + %1119 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %1118 + %1120 = load double, double* %1119, align 8 + %1121 = load double, double* %b1, align 8 + %1122 = load double, double* %b2w, align 8 + %1123 = load double, double* %b3, align 8 + %1124 = fsub double %1120, %1123 + %1125 = fmul double %1122, %1124 + %1126 = load double, double* %b4w, align 8 + %1127 = fsub double %1120, %1126 + %1128 = fdiv double %1125, %1127 + %1129 = tail call double @exp(double %1128) #0 + %1130 = fmul double %1121, %1129 + %1131 = sext i32 %1086 to i64 + %1132 = sext i32 %491 to i64 + %1133 = mul i64 %141, %1132 + %1134 = sext i32 %1083 to i64 + %1135 = mul nsw i64 %136, %1134 + %1136 = add i64 %1133, %142 + %1137 = add i64 %1136, %1135 + %1138 = add i64 %1137, %1131 + %1139 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %1138 + %1140 = load double, double* %1139, align 8 + %1141 = sext i32 %1086 to i64 + %1142 = sext i32 %491 to i64 + %1143 = mul i64 %108, %1142 + %1144 = sext i32 %1083 to i64 + %1145 = mul nsw i64 %103, %1144 + %1146 = add i64 %1143, %109 + %1147 = add i64 %1146, %1145 + %1148 = add i64 %1147, %1141 + %1149 = load double, double* %rdv, align 8 + %1150 = fmul double %1130, %1149 + %1151 = load double, double* %o_m_rdv, align 8 + %1152 = fmul double %1130, %1151 + %1153 = fsub double %1140, %1152 + %1154 = fdiv double %1150, %1153 + %1155 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %1148 + store double %1154, double* %1155, align 8 + br label %"121" + +"121": ; preds = %"120", %"119" + %1156 = sext i32 %1086 to i64 + %1157 = sext i32 %491 to i64 + %1158 = mul i64 %88, %1157 + %1159 = sext i32 %1083 to i64 + %1160 = mul nsw i64 %83, %1159 + %1161 = add i64 %1158, %89 + %1162 = add i64 %1161, %1160 + %1163 = add i64 %1162, %1156 + %1164 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %1163 + %1165 = load double, double* %1164, align 8 + %1166 = load double, double* %rvd_m_o, align 8 + %1167 = sext i32 %1086 to i64 + %1168 = sext i32 %491 to i64 + %1169 = mul i64 %108, %1168 + %1170 = sext i32 %1083 to i64 + %1171 = mul nsw i64 %103, %1170 + %1172 = add i64 %1169, %109 + %1173 = add i64 %1172, %1171 + %1174 = add i64 %1173, %1167 + %1175 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %1174 + %1176 = load double, double* %1175, align 8 + %1177 = fmul double %1166, %1176 + %1178 = sext i32 %1086 to i64 + %1179 = sext i32 %491 to i64 + %1180 = mul i64 %108, %1179 + %1181 = sext i32 %1083 to i64 + %1182 = mul nsw i64 %103, %1181 + %1183 = add i64 %1180, %109 + %1184 = add i64 %1183, %1182 + %1185 = add i64 %1184, %1178 + %1186 = getelementptr [0 x double], [0 x double]* %qvp, i64 0, i64 %1185 + %1187 = load double, double* %1186, align 8 + %1188 = fsub double 1.000000e+00, %1187 + %1189 = fdiv double %1177, %1188 + %1190 = fadd double %1189, 1.000000e+00 + %1191 = fmul double %1165, %1190 + %1192 = sext i32 %1086 to i64 + %1193 = sext i32 %491 to i64 + %1194 = mul i64 %175, %1193 + %1195 = sext i32 %1083 to i64 + %1196 = mul nsw i64 %170, %1195 + %1197 = add i64 %1194, %176 + %1198 = add i64 %1197, %1196 + %1199 = add i64 %1198, %1192 + %1200 = getelementptr [0 x double], [0 x double]* %te, i64 0, i64 %1199 + %1201 = load double, double* %1200, align 8 + %1202 = load double, double* %rvd_m_o, align 8 + %1203 = sext i32 %1086 to i64 + %1204 = sext i32 %491 to i64 + %1205 = mul i64 %188, %1204 + %1206 = sext i32 %1083 to i64 + %1207 = mul nsw i64 %183, %1206 + %1208 = add i64 %1205, %189 + %1209 = add i64 %1208, %1207 + %1210 = add i64 %1209, %1203 + %1211 = getelementptr [0 x double], [0 x double]* %qve, i64 0, i64 %1210 + %1212 = load double, double* %1211, align 8 + %1213 = fmul double %1202, %1212 + %1214 = sext i32 %1086 to i64 + %1215 = sext i32 %491 to i64 + %1216 = mul i64 %188, %1215 + %1217 = sext i32 %1083 to i64 + %1218 = mul nsw i64 %183, %1217 + %1219 = add i64 %1216, %189 + %1220 = add i64 %1219, %1218 + %1221 = add i64 %1220, %1214 + %1222 = getelementptr [0 x double], [0 x double]* %qve, i64 0, i64 %1221 + %1223 = load double, double* %1222, align 8 + %1224 = fsub double 1.000000e+00, %1223 + %1225 = fdiv double %1213, %1224 + %1226 = fadd double %1225, 1.000000e+00 + %1227 = fmul double %1201, %1226 + %1228 = sext i32 %1086 to i64 + %1229 = sext i32 %1083 to i64 + %1230 = mul nsw i64 %80, %1229 + %1231 = add i64 %1230, %not15 + %1232 = add i64 %1231, %1228 + %1233 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1232 + %1234 = load double, double* %1233, align 8 + %1235 = sext i32 %1086 to i64 + %1236 = sext i32 %1083 to i64 + %1237 = mul nsw i64 %80, %1236 + %1238 = add i64 %1237, %not15 + %1239 = add i64 %1238, %1235 + %1240 = fsub double %1191, %1227 + %1241 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1239 + store double %1240, double* %1241, align 8 + %1242 = sext i32 %1086 to i64 + %1243 = sext i32 %1083 to i64 + %1244 = mul nsw i64 %80, %1243 + %1245 = add i64 %1244, %not15 + %1246 = add i64 %1245, %1242 + %1247 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1246 + %1248 = load double, double* %1247, align 8 + %1249 = fcmp ule double %1248, 0.000000e+00 + %1250 = fcmp ugt double %1234, 0.000000e+00 + %or.cond9 = or i1 %1250, %1249 + br i1 %or.cond9, label %"131", label %"123" + +"123": ; preds = %"121" + %1251 = sext i32 %1086 to i64 + %1252 = sext i32 %1083 to i64 + %1253 = mul nsw i64 %62, %1252 + %1254 = add i64 %1253, %not10 + %1255 = add i64 %1254, %1251 + %1256 = getelementptr [0 x i32], [0 x i32]* %lfcfound, i64 0, i64 %1255 + %1257 = load i32, i32* %1256, align 4 + %1258 = icmp eq i32 %1257, 0 + br i1 %1258, label %"124", label %"131" + +"124": ; preds = %"123" + %1259 = sext i32 %1086 to i64 + %1260 = sext i32 %1083 to i64 + %1261 = mul nsw i64 %66, %1260 + %1262 = add i64 %1261, %not11 + %1263 = add i64 %1262, %1259 + %1264 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1263 + %1265 = load double, double* %1264, align 8 + %1266 = fcmp ogt double %1265, 0.000000e+00 + br i1 %1266, label %"125", label %"129" + +"125": ; preds = %"124" + %1267 = sext i32 %1086 to i64 + %1268 = sext i32 %1083 to i64 + %1269 = mul nsw i64 %62, %1268 + %1270 = add i64 %1269, %not10 + %1271 = add i64 %1270, %1267 + %1272 = getelementptr [0 x i32], [0 x i32]* %lfcfound, i64 0, i64 %1271 + %1273 = load i32, i32* %1272, align 4 + %1274 = icmp eq i32 %1273, 0 + br i1 %1274, label %"126", label %"129" + +"126": ; preds = %"125" + %1275 = sext i32 %1086 to i64 + %1276 = sext i32 %1083 to i64 + %1277 = mul nsw i64 %76, %1276 + %1278 = add i64 %1277, %not14 + %1279 = add i64 %1278, %1275 + %1280 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1279 + %1281 = load double, double* %1280, align 8 + %1282 = tail call double @llvm.fabs.f64(double %1281) + %1283 = fmul double %1282, 2.000000e+00 + %1284 = sext i32 %1086 to i64 + %1285 = sext i32 %1083 to i64 + %1286 = mul nsw i64 %66, %1285 + %1287 = add i64 %1286, %not11 + %1288 = add i64 %1287, %1284 + %1289 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1288 + %1290 = load double, double* %1289, align 8 + %1291 = fcmp ogt double %1283, %1290 + br i1 %1291, label %"127", label %"131" + +"127": ; preds = %"126" + %1292 = sext i32 %1086 to i64 + %1293 = sext i32 %1083 to i64 + %1294 = mul nsw i64 %55, %1293 + %1295 = add i64 %1294, %not8 + %1296 = add i64 %1295, %1292 + %1297 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1296 + store i32 %491, i32* %1297, align 4 + %1298 = sext i32 %1086 to i64 + %1299 = sext i32 %1083 to i64 + %1300 = mul nsw i64 %66, %1299 + %1301 = add i64 %1300, %not11 + %1302 = add i64 %1301, %1298 + %1303 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1302 + store double 0.000000e+00, double* %1303, align 8 + %1304 = sext i32 %1086 to i64 + %1305 = sext i32 %1083 to i64 + %1306 = mul nsw i64 %73, %1305 + %1307 = add i64 %1306, %not13 + %1308 = add i64 %1307, %1304 + %1309 = getelementptr [0 x double], [0 x double]* %cape3km, i64 0, i64 %1308 + store double 0.000000e+00, double* %1309, align 8 + %1310 = sext i32 %1086 to i64 + %1311 = sext i32 %1083 to i64 + %1312 = mul nsw i64 %76, %1311 + %1313 = add i64 %1312, %not14 + %1314 = add i64 %1313, %1310 + %1315 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1314 + store double 0.000000e+00, double* %1315, align 8 + %1316 = sext i32 %1086 to i64 + %1317 = sext i32 %1083 to i64 + %1318 = mul nsw i64 %62, %1317 + %1319 = add i64 %1318, %not10 + %1320 = add i64 %1319, %1316 + %1321 = getelementptr [0 x i32], [0 x i32]* %lfcfound, i64 0, i64 %1320 + store i32 1, i32* %1321, align 4 + br label %"131" + +"129": ; preds = %"125", %"124" + %1322 = sext i32 %1086 to i64 + %1323 = sext i32 %1083 to i64 + %1324 = mul nsw i64 %55, %1323 + %1325 = add i64 %1324, %not8 + %1326 = add i64 %1325, %1322 + %1327 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1326 + store i32 %491, i32* %1327, align 4 + %1328 = sext i32 %1086 to i64 + %1329 = sext i32 %1083 to i64 + %1330 = mul nsw i64 %76, %1329 + %1331 = add i64 %1330, %not14 + %1332 = add i64 %1331, %1328 + %1333 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1332 + store double 0.000000e+00, double* %1333, align 8 + br label %"131" + +"131": ; preds = %"129", %"127", %"126", %"123", %"121" + %1334 = sext i32 %1086 to i64 + %1335 = sext i32 %1083 to i64 + %1336 = mul nsw i64 %80, %1335 + %1337 = add i64 %1336, %not15 + %1338 = add i64 %1337, %1334 + %1339 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1338 + %1340 = load double, double* %1339, align 8 + %1341 = fcmp uge double %1340, 0.000000e+00 + %1342 = fcmp ult double %1234, 0.000000e+00 + %or.cond10 = or i1 %1342, %1341 + br i1 %or.cond10, label %"135", label %"133" + +"133": ; preds = %"131" + %1343 = sext i32 %1086 to i64 + %1344 = sext i32 %1083 to i64 + %1345 = mul nsw i64 %55, %1344 + %1346 = add i64 %1345, %not8 + %1347 = add i64 %1346, %1343 + %1348 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1347 + %1349 = load i32, i32* %1348, align 4 + %1350 = icmp eq i32 %1349, 0 + br i1 %1350, label %"135", label %"134" + +"134": ; preds = %"133" + %1351 = sext i32 %1086 to i64 + %1352 = sext i32 %1083 to i64 + %1353 = mul nsw i64 %59, %1352 + %1354 = add i64 %1353, %not9 + %1355 = add i64 %1354, %1351 + %1356 = getelementptr [0 x i32], [0 x i32]* %ellev, i64 0, i64 %1355 + store i32 %491, i32* %1356, align 4 + br label %"135" + +"135": ; preds = %"134", %"133", %"131" + %1357 = sext i32 %1086 to i64 + %1358 = sext i32 %1083 to i64 + %1359 = mul nsw i64 %80, %1358 + %1360 = add i64 %1359, %not15 + %1361 = add i64 %1360, %1357 + %1362 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1361 + %1363 = load double, double* %1362, align 8 + %1364 = fcmp ult double %1363, 0.000000e+00 + br i1 %1364, label %"142", label %"136" + +"136": ; preds = %"135" + %1365 = sext i32 %1086 to i64 + %1366 = sext i32 %1083 to i64 + %1367 = mul nsw i64 %55, %1366 + %1368 = add i64 %1367, %not8 + %1369 = add i64 %1368, %1365 + %1370 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1369 + %1371 = load i32, i32* %1370, align 4 + %1372 = icmp slt i32 %1371, %491 + br i1 %1372, label %"142", label %"137" + +"137": ; preds = %"136" + %1373 = sext i32 %1086 to i64 + %1374 = sext i32 %1083 to i64 + %1375 = mul nsw i64 %66, %1374 + %1376 = add i64 %1375, %not11 + %1377 = add i64 %1376, %1373 + %1378 = sext i32 %1086 to i64 + %1379 = sext i32 %1083 to i64 + %1380 = mul nsw i64 %66, %1379 + %1381 = add i64 %1380, %not11 + %1382 = add i64 %1381, %1378 + %1383 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1382 + %1384 = load double, double* %1383, align 8 + %1385 = sext i32 %1086 to i64 + %1386 = sext i32 %1083 to i64 + %1387 = mul nsw i64 %80, %1386 + %1388 = add i64 %1387, %not15 + %1389 = add i64 %1388, %1385 + %1390 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1389 + %1391 = load double, double* %1390, align 8 + %1392 = fdiv double %1391, %1227 + %1393 = load double, double* %g, align 8 + %1394 = fmul double %1392, %1393 + %1395 = sext i32 %1086 to i64 + %1396 = sext i32 %491 to i64 + %1397 = mul i64 %121, %1396 + %1398 = sext i32 %1083 to i64 + %1399 = mul nsw i64 %116, %1398 + %1400 = add i64 %1397, %122 + %1401 = add i64 %1400, %1399 + %1402 = add i64 %1401, %1395 + %1403 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1402 + %1404 = load double, double* %1403, align 8 + %1405 = sext i32 %1086 to i64 + %1406 = add i32 %491, 1 + %1407 = sext i32 %1406 to i64 + %1408 = mul i64 %121, %1407 + %1409 = sext i32 %1083 to i64 + %1410 = mul nsw i64 %116, %1409 + %1411 = add i64 %1408, %122 + %1412 = add i64 %1411, %1410 + %1413 = add i64 %1412, %1405 + %1414 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1413 + %1415 = load double, double* %1414, align 8 + %1416 = fsub double %1404, %1415 + %1417 = fmul double %1394, %1416 + %1418 = fadd double %1384, %1417 + %1419 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1377 + store double %1418, double* %1419, align 8 + br i1 %192, label %"138", label %"145" + +"138": ; preds = %"137" + %1420 = sext i32 %1086 to i64 + %1421 = sext i32 %1083 to i64 + %1422 = mul nsw i64 %113, %1421 + %1423 = add i64 %1422, %not19 + %1424 = add i64 %1423, %1420 + %1425 = getelementptr [0 x i32], [0 x i32]* %k3000, i64 0, i64 %1424 + %1426 = load i32, i32* %1425, align 4 + %1427 = icmp sgt i32 %1426, 0 + br i1 %1427, label %"139", label %"145" + +"139": ; preds = %"138" + %1428 = sext i32 %1086 to i64 + %1429 = sext i32 %1083 to i64 + %1430 = mul nsw i64 %113, %1429 + %1431 = add i64 %1430, %not19 + %1432 = add i64 %1431, %1428 + %1433 = getelementptr [0 x i32], [0 x i32]* %k3000, i64 0, i64 %1432 + %1434 = load i32, i32* %1433, align 4 + %1435 = icmp sgt i32 %1434, %491 + br i1 %1435, label %"145", label %"140" + +"140": ; preds = %"139" + %1436 = sext i32 %1086 to i64 + %1437 = sext i32 %1083 to i64 + %1438 = mul nsw i64 %73, %1437 + %1439 = add i64 %1438, %not13 + %1440 = add i64 %1439, %1436 + %1441 = sext i32 %1086 to i64 + %1442 = sext i32 %1083 to i64 + %1443 = mul nsw i64 %73, %1442 + %1444 = add i64 %1443, %not13 + %1445 = add i64 %1444, %1441 + %1446 = getelementptr [0 x double], [0 x double]* %cape3km, i64 0, i64 %1445 + %1447 = load double, double* %1446, align 8 + %1448 = sext i32 %1086 to i64 + %1449 = sext i32 %1083 to i64 + %1450 = mul nsw i64 %80, %1449 + %1451 = add i64 %1450, %not15 + %1452 = add i64 %1451, %1448 + %1453 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1452 + %1454 = load double, double* %1453, align 8 + %1455 = fdiv double %1454, %1227 + %1456 = load double, double* %g, align 8 + %1457 = fmul double %1455, %1456 + %1458 = sext i32 %1086 to i64 + %1459 = sext i32 %491 to i64 + %1460 = mul i64 %121, %1459 + %1461 = sext i32 %1083 to i64 + %1462 = mul nsw i64 %116, %1461 + %1463 = add i64 %1460, %122 + %1464 = add i64 %1463, %1462 + %1465 = add i64 %1464, %1458 + %1466 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1465 + %1467 = load double, double* %1466, align 8 + %1468 = sext i32 %1086 to i64 + %1469 = add i32 %491, 1 + %1470 = sext i32 %1469 to i64 + %1471 = mul i64 %121, %1470 + %1472 = sext i32 %1083 to i64 + %1473 = mul nsw i64 %116, %1472 + %1474 = add i64 %1471, %122 + %1475 = add i64 %1474, %1473 + %1476 = add i64 %1475, %1468 + %1477 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1476 + %1478 = load double, double* %1477, align 8 + %1479 = fsub double %1467, %1478 + %1480 = fmul double %1457, %1479 + %1481 = fadd double %1447, %1480 + %1482 = getelementptr [0 x double], [0 x double]* %cape3km, i64 0, i64 %1440 + store double %1481, double* %1482, align 8 + br label %"145" + +"142": ; preds = %"136", %"135" + %1483 = sext i32 %1086 to i64 + %1484 = sext i32 %1083 to i64 + %1485 = mul nsw i64 %80, %1484 + %1486 = add i64 %1485, %not15 + %1487 = add i64 %1486, %1483 + %1488 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1487 + %1489 = load double, double* %1488, align 8 + %1490 = fcmp olt double %1489, 0.000000e+00 + br i1 %1490, label %"143", label %"145" + +"143": ; preds = %"142" + %1491 = sext i32 %1086 to i64 + %1492 = sext i32 %1083 to i64 + %1493 = mul nsw i64 %146, %1492 + %1494 = add i64 %1493, %not25 + %1495 = add i64 %1494, %1491 + %1496 = getelementptr [0 x i32], [0 x i32]* %kstart, i64 0, i64 %1495 + %1497 = load i32, i32* %1496, align 4 + %1498 = icmp sgt i32 %1497, %491 + br i1 %1498, label %"144", label %"145" + +"144": ; preds = %"143" + %1499 = sext i32 %1086 to i64 + %1500 = sext i32 %1083 to i64 + %1501 = mul nsw i64 %69, %1500 + %1502 = add i64 %1501, %not12 + %1503 = add i64 %1502, %1499 + %1504 = sext i32 %1086 to i64 + %1505 = sext i32 %1083 to i64 + %1506 = mul nsw i64 %69, %1505 + %1507 = add i64 %1506, %not12 + %1508 = add i64 %1507, %1504 + %1509 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1508 + %1510 = load double, double* %1509, align 8 + %1511 = sext i32 %1086 to i64 + %1512 = sext i32 %1083 to i64 + %1513 = mul nsw i64 %80, %1512 + %1514 = add i64 %1513, %not15 + %1515 = add i64 %1514, %1511 + %1516 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1515 + %1517 = load double, double* %1516, align 8 + %1518 = fdiv double %1517, %1227 + %1519 = load double, double* %g, align 8 + %1520 = fmul double %1518, %1519 + %1521 = sext i32 %1086 to i64 + %1522 = sext i32 %491 to i64 + %1523 = mul i64 %121, %1522 + %1524 = sext i32 %1083 to i64 + %1525 = mul nsw i64 %116, %1524 + %1526 = add i64 %1523, %122 + %1527 = add i64 %1526, %1525 + %1528 = add i64 %1527, %1521 + %1529 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1528 + %1530 = load double, double* %1529, align 8 + %1531 = sext i32 %1086 to i64 + %1532 = add i32 %491, 1 + %1533 = sext i32 %1532 to i64 + %1534 = mul i64 %121, %1533 + %1535 = sext i32 %1083 to i64 + %1536 = mul nsw i64 %116, %1535 + %1537 = add i64 %1534, %122 + %1538 = add i64 %1537, %1536 + %1539 = add i64 %1538, %1531 + %1540 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1539 + %1541 = load double, double* %1540, align 8 + %1542 = fsub double %1530, %1541 + %1543 = fmul double %1520, %1542 + %1544 = fadd double %1510, %1543 + %1545 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1503 + store double %1544, double* %1545, align 8 + %1546 = sext i32 %1086 to i64 + %1547 = sext i32 %1083 to i64 + %1548 = mul nsw i64 %76, %1547 + %1549 = add i64 %1548, %not14 + %1550 = add i64 %1549, %1546 + %1551 = sext i32 %1086 to i64 + %1552 = sext i32 %1083 to i64 + %1553 = mul nsw i64 %76, %1552 + %1554 = add i64 %1553, %not14 + %1555 = add i64 %1554, %1551 + %1556 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1555 + %1557 = load double, double* %1556, align 8 + %1558 = sext i32 %1086 to i64 + %1559 = sext i32 %1083 to i64 + %1560 = mul nsw i64 %80, %1559 + %1561 = add i64 %1560, %not15 + %1562 = add i64 %1561, %1558 + %1563 = getelementptr [0 x double], [0 x double]* %buo, i64 0, i64 %1562 + %1564 = load double, double* %1563, align 8 + %1565 = fdiv double %1564, %1227 + %1566 = load double, double* %g, align 8 + %1567 = fmul double %1565, %1566 + %1568 = sext i32 %1086 to i64 + %1569 = sext i32 %491 to i64 + %1570 = mul i64 %121, %1569 + %1571 = sext i32 %1083 to i64 + %1572 = mul nsw i64 %116, %1571 + %1573 = add i64 %1570, %122 + %1574 = add i64 %1573, %1572 + %1575 = add i64 %1574, %1568 + %1576 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1575 + %1577 = load double, double* %1576, align 8 + %1578 = sext i32 %1086 to i64 + %1579 = add i32 %491, 1 + %1580 = sext i32 %1579 to i64 + %1581 = mul i64 %121, %1580 + %1582 = sext i32 %1083 to i64 + %1583 = mul nsw i64 %116, %1582 + %1584 = add i64 %1581, %122 + %1585 = add i64 %1584, %1583 + %1586 = add i64 %1585, %1578 + %1587 = getelementptr [0 x double], [0 x double]* %hhl, i64 0, i64 %1586 + %1588 = load double, double* %1587, align 8 + %1589 = fsub double %1577, %1588 + %1590 = fmul double %1567, %1589 + %1591 = fadd double %1557, %1590 + %1592 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1550 + store double %1591, double* %1592, align 8 + br label %"145" + +"145": ; preds = %"144", %"143", %"142", %"140", %"139", %"138", %"137" + br i1 %193, label %"150", label %"146" + +"146": ; preds = %"145" + %1593 = load i32, i32* %kdim, align 4 + %1594 = icmp sgt i32 %1593, %491 + br i1 %1594, label %"147", label %"150" + +"147": ; preds = %"146" + %1595 = sext i32 %1086 to i64 + %1596 = sext i32 %491 to i64 + %1597 = mul i64 %141, %1596 + %1598 = sext i32 %1083 to i64 + %1599 = mul nsw i64 %136, %1598 + %1600 = add i64 %1597, %142 + %1601 = add i64 %1600, %1599 + %1602 = add i64 %1601, %1595 + %1603 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %1602 + %1604 = load double, double* %1603, align 8 + %1605 = load double, double* %sistopprs, align 8 + %1606 = fcmp ugt double %1604, %1605 + br i1 %1606, label %"150", label %"148" + +"148": ; preds = %"147" + %1607 = sext i32 %1086 to i64 + %1608 = add i32 %491, 1 + %1609 = sext i32 %1608 to i64 + %1610 = mul i64 %141, %1609 + %1611 = sext i32 %1083 to i64 + %1612 = mul nsw i64 %136, %1611 + %1613 = add i64 %1610, %142 + %1614 = add i64 %1613, %1612 + %1615 = add i64 %1614, %1607 + %1616 = getelementptr [0 x double], [0 x double]* %prs, i64 0, i64 %1615 + %1617 = load double, double* %1616, align 8 + %1618 = load double, double* %sistopprs, align 8 + %1619 = fcmp ogt double %1617, %1618 + br i1 %1619, label %"149", label %"150" + +"149": ; preds = %"148" + %1620 = sext i32 %1086 to i64 + %1621 = sext i32 %1083 to i64 + %1622 = mul i64 %26, %1621 + %1623 = add i64 %1622, %27 + %1624 = add i64 %1623, %1620 + %1625 = sext i32 %1086 to i64 + %1626 = sext i32 %491 to i64 + %1627 = mul i64 %175, %1626 + %1628 = sext i32 %1083 to i64 + %1629 = mul nsw i64 %170, %1628 + %1630 = add i64 %1627, %176 + %1631 = add i64 %1630, %1629 + %1632 = add i64 %1631, %1625 + %1633 = getelementptr [0 x double], [0 x double]* %te, i64 0, i64 %1632 + %1634 = load double, double* %1633, align 8 + %1635 = sext i32 %1086 to i64 + %1636 = sext i32 %491 to i64 + %1637 = mul i64 %88, %1636 + %1638 = sext i32 %1083 to i64 + %1639 = mul nsw i64 %83, %1638 + %1640 = add i64 %1637, %89 + %1641 = add i64 %1640, %1639 + %1642 = add i64 %1641, %1635 + %1643 = getelementptr [0 x double], [0 x double]* %tp, i64 0, i64 %1642 + %1644 = load double, double* %1643, align 8 + %1645 = fsub double %1634, %1644 + %1646 = getelementptr [0 x double], [0 x double]* %asi, i64 0, i64 %1624 + store double %1645, double* %1646, align 8 + br label %"150" + +"150": ; preds = %"149", %"148", %"147", %"146", %"145", %"118", %"117" + %1647 = icmp eq i32 %1086, %1084 + %1648 = add i32 %1086, 1 + br i1 %1647, label %"152.loopexit", label %"117" + +"152.loopexit": ; preds = %"150" + br label %"152" + +"152": ; preds = %"152.loopexit", %"116" + %1649 = icmp eq i32 %1083, %.lcssa13 + %1650 = add i32 %1083, 1 + br i1 %1649, label %"154.loopexit", label %"116" + +"154.loopexit": ; preds = %"152" + br label %"154" + +"154": ; preds = %"154.loopexit", %"115" + %1651 = icmp eq i32 %491, 1 + %1652 = add i32 %491, -1 + br i1 %1651, label %"156.loopexit", label %"64" + +"156.loopexit": ; preds = %"154" + br label %"156" + +"156": ; preds = %"156.loopexit", %"63" + %1653 = load i32, i32* %jdim, align 4 + %1654 = icmp sgt i32 %1653, 0 + br i1 %1654, label %"157.preheader", label %"166" + +"157.preheader": ; preds = %"156" + br label %"157" + +"157": ; preds = %"164", %"157.preheader" + %1655 = phi i32 [ %1717, %"164" ], [ 1, %"157.preheader" ] + %1656 = load i32, i32* %idim, align 4 + %1657 = icmp sgt i32 %1656, 0 + br i1 %1657, label %"158.preheader", label %"164" + +"158.preheader": ; preds = %"157" + br label %"158" + +"158": ; preds = %"162", %"158.preheader" + %1658 = phi i32 [ %1715, %"162" ], [ 1, %"158.preheader" ] + %1659 = sext i32 %1658 to i64 + %1660 = sext i32 %1655 to i64 + %1661 = mul nsw i64 %160, %1660 + %1662 = add i64 %1661, %not29 + %1663 = add i64 %1662, %1659 + %1664 = getelementptr [0 x i32], [0 x i32]* %lcomp, i64 0, i64 %1663 + %1665 = load i32, i32* %1664, align 4, !range !0 + %1666 = icmp eq i32 %1665, 0 + br i1 %1666, label %"162", label %"159" + +"159": ; preds = %"158" + %1667 = sext i32 %1658 to i64 + %1668 = sext i32 %1655 to i64 + %1669 = mul nsw i64 %69, %1668 + %1670 = add i64 %1669, %not12 + %1671 = add i64 %1670, %1667 + %1672 = sext i32 %1658 to i64 + %1673 = sext i32 %1655 to i64 + %1674 = mul nsw i64 %69, %1673 + %1675 = add i64 %1674, %not12 + %1676 = add i64 %1675, %1672 + %1677 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1676 + %1678 = load double, double* %1677, align 8 + %1679 = sext i32 %1658 to i64 + %1680 = sext i32 %1655 to i64 + %1681 = mul nsw i64 %76, %1680 + %1682 = add i64 %1681, %not14 + %1683 = add i64 %1682, %1679 + %1684 = getelementptr [0 x double], [0 x double]* %cin_help, i64 0, i64 %1683 + %1685 = load double, double* %1684, align 8 + %1686 = fsub double %1678, %1685 + %1687 = tail call double @llvm.fabs.f64(double %1686) + %1688 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1671 + store double %1687, double* %1688, align 8 + %1689 = sext i32 %1658 to i64 + %1690 = sext i32 %1655 to i64 + %1691 = mul nsw i64 %55, %1690 + %1692 = add i64 %1691, %not8 + %1693 = add i64 %1692, %1689 + %1694 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1693 + %1695 = load i32, i32* %1694, align 4 + %1696 = icmp eq i32 %1695, 0 + br i1 %1696, label %"161", label %"160" + +"160": ; preds = %"159" + %1697 = sext i32 %1658 to i64 + %1698 = sext i32 %1655 to i64 + %1699 = mul nsw i64 %66, %1698 + %1700 = add i64 %1699, %not11 + %1701 = add i64 %1700, %1697 + %1702 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1701 + %1703 = load double, double* %1702, align 8 + %1704 = fcmp oeq double %1703, 0.000000e+00 + br i1 %1704, label %"161", label %"162" + +"161": ; preds = %"160", %"159" + %1705 = sext i32 %1658 to i64 + %1706 = sext i32 %1655 to i64 + %1707 = mul nsw i64 %69, %1706 + %1708 = add i64 %1707, %not12 + %1709 = add i64 %1708, %1705 + %1710 = bitcast double* %missing_value to i64* + %1711 = load i64, i64* %1710, align 8 + %1712 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1709 + %1713 = bitcast double* %1712 to i64* + store i64 %1711, i64* %1713, align 8 + br label %"162" + +"162": ; preds = %"161", %"160", %"158" + %1714 = icmp eq i32 %1658, %1656 + %1715 = add i32 %1658, 1 + br i1 %1714, label %"164.loopexit", label %"158" + +"164.loopexit": ; preds = %"162" + br label %"164" + +"164": ; preds = %"164.loopexit", %"157" + %1716 = icmp eq i32 %1655, %1653 + %1717 = add i32 %1655, 1 + br i1 %1716, label %"166.loopexit", label %"157" + +"166.loopexit": ; preds = %"164" + br label %"166" + +"166": ; preds = %"166.loopexit", %"156" + %1718 = load i32, i32* %jdim, align 4 + %1719 = icmp sgt i32 %1718, 0 + br i1 %1719, label %"167.preheader", label %return + +"167.preheader": ; preds = %"166" + br label %"167" + +"167": ; preds = %"183", %"167.preheader" + %1720 = phi i32 [ %1819, %"183" ], [ 1, %"167.preheader" ] + %1721 = load i32, i32* %idim, align 4 + %1722 = icmp sgt i32 %1721, 0 + br i1 %1722, label %"168.preheader", label %"183" + +"168.preheader": ; preds = %"167" + br label %"168" + +"168": ; preds = %"181", %"168.preheader" + %1723 = phi i32 [ %1817, %"181" ], [ 1, %"168.preheader" ] + %1724 = sext i32 %1723 to i64 + %1725 = sext i32 %1720 to i64 + %1726 = mul nsw i64 %160, %1725 + %1727 = add i64 %1726, %not29 + %1728 = add i64 %1727, %1724 + %1729 = getelementptr [0 x i32], [0 x i32]* %lcomp, i64 0, i64 %1728 + %1730 = load i32, i32* %1729, align 4, !range !0 + %1731 = icmp eq i32 %1730, 0 + br i1 %1731, label %"181", label %"169" + +"169": ; preds = %"168" + br i1 %190, label %"171", label %"170" + +"170": ; preds = %"169" + %1732 = sext i32 %1723 to i64 + %1733 = sext i32 %1720 to i64 + %1734 = mul i64 %5, %1733 + %1735 = add i64 %1734, %6 + %1736 = add i64 %1735, %1732 + %1737 = sext i32 %1723 to i64 + %1738 = sext i32 %1720 to i64 + %1739 = mul nsw i64 %66, %1738 + %1740 = add i64 %1739, %not11 + %1741 = add i64 %1740, %1737 + %1742 = getelementptr [0 x double], [0 x double]* %cape, i64 0, i64 %1741 + %1743 = bitcast double* %1742 to i64* + %1744 = load i64, i64* %1743, align 8 + %1745 = getelementptr [0 x double], [0 x double]* %acape, i64 0, i64 %1736 + %1746 = bitcast double* %1745 to i64* + store i64 %1744, i64* %1746, align 8 + br label %"171" + +"171": ; preds = %"170", %"169" + br i1 %191, label %"173", label %"172" + +"172": ; preds = %"171" + %1747 = sext i32 %1723 to i64 + %1748 = sext i32 %1720 to i64 + %1749 = mul i64 %12, %1748 + %1750 = add i64 %1749, %13 + %1751 = add i64 %1750, %1747 + %1752 = sext i32 %1723 to i64 + %1753 = sext i32 %1720 to i64 + %1754 = mul nsw i64 %69, %1753 + %1755 = add i64 %1754, %not12 + %1756 = add i64 %1755, %1752 + %1757 = getelementptr [0 x double], [0 x double]* %cin, i64 0, i64 %1756 + %1758 = bitcast double* %1757 to i64* + %1759 = load i64, i64* %1758, align 8 + %1760 = getelementptr [0 x double], [0 x double]* %acin, i64 0, i64 %1751 + %1761 = bitcast double* %1760 to i64* + store i64 %1759, i64* %1761, align 8 + br label %"173" + +"173": ; preds = %"172", %"171" + br i1 %192, label %"174", label %"175" + +"174": ; preds = %"173" + %1762 = sext i32 %1723 to i64 + %1763 = sext i32 %1720 to i64 + %1764 = mul i64 %19, %1763 + %1765 = add i64 %1764, %20 + %1766 = add i64 %1765, %1762 + %1767 = sext i32 %1723 to i64 + %1768 = sext i32 %1720 to i64 + %1769 = mul nsw i64 %73, %1768 + %1770 = add i64 %1769, %not13 + %1771 = add i64 %1770, %1767 + %1772 = getelementptr [0 x double], [0 x double]* %cape3km, i64 0, i64 %1771 + %1773 = bitcast double* %1772 to i64* + %1774 = load i64, i64* %1773, align 8 + %1775 = getelementptr [0 x double], [0 x double]* %acape3km, i64 0, i64 %1766 + %1776 = bitcast double* %1775 to i64* + store i64 %1774, i64* %1776, align 8 + br label %"175" + +"175": ; preds = %"174", %"173" + br i1 %194, label %"177", label %"176" + +"176": ; preds = %"175" + %1777 = sext i32 %1723 to i64 + %1778 = sext i32 %1720 to i64 + %1779 = mul i64 %33, %1778 + %1780 = add i64 %1779, %34 + %1781 = add i64 %1780, %1777 + %1782 = sext i32 %1723 to i64 + %1783 = sext i32 %1720 to i64 + %1784 = mul nsw i64 %59, %1783 + %1785 = add i64 %1784, %not9 + %1786 = add i64 %1785, %1782 + %1787 = getelementptr [0 x i32], [0 x i32]* %ellev, i64 0, i64 %1786 + %1788 = load i32, i32* %1787, align 4 + %1789 = getelementptr [0 x i32], [0 x i32]* %ael, i64 0, i64 %1781 + store i32 %1788, i32* %1789, align 4 + br label %"177" + +"177": ; preds = %"176", %"175" + br i1 %195, label %"179", label %"178" + +"178": ; preds = %"177" + %1790 = sext i32 %1723 to i64 + %1791 = sext i32 %1720 to i64 + %1792 = mul i64 %40, %1791 + %1793 = add i64 %1792, %41 + %1794 = add i64 %1793, %1790 + %1795 = sext i32 %1723 to i64 + %1796 = sext i32 %1720 to i64 + %1797 = mul nsw i64 %55, %1796 + %1798 = add i64 %1797, %not8 + %1799 = add i64 %1798, %1795 + %1800 = getelementptr [0 x i32], [0 x i32]* %lfclev, i64 0, i64 %1799 + %1801 = load i32, i32* %1800, align 4 + %1802 = getelementptr [0 x i32], [0 x i32]* %alfc, i64 0, i64 %1794 + store i32 %1801, i32* %1802, align 4 + br label %"179" + +"179": ; preds = %"178", %"177" + br i1 %196, label %"181", label %"180" + +"180": ; preds = %"179" + %1803 = sext i32 %1723 to i64 + %1804 = sext i32 %1720 to i64 + %1805 = mul i64 %47, %1804 + %1806 = add i64 %1805, %48 + %1807 = add i64 %1806, %1803 + %1808 = sext i32 %1723 to i64 + %1809 = sext i32 %1720 to i64 + %1810 = mul nsw i64 %52, %1809 + %1811 = add i64 %1810, %not7 + %1812 = add i64 %1811, %1808 + %1813 = getelementptr [0 x i32], [0 x i32]* %lcllev, i64 0, i64 %1812 + %1814 = load i32, i32* %1813, align 4 + %1815 = getelementptr [0 x i32], [0 x i32]* %alcl, i64 0, i64 %1807 + store i32 %1814, i32* %1815, align 4 + br label %"181" + +"181": ; preds = %"180", %"179", %"168" + %1816 = icmp eq i32 %1723, %1721 + %1817 = add i32 %1723, 1 + br i1 %1816, label %"183.loopexit", label %"168" + +"183.loopexit": ; preds = %"181" + br label %"183" + +"183": ; preds = %"183.loopexit", %"167" + %1818 = icmp eq i32 %1720, %1718 + %1819 = add i32 %1720, 1 + br i1 %1818, label %return.loopexit, label %"167" + +return.loopexit: ; preds = %"183" + br label %return + +return: ; preds = %return.loopexit, %"166" + ret void +} + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.fabs.f64(double) #2 + +attributes #0 = { nounwind readnone } +attributes #1 = { nounwind uwtable } +attributes #2 = { nounwind readnone speculatable } + +!0 = !{i32 0, i32 2}