; LLVM IR from sbu-fsl/kernel-ml :: src/models (nfs_net_data)

; 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.nfs_class_net = type { i32, ptr, ptr, ptr, ptr, %struct.model_data, %struct.model_multithreading, %struct.model_state, ptr, ptr, %struct.nfs_net_data_stat, %struct.nfs_norm_data_stat, float, i32 }
%struct.model_data = type { ptr, ptr, ptr, ptr }
%struct.model_multithreading = type { [32 x %struct.mt_buffer], [32 x i32], i32, i32, i32, i64, ptr }
%struct.mt_buffer = type { ptr, ptr }
%struct.model_state = type { i8, i32 }
%struct.nfs_net_data_stat = type { i64 }
%struct.nfs_norm_data_stat = type { i64, ptr, ptr, ptr, ptr }
%struct.matrix = type { i32, i32, i32, %union.anon }
%union.anon = type { ptr }

@nfs_data_processing.timing_starts = external hidden global double, align 8
@nfs_data_processing.last_file_pg_idx = external hidden global i32, align 4
@nfs_data_processing.last_nfs_pg_offset = external hidden global i32, align 4
@nfs_data_processing.last_nfs_readdone_time = external hidden global double, align 8
@nfs_data_processing.last_nfs_read_time = external hidden global double, align 8
@nfs_data_processing.total_file_pg_idx_diffs = external hidden global double, align 8
@nfs_data_processing.number_of_file_pg_idx_diffs = external hidden global double, align 8
@nfs_data_processing.average_vmscan_shrink_page = external hidden global double, align 8
@nfs_data_processing.number_of_vmscan_shrink_page = external hidden global double, align 8
@nfs_data_processing.average_nfs_read_time_diff = external hidden global double, align 8
@nfs_data_processing.number_of_nfs_read = external hidden global double, align 8
@nfs_data_processing.average_nfs_pg_idx_diff = external hidden global double, align 8
@nfs_data_processing.number_of_nfs_pg_idx = external hidden global double, align 8
@nfs_data_processing.average_nfs_readdone_time_diff = external hidden global double, align 8
@nfs_data_processing.number_of_nfs_readdone = external hidden global double, align 8
@nfs_data_processing.number_of_nfs_rtt = external hidden global double, align 8
@nfs_data_processing.average_nfs_rtt = external hidden global double, align 8
@fhandle_map = external hidden global [16 x [2 x double]], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @nfs_normalized_online_data(ptr noundef, i32 noundef, i1 noundef zeroext) #0

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

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

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @nfs_data_processing(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i1 noundef zeroext %4, i1 noundef zeroext %5) #0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store i32 %2, ptr %10, align 4, !tbaa !9
  store i32 %3, ptr %11, align 4, !tbaa !9
  %16 = zext i1 %4 to i8
  store i8 %16, ptr %12, align 1, !tbaa !11
  %17 = zext i1 %5 to i8
  store i8 %17, ptr %13, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  %18 = load i8, ptr %13, align 1, !tbaa !11, !range !13, !noundef !14
  %19 = trunc i8 %18 to i1
  br i1 %19, label %20, label %21

20:                                               ; preds = %6
  store double 0.000000e+00, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !15
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %399

21:                                               ; preds = %6
  %22 = load ptr, ptr %9, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.nfs_class_net, ptr %22, i32 0, i32 10
  %24 = getelementptr inbounds %struct.nfs_net_data_stat, ptr %23, i32 0, i32 0
  %25 = load i64, ptr %24, align 8, !tbaa !17
  %26 = icmp eq i64 %25, 0
  br i1 %26, label %27, label %31

27:                                               ; preds = %21
  %28 = load ptr, ptr %8, align 8, !tbaa !5
  %29 = getelementptr inbounds double, ptr %28, i64 0
  %30 = load double, ptr %29, align 8, !tbaa !15
  store double %30, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !15
  br label %31

31:                                               ; preds = %27, %21
  %32 = load ptr, ptr %9, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.nfs_class_net, ptr %32, i32 0, i32 10
  %34 = getelementptr inbounds %struct.nfs_net_data_stat, ptr %33, i32 0, i32 0
  %35 = load i64, ptr %34, align 8, !tbaa !17
  %36 = add nsw i64 %35, 1
  store i64 %36, ptr %34, align 8, !tbaa !17
  %37 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %37, label %218 [
    i32 1, label %38
    i32 5, label %59
    i32 3, label %67
    i32 4, label %142
  ]

38:                                               ; preds = %31
  %39 = load i32, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !9
  %40 = icmp ne i32 %39, -1
  br i1 %40, label %41, label %52

41:                                               ; preds = %38
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = getelementptr inbounds double, ptr %42, i64 3
  %44 = load double, ptr %43, align 8, !tbaa !15
  %45 = fptosi double %44 to i32
  %46 = load i32, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !9
  %47 = sub nsw i32 %45, %46
  %48 = call i32 @llvm.abs.i32(i32 %47, i1 true)
  %49 = sitofp i32 %48 to double
  %50 = load double, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !15
  %51 = fadd double %50, %49
  store double %51, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !15
  br label %52

52:                                               ; preds = %41, %38
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = getelementptr inbounds double, ptr %53, i64 3
  %55 = load double, ptr %54, align 8, !tbaa !15
  %56 = fptosi double %55 to i32
  store i32 %56, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !9
  %57 = load double, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !15
  %58 = fadd double %57, 1.000000e+00
  store double %58, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !15
  br label %218

59:                                               ; preds = %31
  %60 = load ptr, ptr %8, align 8, !tbaa !5
  %61 = getelementptr inbounds double, ptr %60, i64 3
  %62 = load double, ptr %61, align 8, !tbaa !15
  %63 = load double, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !15
  %64 = fadd double %63, %62
  store double %64, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !15
  %65 = load double, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !15
  %66 = fadd double %65, 1.000000e+00
  store double %66, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !15
  br label %218

67:                                               ; preds = %31
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %68

68:                                               ; preds = %80, %67
  %69 = load i32, ptr %14, align 4, !tbaa !9
  %70 = icmp slt i32 %69, 16
  br i1 %70, label %71, label %83

71:                                               ; preds = %68
  %72 = load i32, ptr %14, align 4, !tbaa !9
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %73
  %75 = getelementptr inbounds [2 x double], ptr %74, i64 0, i64 0
  %76 = load double, ptr %75, align 16, !tbaa !15
  %77 = fcmp oeq double %76, 0.000000e+00
  br i1 %77, label %78, label %79

78:                                               ; preds = %71
  br label %83

79:                                               ; preds = %71
  br label %80

80:                                               ; preds = %79
  %81 = load i32, ptr %14, align 4, !tbaa !9
  %82 = add nsw i32 %81, 1
  store i32 %82, ptr %14, align 4, !tbaa !9
  br label %68, !llvm.loop !26

83:                                               ; preds = %78, %68
  %84 = load i32, ptr %14, align 4, !tbaa !9
  %85 = icmp slt i32 %84, 16
  br i1 %85, label %86, label %101

86:                                               ; preds = %83
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = getelementptr inbounds double, ptr %87, i64 3
  %89 = load double, ptr %88, align 8, !tbaa !15
  %90 = load i32, ptr %14, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %91
  %93 = getelementptr inbounds [2 x double], ptr %92, i64 0, i64 0
  store double %89, ptr %93, align 16, !tbaa !15
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds double, ptr %94, i64 0
  %96 = load double, ptr %95, align 8, !tbaa !15
  %97 = load i32, ptr %14, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %98
  %100 = getelementptr inbounds [2 x double], ptr %99, i64 0, i64 1
  store double %96, ptr %100, align 8, !tbaa !15
  br label %101

101:                                              ; preds = %86, %83
  %102 = load double, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !15
  %103 = fadd double %102, 1.000000e+00
  store double %103, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !15
  %104 = load double, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !15
  %105 = fcmp oeq double %104, -1.000000e+00
  br i1 %105, label %106, label %110

106:                                              ; preds = %101
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %107, i64 0
  %109 = load double, ptr %108, align 8, !tbaa !15
  store double %109, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !15
  br label %121

110:                                              ; preds = %101
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = getelementptr inbounds double, ptr %111, i64 0
  %113 = load double, ptr %112, align 8, !tbaa !15
  %114 = load double, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !15
  %115 = fsub double %113, %114
  %116 = load double, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !15
  %117 = fadd double %116, %115
  store double %117, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !15
  %118 = load ptr, ptr %8, align 8, !tbaa !5
  %119 = getelementptr inbounds double, ptr %118, i64 0
  %120 = load double, ptr %119, align 8, !tbaa !15
  store double %120, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !15
  br label %121

121:                                              ; preds = %110, %106
  %122 = load i32, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !9
  %123 = icmp ne i32 %122, -1
  br i1 %123, label %124, label %135

124:                                              ; preds = %121
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds double, ptr %125, i64 4
  %127 = load double, ptr %126, align 8, !tbaa !15
  %128 = fptosi double %127 to i32
  %129 = load i32, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !9
  %130 = sub nsw i32 %128, %129
  %131 = call i32 @llvm.abs.i32(i32 %130, i1 true)
  %132 = sitofp i32 %131 to double
  %133 = load double, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !15
  %134 = fadd double %133, %132
  store double %134, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !15
  br label %135

135:                                              ; preds = %124, %121
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = getelementptr inbounds double, ptr %136, i64 4
  %138 = load double, ptr %137, align 8, !tbaa !15
  %139 = fptosi double %138 to i32
  store i32 %139, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !9
  %140 = load double, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !15
  %141 = fadd double %140, 1.000000e+00
  store double %141, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !15
  br label %218

142:                                              ; preds = %31
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %143

143:                                              ; preds = %158, %142
  %144 = load i32, ptr %14, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 16
  br i1 %145, label %146, label %161

146:                                              ; preds = %143
  %147 = load i32, ptr %14, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %148
  %150 = getelementptr inbounds [2 x double], ptr %149, i64 0, i64 0
  %151 = load double, ptr %150, align 16, !tbaa !15
  %152 = load ptr, ptr %8, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %152, i64 3
  %154 = load double, ptr %153, align 8, !tbaa !15
  %155 = fcmp oeq double %151, %154
  br i1 %155, label %156, label %157

156:                                              ; preds = %146
  br label %161

157:                                              ; preds = %146
  br label %158

158:                                              ; preds = %157
  %159 = load i32, ptr %14, align 4, !tbaa !9
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr %14, align 4, !tbaa !9
  br label %143, !llvm.loop !28

161:                                              ; preds = %156, %143
  %162 = load i32, ptr %14, align 4, !tbaa !9
  %163 = icmp slt i32 %162, 16
  br i1 %163, label %164, label %197

164:                                              ; preds = %161
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %165, i64 0
  %167 = load double, ptr %166, align 8, !tbaa !15
  %168 = load i32, ptr %14, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %169
  %171 = getelementptr inbounds [2 x double], ptr %170, i64 0, i64 1
  %172 = load double, ptr %171, align 8, !tbaa !15
  %173 = fcmp ogt double %167, %172
  br i1 %173, label %174, label %188

174:                                              ; preds = %164
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = getelementptr inbounds double, ptr %175, i64 0
  %177 = load double, ptr %176, align 8, !tbaa !15
  %178 = load i32, ptr %14, align 4, !tbaa !9
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %179
  %181 = getelementptr inbounds [2 x double], ptr %180, i64 0, i64 1
  %182 = load double, ptr %181, align 8, !tbaa !15
  %183 = fsub double %177, %182
  %184 = load double, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !15
  %185 = fadd double %184, %183
  store double %185, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !15
  %186 = load double, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !15
  %187 = fadd double %186, 1.000000e+00
  store double %187, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !15
  br label %188

188:                                              ; preds = %174, %164
  %189 = load i32, ptr %14, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %190
  %192 = getelementptr inbounds [2 x double], ptr %191, i64 0, i64 0
  store double 0.000000e+00, ptr %192, align 16, !tbaa !15
  %193 = load i32, ptr %14, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds [16 x [2 x double]], ptr @fhandle_map, i64 0, i64 %194
  %196 = getelementptr inbounds [2 x double], ptr %195, i64 0, i64 1
  store double 0.000000e+00, ptr %196, align 8, !tbaa !15
  br label %197

197:                                              ; preds = %188, %161
  %198 = load double, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !15
  %199 = fadd double %198, 1.000000e+00
  store double %199, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !15
  %200 = load double, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !15
  %201 = fcmp oeq double %200, -1.000000e+00
  br i1 %201, label %202, label %206

202:                                              ; preds = %197
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds double, ptr %203, i64 0
  %205 = load double, ptr %204, align 8, !tbaa !15
  store double %205, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !15
  br label %217

206:                                              ; preds = %197
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 0
  %209 = load double, ptr %208, align 8, !tbaa !15
  %210 = load double, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !15
  %211 = fsub double %209, %210
  %212 = load double, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !15
  %213 = fadd double %212, %211
  store double %213, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !15
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  %215 = getelementptr inbounds double, ptr %214, i64 0
  %216 = load double, ptr %215, align 8, !tbaa !15
  store double %216, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !15
  br label %217

217:                                              ; preds = %206, %202
  br label %218

218:                                              ; preds = %217, %135, %59, %52, %31
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %219, i64 0
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = load double, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !15
  %223 = fsub double %221, %222
  %224 = fcmp ogt double %223, 1.000000e+06
  br i1 %224, label %225, label %398

225:                                              ; preds = %218
  %226 = load ptr, ptr %9, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.nfs_class_net, ptr %226, i32 0, i32 10
  %228 = getelementptr inbounds %struct.nfs_net_data_stat, ptr %227, i32 0, i32 0
  %229 = load i64, ptr %228, align 8, !tbaa !17
  %230 = sitofp i64 %229 to double
  %231 = load ptr, ptr %9, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.nfs_class_net, ptr %231, i32 0, i32 8
  %233 = load ptr, ptr %232, align 8, !tbaa !29
  %234 = getelementptr inbounds %struct.matrix, ptr %233, i32 0, i32 3
  %235 = load ptr, ptr %234, align 8, !tbaa !30
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.nfs_class_net, ptr %236, i32 0, i32 8
  %238 = load ptr, ptr %237, align 8, !tbaa !29
  %239 = getelementptr inbounds %struct.matrix, ptr %238, i32 0, i32 1
  %240 = load i32, ptr %239, align 4, !tbaa !31
  %241 = mul nsw i32 0, %240
  %242 = add nsw i32 %241, 0
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %235, i64 %243
  store double %230, ptr %244, align 8, !tbaa !15
  %245 = load double, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !15
  %246 = fcmp ogt double %245, 0.000000e+00
  br i1 %246, label %247, label %265

247:                                              ; preds = %225
  %248 = load double, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !15
  %249 = load double, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !15
  %250 = fdiv double %248, %249
  %251 = load ptr, ptr %9, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.nfs_class_net, ptr %251, i32 0, i32 8
  %253 = load ptr, ptr %252, align 8, !tbaa !29
  %254 = getelementptr inbounds %struct.matrix, ptr %253, i32 0, i32 3
  %255 = load ptr, ptr %254, align 8, !tbaa !30
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.nfs_class_net, ptr %256, i32 0, i32 8
  %258 = load ptr, ptr %257, align 8, !tbaa !29
  %259 = getelementptr inbounds %struct.matrix, ptr %258, i32 0, i32 1
  %260 = load i32, ptr %259, align 4, !tbaa !31
  %261 = mul nsw i32 0, %260
  %262 = add nsw i32 %261, 5
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds double, ptr %255, i64 %263
  store double %250, ptr %264, align 8, !tbaa !15
  br label %265

265:                                              ; preds = %247, %225
  %266 = load double, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !15
  %267 = fcmp ogt double %266, 0.000000e+00
  br i1 %267, label %268, label %286

268:                                              ; preds = %265
  %269 = load double, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !15
  %270 = load double, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !15
  %271 = fdiv double %269, %270
  %272 = load ptr, ptr %9, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.nfs_class_net, ptr %272, i32 0, i32 8
  %274 = load ptr, ptr %273, align 8, !tbaa !29
  %275 = getelementptr inbounds %struct.matrix, ptr %274, i32 0, i32 3
  %276 = load ptr, ptr %275, align 8, !tbaa !30
  %277 = load ptr, ptr %9, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.nfs_class_net, ptr %277, i32 0, i32 8
  %279 = load ptr, ptr %278, align 8, !tbaa !29
  %280 = getelementptr inbounds %struct.matrix, ptr %279, i32 0, i32 1
  %281 = load i32, ptr %280, align 4, !tbaa !31
  %282 = mul nsw i32 0, %281
  %283 = add nsw i32 %282, 6
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %276, i64 %284
  store double %271, ptr %285, align 8, !tbaa !15
  br label %286

286:                                              ; preds = %268, %265
  %287 = load i32, ptr %10, align 4, !tbaa !9
  %288 = sitofp i32 %287 to double
  %289 = fdiv double %288, 2.621440e+05
  %290 = load ptr, ptr %9, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.nfs_class_net, ptr %290, i32 0, i32 8
  %292 = load ptr, ptr %291, align 8, !tbaa !29
  %293 = getelementptr inbounds %struct.matrix, ptr %292, i32 0, i32 3
  %294 = load ptr, ptr %293, align 8, !tbaa !30
  %295 = load ptr, ptr %9, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.nfs_class_net, ptr %295, i32 0, i32 8
  %297 = load ptr, ptr %296, align 8, !tbaa !29
  %298 = getelementptr inbounds %struct.matrix, ptr %297, i32 0, i32 1
  %299 = load i32, ptr %298, align 4, !tbaa !31
  %300 = mul nsw i32 0, %299
  %301 = add nsw i32 %300, 7
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %294, i64 %302
  store double %289, ptr %303, align 8, !tbaa !15
  %304 = load double, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !15
  %305 = fcmp ogt double %304, 0.000000e+00
  br i1 %305, label %306, label %324

306:                                              ; preds = %286
  %307 = load double, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !15
  %308 = load double, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !15
  %309 = fdiv double %307, %308
  %310 = load ptr, ptr %9, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.nfs_class_net, ptr %310, i32 0, i32 8
  %312 = load ptr, ptr %311, align 8, !tbaa !29
  %313 = getelementptr inbounds %struct.matrix, ptr %312, i32 0, i32 3
  %314 = load ptr, ptr %313, align 8, !tbaa !30
  %315 = load ptr, ptr %9, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.nfs_class_net, ptr %315, i32 0, i32 8
  %317 = load ptr, ptr %316, align 8, !tbaa !29
  %318 = getelementptr inbounds %struct.matrix, ptr %317, i32 0, i32 1
  %319 = load i32, ptr %318, align 4, !tbaa !31
  %320 = mul nsw i32 0, %319
  %321 = add nsw i32 %320, 2
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds double, ptr %314, i64 %322
  store double %309, ptr %323, align 8, !tbaa !15
  br label %324

324:                                              ; preds = %306, %286
  %325 = load double, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !15
  %326 = fcmp ogt double %325, 0.000000e+00
  br i1 %326, label %327, label %345

327:                                              ; preds = %324
  %328 = load double, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !15
  %329 = load double, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !15
  %330 = fdiv double %328, %329
  %331 = load ptr, ptr %9, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.nfs_class_net, ptr %331, i32 0, i32 8
  %333 = load ptr, ptr %332, align 8, !tbaa !29
  %334 = getelementptr inbounds %struct.matrix, ptr %333, i32 0, i32 3
  %335 = load ptr, ptr %334, align 8, !tbaa !30
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.nfs_class_net, ptr %336, i32 0, i32 8
  %338 = load ptr, ptr %337, align 8, !tbaa !29
  %339 = getelementptr inbounds %struct.matrix, ptr %338, i32 0, i32 1
  %340 = load i32, ptr %339, align 4, !tbaa !31
  %341 = mul nsw i32 0, %340
  %342 = add nsw i32 %341, 4
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %335, i64 %343
  store double %330, ptr %344, align 8, !tbaa !15
  br label %345

345:                                              ; preds = %327, %324
  %346 = load double, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !15
  %347 = fcmp ogt double %346, 0.000000e+00
  br i1 %347, label %348, label %366

348:                                              ; preds = %345
  %349 = load double, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !15
  %350 = load double, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !15
  %351 = fdiv double %349, %350
  %352 = load ptr, ptr %9, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.nfs_class_net, ptr %352, i32 0, i32 8
  %354 = load ptr, ptr %353, align 8, !tbaa !29
  %355 = getelementptr inbounds %struct.matrix, ptr %354, i32 0, i32 3
  %356 = load ptr, ptr %355, align 8, !tbaa !30
  %357 = load ptr, ptr %9, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.nfs_class_net, ptr %357, i32 0, i32 8
  %359 = load ptr, ptr %358, align 8, !tbaa !29
  %360 = getelementptr inbounds %struct.matrix, ptr %359, i32 0, i32 1
  %361 = load i32, ptr %360, align 4, !tbaa !31
  %362 = mul nsw i32 0, %361
  %363 = add nsw i32 %362, 3
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %356, i64 %364
  store double %351, ptr %365, align 8, !tbaa !15
  br label %366

366:                                              ; preds = %348, %345
  %367 = load double, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !15
  %368 = fcmp ogt double %367, 0.000000e+00
  br i1 %368, label %369, label %387

369:                                              ; preds = %366
  %370 = load double, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !15
  %371 = load double, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !15
  %372 = fdiv double %370, %371
  %373 = load ptr, ptr %9, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.nfs_class_net, ptr %373, i32 0, i32 8
  %375 = load ptr, ptr %374, align 8, !tbaa !29
  %376 = getelementptr inbounds %struct.matrix, ptr %375, i32 0, i32 3
  %377 = load ptr, ptr %376, align 8, !tbaa !30
  %378 = load ptr, ptr %9, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.nfs_class_net, ptr %378, i32 0, i32 8
  %380 = load ptr, ptr %379, align 8, !tbaa !29
  %381 = getelementptr inbounds %struct.matrix, ptr %380, i32 0, i32 1
  %382 = load i32, ptr %381, align 4, !tbaa !31
  %383 = mul nsw i32 0, %382
  %384 = add nsw i32 %383, 1
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds double, ptr %377, i64 %385
  store double %372, ptr %386, align 8, !tbaa !15
  br label %387

387:                                              ; preds = %369, %366
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = load i32, ptr %10, align 4, !tbaa !9
  %390 = load i8, ptr %12, align 1, !tbaa !11, !range !13, !noundef !14
  %391 = trunc i8 %390 to i1
  call void @nfs_normalized_online_data(ptr noundef %388, i32 noundef %389, i1 noundef zeroext %391)
  %392 = load ptr, ptr %9, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.nfs_class_net, ptr %392, i32 0, i32 10
  %394 = getelementptr inbounds %struct.nfs_net_data_stat, ptr %393, i32 0, i32 0
  store i64 0, ptr %394, align 8, !tbaa !17
  %395 = load ptr, ptr %8, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 0
  %397 = load double, ptr %396, align 8, !tbaa !15
  store double %397, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !15
  store i32 -1, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !9
  store double 0.000000e+00, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !15
  store double -1.000000e+00, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !15
  store double -1.000000e+00, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !15
  store i32 -1, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !9
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !15
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !15
  call void @kml_memset(ptr noundef @fhandle_map, i32 noundef 0, i64 noundef 512)
  store i1 true, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %399

398:                                              ; preds = %218
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %399

399:                                              ; preds = %398, %387, %20
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  %400 = load i1, ptr %7, align 1
  ret i1 %400
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #2

declare void @kml_memset(ptr noundef, i32 noundef, i64 noundef) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!18, !21, i64 768}
!18 = !{!"nfs_class_net", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !19, i64 40, !20, i64 72, !22, i64 744, !6, i64 752, !6, i64 760, !23, i64 768, !24, i64 776, !25, i64 816, !10, i64 820}
!19 = !{!"model_data", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"model_multithreading", !7, i64 0, !7, i64 512, !7, i64 640, !7, i64 644, !7, i64 648, !21, i64 656, !6, i64 664}
!21 = !{!"long", !7, i64 0}
!22 = !{!"model_state", !7, i64 0, !7, i64 4}
!23 = !{!"nfs_net_data_stat", !21, i64 0}
!24 = !{!"nfs_norm_data_stat", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!25 = !{!"float", !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!18, !6, i64 752}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !10, i64 4}
!32 = !{!"matrix", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 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"

@nfs_data_processing.timing_starts = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.last_file_pg_idx = external hidden local_unnamed_addr global i32, align 4
@nfs_data_processing.last_nfs_pg_offset = external hidden local_unnamed_addr global i32, align 4
@nfs_data_processing.last_nfs_readdone_time = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.last_nfs_read_time = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.total_file_pg_idx_diffs = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_file_pg_idx_diffs = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.average_vmscan_shrink_page = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_vmscan_shrink_page = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.average_nfs_read_time_diff = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_nfs_read = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.average_nfs_pg_idx_diff = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_nfs_pg_idx = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.average_nfs_readdone_time_diff = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_nfs_readdone = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.number_of_nfs_rtt = external hidden local_unnamed_addr global double, align 8
@nfs_data_processing.average_nfs_rtt = external hidden local_unnamed_addr global double, align 8
@fhandle_map = external hidden global [16 x [2 x double]], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @nfs_normalized_online_data(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local noundef zeroext i1 @nfs_data_processing(ptr nocapture noundef readonly %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i1 noundef zeroext %4, i1 noundef zeroext %5) local_unnamed_addr #0 {
  br i1 %5, label %7, label %8

7:                                                ; preds = %6
  store double 0.000000e+00, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !5
  br label %225

8:                                                ; preds = %6
  %9 = getelementptr inbounds i8, ptr %1, i64 768
  %10 = load i64, ptr %9, align 8, !tbaa !9
  %11 = icmp eq i64 %10, 0
  br i1 %11, label %12, label %14

12:                                               ; preds = %8
  %13 = load double, ptr %0, align 8, !tbaa !5
  store double %13, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !5
  br label %14

14:                                               ; preds = %12, %8
  %15 = add nsw i64 %10, 1
  store i64 %15, ptr %9, align 8, !tbaa !9
  switch i32 %3, label %161 [
    i32 1, label %22
    i32 5, label %32
    i32 3, label %.preheader.preheader
    i32 4, label %.preheader75
  ]

.preheader.preheader:                             ; preds = %14
  %16 = load double, ptr @fhandle_map, align 16, !tbaa !5
  %17 = fcmp oeq double %16, 0.000000e+00
  br i1 %17, label %69, label %.preheader.1

.preheader75:                                     ; preds = %14
  %18 = getelementptr inbounds i8, ptr %0, i64 24
  %19 = load double, ptr %18, align 8, !tbaa !5
  %20 = load double, ptr @fhandle_map, align 16, !tbaa !5
  %21 = fcmp oeq double %20, %19
  br i1 %21, label %138, label %93

22:                                               ; preds = %14
  %23 = load i32, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !20
  %.not72 = icmp eq i32 %23, -1
  %.phi.trans.insert85 = getelementptr inbounds i8, ptr %0, i64 24
  %.pre86 = load double, ptr %.phi.trans.insert85, align 8, !tbaa !5
  %.pre87 = fptosi double %.pre86 to i32
  br i1 %.not72, label %._crit_edge84, label %24

24:                                               ; preds = %22
  %25 = sub nsw i32 %.pre87, %23
  %26 = tail call i32 @llvm.abs.i32(i32 %25, i1 true)
  %27 = uitofp nneg i32 %26 to double
  %28 = load double, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !5
  %29 = fadd double %28, %27
  store double %29, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !5
  br label %._crit_edge84

._crit_edge84:                                    ; preds = %22, %24
  store i32 %.pre87, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !20
  %30 = load double, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !5
  %31 = fadd double %30, 1.000000e+00
  store double %31, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !5
  br label %161

32:                                               ; preds = %14
  %33 = getelementptr inbounds i8, ptr %0, i64 24
  %34 = load double, ptr %33, align 8, !tbaa !5
  %35 = load double, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !5
  %36 = fadd double %34, %35
  store double %36, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !5
  %37 = load double, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !5
  %38 = fadd double %37, 1.000000e+00
  store double %38, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !5
  br label %161

.preheader.1:                                     ; preds = %.preheader.preheader
  %39 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 16), align 16, !tbaa !5
  %40 = fcmp oeq double %39, 0.000000e+00
  br i1 %40, label %69, label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1
  %41 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 32), align 16, !tbaa !5
  %42 = fcmp oeq double %41, 0.000000e+00
  br i1 %42, label %69, label %.preheader.3

.preheader.3:                                     ; preds = %.preheader.2
  %43 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 48), align 16, !tbaa !5
  %44 = fcmp oeq double %43, 0.000000e+00
  br i1 %44, label %69, label %.preheader.4

.preheader.4:                                     ; preds = %.preheader.3
  %45 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 64), align 16, !tbaa !5
  %46 = fcmp oeq double %45, 0.000000e+00
  br i1 %46, label %69, label %.preheader.5

.preheader.5:                                     ; preds = %.preheader.4
  %47 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 80), align 16, !tbaa !5
  %48 = fcmp oeq double %47, 0.000000e+00
  br i1 %48, label %69, label %.preheader.6

.preheader.6:                                     ; preds = %.preheader.5
  %49 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 96), align 16, !tbaa !5
  %50 = fcmp oeq double %49, 0.000000e+00
  br i1 %50, label %69, label %.preheader.7

.preheader.7:                                     ; preds = %.preheader.6
  %51 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 112), align 16, !tbaa !5
  %52 = fcmp oeq double %51, 0.000000e+00
  br i1 %52, label %69, label %.preheader.8

.preheader.8:                                     ; preds = %.preheader.7
  %53 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 128), align 16, !tbaa !5
  %54 = fcmp oeq double %53, 0.000000e+00
  br i1 %54, label %69, label %.preheader.9

.preheader.9:                                     ; preds = %.preheader.8
  %55 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 144), align 16, !tbaa !5
  %56 = fcmp oeq double %55, 0.000000e+00
  br i1 %56, label %69, label %.preheader.10

.preheader.10:                                    ; preds = %.preheader.9
  %57 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 160), align 16, !tbaa !5
  %58 = fcmp oeq double %57, 0.000000e+00
  br i1 %58, label %69, label %.preheader.11

.preheader.11:                                    ; preds = %.preheader.10
  %59 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 176), align 16, !tbaa !5
  %60 = fcmp oeq double %59, 0.000000e+00
  br i1 %60, label %69, label %.preheader.12

.preheader.12:                                    ; preds = %.preheader.11
  %61 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 192), align 16, !tbaa !5
  %62 = fcmp oeq double %61, 0.000000e+00
  br i1 %62, label %69, label %.preheader.13

.preheader.13:                                    ; preds = %.preheader.12
  %63 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 208), align 16, !tbaa !5
  %64 = fcmp oeq double %63, 0.000000e+00
  br i1 %64, label %69, label %.preheader.14

.preheader.14:                                    ; preds = %.preheader.13
  %65 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 224), align 16, !tbaa !5
  %66 = fcmp oeq double %65, 0.000000e+00
  br i1 %66, label %69, label %.preheader.15

.preheader.15:                                    ; preds = %.preheader.14
  %67 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 240), align 16, !tbaa !5
  %68 = fcmp oeq double %67, 0.000000e+00
  br i1 %68, label %69, label %.critedge

69:                                               ; preds = %.preheader.15, %.preheader.14, %.preheader.13, %.preheader.12, %.preheader.11, %.preheader.10, %.preheader.9, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  %.lcssa = phi ptr [ @fhandle_map, %.preheader.preheader ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 16), %.preheader.1 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 32), %.preheader.2 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 48), %.preheader.3 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 64), %.preheader.4 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 80), %.preheader.5 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 96), %.preheader.6 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 112), %.preheader.7 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 128), %.preheader.8 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 144), %.preheader.9 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 160), %.preheader.10 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 176), %.preheader.11 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 192), %.preheader.12 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 208), %.preheader.13 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 224), %.preheader.14 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 240), %.preheader.15 ]
  %70 = getelementptr inbounds i8, ptr %0, i64 24
  %71 = load double, ptr %70, align 8, !tbaa !5
  store double %71, ptr %.lcssa, align 16, !tbaa !5
  %72 = load double, ptr %0, align 8, !tbaa !5
  %73 = getelementptr inbounds i8, ptr %.lcssa, i64 8
  store double %72, ptr %73, align 8, !tbaa !5
  br label %.critedge

.critedge:                                        ; preds = %.preheader.15, %69
  %74 = load double, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !5
  %75 = fadd double %74, 1.000000e+00
  store double %75, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !5
  %76 = load double, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !5
  %77 = fcmp oeq double %76, -1.000000e+00
  br i1 %77, label %83, label %78

78:                                               ; preds = %.critedge
  %79 = load double, ptr %0, align 8, !tbaa !5
  %80 = fsub double %79, %76
  %81 = load double, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !5
  %82 = fadd double %81, %80
  store double %82, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !5
  br label %83

83:                                               ; preds = %.critedge, %78
  %storemerge = load double, ptr %0, align 8, !tbaa !5
  store double %storemerge, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !5
  %84 = load i32, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !20
  %.not = icmp eq i32 %84, -1
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 32
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !5
  %.pre88 = fptosi double %.pre to i32
  br i1 %.not, label %._crit_edge, label %85

85:                                               ; preds = %83
  %86 = sub nsw i32 %.pre88, %84
  %87 = tail call i32 @llvm.abs.i32(i32 %86, i1 true)
  %88 = uitofp nneg i32 %87 to double
  %89 = load double, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !5
  %90 = fadd double %89, %88
  store double %90, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %83, %85
  store i32 %.pre88, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !20
  %91 = load double, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !5
  %92 = fadd double %91, 1.000000e+00
  store double %92, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !5
  br label %161

93:                                               ; preds = %.preheader75
  %94 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 16), align 16, !tbaa !5
  %95 = fcmp oeq double %94, %19
  br i1 %95, label %138, label %96

96:                                               ; preds = %93
  %97 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 32), align 16, !tbaa !5
  %98 = fcmp oeq double %97, %19
  br i1 %98, label %138, label %99

99:                                               ; preds = %96
  %100 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 48), align 16, !tbaa !5
  %101 = fcmp oeq double %100, %19
  br i1 %101, label %138, label %102

102:                                              ; preds = %99
  %103 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 64), align 16, !tbaa !5
  %104 = fcmp oeq double %103, %19
  br i1 %104, label %138, label %105

105:                                              ; preds = %102
  %106 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 80), align 16, !tbaa !5
  %107 = fcmp oeq double %106, %19
  br i1 %107, label %138, label %108

108:                                              ; preds = %105
  %109 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 96), align 16, !tbaa !5
  %110 = fcmp oeq double %109, %19
  br i1 %110, label %138, label %111

111:                                              ; preds = %108
  %112 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 112), align 16, !tbaa !5
  %113 = fcmp oeq double %112, %19
  br i1 %113, label %138, label %114

114:                                              ; preds = %111
  %115 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 128), align 16, !tbaa !5
  %116 = fcmp oeq double %115, %19
  br i1 %116, label %138, label %117

117:                                              ; preds = %114
  %118 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 144), align 16, !tbaa !5
  %119 = fcmp oeq double %118, %19
  br i1 %119, label %138, label %120

120:                                              ; preds = %117
  %121 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 160), align 16, !tbaa !5
  %122 = fcmp oeq double %121, %19
  br i1 %122, label %138, label %123

123:                                              ; preds = %120
  %124 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 176), align 16, !tbaa !5
  %125 = fcmp oeq double %124, %19
  br i1 %125, label %138, label %126

126:                                              ; preds = %123
  %127 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 192), align 16, !tbaa !5
  %128 = fcmp oeq double %127, %19
  br i1 %128, label %138, label %129

129:                                              ; preds = %126
  %130 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 208), align 16, !tbaa !5
  %131 = fcmp oeq double %130, %19
  br i1 %131, label %138, label %132

132:                                              ; preds = %129
  %133 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 224), align 16, !tbaa !5
  %134 = fcmp oeq double %133, %19
  br i1 %134, label %138, label %135

135:                                              ; preds = %132
  %136 = load double, ptr getelementptr inbounds (i8, ptr @fhandle_map, i64 240), align 16, !tbaa !5
  %137 = fcmp oeq double %136, %19
  br i1 %137, label %138, label %.critedge74

138:                                              ; preds = %135, %132, %129, %126, %123, %120, %117, %114, %111, %108, %105, %102, %99, %96, %93, %.preheader75
  %.lcssa80 = phi ptr [ @fhandle_map, %.preheader75 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 16), %93 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 32), %96 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 48), %99 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 64), %102 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 80), %105 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 96), %108 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 112), %111 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 128), %114 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 144), %117 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 160), %120 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 176), %123 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 192), %126 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 208), %129 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 224), %132 ], [ getelementptr inbounds (i8, ptr @fhandle_map, i64 240), %135 ]
  %139 = load double, ptr %0, align 8, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %.lcssa80, i64 8
  %141 = load double, ptr %140, align 8, !tbaa !5
  %142 = fcmp ogt double %139, %141
  br i1 %142, label %143, label %149

143:                                              ; preds = %138
  %144 = fsub double %139, %141
  %145 = load double, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !5
  %146 = fadd double %144, %145
  store double %146, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !5
  %147 = load double, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !5
  %148 = fadd double %147, 1.000000e+00
  store double %148, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !5
  br label %149

149:                                              ; preds = %143, %138
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %.lcssa80, i8 0, i64 16, i1 false)
  br label %.critedge74

.critedge74:                                      ; preds = %135, %149
  %150 = load double, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !5
  %151 = fadd double %150, 1.000000e+00
  store double %151, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !5
  %152 = load double, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !5
  %153 = fcmp oeq double %152, -1.000000e+00
  %154 = load double, ptr %0, align 8, !tbaa !5
  br i1 %153, label %155, label %156

155:                                              ; preds = %.critedge74
  store double %154, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !5
  br label %161

156:                                              ; preds = %.critedge74
  %157 = fsub double %154, %152
  %158 = load double, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !5
  %159 = fadd double %158, %157
  store double %159, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !5
  %160 = load double, ptr %0, align 8, !tbaa !5
  store double %160, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !5
  br label %161

161:                                              ; preds = %155, %156, %._crit_edge, %32, %._crit_edge84, %14
  %162 = load double, ptr %0, align 8, !tbaa !5
  %163 = load double, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !5
  %164 = fsub double %162, %163
  %165 = fcmp ogt double %164, 1.000000e+06
  br i1 %165, label %166, label %225

166:                                              ; preds = %161
  %167 = sitofp i64 %15 to double
  %168 = getelementptr inbounds i8, ptr %1, i64 752
  %169 = load ptr, ptr %168, align 8, !tbaa !21
  %170 = getelementptr inbounds i8, ptr %169, i64 16
  %171 = load ptr, ptr %170, align 8, !tbaa !22
  store double %167, ptr %171, align 8, !tbaa !5
  %172 = load double, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !5
  %173 = fcmp ogt double %172, 0.000000e+00
  br i1 %173, label %174, label %179

174:                                              ; preds = %166
  %175 = load double, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !5
  %176 = fdiv double %175, %172
  %177 = load ptr, ptr %170, align 8, !tbaa !22
  %178 = getelementptr inbounds i8, ptr %177, i64 40
  store double %176, ptr %178, align 8, !tbaa !5
  br label %179

179:                                              ; preds = %174, %166
  %180 = load double, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !5
  %181 = fcmp ogt double %180, 0.000000e+00
  br i1 %181, label %182, label %187

182:                                              ; preds = %179
  %183 = load double, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !5
  %184 = fdiv double %183, %180
  %185 = load ptr, ptr %170, align 8, !tbaa !22
  %186 = getelementptr inbounds i8, ptr %185, i64 48
  store double %184, ptr %186, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %182, %179
  %188 = sitofp i32 %2 to double
  %189 = fmul double %188, 0x3ED0000000000000
  %190 = load ptr, ptr %170, align 8, !tbaa !22
  %191 = getelementptr inbounds i8, ptr %190, i64 56
  store double %189, ptr %191, align 8, !tbaa !5
  %192 = load double, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !5
  %193 = fcmp ogt double %192, 0.000000e+00
  br i1 %193, label %194, label %199

194:                                              ; preds = %187
  %195 = load double, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !5
  %196 = fdiv double %195, %192
  %197 = load ptr, ptr %170, align 8, !tbaa !22
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  store double %196, ptr %198, align 8, !tbaa !5
  br label %199

199:                                              ; preds = %194, %187
  %200 = load double, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !5
  %201 = fcmp ogt double %200, 0.000000e+00
  br i1 %201, label %202, label %207

202:                                              ; preds = %199
  %203 = load double, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !5
  %204 = fdiv double %203, %200
  %205 = load ptr, ptr %170, align 8, !tbaa !22
  %206 = getelementptr inbounds i8, ptr %205, i64 32
  store double %204, ptr %206, align 8, !tbaa !5
  br label %207

207:                                              ; preds = %202, %199
  %208 = load double, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !5
  %209 = fcmp ogt double %208, 0.000000e+00
  br i1 %209, label %210, label %215

210:                                              ; preds = %207
  %211 = load double, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !5
  %212 = fdiv double %211, %208
  %213 = load ptr, ptr %170, align 8, !tbaa !22
  %214 = getelementptr inbounds i8, ptr %213, i64 24
  store double %212, ptr %214, align 8, !tbaa !5
  br label %215

215:                                              ; preds = %210, %207
  %216 = load double, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !5
  %217 = fcmp ogt double %216, 0.000000e+00
  br i1 %217, label %218, label %223

218:                                              ; preds = %215
  %219 = load double, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !5
  %220 = fdiv double %219, %216
  %221 = load ptr, ptr %170, align 8, !tbaa !22
  %222 = getelementptr inbounds i8, ptr %221, i64 8
  store double %220, ptr %222, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %218, %215
  tail call void @nfs_normalized_online_data(ptr noundef nonnull %1, i32 noundef %2, i1 noundef zeroext %4)
  store i64 0, ptr %9, align 8, !tbaa !9
  %224 = load double, ptr %0, align 8, !tbaa !5
  store double %224, ptr @nfs_data_processing.timing_starts, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.total_file_pg_idx_diffs, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_file_pg_idx_diffs, align 8, !tbaa !5
  store i32 -1, ptr @nfs_data_processing.last_file_pg_idx, align 4, !tbaa !20
  store double 0.000000e+00, ptr @nfs_data_processing.average_vmscan_shrink_page, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_vmscan_shrink_page, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_read_time_diff, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_read, align 8, !tbaa !5
  store double -1.000000e+00, ptr @nfs_data_processing.last_nfs_read_time, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_readdone_time_diff, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_readdone, align 8, !tbaa !5
  store double -1.000000e+00, ptr @nfs_data_processing.last_nfs_readdone_time, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_pg_idx_diff, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_pg_idx, align 8, !tbaa !5
  store i32 -1, ptr @nfs_data_processing.last_nfs_pg_offset, align 4, !tbaa !20
  store double 0.000000e+00, ptr @nfs_data_processing.average_nfs_rtt, align 8, !tbaa !5
  store double 0.000000e+00, ptr @nfs_data_processing.number_of_nfs_rtt, align 8, !tbaa !5
  tail call void @kml_memset(ptr noundef nonnull @fhandle_map, i32 noundef 0, i64 noundef 512) #4
  br label %225

225:                                              ; preds = %161, %223, %7
  %.059 = phi i1 [ false, %7 ], [ true, %223 ], [ false, %161 ]
  ret i1 %.059
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #1

declare void @kml_memset(ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !15, i64 768}
!10 = !{!"nfs_class_net", !11, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !13, i64 40, !14, i64 72, !16, i64 744, !12, i64 752, !12, i64 760, !17, i64 768, !18, i64 776, !19, i64 816, !11, i64 820}
!11 = !{!"int", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"model_data", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!14 = !{!"model_multithreading", !7, i64 0, !7, i64 512, !7, i64 640, !7, i64 644, !7, i64 648, !15, i64 656, !12, i64 664}
!15 = !{!"long", !7, i64 0}
!16 = !{!"model_state", !7, i64 0, !7, i64 4}
!17 = !{!"nfs_net_data_stat", !15, i64 0}
!18 = !{!"nfs_norm_data_stat", !15, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32}
!19 = !{!"float", !7, i64 0}
!20 = !{!11, !11, i64 0}
!21 = !{!10, !12, i64 752}
!22 = !{!7, !7, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass