; LLVM IR from bondhugula/pluto :: examples/lbm/ldc/d3q19 (ldc_d3q19)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.timeval = type { i64, i64 }

@omega = external dso_local global double, align 8
@.str = external hidden unnamed_addr constant [232 x i8], align 1
@grid = external dso_local global [2 x [206 x [204 x [204 x [19 x double]]]]], align 16

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca i32, align 4
  %9 = alloca %struct.timeval, align 8
  %10 = alloca %struct.timeval, align 8
  %11 = alloca %struct.timeval, align 8
  %12 = alloca double, align 8
  %13 = alloca i16, align 2
  %14 = alloca i16, align 2
  %15 = alloca i16, align 2
  %16 = alloca i16, align 2
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #4
  store i32 0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  store double 8.000000e+09, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  store i32 -1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  %17 = call double @sqrt(double noundef 0x3F67C1BDA5119CE2) #4
  %18 = fmul double 6.000000e+00, %17
  %19 = fmul double %18, 1.995000e+02
  %20 = fdiv double %19, 1.000000e+02
  %21 = fadd double %20, 1.000000e+00
  %22 = fdiv double 2.000000e+00, %21
  store double %22, ptr @omega, align 8, !tbaa !9
  %23 = load double, ptr @omega, align 8, !tbaa !9
  %24 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef 200, i32 noundef 200, i32 noundef 200, double noundef 8.000000e+03, i32 noundef 1000, double noundef 1.000000e+02, double noundef 5.000000e-02, double noundef 2.000000e-02, double noundef %23)
  store i32 0, ptr %3, align 4, !tbaa !5
  br label %25

25:                                               ; preds = %129, %0
  %26 = load i32, ptr %3, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 206
  br i1 %27, label %28, label %132

28:                                               ; preds = %25
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %29

29:                                               ; preds = %125, %28
  %30 = load i32, ptr %4, align 4, !tbaa !5
  %31 = icmp slt i32 %30, 204
  br i1 %31, label %32, label %128

32:                                               ; preds = %29
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %33

33:                                               ; preds = %121, %32
  %34 = load i32, ptr %5, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 204
  br i1 %35, label %36, label %124

36:                                               ; preds = %33
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %38
  %40 = load i32, ptr %4, align 4, !tbaa !5
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %39, i64 0, i64 %41
  %43 = load i32, ptr %5, align 4, !tbaa !5
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds [204 x [19 x double]], ptr %42, i64 0, i64 %44
  %46 = getelementptr inbounds [19 x double], ptr %45, i64 0, i64 0
  store double 0x3FD5555555555555, ptr %46, align 8, !tbaa !9
  %47 = load i32, ptr %3, align 4, !tbaa !5
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds ([2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 1), i64 0, i64 %48
  %50 = load i32, ptr %4, align 4, !tbaa !5
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %49, i64 0, i64 %51
  %53 = load i32, ptr %5, align 4, !tbaa !5
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds [204 x [19 x double]], ptr %52, i64 0, i64 %54
  %56 = getelementptr inbounds [19 x double], ptr %55, i64 0, i64 0
  store double 0x3FD5555555555555, ptr %56, align 8, !tbaa !9
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %57

57:                                               ; preds = %85, %36
  %58 = load i32, ptr %6, align 4, !tbaa !5
  %59 = icmp slt i32 %58, 7
  br i1 %59, label %60, label %88

60:                                               ; preds = %57
  %61 = load i32, ptr %3, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %62
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %63, i64 0, i64 %65
  %67 = load i32, ptr %5, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [204 x [19 x double]], ptr %66, i64 0, i64 %68
  %70 = load i32, ptr %6, align 4, !tbaa !5
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [19 x double], ptr %69, i64 0, i64 %71
  store double 0x3FAC71C71C71C71C, ptr %72, align 8, !tbaa !9
  %73 = load i32, ptr %3, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds ([2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 1), i64 0, i64 %74
  %76 = load i32, ptr %4, align 4, !tbaa !5
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %75, i64 0, i64 %77
  %79 = load i32, ptr %5, align 4, !tbaa !5
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [204 x [19 x double]], ptr %78, i64 0, i64 %80
  %82 = load i32, ptr %6, align 4, !tbaa !5
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds [19 x double], ptr %81, i64 0, i64 %83
  store double 0x3FAC71C71C71C71C, ptr %84, align 8, !tbaa !9
  br label %85

85:                                               ; preds = %60
  %86 = load i32, ptr %6, align 4, !tbaa !5
  %87 = add nsw i32 %86, 1
  store i32 %87, ptr %6, align 4, !tbaa !5
  br label %57, !llvm.loop !11

88:                                               ; preds = %57
  store i32 7, ptr %6, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %117, %88
  %90 = load i32, ptr %6, align 4, !tbaa !5
  %91 = icmp slt i32 %90, 19
  br i1 %91, label %92, label %120

92:                                               ; preds = %89
  %93 = load i32, ptr %3, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %94
  %96 = load i32, ptr %4, align 4, !tbaa !5
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %95, i64 0, i64 %97
  %99 = load i32, ptr %5, align 4, !tbaa !5
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds [204 x [19 x double]], ptr %98, i64 0, i64 %100
  %102 = load i32, ptr %6, align 4, !tbaa !5
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds [19 x double], ptr %101, i64 0, i64 %103
  store double 0x3F9C71C71C71C71C, ptr %104, align 8, !tbaa !9
  %105 = load i32, ptr %3, align 4, !tbaa !5
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds ([2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 1), i64 0, i64 %106
  %108 = load i32, ptr %4, align 4, !tbaa !5
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %107, i64 0, i64 %109
  %111 = load i32, ptr %5, align 4, !tbaa !5
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds [204 x [19 x double]], ptr %110, i64 0, i64 %112
  %114 = load i32, ptr %6, align 4, !tbaa !5
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds [19 x double], ptr %113, i64 0, i64 %115
  store double 0x3F9C71C71C71C71C, ptr %116, align 8, !tbaa !9
  br label %117

117:                                              ; preds = %92
  %118 = load i32, ptr %6, align 4, !tbaa !5
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %6, align 4, !tbaa !5
  br label %89, !llvm.loop !13

120:                                              ; preds = %89
  br label %121

121:                                              ; preds = %120
  %122 = load i32, ptr %5, align 4, !tbaa !5
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr %5, align 4, !tbaa !5
  br label %33, !llvm.loop !14

124:                                              ; preds = %33
  br label %125

125:                                              ; preds = %124
  %126 = load i32, ptr %4, align 4, !tbaa !5
  %127 = add nsw i32 %126, 1
  store i32 %127, ptr %4, align 4, !tbaa !5
  br label %29, !llvm.loop !15

128:                                              ; preds = %29
  br label %129

129:                                              ; preds = %128
  %130 = load i32, ptr %3, align 4, !tbaa !5
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %3, align 4, !tbaa !5
  br label %25, !llvm.loop !16

132:                                              ; preds = %25
  call void @llvm.lifetime.start.p0(i64 2, ptr %13) #4
  store i16 203, ptr %13, align 2, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 2, ptr %14) #4
  store i16 203, ptr %14, align 2, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 2, ptr %15) #4
  store i16 204, ptr %15, align 2, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 2, ptr %16) #4
  store i16 1000, ptr %16, align 2, !tbaa !17
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %800, %132
  %134 = load i32, ptr %2, align 4, !tbaa !5
  %135 = load i16, ptr %16, align 2, !tbaa !17
  %136 = sext i16 %135 to i32
  %137 = icmp slt i32 %134, %136
  br i1 %137, label %138, label %803

138:                                              ; preds = %133
  store i32 2, ptr %3, align 4, !tbaa !5
  br label %139

139:                                              ; preds = %796, %138
  %140 = load i32, ptr %3, align 4, !tbaa !5
  %141 = load i16, ptr %15, align 2, !tbaa !17
  %142 = sext i16 %141 to i32
  %143 = icmp slt i32 %140, %142
  br i1 %143, label %144, label %799

144:                                              ; preds = %139
  store i32 1, ptr %4, align 4, !tbaa !5
  br label %145

145:                                              ; preds = %792, %144
  %146 = load i32, ptr %4, align 4, !tbaa !5
  %147 = load i16, ptr %14, align 2, !tbaa !17
  %148 = sext i16 %147 to i32
  %149 = icmp slt i32 %146, %148
  br i1 %149, label %150, label %795

150:                                              ; preds = %145
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %788, %150
  %152 = load i32, ptr %5, align 4, !tbaa !5
  %153 = load i16, ptr %13, align 2, !tbaa !17
  %154 = sext i16 %153 to i32
  %155 = icmp slt i32 %152, %154
  br i1 %155, label %156, label %791

156:                                              ; preds = %151
  %157 = load i32, ptr %2, align 4, !tbaa !5
  %158 = srem i32 %157, 2
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %159
  %161 = load i32, ptr %3, align 4, !tbaa !5
  %162 = add nsw i32 %161, 0
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %160, i64 0, i64 %163
  %165 = load i32, ptr %4, align 4, !tbaa !5
  %166 = add nsw i32 %165, 0
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %164, i64 0, i64 %167
  %169 = load i32, ptr %5, align 4, !tbaa !5
  %170 = add nsw i32 %169, 0
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [204 x [19 x double]], ptr %168, i64 0, i64 %171
  %173 = getelementptr inbounds [19 x double], ptr %172, i64 0, i64 0
  %174 = load double, ptr %173, align 8, !tbaa !9
  %175 = load i32, ptr %2, align 4, !tbaa !5
  %176 = srem i32 %175, 2
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %177
  %179 = load i32, ptr %3, align 4, !tbaa !5
  %180 = add nsw i32 %179, 0
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %178, i64 0, i64 %181
  %183 = load i32, ptr %4, align 4, !tbaa !5
  %184 = add nsw i32 %183, 0
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %182, i64 0, i64 %185
  %187 = load i32, ptr %5, align 4, !tbaa !5
  %188 = sub nsw i32 %187, 1
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds [204 x [19 x double]], ptr %186, i64 0, i64 %189
  %191 = getelementptr inbounds [19 x double], ptr %190, i64 0, i64 1
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = load i32, ptr %2, align 4, !tbaa !5
  %194 = srem i32 %193, 2
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %195
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %198 = add nsw i32 %197, 0
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %196, i64 0, i64 %199
  %201 = load i32, ptr %4, align 4, !tbaa !5
  %202 = add nsw i32 %201, 0
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %200, i64 0, i64 %203
  %205 = load i32, ptr %5, align 4, !tbaa !5
  %206 = add nsw i32 %205, 1
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds [204 x [19 x double]], ptr %204, i64 0, i64 %207
  %209 = getelementptr inbounds [19 x double], ptr %208, i64 0, i64 2
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = load i32, ptr %2, align 4, !tbaa !5
  %212 = srem i32 %211, 2
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %213
  %215 = load i32, ptr %3, align 4, !tbaa !5
  %216 = add nsw i32 %215, 0
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %214, i64 0, i64 %217
  %219 = load i32, ptr %4, align 4, !tbaa !5
  %220 = sub nsw i32 %219, 1
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %218, i64 0, i64 %221
  %223 = load i32, ptr %5, align 4, !tbaa !5
  %224 = add nsw i32 %223, 0
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds [204 x [19 x double]], ptr %222, i64 0, i64 %225
  %227 = getelementptr inbounds [19 x double], ptr %226, i64 0, i64 3
  %228 = load double, ptr %227, align 8, !tbaa !9
  %229 = load i32, ptr %2, align 4, !tbaa !5
  %230 = srem i32 %229, 2
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %231
  %233 = load i32, ptr %3, align 4, !tbaa !5
  %234 = add nsw i32 %233, 0
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %232, i64 0, i64 %235
  %237 = load i32, ptr %4, align 4, !tbaa !5
  %238 = add nsw i32 %237, 1
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %236, i64 0, i64 %239
  %241 = load i32, ptr %5, align 4, !tbaa !5
  %242 = add nsw i32 %241, 0
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [204 x [19 x double]], ptr %240, i64 0, i64 %243
  %245 = getelementptr inbounds [19 x double], ptr %244, i64 0, i64 4
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = load i32, ptr %2, align 4, !tbaa !5
  %248 = srem i32 %247, 2
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %249
  %251 = load i32, ptr %3, align 4, !tbaa !5
  %252 = sub nsw i32 %251, 1
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %250, i64 0, i64 %253
  %255 = load i32, ptr %4, align 4, !tbaa !5
  %256 = add nsw i32 %255, 0
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %254, i64 0, i64 %257
  %259 = load i32, ptr %5, align 4, !tbaa !5
  %260 = add nsw i32 %259, 0
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds [204 x [19 x double]], ptr %258, i64 0, i64 %261
  %263 = getelementptr inbounds [19 x double], ptr %262, i64 0, i64 5
  %264 = load double, ptr %263, align 8, !tbaa !9
  %265 = load i32, ptr %2, align 4, !tbaa !5
  %266 = srem i32 %265, 2
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %267
  %269 = load i32, ptr %3, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %268, i64 0, i64 %271
  %273 = load i32, ptr %4, align 4, !tbaa !5
  %274 = add nsw i32 %273, 0
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %272, i64 0, i64 %275
  %277 = load i32, ptr %5, align 4, !tbaa !5
  %278 = add nsw i32 %277, 0
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [204 x [19 x double]], ptr %276, i64 0, i64 %279
  %281 = getelementptr inbounds [19 x double], ptr %280, i64 0, i64 6
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = load i32, ptr %2, align 4, !tbaa !5
  %284 = srem i32 %283, 2
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %285
  %287 = load i32, ptr %3, align 4, !tbaa !5
  %288 = add nsw i32 %287, 0
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %286, i64 0, i64 %289
  %291 = load i32, ptr %4, align 4, !tbaa !5
  %292 = sub nsw i32 %291, 1
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %290, i64 0, i64 %293
  %295 = load i32, ptr %5, align 4, !tbaa !5
  %296 = sub nsw i32 %295, 1
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [204 x [19 x double]], ptr %294, i64 0, i64 %297
  %299 = getelementptr inbounds [19 x double], ptr %298, i64 0, i64 7
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = load i32, ptr %2, align 4, !tbaa !5
  %302 = srem i32 %301, 2
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %303
  %305 = load i32, ptr %3, align 4, !tbaa !5
  %306 = add nsw i32 %305, 0
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %304, i64 0, i64 %307
  %309 = load i32, ptr %4, align 4, !tbaa !5
  %310 = sub nsw i32 %309, 1
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %308, i64 0, i64 %311
  %313 = load i32, ptr %5, align 4, !tbaa !5
  %314 = add nsw i32 %313, 1
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [204 x [19 x double]], ptr %312, i64 0, i64 %315
  %317 = getelementptr inbounds [19 x double], ptr %316, i64 0, i64 8
  %318 = load double, ptr %317, align 8, !tbaa !9
  %319 = load i32, ptr %2, align 4, !tbaa !5
  %320 = srem i32 %319, 2
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %321
  %323 = load i32, ptr %3, align 4, !tbaa !5
  %324 = add nsw i32 %323, 0
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %322, i64 0, i64 %325
  %327 = load i32, ptr %4, align 4, !tbaa !5
  %328 = add nsw i32 %327, 1
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %326, i64 0, i64 %329
  %331 = load i32, ptr %5, align 4, !tbaa !5
  %332 = sub nsw i32 %331, 1
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds [204 x [19 x double]], ptr %330, i64 0, i64 %333
  %335 = getelementptr inbounds [19 x double], ptr %334, i64 0, i64 9
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = load i32, ptr %2, align 4, !tbaa !5
  %338 = srem i32 %337, 2
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %339
  %341 = load i32, ptr %3, align 4, !tbaa !5
  %342 = add nsw i32 %341, 0
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %340, i64 0, i64 %343
  %345 = load i32, ptr %4, align 4, !tbaa !5
  %346 = add nsw i32 %345, 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %344, i64 0, i64 %347
  %349 = load i32, ptr %5, align 4, !tbaa !5
  %350 = add nsw i32 %349, 1
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds [204 x [19 x double]], ptr %348, i64 0, i64 %351
  %353 = getelementptr inbounds [19 x double], ptr %352, i64 0, i64 10
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = load i32, ptr %2, align 4, !tbaa !5
  %356 = srem i32 %355, 2
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %357
  %359 = load i32, ptr %3, align 4, !tbaa !5
  %360 = sub nsw i32 %359, 1
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %358, i64 0, i64 %361
  %363 = load i32, ptr %4, align 4, !tbaa !5
  %364 = add nsw i32 %363, 0
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %362, i64 0, i64 %365
  %367 = load i32, ptr %5, align 4, !tbaa !5
  %368 = sub nsw i32 %367, 1
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds [204 x [19 x double]], ptr %366, i64 0, i64 %369
  %371 = getelementptr inbounds [19 x double], ptr %370, i64 0, i64 11
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = load i32, ptr %2, align 4, !tbaa !5
  %374 = srem i32 %373, 2
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %375
  %377 = load i32, ptr %3, align 4, !tbaa !5
  %378 = sub nsw i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %376, i64 0, i64 %379
  %381 = load i32, ptr %4, align 4, !tbaa !5
  %382 = add nsw i32 %381, 0
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %380, i64 0, i64 %383
  %385 = load i32, ptr %5, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds [204 x [19 x double]], ptr %384, i64 0, i64 %387
  %389 = getelementptr inbounds [19 x double], ptr %388, i64 0, i64 12
  %390 = load double, ptr %389, align 8, !tbaa !9
  %391 = load i32, ptr %2, align 4, !tbaa !5
  %392 = srem i32 %391, 2
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %393
  %395 = load i32, ptr %3, align 4, !tbaa !5
  %396 = add nsw i32 %395, 1
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %394, i64 0, i64 %397
  %399 = load i32, ptr %4, align 4, !tbaa !5
  %400 = add nsw i32 %399, 0
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %398, i64 0, i64 %401
  %403 = load i32, ptr %5, align 4, !tbaa !5
  %404 = sub nsw i32 %403, 1
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [204 x [19 x double]], ptr %402, i64 0, i64 %405
  %407 = getelementptr inbounds [19 x double], ptr %406, i64 0, i64 13
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = load i32, ptr %2, align 4, !tbaa !5
  %410 = srem i32 %409, 2
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %411
  %413 = load i32, ptr %3, align 4, !tbaa !5
  %414 = add nsw i32 %413, 1
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %412, i64 0, i64 %415
  %417 = load i32, ptr %4, align 4, !tbaa !5
  %418 = add nsw i32 %417, 0
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %416, i64 0, i64 %419
  %421 = load i32, ptr %5, align 4, !tbaa !5
  %422 = add nsw i32 %421, 1
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds [204 x [19 x double]], ptr %420, i64 0, i64 %423
  %425 = getelementptr inbounds [19 x double], ptr %424, i64 0, i64 14
  %426 = load double, ptr %425, align 8, !tbaa !9
  %427 = load i32, ptr %2, align 4, !tbaa !5
  %428 = srem i32 %427, 2
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %429
  %431 = load i32, ptr %3, align 4, !tbaa !5
  %432 = sub nsw i32 %431, 1
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %430, i64 0, i64 %433
  %435 = load i32, ptr %4, align 4, !tbaa !5
  %436 = sub nsw i32 %435, 1
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %434, i64 0, i64 %437
  %439 = load i32, ptr %5, align 4, !tbaa !5
  %440 = add nsw i32 %439, 0
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds [204 x [19 x double]], ptr %438, i64 0, i64 %441
  %443 = getelementptr inbounds [19 x double], ptr %442, i64 0, i64 15
  %444 = load double, ptr %443, align 8, !tbaa !9
  %445 = load i32, ptr %2, align 4, !tbaa !5
  %446 = srem i32 %445, 2
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %447
  %449 = load i32, ptr %3, align 4, !tbaa !5
  %450 = sub nsw i32 %449, 1
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %448, i64 0, i64 %451
  %453 = load i32, ptr %4, align 4, !tbaa !5
  %454 = add nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %452, i64 0, i64 %455
  %457 = load i32, ptr %5, align 4, !tbaa !5
  %458 = add nsw i32 %457, 0
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds [204 x [19 x double]], ptr %456, i64 0, i64 %459
  %461 = getelementptr inbounds [19 x double], ptr %460, i64 0, i64 16
  %462 = load double, ptr %461, align 8, !tbaa !9
  %463 = load i32, ptr %2, align 4, !tbaa !5
  %464 = srem i32 %463, 2
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %465
  %467 = load i32, ptr %3, align 4, !tbaa !5
  %468 = add nsw i32 %467, 1
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %466, i64 0, i64 %469
  %471 = load i32, ptr %4, align 4, !tbaa !5
  %472 = sub nsw i32 %471, 1
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %470, i64 0, i64 %473
  %475 = load i32, ptr %5, align 4, !tbaa !5
  %476 = add nsw i32 %475, 0
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds [204 x [19 x double]], ptr %474, i64 0, i64 %477
  %479 = getelementptr inbounds [19 x double], ptr %478, i64 0, i64 17
  %480 = load double, ptr %479, align 8, !tbaa !9
  %481 = load i32, ptr %2, align 4, !tbaa !5
  %482 = srem i32 %481, 2
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %483
  %485 = load i32, ptr %3, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %484, i64 0, i64 %487
  %489 = load i32, ptr %4, align 4, !tbaa !5
  %490 = add nsw i32 %489, 1
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %488, i64 0, i64 %491
  %493 = load i32, ptr %5, align 4, !tbaa !5
  %494 = add nsw i32 %493, 0
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [204 x [19 x double]], ptr %492, i64 0, i64 %495
  %497 = getelementptr inbounds [19 x double], ptr %496, i64 0, i64 18
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = load i32, ptr %2, align 4, !tbaa !5
  %500 = add nsw i32 %499, 1
  %501 = srem i32 %500, 2
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %502
  %504 = load i32, ptr %3, align 4, !tbaa !5
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %503, i64 0, i64 %505
  %507 = load i32, ptr %4, align 4, !tbaa !5
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %506, i64 0, i64 %508
  %510 = load i32, ptr %5, align 4, !tbaa !5
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds [204 x [19 x double]], ptr %509, i64 0, i64 %511
  %513 = getelementptr inbounds [19 x double], ptr %512, i64 0, i64 0
  %514 = load i32, ptr %2, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  %516 = srem i32 %515, 2
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %517
  %519 = load i32, ptr %3, align 4, !tbaa !5
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %518, i64 0, i64 %520
  %522 = load i32, ptr %4, align 4, !tbaa !5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %521, i64 0, i64 %523
  %525 = load i32, ptr %5, align 4, !tbaa !5
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds [204 x [19 x double]], ptr %524, i64 0, i64 %526
  %528 = getelementptr inbounds [19 x double], ptr %527, i64 0, i64 1
  %529 = load i32, ptr %2, align 4, !tbaa !5
  %530 = add nsw i32 %529, 1
  %531 = srem i32 %530, 2
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %532
  %534 = load i32, ptr %3, align 4, !tbaa !5
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %533, i64 0, i64 %535
  %537 = load i32, ptr %4, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %536, i64 0, i64 %538
  %540 = load i32, ptr %5, align 4, !tbaa !5
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds [204 x [19 x double]], ptr %539, i64 0, i64 %541
  %543 = getelementptr inbounds [19 x double], ptr %542, i64 0, i64 2
  %544 = load i32, ptr %2, align 4, !tbaa !5
  %545 = add nsw i32 %544, 1
  %546 = srem i32 %545, 2
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %547
  %549 = load i32, ptr %3, align 4, !tbaa !5
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %548, i64 0, i64 %550
  %552 = load i32, ptr %4, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %551, i64 0, i64 %553
  %555 = load i32, ptr %5, align 4, !tbaa !5
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [204 x [19 x double]], ptr %554, i64 0, i64 %556
  %558 = getelementptr inbounds [19 x double], ptr %557, i64 0, i64 3
  %559 = load i32, ptr %2, align 4, !tbaa !5
  %560 = add nsw i32 %559, 1
  %561 = srem i32 %560, 2
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %562
  %564 = load i32, ptr %3, align 4, !tbaa !5
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %563, i64 0, i64 %565
  %567 = load i32, ptr %4, align 4, !tbaa !5
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %566, i64 0, i64 %568
  %570 = load i32, ptr %5, align 4, !tbaa !5
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds [204 x [19 x double]], ptr %569, i64 0, i64 %571
  %573 = getelementptr inbounds [19 x double], ptr %572, i64 0, i64 4
  %574 = load i32, ptr %2, align 4, !tbaa !5
  %575 = add nsw i32 %574, 1
  %576 = srem i32 %575, 2
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %577
  %579 = load i32, ptr %3, align 4, !tbaa !5
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %578, i64 0, i64 %580
  %582 = load i32, ptr %4, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %581, i64 0, i64 %583
  %585 = load i32, ptr %5, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [204 x [19 x double]], ptr %584, i64 0, i64 %586
  %588 = getelementptr inbounds [19 x double], ptr %587, i64 0, i64 5
  %589 = load i32, ptr %2, align 4, !tbaa !5
  %590 = add nsw i32 %589, 1
  %591 = srem i32 %590, 2
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %592
  %594 = load i32, ptr %3, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %593, i64 0, i64 %595
  %597 = load i32, ptr %4, align 4, !tbaa !5
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %596, i64 0, i64 %598
  %600 = load i32, ptr %5, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [204 x [19 x double]], ptr %599, i64 0, i64 %601
  %603 = getelementptr inbounds [19 x double], ptr %602, i64 0, i64 6
  %604 = load i32, ptr %2, align 4, !tbaa !5
  %605 = add nsw i32 %604, 1
  %606 = srem i32 %605, 2
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %607
  %609 = load i32, ptr %3, align 4, !tbaa !5
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %608, i64 0, i64 %610
  %612 = load i32, ptr %4, align 4, !tbaa !5
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %611, i64 0, i64 %613
  %615 = load i32, ptr %5, align 4, !tbaa !5
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds [204 x [19 x double]], ptr %614, i64 0, i64 %616
  %618 = getelementptr inbounds [19 x double], ptr %617, i64 0, i64 7
  %619 = load i32, ptr %2, align 4, !tbaa !5
  %620 = add nsw i32 %619, 1
  %621 = srem i32 %620, 2
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %622
  %624 = load i32, ptr %3, align 4, !tbaa !5
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %623, i64 0, i64 %625
  %627 = load i32, ptr %4, align 4, !tbaa !5
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %626, i64 0, i64 %628
  %630 = load i32, ptr %5, align 4, !tbaa !5
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds [204 x [19 x double]], ptr %629, i64 0, i64 %631
  %633 = getelementptr inbounds [19 x double], ptr %632, i64 0, i64 8
  %634 = load i32, ptr %2, align 4, !tbaa !5
  %635 = add nsw i32 %634, 1
  %636 = srem i32 %635, 2
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %637
  %639 = load i32, ptr %3, align 4, !tbaa !5
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %638, i64 0, i64 %640
  %642 = load i32, ptr %4, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %641, i64 0, i64 %643
  %645 = load i32, ptr %5, align 4, !tbaa !5
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [204 x [19 x double]], ptr %644, i64 0, i64 %646
  %648 = getelementptr inbounds [19 x double], ptr %647, i64 0, i64 9
  %649 = load i32, ptr %2, align 4, !tbaa !5
  %650 = add nsw i32 %649, 1
  %651 = srem i32 %650, 2
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %652
  %654 = load i32, ptr %3, align 4, !tbaa !5
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %653, i64 0, i64 %655
  %657 = load i32, ptr %4, align 4, !tbaa !5
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %656, i64 0, i64 %658
  %660 = load i32, ptr %5, align 4, !tbaa !5
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds [204 x [19 x double]], ptr %659, i64 0, i64 %661
  %663 = getelementptr inbounds [19 x double], ptr %662, i64 0, i64 10
  %664 = load i32, ptr %2, align 4, !tbaa !5
  %665 = add nsw i32 %664, 1
  %666 = srem i32 %665, 2
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %667
  %669 = load i32, ptr %3, align 4, !tbaa !5
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %668, i64 0, i64 %670
  %672 = load i32, ptr %4, align 4, !tbaa !5
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %671, i64 0, i64 %673
  %675 = load i32, ptr %5, align 4, !tbaa !5
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds [204 x [19 x double]], ptr %674, i64 0, i64 %676
  %678 = getelementptr inbounds [19 x double], ptr %677, i64 0, i64 11
  %679 = load i32, ptr %2, align 4, !tbaa !5
  %680 = add nsw i32 %679, 1
  %681 = srem i32 %680, 2
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %682
  %684 = load i32, ptr %3, align 4, !tbaa !5
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %683, i64 0, i64 %685
  %687 = load i32, ptr %4, align 4, !tbaa !5
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %686, i64 0, i64 %688
  %690 = load i32, ptr %5, align 4, !tbaa !5
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds [204 x [19 x double]], ptr %689, i64 0, i64 %691
  %693 = getelementptr inbounds [19 x double], ptr %692, i64 0, i64 12
  %694 = load i32, ptr %2, align 4, !tbaa !5
  %695 = add nsw i32 %694, 1
  %696 = srem i32 %695, 2
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %697
  %699 = load i32, ptr %3, align 4, !tbaa !5
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %698, i64 0, i64 %700
  %702 = load i32, ptr %4, align 4, !tbaa !5
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %701, i64 0, i64 %703
  %705 = load i32, ptr %5, align 4, !tbaa !5
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds [204 x [19 x double]], ptr %704, i64 0, i64 %706
  %708 = getelementptr inbounds [19 x double], ptr %707, i64 0, i64 13
  %709 = load i32, ptr %2, align 4, !tbaa !5
  %710 = add nsw i32 %709, 1
  %711 = srem i32 %710, 2
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %712
  %714 = load i32, ptr %3, align 4, !tbaa !5
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %713, i64 0, i64 %715
  %717 = load i32, ptr %4, align 4, !tbaa !5
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %716, i64 0, i64 %718
  %720 = load i32, ptr %5, align 4, !tbaa !5
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds [204 x [19 x double]], ptr %719, i64 0, i64 %721
  %723 = getelementptr inbounds [19 x double], ptr %722, i64 0, i64 14
  %724 = load i32, ptr %2, align 4, !tbaa !5
  %725 = add nsw i32 %724, 1
  %726 = srem i32 %725, 2
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %727
  %729 = load i32, ptr %3, align 4, !tbaa !5
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %728, i64 0, i64 %730
  %732 = load i32, ptr %4, align 4, !tbaa !5
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %731, i64 0, i64 %733
  %735 = load i32, ptr %5, align 4, !tbaa !5
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds [204 x [19 x double]], ptr %734, i64 0, i64 %736
  %738 = getelementptr inbounds [19 x double], ptr %737, i64 0, i64 15
  %739 = load i32, ptr %2, align 4, !tbaa !5
  %740 = add nsw i32 %739, 1
  %741 = srem i32 %740, 2
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %742
  %744 = load i32, ptr %3, align 4, !tbaa !5
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %743, i64 0, i64 %745
  %747 = load i32, ptr %4, align 4, !tbaa !5
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %746, i64 0, i64 %748
  %750 = load i32, ptr %5, align 4, !tbaa !5
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds [204 x [19 x double]], ptr %749, i64 0, i64 %751
  %753 = getelementptr inbounds [19 x double], ptr %752, i64 0, i64 16
  %754 = load i32, ptr %2, align 4, !tbaa !5
  %755 = add nsw i32 %754, 1
  %756 = srem i32 %755, 2
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %757
  %759 = load i32, ptr %3, align 4, !tbaa !5
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %758, i64 0, i64 %760
  %762 = load i32, ptr %4, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %761, i64 0, i64 %763
  %765 = load i32, ptr %5, align 4, !tbaa !5
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds [204 x [19 x double]], ptr %764, i64 0, i64 %766
  %768 = getelementptr inbounds [19 x double], ptr %767, i64 0, i64 17
  %769 = load i32, ptr %2, align 4, !tbaa !5
  %770 = add nsw i32 %769, 1
  %771 = srem i32 %770, 2
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %772
  %774 = load i32, ptr %3, align 4, !tbaa !5
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr %773, i64 0, i64 %775
  %777 = load i32, ptr %4, align 4, !tbaa !5
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds [204 x [204 x [19 x double]]], ptr %776, i64 0, i64 %778
  %780 = load i32, ptr %5, align 4, !tbaa !5
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds [204 x [19 x double]], ptr %779, i64 0, i64 %781
  %783 = getelementptr inbounds [19 x double], ptr %782, i64 0, i64 18
  %784 = load i32, ptr %2, align 4, !tbaa !5
  %785 = load i32, ptr %3, align 4, !tbaa !5
  %786 = load i32, ptr %4, align 4, !tbaa !5
  %787 = load i32, ptr %5, align 4, !tbaa !5
  call void @lbm_kernel(double noundef %174, double noundef %192, double noundef %210, double noundef %228, double noundef %246, double noundef %264, double noundef %282, double noundef %300, double noundef %318, double noundef %336, double noundef %354, double noundef %372, double noundef %390, double noundef %408, double noundef %426, double noundef %444, double noundef %462, double noundef %480, double noundef %498, ptr noundef %513, ptr noundef %528, ptr noundef %543, ptr noundef %558, ptr noundef %573, ptr noundef %588, ptr noundef %603, ptr noundef %618, ptr noundef %633, ptr noundef %648, ptr noundef %663, ptr noundef %678, ptr noundef %693, ptr noundef %708, ptr noundef %723, ptr noundef %738, ptr noundef %753, ptr noundef %768, ptr noundef %783, i32 noundef %784, i32 noundef %785, i32 noundef %786, i32 noundef %787)
  br label %788

788:                                              ; preds = %156
  %789 = load i32, ptr %5, align 4, !tbaa !5
  %790 = add nsw i32 %789, 1
  store i32 %790, ptr %5, align 4, !tbaa !5
  br label %151, !llvm.loop !19

791:                                              ; preds = %151
  br label %792

792:                                              ; preds = %791
  %793 = load i32, ptr %4, align 4, !tbaa !5
  %794 = add nsw i32 %793, 1
  store i32 %794, ptr %4, align 4, !tbaa !5
  br label %145, !llvm.loop !20

795:                                              ; preds = %145
  br label %796

796:                                              ; preds = %795
  %797 = load i32, ptr %3, align 4, !tbaa !5
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %3, align 4, !tbaa !5
  br label %139, !llvm.loop !21

799:                                              ; preds = %139
  br label %800

800:                                              ; preds = %799
  %801 = load i32, ptr %2, align 4, !tbaa !5
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %2, align 4, !tbaa !5
  br label %133, !llvm.loop !22

803:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #4
  ret i32 0
}

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

declare i32 @printf(ptr noundef, ...) #3

; Function Attrs: nounwind uwtable
declare dso_local void @lbm_kernel(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "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 = { "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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = !{!18, !18, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}


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

@omega = external dso_local local_unnamed_addr global double, align 8
@.str = external hidden unnamed_addr constant [232 x i8], align 1
@grid = external dso_local global [2 x [206 x [204 x [204 x [19 x double]]]]], align 16

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
  store double 0x3FF375233B9337C0, ptr @omega, align 8, !tbaa !5
  %1 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef 200, i32 noundef 200, i32 noundef 200, double noundef 8.000000e+03, i32 noundef 1000, double noundef 1.000000e+02, double noundef 5.000000e-02, double noundef 2.000000e-02, double noundef 0x3FF375233B9337C0)
  br label %.preheader212

.preheader212:                                    ; preds = %0, %23
  %indvars.iv229 = phi i64 [ 0, %0 ], [ %indvars.iv.next230, %23 ]
  br label %.preheader211

.preheader211:                                    ; preds = %.preheader212, %22
  %indvars.iv225 = phi i64 [ 0, %.preheader212 ], [ %indvars.iv.next226, %22 ]
  br label %.preheader210.preheader

.preheader210.preheader:                          ; preds = %.preheader211, %.preheader210.preheader
  %indvars.iv = phi i64 [ 0, %.preheader211 ], [ %indvars.iv.next, %.preheader210.preheader ]
  %2 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv
  %3 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv
  store <2 x double> <double 0x3FD5555555555555, double 0x3FAC71C71C71C71C>, ptr %2, align 8, !tbaa !5
  store <2 x double> <double 0x3FD5555555555555, double 0x3FAC71C71C71C71C>, ptr %3, align 8, !tbaa !5
  %4 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 2
  %5 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 2
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3FAC71C71C71C71C>, ptr %4, align 8, !tbaa !5
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3FAC71C71C71C71C>, ptr %5, align 8, !tbaa !5
  %6 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 4
  %7 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 4
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3FAC71C71C71C71C>, ptr %6, align 8, !tbaa !5
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3FAC71C71C71C71C>, ptr %7, align 8, !tbaa !5
  %8 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 6
  %9 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 6
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %8, align 8, !tbaa !5
  store <2 x double> <double 0x3FAC71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %9, align 8, !tbaa !5
  %10 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 8
  %11 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 8
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %10, align 8, !tbaa !5
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %11, align 8, !tbaa !5
  %12 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 10
  %13 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 10
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %12, align 8, !tbaa !5
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %13, align 8, !tbaa !5
  %14 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 12
  %15 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 12
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %14, align 8, !tbaa !5
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %15, align 8, !tbaa !5
  %16 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 14
  %17 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 14
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %16, align 8, !tbaa !5
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %17, align 8, !tbaa !5
  %18 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 16
  %19 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 16
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %18, align 8, !tbaa !5
  store <2 x double> <double 0x3F9C71C71C71C71C, double 0x3F9C71C71C71C71C>, ptr %19, align 8, !tbaa !5
  %20 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr @grid, i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 18
  store double 0x3F9C71C71C71C71C, ptr %20, align 8, !tbaa !5
  %21 = getelementptr inbounds [206 x [204 x [204 x [19 x double]]]], ptr getelementptr inbounds (i8, ptr @grid, i64 1303080192), i64 0, i64 %indvars.iv229, i64 %indvars.iv225, i64 %indvars.iv, i64 18
  store double 0x3F9C71C71C71C71C, ptr %21, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 204
  br i1 %exitcond.not, label %22, label %.preheader210.preheader, !llvm.loop !9

22:                                               ; preds = %.preheader210.preheader
  %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1
  %exitcond228.not = icmp eq i64 %indvars.iv.next226, 204
  br i1 %exitcond228.not, label %23, label %.preheader211, !llvm.loop !11

23:                                               ; preds = %22
  %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1
  %exitcond232.not = icmp eq i64 %indvars.iv.next230, 206
  br i1 %exitcond232.not, label %.preheader208, label %.preheader212, !llvm.loop !12

.preheader208:                                    ; preds = %23, %94
  %.0221 = phi i32 [ %95, %94 ], [ 0, %23 ]
  %24 = and i32 %.0221, 1
  %25 = zext nneg i32 %24 to i64
  %26 = xor i32 %24, 1
  %27 = zext nneg i32 %26 to i64
  br label %.preheader207

.preheader207:                                    ; preds = %.preheader208, %93
  %indvars.iv241 = phi i64 [ 2, %.preheader208 ], [ %indvars.iv.next242, %93 ]
  %28 = add nsw i64 %indvars.iv241, -1
  %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1
  %29 = trunc nuw nsw i64 %indvars.iv241 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader207, %92
  %indvars.iv237 = phi i64 [ 1, %.preheader207 ], [ %indvars.iv.next238, %92 ]
  %30 = add nsw i64 %indvars.iv237, -1
  %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1
  %31 = trunc nuw nsw i64 %indvars.iv237 to i32
  br label %32

32:                                               ; preds = %.preheader, %32
  %indvars.iv233 = phi i64 [ 1, %.preheader ], [ %indvars.iv.next234, %32 ]
  %33 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv237, i64 %indvars.iv233
  %34 = load double, ptr %33, align 8, !tbaa !5
  %35 = add nsw i64 %indvars.iv233, -1
  %36 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv237, i64 %35, i64 1
  %37 = load double, ptr %36, align 8, !tbaa !5
  %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1
  %38 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv237, i64 %indvars.iv.next234, i64 2
  %39 = load double, ptr %38, align 8, !tbaa !5
  %40 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %30, i64 %indvars.iv233, i64 3
  %41 = load double, ptr %40, align 8, !tbaa !5
  %42 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv.next238, i64 %indvars.iv233, i64 4
  %43 = load double, ptr %42, align 8, !tbaa !5
  %44 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %28, i64 %indvars.iv237, i64 %indvars.iv233, i64 5
  %45 = load double, ptr %44, align 8, !tbaa !5
  %46 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv.next242, i64 %indvars.iv237, i64 %indvars.iv233, i64 6
  %47 = load double, ptr %46, align 8, !tbaa !5
  %48 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %30, i64 %35, i64 7
  %49 = load double, ptr %48, align 8, !tbaa !5
  %50 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %30, i64 %indvars.iv.next234, i64 8
  %51 = load double, ptr %50, align 8, !tbaa !5
  %52 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv.next238, i64 %35, i64 9
  %53 = load double, ptr %52, align 8, !tbaa !5
  %54 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv241, i64 %indvars.iv.next238, i64 %indvars.iv.next234, i64 10
  %55 = load double, ptr %54, align 8, !tbaa !5
  %56 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %28, i64 %indvars.iv237, i64 %35, i64 11
  %57 = load double, ptr %56, align 8, !tbaa !5
  %58 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %28, i64 %indvars.iv237, i64 %indvars.iv.next234, i64 12
  %59 = load double, ptr %58, align 8, !tbaa !5
  %60 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv.next242, i64 %indvars.iv237, i64 %35, i64 13
  %61 = load double, ptr %60, align 8, !tbaa !5
  %62 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv.next242, i64 %indvars.iv237, i64 %indvars.iv.next234, i64 14
  %63 = load double, ptr %62, align 8, !tbaa !5
  %64 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %28, i64 %30, i64 %indvars.iv233, i64 15
  %65 = load double, ptr %64, align 8, !tbaa !5
  %66 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %28, i64 %indvars.iv.next238, i64 %indvars.iv233, i64 16
  %67 = load double, ptr %66, align 8, !tbaa !5
  %68 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv.next242, i64 %30, i64 %indvars.iv233, i64 17
  %69 = load double, ptr %68, align 8, !tbaa !5
  %70 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %25, i64 %indvars.iv.next242, i64 %indvars.iv.next238, i64 %indvars.iv233, i64 18
  %71 = load double, ptr %70, align 8, !tbaa !5
  %72 = getelementptr inbounds [2 x [206 x [204 x [204 x [19 x double]]]]], ptr @grid, i64 0, i64 %27, i64 %indvars.iv241, i64 %indvars.iv237, i64 %indvars.iv233
  %73 = getelementptr inbounds i8, ptr %72, i64 8
  %74 = getelementptr inbounds i8, ptr %72, i64 16
  %75 = getelementptr inbounds i8, ptr %72, i64 24
  %76 = getelementptr inbounds i8, ptr %72, i64 32
  %77 = getelementptr inbounds i8, ptr %72, i64 40
  %78 = getelementptr inbounds i8, ptr %72, i64 48
  %79 = getelementptr inbounds i8, ptr %72, i64 56
  %80 = getelementptr inbounds i8, ptr %72, i64 64
  %81 = getelementptr inbounds i8, ptr %72, i64 72
  %82 = getelementptr inbounds i8, ptr %72, i64 80
  %83 = getelementptr inbounds i8, ptr %72, i64 88
  %84 = getelementptr inbounds i8, ptr %72, i64 96
  %85 = getelementptr inbounds i8, ptr %72, i64 104
  %86 = getelementptr inbounds i8, ptr %72, i64 112
  %87 = getelementptr inbounds i8, ptr %72, i64 120
  %88 = getelementptr inbounds i8, ptr %72, i64 128
  %89 = getelementptr inbounds i8, ptr %72, i64 136
  %90 = getelementptr inbounds i8, ptr %72, i64 144
  %91 = trunc nuw nsw i64 %indvars.iv233 to i32
  tail call void @lbm_kernel(double noundef %34, double noundef %37, double noundef %39, double noundef %41, double noundef %43, double noundef %45, double noundef %47, double noundef %49, double noundef %51, double noundef %53, double noundef %55, double noundef %57, double noundef %59, double noundef %61, double noundef %63, double noundef %65, double noundef %67, double noundef %69, double noundef %71, ptr noundef nonnull %72, ptr noundef nonnull %73, ptr noundef nonnull %74, ptr noundef nonnull %75, ptr noundef nonnull %76, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83, ptr noundef nonnull %84, ptr noundef nonnull %85, ptr noundef nonnull %86, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89, ptr noundef nonnull %90, i32 noundef %.0221, i32 noundef %29, i32 noundef %31, i32 noundef %91)
  %exitcond236.not = icmp eq i64 %indvars.iv.next234, 203
  br i1 %exitcond236.not, label %92, label %32, !llvm.loop !13

92:                                               ; preds = %32
  %exitcond240.not = icmp eq i64 %indvars.iv.next238, 203
  br i1 %exitcond240.not, label %93, label %.preheader, !llvm.loop !14

93:                                               ; preds = %92
  %exitcond244.not = icmp eq i64 %indvars.iv.next242, 204
  br i1 %exitcond244.not, label %94, label %.preheader207, !llvm.loop !15

94:                                               ; preds = %93
  %95 = add nuw nsw i32 %.0221, 1
  %exitcond245.not = icmp eq i32 %95, 1000
  br i1 %exitcond245.not, label %96, label %.preheader208, !llvm.loop !16

96:                                               ; preds = %94
  ret i32 0
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @lbm_kernel(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, ptr noalias noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass