; LLVM IR from sscollis/lns3d :: util (wdata)

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

@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @wdata_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) #0 {
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca float, align 4
  %36 = alloca ptr, align 8
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  store ptr %14, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  %37 = load ptr, ptr %30, align 8, !tbaa !5
  %38 = call noalias ptr @fopen(ptr noundef %37, ptr noundef @.str)
  store ptr %38, ptr %36, align 8, !tbaa !5
  %39 = load ptr, ptr %25, align 8, !tbaa !5
  %40 = load ptr, ptr %36, align 8, !tbaa !5
  %41 = call i64 @fwrite(ptr noundef %39, i64 noundef 4, i64 noundef 1, ptr noundef %40)
  %42 = load ptr, ptr %26, align 8, !tbaa !5
  %43 = load ptr, ptr %36, align 8, !tbaa !5
  %44 = call i64 @fwrite(ptr noundef %42, i64 noundef 4, i64 noundef 1, ptr noundef %43)
  %45 = load ptr, ptr %27, align 8, !tbaa !5
  %46 = load ptr, ptr %36, align 8, !tbaa !5
  %47 = call i64 @fwrite(ptr noundef %45, i64 noundef 4, i64 noundef 1, ptr noundef %46)
  %48 = load ptr, ptr %16, align 8, !tbaa !5
  %49 = load double, ptr %48, align 8, !tbaa !9
  %50 = fptrunc double %49 to float
  store float %50, ptr %35, align 4, !tbaa !11
  %51 = load ptr, ptr %36, align 8, !tbaa !5
  %52 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %51)
  %53 = load ptr, ptr %17, align 8, !tbaa !5
  %54 = load double, ptr %53, align 8, !tbaa !9
  %55 = fptrunc double %54 to float
  store float %55, ptr %35, align 4, !tbaa !11
  %56 = load ptr, ptr %36, align 8, !tbaa !5
  %57 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %56)
  %58 = load ptr, ptr %18, align 8, !tbaa !5
  %59 = load double, ptr %58, align 8, !tbaa !9
  %60 = fptrunc double %59 to float
  store float %60, ptr %35, align 4, !tbaa !11
  %61 = load ptr, ptr %36, align 8, !tbaa !5
  %62 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %61)
  %63 = load ptr, ptr %19, align 8, !tbaa !5
  %64 = load double, ptr %63, align 8, !tbaa !9
  %65 = fptrunc double %64 to float
  store float %65, ptr %35, align 4, !tbaa !11
  %66 = load ptr, ptr %36, align 8, !tbaa !5
  %67 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %66)
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %68

68:                                               ; preds = %116, %15
  %69 = load i32, ptr %33, align 4, !tbaa !13
  %70 = load ptr, ptr %27, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !13
  %72 = icmp slt i32 %69, %71
  br i1 %72, label %73, label %119

73:                                               ; preds = %68
  store i32 0, ptr %32, align 4, !tbaa !13
  br label %74

74:                                               ; preds = %112, %73
  %75 = load i32, ptr %32, align 4, !tbaa !13
  %76 = load ptr, ptr %26, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !13
  %78 = icmp slt i32 %75, %77
  br i1 %78, label %79, label %115

79:                                               ; preds = %74
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %80

80:                                               ; preds = %108, %79
  %81 = load i32, ptr %31, align 4, !tbaa !13
  %82 = load ptr, ptr %25, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !13
  %84 = icmp slt i32 %81, %83
  br i1 %84, label %85, label %111

85:                                               ; preds = %80
  %86 = load i32, ptr %31, align 4, !tbaa !13
  %87 = load ptr, ptr %28, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !13
  %89 = load i32, ptr %32, align 4, !tbaa !13
  %90 = mul nsw i32 %88, %89
  %91 = add nsw i32 %86, %90
  %92 = load ptr, ptr %28, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !13
  %94 = load ptr, ptr %29, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !13
  %96 = mul nsw i32 %93, %95
  %97 = load i32, ptr %33, align 4, !tbaa !13
  %98 = mul nsw i32 %96, %97
  %99 = add nsw i32 %91, %98
  store i32 %99, ptr %34, align 4, !tbaa !13
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = load i32, ptr %34, align 4, !tbaa !13
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds double, ptr %100, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !9
  %105 = fptrunc double %104 to float
  store float %105, ptr %35, align 4, !tbaa !11
  %106 = load ptr, ptr %36, align 8, !tbaa !5
  %107 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %106)
  br label %108

108:                                              ; preds = %85
  %109 = load i32, ptr %31, align 4, !tbaa !13
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %31, align 4, !tbaa !13
  br label %80, !llvm.loop !15

111:                                              ; preds = %80
  br label %112

112:                                              ; preds = %111
  %113 = load i32, ptr %32, align 4, !tbaa !13
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %32, align 4, !tbaa !13
  br label %74, !llvm.loop !17

115:                                              ; preds = %74
  br label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %33, align 4, !tbaa !13
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %33, align 4, !tbaa !13
  br label %68, !llvm.loop !18

119:                                              ; preds = %68
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %120

120:                                              ; preds = %168, %119
  %121 = load i32, ptr %33, align 4, !tbaa !13
  %122 = load ptr, ptr %27, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !13
  %124 = icmp slt i32 %121, %123
  br i1 %124, label %125, label %171

125:                                              ; preds = %120
  store i32 0, ptr %32, align 4, !tbaa !13
  br label %126

126:                                              ; preds = %164, %125
  %127 = load i32, ptr %32, align 4, !tbaa !13
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !13
  %130 = icmp slt i32 %127, %129
  br i1 %130, label %131, label %167

131:                                              ; preds = %126
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %132

132:                                              ; preds = %160, %131
  %133 = load i32, ptr %31, align 4, !tbaa !13
  %134 = load ptr, ptr %25, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !13
  %136 = icmp slt i32 %133, %135
  br i1 %136, label %137, label %163

137:                                              ; preds = %132
  %138 = load i32, ptr %31, align 4, !tbaa !13
  %139 = load ptr, ptr %28, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !13
  %141 = load i32, ptr %32, align 4, !tbaa !13
  %142 = mul nsw i32 %140, %141
  %143 = add nsw i32 %138, %142
  %144 = load ptr, ptr %28, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !13
  %146 = load ptr, ptr %29, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !13
  %148 = mul nsw i32 %145, %147
  %149 = load i32, ptr %33, align 4, !tbaa !13
  %150 = mul nsw i32 %148, %149
  %151 = add nsw i32 %143, %150
  store i32 %151, ptr %34, align 4, !tbaa !13
  %152 = load ptr, ptr %21, align 8, !tbaa !5
  %153 = load i32, ptr %34, align 4, !tbaa !13
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %152, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !9
  %157 = fptrunc double %156 to float
  store float %157, ptr %35, align 4, !tbaa !11
  %158 = load ptr, ptr %36, align 8, !tbaa !5
  %159 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %158)
  br label %160

160:                                              ; preds = %137
  %161 = load i32, ptr %31, align 4, !tbaa !13
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %31, align 4, !tbaa !13
  br label %132, !llvm.loop !19

163:                                              ; preds = %132
  br label %164

164:                                              ; preds = %163
  %165 = load i32, ptr %32, align 4, !tbaa !13
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %32, align 4, !tbaa !13
  br label %126, !llvm.loop !20

167:                                              ; preds = %126
  br label %168

168:                                              ; preds = %167
  %169 = load i32, ptr %33, align 4, !tbaa !13
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %33, align 4, !tbaa !13
  br label %120, !llvm.loop !21

171:                                              ; preds = %120
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %172

172:                                              ; preds = %220, %171
  %173 = load i32, ptr %33, align 4, !tbaa !13
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !13
  %176 = icmp slt i32 %173, %175
  br i1 %176, label %177, label %223

177:                                              ; preds = %172
  store i32 0, ptr %32, align 4, !tbaa !13
  br label %178

178:                                              ; preds = %216, %177
  %179 = load i32, ptr %32, align 4, !tbaa !13
  %180 = load ptr, ptr %26, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !13
  %182 = icmp slt i32 %179, %181
  br i1 %182, label %183, label %219

183:                                              ; preds = %178
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %184

184:                                              ; preds = %212, %183
  %185 = load i32, ptr %31, align 4, !tbaa !13
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !13
  %188 = icmp slt i32 %185, %187
  br i1 %188, label %189, label %215

189:                                              ; preds = %184
  %190 = load i32, ptr %31, align 4, !tbaa !13
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !13
  %193 = load i32, ptr %32, align 4, !tbaa !13
  %194 = mul nsw i32 %192, %193
  %195 = add nsw i32 %190, %194
  %196 = load ptr, ptr %28, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !13
  %198 = load ptr, ptr %29, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !13
  %200 = mul nsw i32 %197, %199
  %201 = load i32, ptr %33, align 4, !tbaa !13
  %202 = mul nsw i32 %200, %201
  %203 = add nsw i32 %195, %202
  store i32 %203, ptr %34, align 4, !tbaa !13
  %204 = load ptr, ptr %22, align 8, !tbaa !5
  %205 = load i32, ptr %34, align 4, !tbaa !13
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds double, ptr %204, i64 %206
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fptrunc double %208 to float
  store float %209, ptr %35, align 4, !tbaa !11
  %210 = load ptr, ptr %36, align 8, !tbaa !5
  %211 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %210)
  br label %212

212:                                              ; preds = %189
  %213 = load i32, ptr %31, align 4, !tbaa !13
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %31, align 4, !tbaa !13
  br label %184, !llvm.loop !22

215:                                              ; preds = %184
  br label %216

216:                                              ; preds = %215
  %217 = load i32, ptr %32, align 4, !tbaa !13
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %32, align 4, !tbaa !13
  br label %178, !llvm.loop !23

219:                                              ; preds = %178
  br label %220

220:                                              ; preds = %219
  %221 = load i32, ptr %33, align 4, !tbaa !13
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %33, align 4, !tbaa !13
  br label %172, !llvm.loop !24

223:                                              ; preds = %172
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %224

224:                                              ; preds = %272, %223
  %225 = load i32, ptr %33, align 4, !tbaa !13
  %226 = load ptr, ptr %27, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !13
  %228 = icmp slt i32 %225, %227
  br i1 %228, label %229, label %275

229:                                              ; preds = %224
  store i32 0, ptr %32, align 4, !tbaa !13
  br label %230

230:                                              ; preds = %268, %229
  %231 = load i32, ptr %32, align 4, !tbaa !13
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !13
  %234 = icmp slt i32 %231, %233
  br i1 %234, label %235, label %271

235:                                              ; preds = %230
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %236

236:                                              ; preds = %264, %235
  %237 = load i32, ptr %31, align 4, !tbaa !13
  %238 = load ptr, ptr %25, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !13
  %240 = icmp slt i32 %237, %239
  br i1 %240, label %241, label %267

241:                                              ; preds = %236
  %242 = load i32, ptr %31, align 4, !tbaa !13
  %243 = load ptr, ptr %28, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !13
  %245 = load i32, ptr %32, align 4, !tbaa !13
  %246 = mul nsw i32 %244, %245
  %247 = add nsw i32 %242, %246
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !13
  %250 = load ptr, ptr %29, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !13
  %252 = mul nsw i32 %249, %251
  %253 = load i32, ptr %33, align 4, !tbaa !13
  %254 = mul nsw i32 %252, %253
  %255 = add nsw i32 %247, %254
  store i32 %255, ptr %34, align 4, !tbaa !13
  %256 = load ptr, ptr %23, align 8, !tbaa !5
  %257 = load i32, ptr %34, align 4, !tbaa !13
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %256, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !9
  %261 = fptrunc double %260 to float
  store float %261, ptr %35, align 4, !tbaa !11
  %262 = load ptr, ptr %36, align 8, !tbaa !5
  %263 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %262)
  br label %264

264:                                              ; preds = %241
  %265 = load i32, ptr %31, align 4, !tbaa !13
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %31, align 4, !tbaa !13
  br label %236, !llvm.loop !25

267:                                              ; preds = %236
  br label %268

268:                                              ; preds = %267
  %269 = load i32, ptr %32, align 4, !tbaa !13
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %32, align 4, !tbaa !13
  br label %230, !llvm.loop !26

271:                                              ; preds = %230
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %33, align 4, !tbaa !13
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %33, align 4, !tbaa !13
  br label %224, !llvm.loop !27

275:                                              ; preds = %224
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %276

276:                                              ; preds = %324, %275
  %277 = load i32, ptr %33, align 4, !tbaa !13
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !13
  %280 = icmp slt i32 %277, %279
  br i1 %280, label %281, label %327

281:                                              ; preds = %276
  store i32 0, ptr %32, align 4, !tbaa !13
  br label %282

282:                                              ; preds = %320, %281
  %283 = load i32, ptr %32, align 4, !tbaa !13
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !13
  %286 = icmp slt i32 %283, %285
  br i1 %286, label %287, label %323

287:                                              ; preds = %282
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %288

288:                                              ; preds = %316, %287
  %289 = load i32, ptr %31, align 4, !tbaa !13
  %290 = load ptr, ptr %25, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !13
  %292 = icmp slt i32 %289, %291
  br i1 %292, label %293, label %319

293:                                              ; preds = %288
  %294 = load i32, ptr %31, align 4, !tbaa !13
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !13
  %297 = load i32, ptr %32, align 4, !tbaa !13
  %298 = mul nsw i32 %296, %297
  %299 = add nsw i32 %294, %298
  %300 = load ptr, ptr %28, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !13
  %302 = load ptr, ptr %29, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !13
  %304 = mul nsw i32 %301, %303
  %305 = load i32, ptr %33, align 4, !tbaa !13
  %306 = mul nsw i32 %304, %305
  %307 = add nsw i32 %299, %306
  store i32 %307, ptr %34, align 4, !tbaa !13
  %308 = load ptr, ptr %24, align 8, !tbaa !5
  %309 = load i32, ptr %34, align 4, !tbaa !13
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %308, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !9
  %313 = fptrunc double %312 to float
  store float %313, ptr %35, align 4, !tbaa !11
  %314 = load ptr, ptr %36, align 8, !tbaa !5
  %315 = call i64 @fwrite(ptr noundef %35, i64 noundef 4, i64 noundef 1, ptr noundef %314)
  br label %316

316:                                              ; preds = %293
  %317 = load i32, ptr %31, align 4, !tbaa !13
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %31, align 4, !tbaa !13
  br label %288, !llvm.loop !28

319:                                              ; preds = %288
  br label %320

320:                                              ; preds = %319
  %321 = load i32, ptr %32, align 4, !tbaa !13
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %32, align 4, !tbaa !13
  br label %282, !llvm.loop !29

323:                                              ; preds = %282
  br label %324

324:                                              ; preds = %323
  %325 = load i32, ptr %33, align 4, !tbaa !13
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %33, align 4, !tbaa !13
  br label %276, !llvm.loop !30

327:                                              ; preds = %276
  %328 = load ptr, ptr %36, align 8, !tbaa !5
  %329 = call i32 @fclose(ptr noundef %328)
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  ret void
}

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

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

declare i64 @fwrite(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

declare i32 @fclose(ptr noundef) #2

; 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 = { "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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}


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

@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nofree nounwind uwtable
define dso_local void @wdata_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef %9, ptr nocapture noundef %10, ptr nocapture noundef %11, ptr nocapture noundef readonly %12, ptr nocapture noundef readonly %13, ptr nocapture noundef readonly %14) local_unnamed_addr #0 {
  %16 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #3
  %17 = tail call noalias ptr @fopen(ptr noundef %14, ptr noundef nonnull @.str)
  %18 = tail call i64 @fwrite(ptr noundef %9, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %19 = tail call i64 @fwrite(ptr noundef %10, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %20 = tail call i64 @fwrite(ptr noundef %11, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %21 = load double, ptr %0, align 8, !tbaa !5
  %22 = fptrunc double %21 to float
  store float %22, ptr %16, align 4, !tbaa !9
  %23 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %24 = load double, ptr %1, align 8, !tbaa !5
  %25 = fptrunc double %24 to float
  store float %25, ptr %16, align 4, !tbaa !9
  %26 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %27 = load double, ptr %2, align 8, !tbaa !5
  %28 = fptrunc double %27 to float
  store float %28, ptr %16, align 4, !tbaa !9
  %29 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %30 = load double, ptr %3, align 8, !tbaa !5
  %31 = fptrunc double %30 to float
  store float %31, ptr %16, align 4, !tbaa !9
  %32 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %33 = load i32, ptr %11, align 4, !tbaa !11
  %34 = icmp sgt i32 %33, 0
  br i1 %34, label %.preheader135.lr.ph, label %._crit_edge169

.preheader135.lr.ph:                              ; preds = %15
  %35 = load i32, ptr %10, align 4, !tbaa !11
  %36 = icmp sgt i32 %35, 0
  br i1 %36, label %.preheader135, label %._crit_edge169

.preheader135:                                    ; preds = %.preheader135.lr.ph, %._crit_edge138
  %37 = phi i32 [ %64, %._crit_edge138 ], [ %33, %.preheader135.lr.ph ]
  %38 = phi i32 [ %65, %._crit_edge138 ], [ %35, %.preheader135.lr.ph ]
  %39 = phi i32 [ %66, %._crit_edge138 ], [ %35, %.preheader135.lr.ph ]
  %.0105139 = phi i32 [ %67, %._crit_edge138 ], [ 0, %.preheader135.lr.ph ]
  %40 = icmp sgt i32 %39, 0
  br i1 %40, label %.preheader134.lr.ph, label %._crit_edge138

.preheader134.lr.ph:                              ; preds = %.preheader135
  %41 = load i32, ptr %9, align 4, !tbaa !11
  %42 = icmp sgt i32 %41, 0
  br i1 %42, label %.preheader134, label %._crit_edge138

.preheader133:                                    ; preds = %._crit_edge138
  %43 = icmp sgt i32 %64, 0
  br i1 %43, label %.preheader132.lr.ph, label %._crit_edge169

.preheader132.lr.ph:                              ; preds = %.preheader133
  %.pr = load i32, ptr %10, align 4, !tbaa !11
  %44 = icmp sgt i32 %.pr, 0
  br i1 %44, label %.preheader132, label %._crit_edge169

.preheader134:                                    ; preds = %.preheader134.lr.ph, %._crit_edge
  %45 = phi i32 [ %60, %._crit_edge ], [ %38, %.preheader134.lr.ph ]
  %46 = phi i32 [ %61, %._crit_edge ], [ %41, %.preheader134.lr.ph ]
  %.0110137 = phi i32 [ %62, %._crit_edge ], [ 0, %.preheader134.lr.ph ]
  %47 = icmp sgt i32 %46, 0
  br i1 %47, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader134, %.lr.ph
  %.0136 = phi i32 [ %57, %.lr.ph ], [ 0, %.preheader134 ]
  %48 = load i32, ptr %12, align 4, !tbaa !11
  %49 = load i32, ptr %13, align 4, !tbaa !11
  %50 = mul i32 %49, %.0105139
  %reass.add121 = add i32 %50, %.0110137
  %reass.mul122 = mul i32 %reass.add121, %48
  %51 = add i32 %reass.mul122, %.0136
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds double, ptr %4, i64 %52
  %54 = load double, ptr %53, align 8, !tbaa !5
  %55 = fptrunc double %54 to float
  store float %55, ptr %16, align 4, !tbaa !9
  %56 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %57 = add nuw nsw i32 %.0136, 1
  %58 = load i32, ptr %9, align 4, !tbaa !11
  %59 = icmp slt i32 %57, %58
  br i1 %59, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !13

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load i32, ptr %10, align 4, !tbaa !11
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader134
  %60 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %45, %.preheader134 ]
  %61 = phi i32 [ %58, %._crit_edge.loopexit ], [ %46, %.preheader134 ]
  %62 = add nuw nsw i32 %.0110137, 1
  %63 = icmp slt i32 %62, %60
  br i1 %63, label %.preheader134, label %._crit_edge138.loopexit, !llvm.loop !15

._crit_edge138.loopexit:                          ; preds = %._crit_edge
  %.pre180 = load i32, ptr %11, align 4, !tbaa !11
  br label %._crit_edge138

._crit_edge138:                                   ; preds = %.preheader134.lr.ph, %._crit_edge138.loopexit, %.preheader135
  %64 = phi i32 [ %.pre180, %._crit_edge138.loopexit ], [ %37, %.preheader135 ], [ %37, %.preheader134.lr.ph ]
  %65 = phi i32 [ %60, %._crit_edge138.loopexit ], [ %38, %.preheader135 ], [ %38, %.preheader134.lr.ph ]
  %66 = phi i32 [ %60, %._crit_edge138.loopexit ], [ %39, %.preheader135 ], [ %39, %.preheader134.lr.ph ]
  %67 = add nuw nsw i32 %.0105139, 1
  %68 = icmp slt i32 %67, %64
  br i1 %68, label %.preheader135, label %.preheader133, !llvm.loop !17

.preheader132:                                    ; preds = %.preheader132.lr.ph, %._crit_edge145
  %69 = phi i32 [ %96, %._crit_edge145 ], [ %64, %.preheader132.lr.ph ]
  %70 = phi i32 [ %97, %._crit_edge145 ], [ %.pr, %.preheader132.lr.ph ]
  %71 = phi i32 [ %98, %._crit_edge145 ], [ %.pr, %.preheader132.lr.ph ]
  %.1106146 = phi i32 [ %99, %._crit_edge145 ], [ 0, %.preheader132.lr.ph ]
  %72 = icmp sgt i32 %71, 0
  br i1 %72, label %.preheader131.lr.ph, label %._crit_edge145

.preheader131.lr.ph:                              ; preds = %.preheader132
  %73 = load i32, ptr %9, align 4, !tbaa !11
  %74 = icmp sgt i32 %73, 0
  br i1 %74, label %.preheader131, label %._crit_edge145

.preheader130:                                    ; preds = %._crit_edge145
  %75 = icmp sgt i32 %96, 0
  br i1 %75, label %.preheader129.lr.ph, label %._crit_edge169

.preheader129.lr.ph:                              ; preds = %.preheader130
  %.pr200 = load i32, ptr %10, align 4, !tbaa !11
  %76 = icmp sgt i32 %.pr200, 0
  br i1 %76, label %.preheader129, label %._crit_edge169

.preheader131:                                    ; preds = %.preheader131.lr.ph, %._crit_edge143
  %77 = phi i32 [ %92, %._crit_edge143 ], [ %70, %.preheader131.lr.ph ]
  %78 = phi i32 [ %93, %._crit_edge143 ], [ %73, %.preheader131.lr.ph ]
  %.1111144 = phi i32 [ %94, %._crit_edge143 ], [ 0, %.preheader131.lr.ph ]
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %.lr.ph142, label %._crit_edge143

.lr.ph142:                                        ; preds = %.preheader131, %.lr.ph142
  %.1141 = phi i32 [ %89, %.lr.ph142 ], [ 0, %.preheader131 ]
  %80 = load i32, ptr %12, align 4, !tbaa !11
  %81 = load i32, ptr %13, align 4, !tbaa !11
  %82 = mul i32 %81, %.1106146
  %reass.add119 = add i32 %82, %.1111144
  %reass.mul120 = mul i32 %reass.add119, %80
  %83 = add i32 %reass.mul120, %.1141
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds double, ptr %5, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !5
  %87 = fptrunc double %86 to float
  store float %87, ptr %16, align 4, !tbaa !9
  %88 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %89 = add nuw nsw i32 %.1141, 1
  %90 = load i32, ptr %9, align 4, !tbaa !11
  %91 = icmp slt i32 %89, %90
  br i1 %91, label %.lr.ph142, label %._crit_edge143.loopexit, !llvm.loop !18

._crit_edge143.loopexit:                          ; preds = %.lr.ph142
  %.pre181 = load i32, ptr %10, align 4, !tbaa !11
  br label %._crit_edge143

._crit_edge143:                                   ; preds = %._crit_edge143.loopexit, %.preheader131
  %92 = phi i32 [ %.pre181, %._crit_edge143.loopexit ], [ %77, %.preheader131 ]
  %93 = phi i32 [ %90, %._crit_edge143.loopexit ], [ %78, %.preheader131 ]
  %94 = add nuw nsw i32 %.1111144, 1
  %95 = icmp slt i32 %94, %92
  br i1 %95, label %.preheader131, label %._crit_edge145.loopexit, !llvm.loop !19

._crit_edge145.loopexit:                          ; preds = %._crit_edge143
  %.pre182 = load i32, ptr %11, align 4, !tbaa !11
  br label %._crit_edge145

._crit_edge145:                                   ; preds = %.preheader131.lr.ph, %._crit_edge145.loopexit, %.preheader132
  %96 = phi i32 [ %.pre182, %._crit_edge145.loopexit ], [ %69, %.preheader132 ], [ %69, %.preheader131.lr.ph ]
  %97 = phi i32 [ %92, %._crit_edge145.loopexit ], [ %70, %.preheader132 ], [ %70, %.preheader131.lr.ph ]
  %98 = phi i32 [ %92, %._crit_edge145.loopexit ], [ %71, %.preheader132 ], [ %71, %.preheader131.lr.ph ]
  %99 = add nuw nsw i32 %.1106146, 1
  %100 = icmp slt i32 %99, %96
  br i1 %100, label %.preheader132, label %.preheader130, !llvm.loop !20

.preheader129:                                    ; preds = %.preheader129.lr.ph, %._crit_edge152
  %101 = phi i32 [ %128, %._crit_edge152 ], [ %96, %.preheader129.lr.ph ]
  %102 = phi i32 [ %129, %._crit_edge152 ], [ %.pr200, %.preheader129.lr.ph ]
  %103 = phi i32 [ %130, %._crit_edge152 ], [ %.pr200, %.preheader129.lr.ph ]
  %.2107153 = phi i32 [ %131, %._crit_edge152 ], [ 0, %.preheader129.lr.ph ]
  %104 = icmp sgt i32 %103, 0
  br i1 %104, label %.preheader128.lr.ph, label %._crit_edge152

.preheader128.lr.ph:                              ; preds = %.preheader129
  %105 = load i32, ptr %9, align 4, !tbaa !11
  %106 = icmp sgt i32 %105, 0
  br i1 %106, label %.preheader128, label %._crit_edge152

.preheader127:                                    ; preds = %._crit_edge152
  %107 = icmp sgt i32 %128, 0
  br i1 %107, label %.preheader126.lr.ph, label %._crit_edge169

.preheader126.lr.ph:                              ; preds = %.preheader127
  %.pr195 = load i32, ptr %10, align 4, !tbaa !11
  %108 = icmp sgt i32 %.pr195, 0
  br i1 %108, label %.preheader126, label %._crit_edge169

.preheader128:                                    ; preds = %.preheader128.lr.ph, %._crit_edge150
  %109 = phi i32 [ %124, %._crit_edge150 ], [ %102, %.preheader128.lr.ph ]
  %110 = phi i32 [ %125, %._crit_edge150 ], [ %105, %.preheader128.lr.ph ]
  %.2112151 = phi i32 [ %126, %._crit_edge150 ], [ 0, %.preheader128.lr.ph ]
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph149, label %._crit_edge150

.lr.ph149:                                        ; preds = %.preheader128, %.lr.ph149
  %.2148 = phi i32 [ %121, %.lr.ph149 ], [ 0, %.preheader128 ]
  %112 = load i32, ptr %12, align 4, !tbaa !11
  %113 = load i32, ptr %13, align 4, !tbaa !11
  %114 = mul i32 %113, %.2107153
  %reass.add117 = add i32 %114, %.2112151
  %reass.mul118 = mul i32 %reass.add117, %112
  %115 = add i32 %reass.mul118, %.2148
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %6, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !5
  %119 = fptrunc double %118 to float
  store float %119, ptr %16, align 4, !tbaa !9
  %120 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %121 = add nuw nsw i32 %.2148, 1
  %122 = load i32, ptr %9, align 4, !tbaa !11
  %123 = icmp slt i32 %121, %122
  br i1 %123, label %.lr.ph149, label %._crit_edge150.loopexit, !llvm.loop !21

._crit_edge150.loopexit:                          ; preds = %.lr.ph149
  %.pre183 = load i32, ptr %10, align 4, !tbaa !11
  br label %._crit_edge150

._crit_edge150:                                   ; preds = %._crit_edge150.loopexit, %.preheader128
  %124 = phi i32 [ %.pre183, %._crit_edge150.loopexit ], [ %109, %.preheader128 ]
  %125 = phi i32 [ %122, %._crit_edge150.loopexit ], [ %110, %.preheader128 ]
  %126 = add nuw nsw i32 %.2112151, 1
  %127 = icmp slt i32 %126, %124
  br i1 %127, label %.preheader128, label %._crit_edge152.loopexit, !llvm.loop !22

._crit_edge152.loopexit:                          ; preds = %._crit_edge150
  %.pre184 = load i32, ptr %11, align 4, !tbaa !11
  br label %._crit_edge152

._crit_edge152:                                   ; preds = %.preheader128.lr.ph, %._crit_edge152.loopexit, %.preheader129
  %128 = phi i32 [ %.pre184, %._crit_edge152.loopexit ], [ %101, %.preheader129 ], [ %101, %.preheader128.lr.ph ]
  %129 = phi i32 [ %124, %._crit_edge152.loopexit ], [ %102, %.preheader129 ], [ %102, %.preheader128.lr.ph ]
  %130 = phi i32 [ %124, %._crit_edge152.loopexit ], [ %103, %.preheader129 ], [ %103, %.preheader128.lr.ph ]
  %131 = add nuw nsw i32 %.2107153, 1
  %132 = icmp slt i32 %131, %128
  br i1 %132, label %.preheader129, label %.preheader127, !llvm.loop !23

.preheader126:                                    ; preds = %.preheader126.lr.ph, %._crit_edge159
  %133 = phi i32 [ %160, %._crit_edge159 ], [ %128, %.preheader126.lr.ph ]
  %134 = phi i32 [ %161, %._crit_edge159 ], [ %.pr195, %.preheader126.lr.ph ]
  %135 = phi i32 [ %162, %._crit_edge159 ], [ %.pr195, %.preheader126.lr.ph ]
  %.3108160 = phi i32 [ %163, %._crit_edge159 ], [ 0, %.preheader126.lr.ph ]
  %136 = icmp sgt i32 %135, 0
  br i1 %136, label %.preheader125.lr.ph, label %._crit_edge159

.preheader125.lr.ph:                              ; preds = %.preheader126
  %137 = load i32, ptr %9, align 4, !tbaa !11
  %138 = icmp sgt i32 %137, 0
  br i1 %138, label %.preheader125, label %._crit_edge159

.preheader124:                                    ; preds = %._crit_edge159
  %139 = icmp sgt i32 %160, 0
  br i1 %139, label %.preheader123.lr.ph, label %._crit_edge169

.preheader123.lr.ph:                              ; preds = %.preheader124
  %.pr202.pr = load i32, ptr %10, align 4, !tbaa !11
  %140 = icmp sgt i32 %.pr202.pr, 0
  br i1 %140, label %.preheader123, label %._crit_edge169

.preheader125:                                    ; preds = %.preheader125.lr.ph, %._crit_edge157
  %141 = phi i32 [ %156, %._crit_edge157 ], [ %134, %.preheader125.lr.ph ]
  %142 = phi i32 [ %157, %._crit_edge157 ], [ %137, %.preheader125.lr.ph ]
  %.3113158 = phi i32 [ %158, %._crit_edge157 ], [ 0, %.preheader125.lr.ph ]
  %143 = icmp sgt i32 %142, 0
  br i1 %143, label %.lr.ph156, label %._crit_edge157

.lr.ph156:                                        ; preds = %.preheader125, %.lr.ph156
  %.3155 = phi i32 [ %153, %.lr.ph156 ], [ 0, %.preheader125 ]
  %144 = load i32, ptr %12, align 4, !tbaa !11
  %145 = load i32, ptr %13, align 4, !tbaa !11
  %146 = mul i32 %145, %.3108160
  %reass.add115 = add i32 %146, %.3113158
  %reass.mul116 = mul i32 %reass.add115, %144
  %147 = add i32 %reass.mul116, %.3155
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %7, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !5
  %151 = fptrunc double %150 to float
  store float %151, ptr %16, align 4, !tbaa !9
  %152 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %153 = add nuw nsw i32 %.3155, 1
  %154 = load i32, ptr %9, align 4, !tbaa !11
  %155 = icmp slt i32 %153, %154
  br i1 %155, label %.lr.ph156, label %._crit_edge157.loopexit, !llvm.loop !24

._crit_edge157.loopexit:                          ; preds = %.lr.ph156
  %.pre185 = load i32, ptr %10, align 4, !tbaa !11
  br label %._crit_edge157

._crit_edge157:                                   ; preds = %._crit_edge157.loopexit, %.preheader125
  %156 = phi i32 [ %.pre185, %._crit_edge157.loopexit ], [ %141, %.preheader125 ]
  %157 = phi i32 [ %154, %._crit_edge157.loopexit ], [ %142, %.preheader125 ]
  %158 = add nuw nsw i32 %.3113158, 1
  %159 = icmp slt i32 %158, %156
  br i1 %159, label %.preheader125, label %._crit_edge159.loopexit, !llvm.loop !25

._crit_edge159.loopexit:                          ; preds = %._crit_edge157
  %.pre186 = load i32, ptr %11, align 4, !tbaa !11
  br label %._crit_edge159

._crit_edge159:                                   ; preds = %.preheader125.lr.ph, %._crit_edge159.loopexit, %.preheader126
  %160 = phi i32 [ %.pre186, %._crit_edge159.loopexit ], [ %133, %.preheader126 ], [ %133, %.preheader125.lr.ph ]
  %161 = phi i32 [ %156, %._crit_edge159.loopexit ], [ %134, %.preheader126 ], [ %134, %.preheader125.lr.ph ]
  %162 = phi i32 [ %156, %._crit_edge159.loopexit ], [ %135, %.preheader126 ], [ %135, %.preheader125.lr.ph ]
  %163 = add nuw nsw i32 %.3108160, 1
  %164 = icmp slt i32 %163, %160
  br i1 %164, label %.preheader126, label %.preheader124, !llvm.loop !26

.preheader123:                                    ; preds = %.preheader123.lr.ph, %._crit_edge166
  %165 = phi i32 [ %190, %._crit_edge166 ], [ %160, %.preheader123.lr.ph ]
  %166 = phi i32 [ %191, %._crit_edge166 ], [ %.pr202.pr, %.preheader123.lr.ph ]
  %167 = phi i32 [ %192, %._crit_edge166 ], [ %.pr202.pr, %.preheader123.lr.ph ]
  %.4109167 = phi i32 [ %193, %._crit_edge166 ], [ 0, %.preheader123.lr.ph ]
  %168 = icmp sgt i32 %167, 0
  br i1 %168, label %.preheader.lr.ph, label %._crit_edge166

.preheader.lr.ph:                                 ; preds = %.preheader123
  %169 = load i32, ptr %9, align 4, !tbaa !11
  %170 = icmp sgt i32 %169, 0
  br i1 %170, label %.preheader, label %._crit_edge166

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge164
  %171 = phi i32 [ %186, %._crit_edge164 ], [ %166, %.preheader.lr.ph ]
  %172 = phi i32 [ %187, %._crit_edge164 ], [ %169, %.preheader.lr.ph ]
  %.4114165 = phi i32 [ %188, %._crit_edge164 ], [ 0, %.preheader.lr.ph ]
  %173 = icmp sgt i32 %172, 0
  br i1 %173, label %.lr.ph163, label %._crit_edge164

.lr.ph163:                                        ; preds = %.preheader, %.lr.ph163
  %.4162 = phi i32 [ %183, %.lr.ph163 ], [ 0, %.preheader ]
  %174 = load i32, ptr %12, align 4, !tbaa !11
  %175 = load i32, ptr %13, align 4, !tbaa !11
  %176 = mul i32 %175, %.4109167
  %reass.add = add i32 %176, %.4114165
  %reass.mul = mul i32 %reass.add, %174
  %177 = add i32 %reass.mul, %.4162
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %8, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !5
  %181 = fptrunc double %180 to float
  store float %181, ptr %16, align 4, !tbaa !9
  %182 = call i64 @fwrite(ptr noundef nonnull %16, i64 noundef 4, i64 noundef 1, ptr noundef %17)
  %183 = add nuw nsw i32 %.4162, 1
  %184 = load i32, ptr %9, align 4, !tbaa !11
  %185 = icmp slt i32 %183, %184
  br i1 %185, label %.lr.ph163, label %._crit_edge164.loopexit, !llvm.loop !27

._crit_edge164.loopexit:                          ; preds = %.lr.ph163
  %.pre187 = load i32, ptr %10, align 4, !tbaa !11
  br label %._crit_edge164

._crit_edge164:                                   ; preds = %._crit_edge164.loopexit, %.preheader
  %186 = phi i32 [ %.pre187, %._crit_edge164.loopexit ], [ %171, %.preheader ]
  %187 = phi i32 [ %184, %._crit_edge164.loopexit ], [ %172, %.preheader ]
  %188 = add nuw nsw i32 %.4114165, 1
  %189 = icmp slt i32 %188, %186
  br i1 %189, label %.preheader, label %._crit_edge166.loopexit, !llvm.loop !28

._crit_edge166.loopexit:                          ; preds = %._crit_edge164
  %.pre188 = load i32, ptr %11, align 4, !tbaa !11
  br label %._crit_edge166

._crit_edge166:                                   ; preds = %.preheader.lr.ph, %._crit_edge166.loopexit, %.preheader123
  %190 = phi i32 [ %.pre188, %._crit_edge166.loopexit ], [ %165, %.preheader123 ], [ %165, %.preheader.lr.ph ]
  %191 = phi i32 [ %186, %._crit_edge166.loopexit ], [ %166, %.preheader123 ], [ %166, %.preheader.lr.ph ]
  %192 = phi i32 [ %186, %._crit_edge166.loopexit ], [ %167, %.preheader123 ], [ %167, %.preheader.lr.ph ]
  %193 = add nuw nsw i32 %.4109167, 1
  %194 = icmp slt i32 %193, %190
  br i1 %194, label %.preheader123, label %._crit_edge169, !llvm.loop !29

._crit_edge169:                                   ; preds = %._crit_edge166, %.preheader135.lr.ph, %.preheader132.lr.ph, %.preheader126.lr.ph, %.preheader129.lr.ph, %15, %.preheader133, %.preheader130, %.preheader127, %.preheader123.lr.ph, %.preheader124
  %195 = tail call i32 @fclose(ptr noundef %17)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  ret void
}

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #2

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

attributes #0 = { nofree 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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" }
attributes #3 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14, !16}
!16 = !{!"llvm.loop.unswitch.partial.disable"}
!17 = distinct !{!17, !14, !16}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14, !16}
!20 = distinct !{!20, !14, !16}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14, !16}
!23 = distinct !{!23, !14, !16}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14, !16}
!26 = distinct !{!26, !14, !16}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14, !16}
!29 = distinct !{!29, !14, !16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass