; LLVM IR from stivalaa/EstimNetDirected :: src (equilibriumExpectation)

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

%struct.timeval = type { i64, i64 }
%struct.estim_config_s = type { double, double, double, i32, i32, i32, i32, i32, i32, i32, double, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, double, double, i32, ptr, i32, ptr, i32, i32, i32, i32, %struct.param_config_s }
%struct.param_config_s = type { i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr }
%struct.graph_s = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, ptr, i32, ptr, ptr, i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, i32, ptr, ptr, i32, ptr, i32, ptr, ptr, i32, i32, ptr, i32, ptr }
%struct.string_pair_s = type { ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [88 x i8], align 1
@stderr = external global ptr, align 8
@.str.26 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__.do_estimation = external hidden unnamed_addr constant [44 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [8 x i8], align 1

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

declare ptr @safe_malloc(i64 noundef) #1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @ee_estimate(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, double noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, i32 noundef, i32 noundef, i32 noundef) #5

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

; Function Attrs: nounwind
declare i32 @gettimeofday(ptr noundef, ptr noundef) #2

declare i32 @timeval_subtract(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @do_estimation(ptr noundef %0, i32 noundef %1) #5 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %struct.timeval, align 8
  %7 = alloca %struct.timeval, align 8
  %8 = alloca %struct.timeval, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca [4097 x i8], align 16
  %20 = alloca [4097 x i8], align 16
  %21 = alloca [4097 x i8], align 16
  %22 = alloca [4097 x i8], align 16
  %23 = alloca [16 x i8], align 16
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca [65536 x i8], align 16
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4097, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4097, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4097, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 4097, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store ptr null, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 65536, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.estim_config_s, ptr %38, i32 0, i32 26
  %40 = load i32, ptr %39, align 8, !tbaa !11
  %41 = icmp ne i32 %40, 0
  br i1 %41, label %42, label %45

42:                                               ; preds = %2
  %43 = load i32, ptr %5, align 4, !tbaa !9
  %44 = icmp eq i32 %43, 0
  br label %45

45:                                               ; preds = %42, %2
  %46 = phi i1 [ false, %2 ], [ %44, %42 ]
  %47 = zext i1 %46 to i32
  store i32 %47, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 1, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  store ptr null, ptr %35, align 8, !tbaa !5
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.estim_config_s, ptr %48, i32 0, i32 12
  %50 = load ptr, ptr %49, align 8, !tbaa !15
  %51 = icmp ne ptr %50, null
  br i1 %51, label %55, label %52

52:                                               ; preds = %45
  %53 = load ptr, ptr @stderr, align 8, !tbaa !5
  %54 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %53, ptr noundef @.str.26) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

55:                                               ; preds = %45
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.estim_config_s, ptr %56, i32 0, i32 12
  %58 = load ptr, ptr %57, align 8, !tbaa !15
  %59 = call noalias ptr @fopen(ptr noundef %58, ptr noundef @.str.27)
  store ptr %59, ptr %10, align 8, !tbaa !5
  %60 = icmp ne ptr %59, null
  br i1 %60, label %70, label %61

61:                                               ; preds = %55
  %62 = load ptr, ptr @stderr, align 8, !tbaa !5
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.estim_config_s, ptr %63, i32 0, i32 12
  %65 = load ptr, ptr %64, align 8, !tbaa !15
  %66 = call ptr @__errno_location() #9
  %67 = load i32, ptr %66, align 4, !tbaa !9
  %68 = call ptr @strerror(i32 noundef %67) #8
  %69 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef @.str.28, ptr noundef %65, ptr noundef %68) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

70:                                               ; preds = %55
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.estim_config_s, ptr %71, i32 0, i32 33
  %73 = load i32, ptr %72, align 4, !tbaa !16
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %78, label %75

75:                                               ; preds = %70
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = call i32 @get_num_vertices_from_arclist_file(ptr noundef %76)
  store i32 %77, ptr %12, align 4, !tbaa !9
  br label %104

78:                                               ; preds = %70
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.estim_config_s, ptr %79, i32 0, i32 31
  %81 = load i32, ptr %80, align 4, !tbaa !17
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %86

83:                                               ; preds = %78
  %84 = load ptr, ptr @stderr, align 8, !tbaa !5
  %85 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %84, ptr noundef @.str.29) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

86:                                               ; preds = %78
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.estim_config_s, ptr %87, i32 0, i32 32
  %89 = load i32, ptr %88, align 8, !tbaa !18
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %94

91:                                               ; preds = %86
  %92 = load ptr, ptr @stderr, align 8, !tbaa !5
  %93 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %92, ptr noundef @.str.30) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

94:                                               ; preds = %86
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.estim_config_s, ptr %95, i32 0, i32 21
  %97 = load i32, ptr %96, align 8, !tbaa !19
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %102

99:                                               ; preds = %94
  %100 = load ptr, ptr @stderr, align 8, !tbaa !5
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %100, ptr noundef @.str.31) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

102:                                              ; preds = %94
  %103 = load ptr, ptr %10, align 8, !tbaa !5
  call void @get_num_vertices_from_bipartite_pajek_file(ptr noundef %103, ptr noundef %12, ptr noundef %13)
  br label %104

104:                                              ; preds = %102, %75
  %105 = load i32, ptr %12, align 4, !tbaa !9
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.estim_config_s, ptr %106, i32 0, i32 32
  %108 = load i32, ptr %107, align 8, !tbaa !18
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.estim_config_s, ptr %109, i32 0, i32 33
  %111 = load i32, ptr %110, align 4, !tbaa !16
  %112 = load i32, ptr %13, align 4, !tbaa !9
  %113 = call ptr @allocate_graph(i32 noundef %105, i32 noundef %108, i32 noundef %111, i32 noundef %112)
  store ptr %113, ptr %11, align 8, !tbaa !5
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.estim_config_s, ptr %114, i32 0, i32 34
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = call i32 @check_param_network_type(ptr noundef %115, ptr noundef %116)
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %119, label %122

119:                                              ; preds = %104
  %120 = load ptr, ptr @stderr, align 8, !tbaa !5
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef @.str.32) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

122:                                              ; preds = %104
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.graph_s, ptr %123, i32 0, i32 1
  %125 = load i32, ptr %124, align 4, !tbaa !20
  %126 = icmp ne i32 %125, 0
  %127 = zext i1 %126 to i64
  %128 = select i1 %126, ptr @.str.33, ptr @.str.34
  store ptr %128, ptr %35, align 8, !tbaa !5
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.estim_config_s, ptr %129, i32 0, i32 8
  %131 = load i32, ptr %130, align 4, !tbaa !22
  %132 = icmp ne i32 %131, 0
  br i1 %132, label %133, label %286

133:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  store i32 0, ptr %37, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %156, %133
  %135 = load i32, ptr %14, align 4, !tbaa !9
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.estim_config_s, ptr %136, i32 0, i32 34
  %138 = getelementptr inbounds %struct.param_config_s, ptr %137, i32 0, i32 0
  %139 = load i32, ptr %138, align 8, !tbaa !23
  %140 = icmp ult i32 %135, %139
  br i1 %140, label %141, label %153

141:                                              ; preds = %134
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.estim_config_s, ptr %142, i32 0, i32 34
  %144 = getelementptr inbounds %struct.param_config_s, ptr %143, i32 0, i32 2
  %145 = load ptr, ptr %144, align 8, !tbaa !24
  %146 = load i32, ptr %14, align 4, !tbaa !9
  %147 = zext i32 %146 to i64
  %148 = getelementptr inbounds ptr, ptr %145, i64 %147
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  %150 = load ptr, ptr %35, align 8, !tbaa !5
  %151 = call i32 @strcasecmp(ptr noundef %149, ptr noundef %150) #10
  %152 = icmp ne i32 %151, 0
  br label %153

153:                                              ; preds = %141, %134
  %154 = phi i1 [ false, %134 ], [ %152, %141 ]
  br i1 %154, label %155, label %159

155:                                              ; preds = %153
  br label %156

156:                                              ; preds = %155
  %157 = load i32, ptr %14, align 4, !tbaa !9
  %158 = add i32 %157, 1
  store i32 %158, ptr %14, align 4, !tbaa !9
  br label %134, !llvm.loop !25

159:                                              ; preds = %153
  %160 = load i32, ptr %14, align 4, !tbaa !9
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.estim_config_s, ptr %161, i32 0, i32 34
  %163 = getelementptr inbounds %struct.param_config_s, ptr %162, i32 0, i32 0
  %164 = load i32, ptr %163, align 8, !tbaa !23
  %165 = icmp ult i32 %160, %164
  %166 = zext i1 %165 to i32
  store i32 %166, ptr %37, align 4, !tbaa !9
  %167 = load i32, ptr %37, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %285

169:                                              ; preds = %159
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.estim_config_s, ptr %170, i32 0, i32 34
  %172 = getelementptr inbounds %struct.param_config_s, ptr %171, i32 0, i32 1
  %173 = load ptr, ptr %172, align 8, !tbaa !27
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.estim_config_s, ptr %174, i32 0, i32 34
  %176 = getelementptr inbounds %struct.param_config_s, ptr %175, i32 0, i32 0
  %177 = load i32, ptr %176, align 8, !tbaa !23
  %178 = sub i32 %177, 1
  %179 = zext i32 %178 to i64
  %180 = getelementptr inbounds ptr, ptr %173, i64 %179
  %181 = load ptr, ptr %180, align 8, !tbaa !5
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.estim_config_s, ptr %182, i32 0, i32 34
  %184 = getelementptr inbounds %struct.param_config_s, ptr %183, i32 0, i32 1
  %185 = load ptr, ptr %184, align 8, !tbaa !27
  %186 = load i32, ptr %14, align 4, !tbaa !9
  %187 = zext i32 %186 to i64
  %188 = getelementptr inbounds ptr, ptr %185, i64 %187
  store ptr %181, ptr %188, align 8, !tbaa !5
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.estim_config_s, ptr %189, i32 0, i32 34
  %191 = getelementptr inbounds %struct.param_config_s, ptr %190, i32 0, i32 2
  %192 = load ptr, ptr %191, align 8, !tbaa !24
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.estim_config_s, ptr %193, i32 0, i32 34
  %195 = getelementptr inbounds %struct.param_config_s, ptr %194, i32 0, i32 0
  %196 = load i32, ptr %195, align 8, !tbaa !23
  %197 = sub i32 %196, 1
  %198 = zext i32 %197 to i64
  %199 = getelementptr inbounds ptr, ptr %192, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.estim_config_s, ptr %201, i32 0, i32 34
  %203 = getelementptr inbounds %struct.param_config_s, ptr %202, i32 0, i32 2
  %204 = load ptr, ptr %203, align 8, !tbaa !24
  %205 = load i32, ptr %14, align 4, !tbaa !9
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %204, i64 %206
  store ptr %200, ptr %207, align 8, !tbaa !5
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.estim_config_s, ptr %208, i32 0, i32 34
  %210 = getelementptr inbounds %struct.param_config_s, ptr %209, i32 0, i32 3
  %211 = load ptr, ptr %210, align 8, !tbaa !28
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.estim_config_s, ptr %212, i32 0, i32 34
  %214 = getelementptr inbounds %struct.param_config_s, ptr %213, i32 0, i32 0
  %215 = load i32, ptr %214, align 8, !tbaa !23
  %216 = sub i32 %215, 1
  %217 = zext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %211, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !29
  %220 = load ptr, ptr %4, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.estim_config_s, ptr %220, i32 0, i32 34
  %222 = getelementptr inbounds %struct.param_config_s, ptr %221, i32 0, i32 3
  %223 = load ptr, ptr %222, align 8, !tbaa !28
  %224 = load i32, ptr %14, align 4, !tbaa !9
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %223, i64 %225
  store double %219, ptr %226, align 8, !tbaa !29
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.estim_config_s, ptr %227, i32 0, i32 34
  %229 = getelementptr inbounds %struct.param_config_s, ptr %228, i32 0, i32 4
  %230 = load ptr, ptr %229, align 8, !tbaa !30
  %231 = icmp ne ptr %230, null
  br i1 %231, label %233, label %232

232:                                              ; preds = %169
  br label %234

233:                                              ; preds = %169
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.6, i32 noundef 854, ptr noundef @__PRETTY_FUNCTION__.do_estimation) #11
  unreachable

234:                                              ; preds = %232
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.estim_config_s, ptr %235, i32 0, i32 34
  %237 = getelementptr inbounds %struct.param_config_s, ptr %236, i32 0, i32 1
  %238 = load ptr, ptr %237, align 8, !tbaa !27
  %239 = load ptr, ptr %4, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.estim_config_s, ptr %239, i32 0, i32 34
  %241 = getelementptr inbounds %struct.param_config_s, ptr %240, i32 0, i32 0
  %242 = load i32, ptr %241, align 8, !tbaa !23
  %243 = sub i32 %242, 1
  %244 = zext i32 %243 to i64
  %245 = mul i64 %244, 8
  %246 = call ptr @safe_realloc(ptr noundef %238, i64 noundef %245)
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.estim_config_s, ptr %247, i32 0, i32 34
  %249 = getelementptr inbounds %struct.param_config_s, ptr %248, i32 0, i32 1
  store ptr %246, ptr %249, align 8, !tbaa !27
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.estim_config_s, ptr %250, i32 0, i32 34
  %252 = getelementptr inbounds %struct.param_config_s, ptr %251, i32 0, i32 2
  %253 = load ptr, ptr %252, align 8, !tbaa !24
  %254 = load ptr, ptr %4, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.estim_config_s, ptr %254, i32 0, i32 34
  %256 = getelementptr inbounds %struct.param_config_s, ptr %255, i32 0, i32 0
  %257 = load i32, ptr %256, align 8, !tbaa !23
  %258 = sub i32 %257, 1
  %259 = zext i32 %258 to i64
  %260 = mul i64 %259, 8
  %261 = call ptr @safe_realloc(ptr noundef %253, i64 noundef %260)
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.estim_config_s, ptr %262, i32 0, i32 34
  %264 = getelementptr inbounds %struct.param_config_s, ptr %263, i32 0, i32 2
  store ptr %261, ptr %264, align 8, !tbaa !24
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.estim_config_s, ptr %265, i32 0, i32 34
  %267 = getelementptr inbounds %struct.param_config_s, ptr %266, i32 0, i32 3
  %268 = load ptr, ptr %267, align 8, !tbaa !28
  %269 = load ptr, ptr %4, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.estim_config_s, ptr %269, i32 0, i32 34
  %271 = getelementptr inbounds %struct.param_config_s, ptr %270, i32 0, i32 0
  %272 = load i32, ptr %271, align 8, !tbaa !23
  %273 = sub i32 %272, 1
  %274 = zext i32 %273 to i64
  %275 = mul i64 %274, 8
  %276 = call ptr @safe_realloc(ptr noundef %268, i64 noundef %275)
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.estim_config_s, ptr %277, i32 0, i32 34
  %279 = getelementptr inbounds %struct.param_config_s, ptr %278, i32 0, i32 3
  store ptr %276, ptr %279, align 8, !tbaa !28
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.estim_config_s, ptr %280, i32 0, i32 34
  %282 = getelementptr inbounds %struct.param_config_s, ptr %281, i32 0, i32 0
  %283 = load i32, ptr %282, align 8, !tbaa !23
  %284 = add i32 %283, -1
  store i32 %284, ptr %282, align 8, !tbaa !23
  br label %285

285:                                              ; preds = %234, %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %286

286:                                              ; preds = %285, %122
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.estim_config_s, ptr %288, i32 0, i32 13
  %290 = load ptr, ptr %289, align 8, !tbaa !31
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.estim_config_s, ptr %291, i32 0, i32 14
  %293 = load ptr, ptr %292, align 8, !tbaa !32
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.estim_config_s, ptr %294, i32 0, i32 15
  %296 = load ptr, ptr %295, align 8, !tbaa !33
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.estim_config_s, ptr %297, i32 0, i32 16
  %299 = load ptr, ptr %298, align 8, !tbaa !34
  %300 = call i32 @load_attributes(ptr noundef %287, ptr noundef %290, ptr noundef %293, ptr noundef %296, ptr noundef %299)
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %305

302:                                              ; preds = %286
  %303 = load ptr, ptr @stderr, align 8, !tbaa !5
  %304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %303, ptr noundef @.str.36) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

305:                                              ; preds = %286
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.estim_config_s, ptr %306, i32 0, i32 34
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = call i32 @build_attr_indices_from_names(ptr noundef %307, ptr noundef %308)
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %314

311:                                              ; preds = %305
  %312 = load ptr, ptr @stderr, align 8, !tbaa !5
  %313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %312, ptr noundef @.str.37) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

314:                                              ; preds = %305
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.estim_config_s, ptr %315, i32 0, i32 34
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = call i32 @build_dyadic_indices_from_names(ptr noundef %316, ptr noundef %317, i32 noundef 0)
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %323

320:                                              ; preds = %314
  %321 = load ptr, ptr @stderr, align 8, !tbaa !5
  %322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %321, ptr noundef @.str.38) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

323:                                              ; preds = %314
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.estim_config_s, ptr %324, i32 0, i32 34
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = call i32 @build_attr_interaction_pair_indices_from_names(ptr noundef %325, ptr noundef %326)
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %332

329:                                              ; preds = %323
  %330 = load ptr, ptr @stderr, align 8, !tbaa !5
  %331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %330, ptr noundef @.str.39) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

332:                                              ; preds = %323
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.estim_config_s, ptr %333, i32 0, i32 34
  %335 = getelementptr inbounds %struct.param_config_s, ptr %334, i32 0, i32 0
  %336 = load i32, ptr %335, align 8, !tbaa !23
  store i32 %336, ptr %24, align 4, !tbaa !9
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.estim_config_s, ptr %337, i32 0, i32 34
  %339 = getelementptr inbounds %struct.param_config_s, ptr %338, i32 0, i32 5
  %340 = load i32, ptr %339, align 8, !tbaa !35
  store i32 %340, ptr %25, align 4, !tbaa !9
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.estim_config_s, ptr %341, i32 0, i32 34
  %343 = getelementptr inbounds %struct.param_config_s, ptr %342, i32 0, i32 12
  %344 = load i32, ptr %343, align 8, !tbaa !36
  store i32 %344, ptr %26, align 4, !tbaa !9
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.estim_config_s, ptr %345, i32 0, i32 34
  %347 = getelementptr inbounds %struct.param_config_s, ptr %346, i32 0, i32 19
  %348 = load i32, ptr %347, align 8, !tbaa !37
  store i32 %348, ptr %27, align 4, !tbaa !9
  %349 = load i32, ptr %24, align 4, !tbaa !9
  %350 = load i32, ptr %25, align 4, !tbaa !9
  %351 = add i32 %349, %350
  %352 = load i32, ptr %26, align 4, !tbaa !9
  %353 = add i32 %351, %352
  %354 = load i32, ptr %27, align 4, !tbaa !9
  %355 = add i32 %353, %354
  store i32 %355, ptr %28, align 4, !tbaa !9
  %356 = load i32, ptr %28, align 4, !tbaa !9
  %357 = zext i32 %356 to i64
  %358 = mul i64 %357, 8
  %359 = call ptr @safe_malloc(i64 noundef %358)
  store ptr %359, ptr %29, align 8, !tbaa !5
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.estim_config_s, ptr %360, i32 0, i32 8
  %362 = load i32, ptr %361, align 4, !tbaa !22
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %372

364:                                              ; preds = %332
  %365 = load ptr, ptr %4, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.estim_config_s, ptr %365, i32 0, i32 9
  %367 = load i32, ptr %366, align 8, !tbaa !38
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %372

369:                                              ; preds = %364
  %370 = load ptr, ptr @stderr, align 8, !tbaa !5
  %371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef @.str.40) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

372:                                              ; preds = %364, %332
  %373 = load i32, ptr %32, align 4, !tbaa !9
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %419

375:                                              ; preds = %372
  %376 = load i32, ptr %28, align 4, !tbaa !9
  %377 = zext i32 %376 to i64
  %378 = mul i64 %377, 8
  %379 = call ptr @safe_malloc(i64 noundef %378)
  store ptr %379, ptr %30, align 8, !tbaa !5
  %380 = load ptr, ptr %11, align 8, !tbaa !5
  %381 = load i32, ptr %28, align 4, !tbaa !9
  %382 = load i32, ptr %25, align 4, !tbaa !9
  %383 = load i32, ptr %26, align 4, !tbaa !9
  %384 = load i32, ptr %27, align 4, !tbaa !9
  %385 = load ptr, ptr %4, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.estim_config_s, ptr %385, i32 0, i32 34
  %387 = getelementptr inbounds %struct.param_config_s, ptr %386, i32 0, i32 1
  %388 = load ptr, ptr %387, align 8, !tbaa !27
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.estim_config_s, ptr %389, i32 0, i32 34
  %391 = getelementptr inbounds %struct.param_config_s, ptr %390, i32 0, i32 3
  %392 = load ptr, ptr %391, align 8, !tbaa !28
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.estim_config_s, ptr %393, i32 0, i32 34
  %395 = getelementptr inbounds %struct.param_config_s, ptr %394, i32 0, i32 6
  %396 = load ptr, ptr %395, align 8, !tbaa !39
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.estim_config_s, ptr %397, i32 0, i32 34
  %399 = getelementptr inbounds %struct.param_config_s, ptr %398, i32 0, i32 13
  %400 = load ptr, ptr %399, align 8, !tbaa !40
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.estim_config_s, ptr %401, i32 0, i32 34
  %403 = getelementptr inbounds %struct.param_config_s, ptr %402, i32 0, i32 20
  %404 = load ptr, ptr %403, align 8, !tbaa !41
  %405 = load ptr, ptr %4, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.estim_config_s, ptr %405, i32 0, i32 34
  %407 = getelementptr inbounds %struct.param_config_s, ptr %406, i32 0, i32 8
  %408 = load ptr, ptr %407, align 8, !tbaa !42
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.estim_config_s, ptr %409, i32 0, i32 34
  %411 = getelementptr inbounds %struct.param_config_s, ptr %410, i32 0, i32 10
  %412 = load ptr, ptr %411, align 8, !tbaa !43
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.estim_config_s, ptr %413, i32 0, i32 34
  %415 = getelementptr inbounds %struct.param_config_s, ptr %414, i32 0, i32 22
  %416 = load ptr, ptr %415, align 8, !tbaa !44
  %417 = load ptr, ptr %30, align 8, !tbaa !5
  %418 = call ptr @empty_graph_stats(ptr noundef %380, i32 noundef %381, i32 noundef %382, i32 noundef %383, i32 noundef %384, ptr noundef %388, ptr noundef %392, ptr noundef %396, ptr noundef %400, ptr noundef %404, ptr noundef %408, ptr noundef %412, ptr noundef %416, ptr noundef %417)
  br label %419

419:                                              ; preds = %375, %372
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.estim_config_s, ptr %420, i32 0, i32 12
  %422 = load ptr, ptr %421, align 8, !tbaa !15
  %423 = call noalias ptr @fopen(ptr noundef %422, ptr noundef @.str.27)
  store ptr %423, ptr %10, align 8, !tbaa !5
  %424 = icmp ne ptr %423, null
  br i1 %424, label %434, label %425

425:                                              ; preds = %419
  %426 = load ptr, ptr @stderr, align 8, !tbaa !5
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.estim_config_s, ptr %427, i32 0, i32 12
  %429 = load ptr, ptr %428, align 8, !tbaa !15
  %430 = call ptr @__errno_location() #9
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = call ptr @strerror(i32 noundef %431) #8
  %433 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef @.str.28, ptr noundef %429, ptr noundef %432) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

434:                                              ; preds = %419
  %435 = call i32 @gettimeofday(ptr noundef %6, ptr noundef null) #8
  %436 = load ptr, ptr %4, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.estim_config_s, ptr %436, i32 0, i32 12
  %438 = load ptr, ptr %437, align 8, !tbaa !15
  %439 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, ptr noundef %438)
  %440 = load i32, ptr %32, align 4, !tbaa !9
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %444

442:                                              ; preds = %434
  %443 = call i32 (ptr, ...) @printf(ptr noundef @.str.42)
  br label %444

444:                                              ; preds = %442, %434
  %445 = call i32 (ptr, ...) @printf(ptr noundef @.str.43)
  %446 = load ptr, ptr %10, align 8, !tbaa !5
  %447 = load ptr, ptr %11, align 8, !tbaa !5
  %448 = load i32, ptr %32, align 4, !tbaa !9
  %449 = load i32, ptr %28, align 4, !tbaa !9
  %450 = load i32, ptr %25, align 4, !tbaa !9
  %451 = load i32, ptr %26, align 4, !tbaa !9
  %452 = load i32, ptr %27, align 4, !tbaa !9
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.estim_config_s, ptr %453, i32 0, i32 34
  %455 = getelementptr inbounds %struct.param_config_s, ptr %454, i32 0, i32 1
  %456 = load ptr, ptr %455, align 8, !tbaa !27
  %457 = load ptr, ptr %4, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.estim_config_s, ptr %457, i32 0, i32 34
  %459 = getelementptr inbounds %struct.param_config_s, ptr %458, i32 0, i32 3
  %460 = load ptr, ptr %459, align 8, !tbaa !28
  %461 = load ptr, ptr %4, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.estim_config_s, ptr %461, i32 0, i32 34
  %463 = getelementptr inbounds %struct.param_config_s, ptr %462, i32 0, i32 6
  %464 = load ptr, ptr %463, align 8, !tbaa !39
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.estim_config_s, ptr %465, i32 0, i32 34
  %467 = getelementptr inbounds %struct.param_config_s, ptr %466, i32 0, i32 13
  %468 = load ptr, ptr %467, align 8, !tbaa !40
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.estim_config_s, ptr %469, i32 0, i32 34
  %471 = getelementptr inbounds %struct.param_config_s, ptr %470, i32 0, i32 20
  %472 = load ptr, ptr %471, align 8, !tbaa !41
  %473 = load ptr, ptr %4, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.estim_config_s, ptr %473, i32 0, i32 34
  %475 = getelementptr inbounds %struct.param_config_s, ptr %474, i32 0, i32 8
  %476 = load ptr, ptr %475, align 8, !tbaa !42
  %477 = load ptr, ptr %4, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.estim_config_s, ptr %477, i32 0, i32 34
  %479 = getelementptr inbounds %struct.param_config_s, ptr %478, i32 0, i32 10
  %480 = load ptr, ptr %479, align 8, !tbaa !43
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.estim_config_s, ptr %481, i32 0, i32 34
  %483 = getelementptr inbounds %struct.param_config_s, ptr %482, i32 0, i32 22
  %484 = load ptr, ptr %483, align 8, !tbaa !44
  %485 = load ptr, ptr %30, align 8, !tbaa !5
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = call ptr @load_graph_from_arclist_file(ptr noundef %446, ptr noundef %447, i32 noundef %448, i32 noundef %449, i32 noundef %450, i32 noundef %451, i32 noundef %452, ptr noundef %456, ptr noundef %460, ptr noundef %464, ptr noundef %468, ptr noundef %472, ptr noundef %476, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %486)
  store ptr %487, ptr %11, align 8, !tbaa !5
  %488 = call i32 @gettimeofday(ptr noundef %7, ptr noundef null) #8
  %489 = call i32 @timeval_subtract(ptr noundef %8, ptr noundef %7, ptr noundef %6)
  %490 = getelementptr inbounds %struct.timeval, ptr %8, i32 0, i32 0
  %491 = load i64, ptr %490, align 8, !tbaa !45
  %492 = mul nsw i64 1000, %491
  %493 = getelementptr inbounds %struct.timeval, ptr %8, i32 0, i32 1
  %494 = load i64, ptr %493, align 8, !tbaa !48
  %495 = sdiv i64 %494, 1000
  %496 = add nsw i64 %492, %495
  %497 = trunc i64 %496 to i32
  store i32 %497, ptr %9, align 4, !tbaa !9
  %498 = load i32, ptr %9, align 4, !tbaa !9
  %499 = sitofp i32 %498 to double
  %500 = fdiv double %499, 1.000000e+03
  %501 = call i32 (ptr, ...) @printf(ptr noundef @.str.44, double noundef %500)
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.estim_config_s, ptr %502, i32 0, i32 20
  %504 = load ptr, ptr %503, align 8, !tbaa !49
  %505 = icmp ne ptr %504, null
  br i1 %505, label %506, label %520

506:                                              ; preds = %444
  %507 = load ptr, ptr %11, align 8, !tbaa !5
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.estim_config_s, ptr %508, i32 0, i32 20
  %510 = load ptr, ptr %509, align 8, !tbaa !49
  %511 = call i32 @add_snowball_zones_to_graph(ptr noundef %507, ptr noundef %510)
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %519

513:                                              ; preds = %506
  %514 = load ptr, ptr @stderr, align 8, !tbaa !5
  %515 = load ptr, ptr %4, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.estim_config_s, ptr %515, i32 0, i32 20
  %517 = load ptr, ptr %516, align 8, !tbaa !49
  %518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %514, ptr noundef @.str.45, ptr noundef %517) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

519:                                              ; preds = %506
  br label %520

520:                                              ; preds = %519, %444
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.estim_config_s, ptr %521, i32 0, i32 29
  %523 = load ptr, ptr %522, align 8, !tbaa !50
  %524 = icmp ne ptr %523, null
  br i1 %524, label %525, label %539

525:                                              ; preds = %520
  %526 = load ptr, ptr %11, align 8, !tbaa !5
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.estim_config_s, ptr %527, i32 0, i32 29
  %529 = load ptr, ptr %528, align 8, !tbaa !50
  %530 = call i32 @add_cergm_terms_to_digraph(ptr noundef %526, ptr noundef %529)
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %538

532:                                              ; preds = %525
  %533 = load ptr, ptr @stderr, align 8, !tbaa !5
  %534 = load ptr, ptr %4, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.estim_config_s, ptr %534, i32 0, i32 29
  %536 = load ptr, ptr %535, align 8, !tbaa !50
  %537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %533, ptr noundef @.str.46, ptr noundef %536) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

538:                                              ; preds = %525
  br label %539

539:                                              ; preds = %538, %520
  %540 = load i32, ptr %32, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %560

542:                                              ; preds = %539
  %543 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %555, %542
  %545 = load i32, ptr %14, align 4, !tbaa !9
  %546 = load i32, ptr %28, align 4, !tbaa !9
  %547 = icmp ult i32 %545, %546
  br i1 %547, label %548, label %558

548:                                              ; preds = %544
  %549 = load ptr, ptr %30, align 8, !tbaa !5
  %550 = load i32, ptr %14, align 4, !tbaa !9
  %551 = zext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %549, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !29
  %554 = call i32 (ptr, ...) @printf(ptr noundef @.str.48, double noundef %553)
  br label %555

555:                                              ; preds = %548
  %556 = load i32, ptr %14, align 4, !tbaa !9
  %557 = add i32 %556, 1
  store i32 %557, ptr %14, align 4, !tbaa !9
  br label %544, !llvm.loop !51

558:                                              ; preds = %544
  %559 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %560

560:                                              ; preds = %558, %539
  %561 = getelementptr inbounds [4097 x i8], ptr %19, i64 0, i64 0
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.estim_config_s, ptr %562, i32 0, i32 17
  %564 = load ptr, ptr %563, align 8, !tbaa !52
  %565 = call ptr @strncpy(ptr noundef %561, ptr noundef %564, i64 noundef 4096) #8
  %566 = getelementptr inbounds [4097 x i8], ptr %20, i64 0, i64 0
  %567 = load ptr, ptr %4, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.estim_config_s, ptr %567, i32 0, i32 18
  %569 = load ptr, ptr %568, align 8, !tbaa !53
  %570 = call ptr @strncpy(ptr noundef %566, ptr noundef %569, i64 noundef 4096) #8
  %571 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.estim_config_s, ptr %572, i32 0, i32 28
  %574 = load i32, ptr %573, align 8, !tbaa !54
  %575 = load i32, ptr %5, align 4, !tbaa !9
  %576 = add i32 %574, %575
  %577 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %571, ptr noundef @.str.49, i32 noundef %576) #8
  %578 = getelementptr inbounds [4097 x i8], ptr %19, i64 0, i64 0
  %579 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %580 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %581 = call i64 @strlen(ptr noundef %580) #10
  %582 = sub i64 4096, %581
  %583 = call ptr @strncat(ptr noundef %578, ptr noundef %579, i64 noundef %582) #8
  %584 = getelementptr inbounds [4097 x i8], ptr %20, i64 0, i64 0
  %585 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %586 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %587 = call i64 @strlen(ptr noundef %586) #10
  %588 = sub i64 4096, %587
  %589 = call ptr @strncat(ptr noundef %584, ptr noundef %585, i64 noundef %588) #8
  %590 = getelementptr inbounds [4097 x i8], ptr %19, i64 0, i64 0
  %591 = call noalias ptr @fopen(ptr noundef %590, ptr noundef @.str.50)
  store ptr %591, ptr %15, align 8, !tbaa !5
  %592 = icmp ne ptr %591, null
  br i1 %592, label %601, label %593

593:                                              ; preds = %560
  %594 = load ptr, ptr @stderr, align 8, !tbaa !5
  %595 = load i32, ptr %5, align 4, !tbaa !9
  %596 = getelementptr inbounds [4097 x i8], ptr %19, i64 0, i64 0
  %597 = call ptr @__errno_location() #9
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = call ptr @strerror(i32 noundef %598) #8
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %594, ptr noundef @.str.51, i32 noundef %595, ptr noundef %596, ptr noundef %599) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

601:                                              ; preds = %560
  %602 = load i32, ptr %32, align 4, !tbaa !9
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %628

604:                                              ; preds = %601
  %605 = getelementptr inbounds [4097 x i8], ptr %22, i64 0, i64 0
  %606 = load ptr, ptr %4, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.estim_config_s, ptr %606, i32 0, i32 27
  %608 = load ptr, ptr %607, align 8, !tbaa !55
  %609 = call ptr @strncpy(ptr noundef %605, ptr noundef %608, i64 noundef 4096) #8
  %610 = getelementptr inbounds [4097 x i8], ptr %22, i64 0, i64 0
  %611 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %612 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %613 = call i64 @strlen(ptr noundef %612) #10
  %614 = sub i64 4096, %613
  %615 = call ptr @strncat(ptr noundef %610, ptr noundef %611, i64 noundef %614) #8
  %616 = getelementptr inbounds [4097 x i8], ptr %22, i64 0, i64 0
  %617 = call noalias ptr @fopen(ptr noundef %616, ptr noundef @.str.50)
  store ptr %617, ptr %18, align 8, !tbaa !5
  %618 = icmp ne ptr %617, null
  br i1 %618, label %627, label %619

619:                                              ; preds = %604
  %620 = load ptr, ptr @stderr, align 8, !tbaa !5
  %621 = load i32, ptr %5, align 4, !tbaa !9
  %622 = getelementptr inbounds [4097 x i8], ptr %22, i64 0, i64 0
  %623 = call ptr @__errno_location() #9
  %624 = load i32, ptr %623, align 4, !tbaa !9
  %625 = call ptr @strerror(i32 noundef %624) #8
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %620, ptr noundef @.str.51, i32 noundef %621, ptr noundef %622, ptr noundef %625) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

627:                                              ; preds = %604
  br label %628

628:                                              ; preds = %627, %601
  %629 = load ptr, ptr %11, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.graph_s, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %630, align 4, !tbaa !20
  %632 = icmp ne i32 %631, 0
  %633 = zext i1 %632 to i64
  %634 = select i1 %632, ptr @.str.33, ptr @.str.34
  store ptr %634, ptr %35, align 8, !tbaa !5
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.estim_config_s, ptr %635, i32 0, i32 8
  %637 = load i32, ptr %636, align 4, !tbaa !22
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %669

639:                                              ; preds = %628
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %665, %639
  %641 = load i32, ptr %14, align 4, !tbaa !9
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.estim_config_s, ptr %642, i32 0, i32 34
  %644 = getelementptr inbounds %struct.param_config_s, ptr %643, i32 0, i32 0
  %645 = load i32, ptr %644, align 8, !tbaa !23
  %646 = icmp ult i32 %641, %645
  br i1 %646, label %647, label %668

647:                                              ; preds = %640
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.estim_config_s, ptr %648, i32 0, i32 34
  %650 = getelementptr inbounds %struct.param_config_s, ptr %649, i32 0, i32 2
  %651 = load ptr, ptr %650, align 8, !tbaa !24
  %652 = load i32, ptr %14, align 4, !tbaa !9
  %653 = zext i32 %652 to i64
  %654 = getelementptr inbounds ptr, ptr %651, i64 %653
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  %656 = load ptr, ptr %35, align 8, !tbaa !5
  %657 = call i32 @strcasecmp(ptr noundef %655, ptr noundef %656) #10
  %658 = icmp eq i32 %657, 0
  br i1 %658, label %659, label %664

659:                                              ; preds = %647
  %660 = load ptr, ptr @stderr, align 8, !tbaa !5
  %661 = load ptr, ptr %35, align 8, !tbaa !5
  %662 = load ptr, ptr %35, align 8, !tbaa !5
  %663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %660, ptr noundef @.str.52, ptr noundef %661, ptr noundef %662, ptr noundef @.str.53) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

664:                                              ; preds = %647
  br label %665

665:                                              ; preds = %664
  %666 = load i32, ptr %14, align 4, !tbaa !9
  %667 = add i32 %666, 1
  store i32 %667, ptr %14, align 4, !tbaa !9
  br label %640, !llvm.loop !56

668:                                              ; preds = %640
  br label %669

669:                                              ; preds = %668, %628
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.estim_config_s, ptr %670, i32 0, i32 8
  %672 = load i32, ptr %671, align 4, !tbaa !22
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %687, label %674

674:                                              ; preds = %669
  %675 = load ptr, ptr %4, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.estim_config_s, ptr %675, i32 0, i32 10
  %677 = load double, ptr %676, align 8, !tbaa !57
  %678 = fsub double %677, 1.000000e-01
  %679 = call double @llvm.fabs.f64(double %678)
  %680 = fcmp ole double %679, 0x3CB0000000000000
  br i1 %680, label %687, label %681

681:                                              ; preds = %674
  %682 = load ptr, ptr @stderr, align 8, !tbaa !5
  %683 = load ptr, ptr %4, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.estim_config_s, ptr %683, i32 0, i32 10
  %685 = load double, ptr %684, align 8, !tbaa !57
  %686 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %682, ptr noundef @.str.54, double noundef %685) #8
  br label %687

687:                                              ; preds = %681, %674, %669
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.estim_config_s, ptr %688, i32 0, i32 23
  %690 = load i32, ptr %689, align 8, !tbaa !58
  %691 = icmp ne i32 %690, 0
  br i1 %691, label %692, label %719

692:                                              ; preds = %687
  %693 = load ptr, ptr %4, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.estim_config_s, ptr %693, i32 0, i32 1
  %695 = load double, ptr %694, align 8, !tbaa !59
  %696 = fsub double %695, 1.000000e-09
  %697 = call double @llvm.fabs.f64(double %696)
  %698 = fcmp ole double %697, 0x3CB0000000000000
  br i1 %698, label %705, label %699

699:                                              ; preds = %692
  %700 = load ptr, ptr @stderr, align 8, !tbaa !5
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.estim_config_s, ptr %701, i32 0, i32 1
  %703 = load double, ptr %702, align 8, !tbaa !59
  %704 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %700, ptr noundef @.str.55, double noundef %703) #8
  br label %705

705:                                              ; preds = %699, %692
  %706 = load ptr, ptr %4, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.estim_config_s, ptr %706, i32 0, i32 2
  %708 = load double, ptr %707, align 8, !tbaa !60
  %709 = fsub double %708, 1.000000e-02
  %710 = call double @llvm.fabs.f64(double %709)
  %711 = fcmp ole double %710, 0x3CB0000000000000
  br i1 %711, label %718, label %712

712:                                              ; preds = %705
  %713 = load ptr, ptr @stderr, align 8, !tbaa !5
  %714 = load ptr, ptr %4, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.estim_config_s, ptr %714, i32 0, i32 2
  %716 = load double, ptr %715, align 8, !tbaa !60
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef @.str.56, double noundef %716) #8
  br label %718

718:                                              ; preds = %712, %705
  br label %746

719:                                              ; preds = %687
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.estim_config_s, ptr %720, i32 0, i32 24
  %722 = load double, ptr %721, align 8, !tbaa !61
  %723 = fsub double %722, 1.000000e-03
  %724 = call double @llvm.fabs.f64(double %723)
  %725 = fcmp ole double %724, 0x3CB0000000000000
  br i1 %725, label %732, label %726

726:                                              ; preds = %719
  %727 = load ptr, ptr @stderr, align 8, !tbaa !5
  %728 = load ptr, ptr %4, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.estim_config_s, ptr %728, i32 0, i32 24
  %730 = load double, ptr %729, align 8, !tbaa !61
  %731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %727, ptr noundef @.str.57, double noundef %730) #8
  br label %732

732:                                              ; preds = %726, %719
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.estim_config_s, ptr %733, i32 0, i32 25
  %735 = load double, ptr %734, align 8, !tbaa !62
  %736 = fsub double %735, 1.000000e-02
  %737 = call double @llvm.fabs.f64(double %736)
  %738 = fcmp ole double %737, 0x3CB0000000000000
  br i1 %738, label %745, label %739

739:                                              ; preds = %732
  %740 = load ptr, ptr @stderr, align 8, !tbaa !5
  %741 = load ptr, ptr %4, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.estim_config_s, ptr %741, i32 0, i32 25
  %743 = load double, ptr %742, align 8, !tbaa !62
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %740, ptr noundef @.str.58, double noundef %743) #8
  br label %745

745:                                              ; preds = %739, %732
  br label %746

746:                                              ; preds = %745, %718
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.estim_config_s, ptr %747, i32 0, i32 21
  %749 = load i32, ptr %748, align 8, !tbaa !19
  %750 = icmp ne i32 %749, 0
  br i1 %750, label %751, label %768

751:                                              ; preds = %746
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.estim_config_s, ptr %752, i32 0, i32 20
  %754 = load ptr, ptr %753, align 8, !tbaa !49
  %755 = icmp ne ptr %754, null
  br i1 %755, label %759, label %756

756:                                              ; preds = %751
  %757 = load ptr, ptr @stderr, align 8, !tbaa !5
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %757, ptr noundef @.str.59) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

759:                                              ; preds = %751
  %760 = load ptr, ptr %11, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.graph_s, ptr %760, i32 0, i32 34
  %762 = load i32, ptr %761, align 8, !tbaa !63
  %763 = icmp ult i32 %762, 1
  br i1 %763, label %764, label %767

764:                                              ; preds = %759
  %765 = load ptr, ptr @stderr, align 8, !tbaa !5
  %766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %765, ptr noundef @.str.60) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

767:                                              ; preds = %759
  br label %777

768:                                              ; preds = %746
  %769 = load ptr, ptr %4, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.estim_config_s, ptr %769, i32 0, i32 20
  %771 = load ptr, ptr %770, align 8, !tbaa !49
  %772 = icmp ne ptr %771, null
  br i1 %772, label %773, label %776

773:                                              ; preds = %768
  %774 = load ptr, ptr @stderr, align 8, !tbaa !5
  %775 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %774, ptr noundef @.str.61) #8
  br label %776

776:                                              ; preds = %773, %768
  br label %777

777:                                              ; preds = %776, %767
  %778 = load ptr, ptr %4, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.estim_config_s, ptr %778, i32 0, i32 30
  %780 = load i32, ptr %779, align 8, !tbaa !64
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %823

782:                                              ; preds = %777
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.estim_config_s, ptr %783, i32 0, i32 32
  %785 = load i32, ptr %784, align 8, !tbaa !18
  %786 = icmp ne i32 %785, 0
  br i1 %786, label %790, label %787

787:                                              ; preds = %782
  %788 = load ptr, ptr @stderr, align 8, !tbaa !5
  %789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %788, ptr noundef @.str.62) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

790:                                              ; preds = %782
  %791 = load ptr, ptr %4, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.estim_config_s, ptr %791, i32 0, i32 33
  %793 = load i32, ptr %792, align 4, !tbaa !16
  %794 = icmp ne i32 %793, 0
  br i1 %794, label %795, label %798

795:                                              ; preds = %790
  %796 = load ptr, ptr @stderr, align 8, !tbaa !5
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %796, ptr noundef @.str.63) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

798:                                              ; preds = %790
  %799 = load ptr, ptr %4, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.estim_config_s, ptr %799, i32 0, i32 21
  %801 = load i32, ptr %800, align 8, !tbaa !19
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %806

803:                                              ; preds = %798
  %804 = load ptr, ptr @stderr, align 8, !tbaa !5
  %805 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %804, ptr noundef @.str.64) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

806:                                              ; preds = %798
  %807 = load ptr, ptr %4, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.estim_config_s, ptr %807, i32 0, i32 29
  %809 = load ptr, ptr %808, align 8, !tbaa !50
  %810 = icmp ne ptr %809, null
  br i1 %810, label %814, label %811

811:                                              ; preds = %806
  %812 = load ptr, ptr @stderr, align 8, !tbaa !5
  %813 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %812, ptr noundef @.str.65) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

814:                                              ; preds = %806
  %815 = load ptr, ptr %11, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.graph_s, ptr %815, i32 0, i32 43
  %817 = load i32, ptr %816, align 8, !tbaa !65
  %818 = icmp ult i32 %817, 1
  br i1 %818, label %819, label %822

819:                                              ; preds = %814
  %820 = load ptr, ptr @stderr, align 8, !tbaa !5
  %821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef @.str.66) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

822:                                              ; preds = %814
  br label %823

823:                                              ; preds = %822, %777
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.estim_config_s, ptr %824, i32 0, i32 31
  %826 = load i32, ptr %825, align 4, !tbaa !17
  %827 = icmp ne i32 %826, 0
  br i1 %827, label %828, label %853

828:                                              ; preds = %823
  %829 = load ptr, ptr %4, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.estim_config_s, ptr %829, i32 0, i32 32
  %831 = load i32, ptr %830, align 8, !tbaa !18
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %836, label %833

833:                                              ; preds = %828
  %834 = load ptr, ptr @stderr, align 8, !tbaa !5
  %835 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %834, ptr noundef @.str.67) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

836:                                              ; preds = %828
  %837 = load ptr, ptr %4, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.estim_config_s, ptr %837, i32 0, i32 21
  %839 = load i32, ptr %838, align 8, !tbaa !19
  %840 = icmp ne i32 %839, 0
  br i1 %840, label %841, label %844

841:                                              ; preds = %836
  %842 = load ptr, ptr @stderr, align 8, !tbaa !5
  %843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %842, ptr noundef @.str.68) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

844:                                              ; preds = %836
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.estim_config_s, ptr %845, i32 0, i32 30
  %847 = load i32, ptr %846, align 8, !tbaa !64
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %852

849:                                              ; preds = %844
  %850 = load ptr, ptr @stderr, align 8, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %850, ptr noundef @.str.69) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

852:                                              ; preds = %844
  br label %853

853:                                              ; preds = %852, %823
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.estim_config_s, ptr %854, i32 0, i32 22
  %856 = load i32, ptr %855, align 4, !tbaa !66
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %858, label %866

858:                                              ; preds = %853
  %859 = load ptr, ptr %4, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.estim_config_s, ptr %859, i32 0, i32 32
  %861 = load i32, ptr %860, align 8, !tbaa !18
  %862 = icmp ne i32 %861, 0
  br i1 %862, label %866, label %863

863:                                              ; preds = %858
  %864 = load ptr, ptr @stderr, align 8, !tbaa !5
  %865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %864, ptr noundef @.str.70) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

866:                                              ; preds = %858, %853
  %867 = load i32, ptr %5, align 4, !tbaa !9
  %868 = icmp eq i32 %867, 0
  br i1 %868, label %869, label %898

869:                                              ; preds = %866
  %870 = load ptr, ptr %11, align 8, !tbaa !5
  %871 = load ptr, ptr %4, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.estim_config_s, ptr %871, i32 0, i32 31
  %873 = load i32, ptr %872, align 4, !tbaa !17
  call void @print_data_summary(ptr noundef %870, i32 noundef %873)
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  %875 = call i32 @num_loops(ptr noundef %874)
  store i32 %875, ptr %34, align 4, !tbaa !9
  %876 = load ptr, ptr %11, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.graph_s, ptr %876, i32 0, i32 1
  %878 = load i32, ptr %877, align 4, !tbaa !20
  %879 = icmp ne i32 %878, 0
  %880 = zext i1 %879 to i64
  %881 = select i1 %879, ptr @.str.72, ptr @.str.73
  %882 = load i32, ptr %34, align 4, !tbaa !9
  %883 = call i32 (ptr, ...) @printf(ptr noundef @.str.71, ptr noundef %881, i32 noundef %882)
  %884 = load i32, ptr %34, align 4, !tbaa !9
  %885 = icmp ugt i32 %884, 0
  br i1 %885, label %886, label %895

886:                                              ; preds = %869
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.estim_config_s, ptr %887, i32 0, i32 31
  %889 = load i32, ptr %888, align 4, !tbaa !17
  %890 = icmp ne i32 %889, 0
  br i1 %890, label %894, label %891

891:                                              ; preds = %886
  %892 = load ptr, ptr @stderr, align 8, !tbaa !5
  %893 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %892, ptr noundef @.str.74) #8
  br label %894

894:                                              ; preds = %891, %886
  br label %895

895:                                              ; preds = %894, %869
  %896 = load ptr, ptr %11, align 8, !tbaa !5
  call void @print_zone_summary(ptr noundef %896)
  %897 = load ptr, ptr %11, align 8, !tbaa !5
  call void @print_term_summary(ptr noundef %897)
  br label %898

898:                                              ; preds = %895, %866
  %899 = getelementptr inbounds [4097 x i8], ptr %20, i64 0, i64 0
  %900 = call noalias ptr @fopen(ptr noundef %899, ptr noundef @.str.50)
  store ptr %900, ptr %16, align 8, !tbaa !5
  %901 = icmp ne ptr %900, null
  br i1 %901, label %910, label %902

902:                                              ; preds = %898
  %903 = load ptr, ptr @stderr, align 8, !tbaa !5
  %904 = load i32, ptr %5, align 4, !tbaa !9
  %905 = getelementptr inbounds [4097 x i8], ptr %20, i64 0, i64 0
  %906 = call ptr @__errno_location() #9
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = call ptr @strerror(i32 noundef %907) #8
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %903, ptr noundef @.str.51, i32 noundef %904, ptr noundef %905, ptr noundef %908) #8
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

910:                                              ; preds = %898
  %911 = load ptr, ptr %4, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.estim_config_s, ptr %911, i32 0, i32 8
  %913 = load i32, ptr %912, align 4, !tbaa !22
  %914 = icmp ne i32 %913, 0
  br i1 %914, label %915, label %922

915:                                              ; preds = %910
  %916 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %917 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %918 = call i64 @strlen(ptr noundef %917) #10
  %919 = getelementptr inbounds i8, ptr %916, i64 %918
  %920 = load ptr, ptr %35, align 8, !tbaa !5
  %921 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %919, i64 noundef 65536, ptr noundef @.str.75, ptr noundef %920) #8
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %922

922:                                              ; preds = %915, %910
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %986, %922
  %924 = load i32, ptr %14, align 4, !tbaa !9
  %925 = load ptr, ptr %4, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.estim_config_s, ptr %925, i32 0, i32 34
  %927 = getelementptr inbounds %struct.param_config_s, ptr %926, i32 0, i32 0
  %928 = load i32, ptr %927, align 8, !tbaa !23
  %929 = icmp ult i32 %924, %928
  br i1 %929, label %930, label %989

930:                                              ; preds = %923
  %931 = load i32, ptr %33, align 4, !tbaa !9
  %932 = icmp ne i32 %931, 0
  br i1 %932, label %939, label %933

933:                                              ; preds = %930
  %934 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %935 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %936 = call i64 @strlen(ptr noundef %935) #10
  %937 = getelementptr inbounds i8, ptr %934, i64 %936
  %938 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %937, i64 noundef 65536, ptr noundef @.str.76) #8
  br label %939

939:                                              ; preds = %933, %930
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.estim_config_s, ptr %940, i32 0, i32 34
  %942 = getelementptr inbounds %struct.param_config_s, ptr %941, i32 0, i32 3
  %943 = load ptr, ptr %942, align 8, !tbaa !28
  %944 = load i32, ptr %14, align 4, !tbaa !9
  %945 = zext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %943, i64 %945
  %947 = load double, ptr %946, align 8, !tbaa !29
  %948 = fcmp ogt double %947, 0.000000e+00
  br i1 %948, label %949, label %971

949:                                              ; preds = %939
  %950 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %951 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %952 = call i64 @strlen(ptr noundef %951) #10
  %953 = getelementptr inbounds i8, ptr %950, i64 %952
  %954 = load ptr, ptr %4, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.estim_config_s, ptr %954, i32 0, i32 34
  %956 = getelementptr inbounds %struct.param_config_s, ptr %955, i32 0, i32 2
  %957 = load ptr, ptr %956, align 8, !tbaa !24
  %958 = load i32, ptr %14, align 4, !tbaa !9
  %959 = zext i32 %958 to i64
  %960 = getelementptr inbounds ptr, ptr %957, i64 %959
  %961 = load ptr, ptr %960, align 8, !tbaa !5
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.estim_config_s, ptr %962, i32 0, i32 34
  %964 = getelementptr inbounds %struct.param_config_s, ptr %963, i32 0, i32 3
  %965 = load ptr, ptr %964, align 8, !tbaa !28
  %966 = load i32, ptr %14, align 4, !tbaa !9
  %967 = zext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %965, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !29
  %970 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %953, i64 noundef 65536, ptr noundef @.str.77, ptr noundef %961, double noundef %969) #8
  br label %985

971:                                              ; preds = %939
  %972 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %973 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %974 = call i64 @strlen(ptr noundef %973) #10
  %975 = getelementptr inbounds i8, ptr %972, i64 %974
  %976 = load ptr, ptr %4, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.estim_config_s, ptr %976, i32 0, i32 34
  %978 = getelementptr inbounds %struct.param_config_s, ptr %977, i32 0, i32 2
  %979 = load ptr, ptr %978, align 8, !tbaa !24
  %980 = load i32, ptr %14, align 4, !tbaa !9
  %981 = zext i32 %980 to i64
  %982 = getelementptr inbounds ptr, ptr %979, i64 %981
  %983 = load ptr, ptr %982, align 8, !tbaa !5
  %984 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %975, i64 noundef 65536, ptr noundef @.str.75, ptr noundef %983) #8
  br label %985

985:                                              ; preds = %971, %949
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %985
  %987 = load i32, ptr %14, align 4, !tbaa !9
  %988 = add i32 %987, 1
  store i32 %988, ptr %14, align 4, !tbaa !9
  br label %923, !llvm.loop !67

989:                                              ; preds = %923
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %990

990:                                              ; preds = %1069, %989
  %991 = load i32, ptr %14, align 4, !tbaa !9
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.estim_config_s, ptr %992, i32 0, i32 34
  %994 = getelementptr inbounds %struct.param_config_s, ptr %993, i32 0, i32 5
  %995 = load i32, ptr %994, align 8, !tbaa !35
  %996 = icmp ult i32 %991, %995
  br i1 %996, label %997, label %1072

997:                                              ; preds = %990
  %998 = load i32, ptr %33, align 4, !tbaa !9
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1006, label %1000

1000:                                             ; preds = %997
  %1001 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1002 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1003 = call i64 @strlen(ptr noundef %1002) #10
  %1004 = getelementptr inbounds i8, ptr %1001, i64 %1003
  %1005 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1004, i64 noundef 65536, ptr noundef @.str.76) #8
  br label %1006

1006:                                             ; preds = %1000, %997
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.estim_config_s, ptr %1007, i32 0, i32 34
  %1009 = getelementptr inbounds %struct.param_config_s, ptr %1008, i32 0, i32 10
  %1010 = load ptr, ptr %1009, align 8, !tbaa !43
  %1011 = load i32, ptr %14, align 4, !tbaa !9
  %1012 = zext i32 %1011 to i64
  %1013 = getelementptr inbounds double, ptr %1010, i64 %1012
  %1014 = load double, ptr %1013, align 8, !tbaa !29
  %1015 = fcmp oge double %1014, 0.000000e+00
  br i1 %1015, label %1016, label %1046

1016:                                             ; preds = %1006
  %1017 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1018 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1019 = call i64 @strlen(ptr noundef %1018) #10
  %1020 = getelementptr inbounds i8, ptr %1017, i64 %1019
  %1021 = load ptr, ptr %4, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.estim_config_s, ptr %1021, i32 0, i32 34
  %1023 = getelementptr inbounds %struct.param_config_s, ptr %1022, i32 0, i32 9
  %1024 = load ptr, ptr %1023, align 8, !tbaa !68
  %1025 = load i32, ptr %14, align 4, !tbaa !9
  %1026 = zext i32 %1025 to i64
  %1027 = getelementptr inbounds ptr, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %1027, align 8, !tbaa !5
  %1029 = load ptr, ptr %4, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.estim_config_s, ptr %1029, i32 0, i32 34
  %1031 = getelementptr inbounds %struct.param_config_s, ptr %1030, i32 0, i32 7
  %1032 = load ptr, ptr %1031, align 8, !tbaa !69
  %1033 = load i32, ptr %14, align 4, !tbaa !9
  %1034 = zext i32 %1033 to i64
  %1035 = getelementptr inbounds ptr, ptr %1032, i64 %1034
  %1036 = load ptr, ptr %1035, align 8, !tbaa !5
  %1037 = load ptr, ptr %4, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.estim_config_s, ptr %1037, i32 0, i32 34
  %1039 = getelementptr inbounds %struct.param_config_s, ptr %1038, i32 0, i32 10
  %1040 = load ptr, ptr %1039, align 8, !tbaa !43
  %1041 = load i32, ptr %14, align 4, !tbaa !9
  %1042 = zext i32 %1041 to i64
  %1043 = getelementptr inbounds double, ptr %1040, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !29
  %1045 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1020, i64 noundef 65536, ptr noundef @.str.78, ptr noundef %1028, ptr noundef %1036, double noundef %1044) #8
  br label %1068

1046:                                             ; preds = %1006
  %1047 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1048 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1049 = call i64 @strlen(ptr noundef %1048) #10
  %1050 = getelementptr inbounds i8, ptr %1047, i64 %1049
  %1051 = load ptr, ptr %4, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.estim_config_s, ptr %1051, i32 0, i32 34
  %1053 = getelementptr inbounds %struct.param_config_s, ptr %1052, i32 0, i32 9
  %1054 = load ptr, ptr %1053, align 8, !tbaa !68
  %1055 = load i32, ptr %14, align 4, !tbaa !9
  %1056 = zext i32 %1055 to i64
  %1057 = getelementptr inbounds ptr, ptr %1054, i64 %1056
  %1058 = load ptr, ptr %1057, align 8, !tbaa !5
  %1059 = load ptr, ptr %4, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.estim_config_s, ptr %1059, i32 0, i32 34
  %1061 = getelementptr inbounds %struct.param_config_s, ptr %1060, i32 0, i32 7
  %1062 = load ptr, ptr %1061, align 8, !tbaa !69
  %1063 = load i32, ptr %14, align 4, !tbaa !9
  %1064 = zext i32 %1063 to i64
  %1065 = getelementptr inbounds ptr, ptr %1062, i64 %1064
  %1066 = load ptr, ptr %1065, align 8, !tbaa !5
  %1067 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1050, i64 noundef 65536, ptr noundef @.str.79, ptr noundef %1058, ptr noundef %1066) #8
  br label %1068

1068:                                             ; preds = %1046, %1016
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %14, align 4, !tbaa !9
  %1071 = add i32 %1070, 1
  store i32 %1071, ptr %14, align 4, !tbaa !9
  br label %990, !llvm.loop !70

1072:                                             ; preds = %990
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1073

1073:                                             ; preds = %1103, %1072
  %1074 = load i32, ptr %14, align 4, !tbaa !9
  %1075 = load ptr, ptr %4, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.estim_config_s, ptr %1075, i32 0, i32 34
  %1077 = getelementptr inbounds %struct.param_config_s, ptr %1076, i32 0, i32 12
  %1078 = load i32, ptr %1077, align 8, !tbaa !36
  %1079 = icmp ult i32 %1074, %1078
  br i1 %1079, label %1080, label %1106

1080:                                             ; preds = %1073
  %1081 = load i32, ptr %33, align 4, !tbaa !9
  %1082 = icmp ne i32 %1081, 0
  br i1 %1082, label %1089, label %1083

1083:                                             ; preds = %1080
  %1084 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1085 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1086 = call i64 @strlen(ptr noundef %1085) #10
  %1087 = getelementptr inbounds i8, ptr %1084, i64 %1086
  %1088 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1087, i64 noundef 65536, ptr noundef @.str.76) #8
  br label %1089

1089:                                             ; preds = %1083, %1080
  %1090 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1091 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1092 = call i64 @strlen(ptr noundef %1091) #10
  %1093 = getelementptr inbounds i8, ptr %1090, i64 %1092
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.estim_config_s, ptr %1094, i32 0, i32 34
  %1096 = getelementptr inbounds %struct.param_config_s, ptr %1095, i32 0, i32 17
  %1097 = load ptr, ptr %1096, align 8, !tbaa !71
  %1098 = load i32, ptr %14, align 4, !tbaa !9
  %1099 = zext i32 %1098 to i64
  %1100 = getelementptr inbounds ptr, ptr %1097, i64 %1099
  %1101 = load ptr, ptr %1100, align 8, !tbaa !5
  %1102 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1093, i64 noundef 65536, ptr noundef @.str.75, ptr noundef %1101) #8
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1089
  %1104 = load i32, ptr %14, align 4, !tbaa !9
  %1105 = add i32 %1104, 1
  store i32 %1105, ptr %14, align 4, !tbaa !9
  br label %1073, !llvm.loop !72

1106:                                             ; preds = %1073
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1107

1107:                                             ; preds = %1155, %1106
  %1108 = load i32, ptr %14, align 4, !tbaa !9
  %1109 = load ptr, ptr %4, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.estim_config_s, ptr %1109, i32 0, i32 34
  %1111 = getelementptr inbounds %struct.param_config_s, ptr %1110, i32 0, i32 19
  %1112 = load i32, ptr %1111, align 8, !tbaa !37
  %1113 = icmp ult i32 %1108, %1112
  br i1 %1113, label %1114, label %1158

1114:                                             ; preds = %1107
  %1115 = load i32, ptr %33, align 4, !tbaa !9
  %1116 = icmp ne i32 %1115, 0
  br i1 %1116, label %1123, label %1117

1117:                                             ; preds = %1114
  %1118 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1119 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1120 = call i64 @strlen(ptr noundef %1119) #10
  %1121 = getelementptr inbounds i8, ptr %1118, i64 %1120
  %1122 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1121, i64 noundef 65536, ptr noundef @.str.76) #8
  br label %1123

1123:                                             ; preds = %1117, %1114
  %1124 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1125 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1126 = call i64 @strlen(ptr noundef %1125) #10
  %1127 = getelementptr inbounds i8, ptr %1124, i64 %1126
  %1128 = load ptr, ptr %4, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.estim_config_s, ptr %1128, i32 0, i32 34
  %1130 = getelementptr inbounds %struct.param_config_s, ptr %1129, i32 0, i32 23
  %1131 = load ptr, ptr %1130, align 8, !tbaa !73
  %1132 = load i32, ptr %14, align 4, !tbaa !9
  %1133 = zext i32 %1132 to i64
  %1134 = getelementptr inbounds ptr, ptr %1131, i64 %1133
  %1135 = load ptr, ptr %1134, align 8, !tbaa !5
  %1136 = load ptr, ptr %4, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.estim_config_s, ptr %1136, i32 0, i32 34
  %1138 = getelementptr inbounds %struct.param_config_s, ptr %1137, i32 0, i32 21
  %1139 = load ptr, ptr %1138, align 8, !tbaa !74
  %1140 = load i32, ptr %14, align 4, !tbaa !9
  %1141 = zext i32 %1140 to i64
  %1142 = getelementptr inbounds %struct.string_pair_s, ptr %1139, i64 %1141
  %1143 = getelementptr inbounds %struct.string_pair_s, ptr %1142, i32 0, i32 0
  %1144 = load ptr, ptr %1143, align 8, !tbaa !75
  %1145 = load ptr, ptr %4, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.estim_config_s, ptr %1145, i32 0, i32 34
  %1147 = getelementptr inbounds %struct.param_config_s, ptr %1146, i32 0, i32 21
  %1148 = load ptr, ptr %1147, align 8, !tbaa !74
  %1149 = load i32, ptr %14, align 4, !tbaa !9
  %1150 = zext i32 %1149 to i64
  %1151 = getelementptr inbounds %struct.string_pair_s, ptr %1148, i64 %1150
  %1152 = getelementptr inbounds %struct.string_pair_s, ptr %1151, i32 0, i32 1
  %1153 = load ptr, ptr %1152, align 8, !tbaa !77
  %1154 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1127, i64 noundef 65536, ptr noundef @.str.80, ptr noundef %1135, ptr noundef %1144, ptr noundef %1153) #8
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %1155

1155:                                             ; preds = %1123
  %1156 = load i32, ptr %14, align 4, !tbaa !9
  %1157 = add i32 %1156, 1
  store i32 %1157, ptr %14, align 4, !tbaa !9
  br label %1107, !llvm.loop !78

1158:                                             ; preds = %1107
  %1159 = load ptr, ptr %15, align 8, !tbaa !5
  %1160 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1159, ptr noundef @.str.81, ptr noundef %1160) #8
  %1162 = load ptr, ptr %16, align 8, !tbaa !5
  %1163 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1164 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1162, ptr noundef @.str.82, ptr noundef %1163) #8
  %1165 = load i32, ptr %32, align 4, !tbaa !9
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1167, label %1210

1167:                                             ; preds = %1158
  %1168 = load ptr, ptr %18, align 8, !tbaa !5
  %1169 = getelementptr inbounds [65536 x i8], ptr %31, i64 0, i64 0
  %1170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1168, ptr noundef @.str.83, ptr noundef %1169) #8
  %1171 = load ptr, ptr %4, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.estim_config_s, ptr %1171, i32 0, i32 8
  %1173 = load i32, ptr %1172, align 4, !tbaa !22
  %1174 = icmp ne i32 %1173, 0
  br i1 %1174, label %1175, label %1180

1175:                                             ; preds = %1167
  %1176 = load ptr, ptr %18, align 8, !tbaa !5
  %1177 = load ptr, ptr %11, align 8, !tbaa !5
  %1178 = call i32 @num_arcs_or_edges(ptr noundef %1177)
  %1179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1176, ptr noundef @.str.3, i32 noundef %1178) #8
  br label %1180

1180:                                             ; preds = %1175, %1167
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1181

1181:                                             ; preds = %1204, %1180
  %1182 = load i32, ptr %14, align 4, !tbaa !9
  %1183 = load i32, ptr %28, align 4, !tbaa !9
  %1184 = icmp ult i32 %1182, %1183
  br i1 %1184, label %1185, label %1207

1185:                                             ; preds = %1181
  %1186 = load ptr, ptr %18, align 8, !tbaa !5
  %1187 = load ptr, ptr %30, align 8, !tbaa !5
  %1188 = load i32, ptr %14, align 4, !tbaa !9
  %1189 = zext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1187, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !29
  %1192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1186, ptr noundef @.str.84, double noundef %1191) #8
  %1193 = load i32, ptr %14, align 4, !tbaa !9
  %1194 = load i32, ptr %28, align 4, !tbaa !9
  %1195 = sub i32 %1194, 1
  %1196 = icmp eq i32 %1193, %1195
  br i1 %1196, label %1197, label %1200

1197:                                             ; preds = %1185
  %1198 = load ptr, ptr %18, align 8, !tbaa !5
  %1199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1198, ptr noundef @.str.4) #8
  br label %1203

1200:                                             ; preds = %1185
  %1201 = load ptr, ptr %18, align 8, !tbaa !5
  %1202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1201, ptr noundef @.str.76) #8
  br label %1203

1203:                                             ; preds = %1200, %1197
  br label %1204

1204:                                             ; preds = %1203
  %1205 = load i32, ptr %14, align 4, !tbaa !9
  %1206 = add i32 %1205, 1
  store i32 %1206, ptr %14, align 4, !tbaa !9
  br label %1181, !llvm.loop !79

1207:                                             ; preds = %1181
  %1208 = load ptr, ptr %18, align 8, !tbaa !5
  %1209 = call i32 @fclose(ptr noundef %1208)
  br label %1210

1210:                                             ; preds = %1207, %1158
  %1211 = load ptr, ptr %11, align 8, !tbaa !5
  %1212 = load i32, ptr %28, align 4, !tbaa !9
  %1213 = load i32, ptr %25, align 4, !tbaa !9
  %1214 = load i32, ptr %26, align 4, !tbaa !9
  %1215 = load i32, ptr %27, align 4, !tbaa !9
  %1216 = load ptr, ptr %4, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.estim_config_s, ptr %1216, i32 0, i32 34
  %1218 = getelementptr inbounds %struct.param_config_s, ptr %1217, i32 0, i32 1
  %1219 = load ptr, ptr %1218, align 8, !tbaa !27
  %1220 = load ptr, ptr %4, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.estim_config_s, ptr %1220, i32 0, i32 34
  %1222 = getelementptr inbounds %struct.param_config_s, ptr %1221, i32 0, i32 3
  %1223 = load ptr, ptr %1222, align 8, !tbaa !28
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.estim_config_s, ptr %1224, i32 0, i32 34
  %1226 = getelementptr inbounds %struct.param_config_s, ptr %1225, i32 0, i32 6
  %1227 = load ptr, ptr %1226, align 8, !tbaa !39
  %1228 = load ptr, ptr %4, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.estim_config_s, ptr %1228, i32 0, i32 34
  %1230 = getelementptr inbounds %struct.param_config_s, ptr %1229, i32 0, i32 13
  %1231 = load ptr, ptr %1230, align 8, !tbaa !40
  %1232 = load ptr, ptr %4, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.estim_config_s, ptr %1232, i32 0, i32 34
  %1234 = getelementptr inbounds %struct.param_config_s, ptr %1233, i32 0, i32 20
  %1235 = load ptr, ptr %1234, align 8, !tbaa !41
  %1236 = load ptr, ptr %4, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.estim_config_s, ptr %1236, i32 0, i32 34
  %1238 = getelementptr inbounds %struct.param_config_s, ptr %1237, i32 0, i32 8
  %1239 = load ptr, ptr %1238, align 8, !tbaa !42
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.estim_config_s, ptr %1240, i32 0, i32 34
  %1242 = getelementptr inbounds %struct.param_config_s, ptr %1241, i32 0, i32 10
  %1243 = load ptr, ptr %1242, align 8, !tbaa !43
  %1244 = load ptr, ptr %4, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.estim_config_s, ptr %1244, i32 0, i32 34
  %1246 = getelementptr inbounds %struct.param_config_s, ptr %1245, i32 0, i32 22
  %1247 = load ptr, ptr %1246, align 8, !tbaa !44
  %1248 = load ptr, ptr %4, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.estim_config_s, ptr %1248, i32 0, i32 3
  %1250 = load i32, ptr %1249, align 8, !tbaa !80
  %1251 = load ptr, ptr %4, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.estim_config_s, ptr %1251, i32 0, i32 4
  %1253 = load i32, ptr %1252, align 4, !tbaa !81
  %1254 = load ptr, ptr %4, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.estim_config_s, ptr %1254, i32 0, i32 5
  %1256 = load i32, ptr %1255, align 8, !tbaa !82
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.estim_config_s, ptr %1257, i32 0, i32 6
  %1259 = load i32, ptr %1258, align 4, !tbaa !83
  %1260 = load ptr, ptr %4, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.estim_config_s, ptr %1260, i32 0, i32 0
  %1262 = load double, ptr %1261, align 8, !tbaa !84
  %1263 = load ptr, ptr %4, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.estim_config_s, ptr %1263, i32 0, i32 1
  %1265 = load double, ptr %1264, align 8, !tbaa !59
  %1266 = load ptr, ptr %4, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.estim_config_s, ptr %1266, i32 0, i32 2
  %1268 = load double, ptr %1267, align 8, !tbaa !60
  %1269 = load ptr, ptr %29, align 8, !tbaa !5
  %1270 = load i32, ptr %5, align 4, !tbaa !9
  %1271 = load ptr, ptr %15, align 8, !tbaa !5
  %1272 = load ptr, ptr %16, align 8, !tbaa !5
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.estim_config_s, ptr %1273, i32 0, i32 7
  %1275 = load i32, ptr %1274, align 8, !tbaa !85
  %1276 = load ptr, ptr %4, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.estim_config_s, ptr %1276, i32 0, i32 8
  %1278 = load i32, ptr %1277, align 4, !tbaa !22
  %1279 = load ptr, ptr %4, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.estim_config_s, ptr %1279, i32 0, i32 10
  %1281 = load double, ptr %1280, align 8, !tbaa !57
  %1282 = load ptr, ptr %4, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.estim_config_s, ptr %1282, i32 0, i32 21
  %1284 = load i32, ptr %1283, align 8, !tbaa !19
  %1285 = load ptr, ptr %4, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.estim_config_s, ptr %1285, i32 0, i32 22
  %1287 = load i32, ptr %1286, align 4, !tbaa !66
  %1288 = load ptr, ptr %4, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.estim_config_s, ptr %1288, i32 0, i32 23
  %1290 = load i32, ptr %1289, align 8, !tbaa !58
  %1291 = load ptr, ptr %4, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.estim_config_s, ptr %1291, i32 0, i32 24
  %1293 = load double, ptr %1292, align 8, !tbaa !61
  %1294 = load ptr, ptr %4, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.estim_config_s, ptr %1294, i32 0, i32 25
  %1296 = load double, ptr %1295, align 8, !tbaa !62
  %1297 = load ptr, ptr %4, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.estim_config_s, ptr %1297, i32 0, i32 9
  %1299 = load i32, ptr %1298, align 8, !tbaa !38
  %1300 = load ptr, ptr %4, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.estim_config_s, ptr %1300, i32 0, i32 30
  %1302 = load i32, ptr %1301, align 8, !tbaa !64
  %1303 = load ptr, ptr %4, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.estim_config_s, ptr %1303, i32 0, i32 31
  %1305 = load i32, ptr %1304, align 4, !tbaa !17
  %1306 = call i32 @ee_estimate(ptr noundef %1211, i32 noundef %1212, i32 noundef %1213, i32 noundef %1214, i32 noundef %1215, ptr noundef %1219, ptr noundef %1223, ptr noundef %1227, ptr noundef %1231, ptr noundef %1235, ptr noundef %1239, ptr noundef %1243, ptr noundef %1247, i32 noundef %1250, i32 noundef %1253, i32 noundef %1256, i32 noundef %1259, double noundef %1262, double noundef %1265, double noundef %1268, ptr noundef %1269, i32 noundef %1270, ptr noundef %1271, ptr noundef %1272, i32 noundef %1275, i32 noundef %1278, double noundef %1281, i32 noundef %1284, i32 noundef %1287, i32 noundef %1290, double noundef %1293, double noundef %1296, i32 noundef %1299, i32 noundef %1302, i32 noundef %1305)
  %1307 = load ptr, ptr %15, align 8, !tbaa !5
  %1308 = call i32 @fclose(ptr noundef %1307)
  %1309 = load ptr, ptr %16, align 8, !tbaa !5
  %1310 = call i32 @fclose(ptr noundef %1309)
  %1311 = load ptr, ptr %4, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.estim_config_s, ptr %1311, i32 0, i32 11
  %1313 = load i32, ptr %1312, align 8, !tbaa !86
  %1314 = icmp ne i32 %1313, 0
  br i1 %1314, label %1315, label %1340

1315:                                             ; preds = %1210
  %1316 = getelementptr inbounds [4097 x i8], ptr %21, i64 0, i64 0
  %1317 = load ptr, ptr %4, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.estim_config_s, ptr %1317, i32 0, i32 19
  %1319 = load ptr, ptr %1318, align 8, !tbaa !87
  %1320 = call ptr @strncpy(ptr noundef %1316, ptr noundef %1319, i64 noundef 4096) #8
  %1321 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %1322 = load ptr, ptr %4, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.estim_config_s, ptr %1322, i32 0, i32 28
  %1324 = load i32, ptr %1323, align 8, !tbaa !54
  %1325 = load i32, ptr %5, align 4, !tbaa !9
  %1326 = add i32 %1324, %1325
  %1327 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1321, ptr noundef @.str.85, i32 noundef %1326) #8
  %1328 = getelementptr inbounds [4097 x i8], ptr %21, i64 0, i64 0
  %1329 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %1330 = getelementptr inbounds [16 x i8], ptr %23, i64 0, i64 0
  %1331 = call i64 @strlen(ptr noundef %1330) #10
  %1332 = sub i64 4096, %1331
  %1333 = call ptr @strncat(ptr noundef %1328, ptr noundef %1329, i64 noundef %1332) #8
  %1334 = getelementptr inbounds [4097 x i8], ptr %21, i64 0, i64 0
  %1335 = call noalias ptr @fopen(ptr noundef %1334, ptr noundef @.str.50)
  store ptr %1335, ptr %17, align 8, !tbaa !5
  %1336 = load ptr, ptr %17, align 8, !tbaa !5
  %1337 = load ptr, ptr %11, align 8, !tbaa !5
  call void @write_graph_arclist_to_file(ptr noundef %1336, ptr noundef %1337)
  %1338 = load ptr, ptr %17, align 8, !tbaa !5
  %1339 = call i32 @fclose(ptr noundef %1338)
  br label %1340

1340:                                             ; preds = %1315, %1210
  %1341 = load ptr, ptr %11, align 8, !tbaa !5
  call void @free_graph(ptr noundef %1341)
  %1342 = load ptr, ptr %29, align 8, !tbaa !5
  call void @free(ptr noundef %1342) #8
  %1343 = load ptr, ptr %30, align 8, !tbaa !5
  call void @free(ptr noundef %1343) #8
  store i32 0, ptr %3, align 4
  store i32 1, ptr %36, align 4
  br label %1344

1344:                                             ; preds = %1340, %902, %863, %849, %841, %833, %819, %811, %803, %795, %787, %764, %756, %659, %619, %593, %532, %513, %425, %369, %329, %320, %311, %302, %119, %99, %91, %83, %61, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 65536, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4097, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4097, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4097, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4097, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #8
  %1345 = load i32, ptr %3, align 4
  ret i32 %1345
}

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

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) #2

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__errno_location() #6

declare i32 @get_num_vertices_from_arclist_file(ptr noundef) #1

declare void @get_num_vertices_from_bipartite_pajek_file(ptr noundef, ptr noundef, ptr noundef) #1

declare ptr @allocate_graph(i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare i32 @check_param_network_type(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcasecmp(ptr noundef, ptr noundef) #7

declare ptr @safe_realloc(ptr noundef, i64 noundef) #1

declare i32 @load_attributes(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @build_attr_indices_from_names(ptr noundef, ptr noundef) #1

declare i32 @build_dyadic_indices_from_names(ptr noundef, ptr noundef, i32 noundef) #1

declare i32 @build_attr_interaction_pair_indices_from_names(ptr noundef, ptr noundef) #1

declare ptr @empty_graph_stats(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare ptr @load_graph_from_arclist_file(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @add_snowball_zones_to_graph(ptr noundef, ptr noundef) #1

declare i32 @add_cergm_terms_to_digraph(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind
declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind
declare ptr @strncat(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #7

declare void @print_data_summary(ptr noundef, i32 noundef) #1

declare i32 @num_loops(ptr noundef) #1

declare void @print_zone_summary(ptr noundef) #1

declare void @print_term_summary(ptr noundef) #1

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2

declare i32 @num_arcs_or_edges(ptr noundef) #1

declare i32 @fclose(ptr noundef) #1

declare void @write_graph_arclist_to_file(ptr noundef, ptr noundef) #1

declare void @free_graph(ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { noreturn 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 #5 = { 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 #6 = { nounwind willreturn memory(none) "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 #7 = { nounwind willreturn memory(read) "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 #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(none) }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { noreturn 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, !10, i64 176}
!12 = !{!"estim_config_s", !13, i64 0, !13, i64 8, !13, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !13, i64 56, !10, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !13, i64 160, !13, i64 168, !10, i64 176, !6, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !14, i64 224}
!13 = !{!"double", !7, i64 0}
!14 = !{!"param_config_s", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !10, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192}
!15 = !{!12, !6, i64 72}
!16 = !{!12, !10, i64 220}
!17 = !{!12, !10, i64 212}
!18 = !{!12, !10, i64 216}
!19 = !{!12, !10, i64 144}
!20 = !{!21, !10, i64 4}
!21 = !{!"graph_s", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !6, i64 104, !6, i64 112, !10, i64 120, !6, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !6, i64 224, !10, i64 232, !10, i64 236, !6, i64 240, !6, i64 248, !10, i64 256, !6, i64 264, !10, i64 272, !6, i64 280, !6, i64 288, !10, i64 296, !10, i64 300, !6, i64 304, !10, i64 312, !6, i64 320}
!22 = !{!12, !10, i64 44}
!23 = !{!12, !10, i64 224}
!24 = !{!12, !6, i64 240}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!12, !6, i64 232}
!28 = !{!12, !6, i64 248}
!29 = !{!13, !13, i64 0}
!30 = !{!12, !6, i64 256}
!31 = !{!12, !6, i64 80}
!32 = !{!12, !6, i64 88}
!33 = !{!12, !6, i64 96}
!34 = !{!12, !6, i64 104}
!35 = !{!12, !10, i64 264}
!36 = !{!12, !10, i64 320}
!37 = !{!12, !10, i64 376}
!38 = !{!12, !10, i64 48}
!39 = !{!12, !6, i64 272}
!40 = !{!12, !6, i64 328}
!41 = !{!12, !6, i64 384}
!42 = !{!12, !6, i64 288}
!43 = !{!12, !6, i64 304}
!44 = !{!12, !6, i64 400}
!45 = !{!46, !47, i64 0}
!46 = !{!"timeval", !47, i64 0, !47, i64 8}
!47 = !{!"long", !7, i64 0}
!48 = !{!46, !47, i64 8}
!49 = !{!12, !6, i64 136}
!50 = !{!12, !6, i64 200}
!51 = distinct !{!51, !26}
!52 = !{!12, !6, i64 112}
!53 = !{!12, !6, i64 120}
!54 = !{!12, !10, i64 192}
!55 = !{!12, !6, i64 184}
!56 = distinct !{!56, !26}
!57 = !{!12, !13, i64 56}
!58 = !{!12, !10, i64 152}
!59 = !{!12, !13, i64 8}
!60 = !{!12, !13, i64 16}
!61 = !{!12, !13, i64 160}
!62 = !{!12, !13, i64 168}
!63 = !{!21, !10, i64 232}
!64 = !{!12, !10, i64 208}
!65 = !{!21, !10, i64 296}
!66 = !{!12, !10, i64 148}
!67 = distinct !{!67, !26}
!68 = !{!12, !6, i64 296}
!69 = !{!12, !6, i64 280}
!70 = distinct !{!70, !26}
!71 = !{!12, !6, i64 360}
!72 = distinct !{!72, !26}
!73 = !{!12, !6, i64 408}
!74 = !{!12, !6, i64 392}
!75 = !{!76, !6, i64 0}
!76 = !{!"string_pair_s", !6, i64 0, !6, i64 8}
!77 = !{!76, !6, i64 8}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = !{!12, !10, i64 24}
!81 = !{!12, !10, i64 28}
!82 = !{!12, !10, i64 32}
!83 = !{!12, !10, i64 36}
!84 = !{!12, !13, i64 0}
!85 = !{!12, !10, i64 40}
!86 = !{!12, !10, i64 64}
!87 = !{!12, !6, i64 128}


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

%struct.timeval = type { i64, i64 }
%struct.string_pair_s = type { ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [88 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.26 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__.do_estimation = external hidden unnamed_addr constant [44 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [8 x i8], align 1

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

declare ptr @safe_malloc(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @ee_estimate(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, double noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

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

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

declare i32 @timeval_subtract(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @do_estimation(ptr noundef %0, i32 noundef %1) local_unnamed_addr #6 {
  %3 = alloca %struct.timeval, align 8
  %4 = alloca %struct.timeval, align 8
  %5 = alloca %struct.timeval, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca [4097 x i8], align 16
  %9 = alloca [4097 x i8], align 16
  %10 = alloca [4097 x i8], align 16
  %11 = alloca [4097 x i8], align 16
  %12 = alloca [16 x i8], align 16
  %13 = alloca [65536 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 4097, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 4097, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 4097, ptr nonnull %10) #12
  call void @llvm.lifetime.start.p0(i64 4097, ptr nonnull %11) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #12
  call void @llvm.lifetime.start.p0(i64 65536, ptr nonnull %13) #12
  %14 = getelementptr inbounds i8, ptr %0, i64 176
  %15 = load i32, ptr %14, align 8, !tbaa !5
  %16 = icmp ne i32 %15, 0
  %17 = icmp eq i32 %1, 0
  %18 = and i1 %17, %16
  %19 = zext i1 %18 to i32
  %20 = getelementptr inbounds i8, ptr %0, i64 72
  %21 = load ptr, ptr %20, align 8, !tbaa !13
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %22, label %25

22:                                               ; preds = %2
  %23 = load ptr, ptr @stderr, align 8, !tbaa !14
  %24 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %23, ptr noundef nonnull @.str.26) #13
  br label %682

25:                                               ; preds = %2
  %26 = tail call noalias ptr @fopen(ptr noundef nonnull %21, ptr noundef nonnull @.str.27)
  %.not312 = icmp eq ptr %26, null
  br i1 %.not312, label %27, label %34

27:                                               ; preds = %25
  %28 = load ptr, ptr @stderr, align 8, !tbaa !14
  %29 = load ptr, ptr %20, align 8, !tbaa !13
  %30 = tail call ptr @__errno_location() #14
  %31 = load i32, ptr %30, align 4, !tbaa !15
  %32 = tail call ptr @strerror(i32 noundef %31) #12
  %33 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str.28, ptr noundef %29, ptr noundef %32) #13
  br label %682

34:                                               ; preds = %25
  %35 = getelementptr inbounds i8, ptr %0, i64 220
  %36 = load i32, ptr %35, align 4, !tbaa !16
  %.not313 = icmp eq i32 %36, 0
  br i1 %.not313, label %37, label %39

37:                                               ; preds = %34
  %38 = tail call i32 @get_num_vertices_from_arclist_file(ptr noundef nonnull %26) #12
  unreachable

39:                                               ; preds = %34
  %40 = getelementptr inbounds i8, ptr %0, i64 212
  %41 = load i32, ptr %40, align 4, !tbaa !17
  %.not314 = icmp eq i32 %41, 0
  br i1 %.not314, label %45, label %42

42:                                               ; preds = %39
  %43 = load ptr, ptr @stderr, align 8, !tbaa !14
  %44 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.29) #13
  br label %682

45:                                               ; preds = %39
  %46 = getelementptr inbounds i8, ptr %0, i64 216
  %47 = load i32, ptr %46, align 8, !tbaa !18
  %.not315 = icmp eq i32 %47, 0
  br i1 %.not315, label %51, label %48

48:                                               ; preds = %45
  %49 = load ptr, ptr @stderr, align 8, !tbaa !14
  %50 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %49, ptr noundef nonnull @.str.30) #13
  br label %682

51:                                               ; preds = %45
  %52 = getelementptr inbounds i8, ptr %0, i64 144
  %53 = load i32, ptr %52, align 8, !tbaa !19
  %.not316 = icmp eq i32 %53, 0
  br i1 %.not316, label %57, label %54

54:                                               ; preds = %51
  %55 = load ptr, ptr @stderr, align 8, !tbaa !14
  %56 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef nonnull @.str.31) #13
  br label %682

57:                                               ; preds = %51
  call void @get_num_vertices_from_bipartite_pajek_file(ptr noundef nonnull %26, ptr noundef nonnull %6, ptr noundef nonnull %7) #12
  %.pre = load i32, ptr %6, align 4, !tbaa !15
  %.pre441 = load i32, ptr %7, align 4, !tbaa !15
  %58 = getelementptr inbounds i8, ptr %0, i64 216
  %59 = load i32, ptr %58, align 8, !tbaa !18
  %60 = load i32, ptr %35, align 4, !tbaa !16
  %61 = call ptr @allocate_graph(i32 noundef %.pre, i32 noundef %59, i32 noundef %60, i32 noundef %.pre441) #12
  %62 = getelementptr inbounds i8, ptr %0, i64 224
  %63 = call i32 @check_param_network_type(ptr noundef nonnull %62, ptr noundef %61) #12
  %.not317 = icmp eq i32 %63, 0
  br i1 %.not317, label %67, label %64

64:                                               ; preds = %57
  %65 = load ptr, ptr @stderr, align 8, !tbaa !14
  %66 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull @.str.32) #13
  br label %682

67:                                               ; preds = %57
  %68 = getelementptr inbounds i8, ptr %61, i64 4
  %69 = load i32, ptr %68, align 4, !tbaa !20
  %.not318 = icmp eq i32 %69, 0
  %70 = select i1 %.not318, ptr @.str.34, ptr @.str.33
  %71 = getelementptr inbounds i8, ptr %0, i64 44
  %72 = load i32, ptr %71, align 4, !tbaa !22
  %.not319 = icmp eq i32 %72, 0
  br i1 %.not319, label %.critedge, label %.preheader366

.preheader366:                                    ; preds = %67
  %73 = load i32, ptr %62, align 8, !tbaa !23
  %.not397 = icmp eq i32 %73, 0
  br i1 %.not397, label %.critedge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader366
  %74 = getelementptr inbounds i8, ptr %0, i64 240
  %75 = load ptr, ptr %74, align 8, !tbaa !24
  %wide.trip.count = zext i32 %73 to i64
  br label %76

76:                                               ; preds = %.lr.ph, %80
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %80 ]
  %77 = getelementptr inbounds ptr, ptr %75, i64 %indvars.iv
  %78 = load ptr, ptr %77, align 8, !tbaa !14
  %79 = call i32 @strcasecmp(ptr noundef %78, ptr noundef nonnull %70) #15
  %.not320 = icmp eq i32 %79, 0
  br i1 %.not320, label %81, label %80

80:                                               ; preds = %76
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.critedge, label %76, !llvm.loop !25

81:                                               ; preds = %76
  %82 = getelementptr inbounds i8, ptr %0, i64 232
  %83 = load ptr, ptr %82, align 8, !tbaa !27
  %84 = add i32 %73, -1
  %85 = zext i32 %84 to i64
  %86 = getelementptr inbounds ptr, ptr %83, i64 %85
  %87 = load ptr, ptr %86, align 8, !tbaa !14
  %88 = and i64 %indvars.iv, 4294967295
  %89 = getelementptr inbounds ptr, ptr %83, i64 %88
  store ptr %87, ptr %89, align 8, !tbaa !14
  %90 = load ptr, ptr %74, align 8, !tbaa !24
  %91 = getelementptr inbounds ptr, ptr %90, i64 %85
  %92 = load ptr, ptr %91, align 8, !tbaa !14
  %93 = getelementptr inbounds ptr, ptr %90, i64 %88
  store ptr %92, ptr %93, align 8, !tbaa !14
  %94 = getelementptr inbounds i8, ptr %0, i64 248
  %95 = load ptr, ptr %94, align 8, !tbaa !28
  %96 = getelementptr inbounds double, ptr %95, i64 %85
  %97 = load double, ptr %96, align 8, !tbaa !29
  %98 = getelementptr inbounds double, ptr %95, i64 %88
  store double %97, ptr %98, align 8, !tbaa !29
  %99 = getelementptr inbounds i8, ptr %0, i64 256
  %100 = load ptr, ptr %99, align 8, !tbaa !30
  %.not321 = icmp eq ptr %100, null
  br i1 %.not321, label %102, label %101

101:                                              ; preds = %81
  call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.6, i32 noundef 854, ptr noundef nonnull @__PRETTY_FUNCTION__.do_estimation) #16
  unreachable

102:                                              ; preds = %81
  %103 = load ptr, ptr %82, align 8, !tbaa !27
  %104 = shl nuw nsw i64 %85, 3
  %105 = call ptr @safe_realloc(ptr noundef %103, i64 noundef %104) #12
  store ptr %105, ptr %82, align 8, !tbaa !27
  %106 = load ptr, ptr %74, align 8, !tbaa !24
  %107 = load i32, ptr %62, align 8, !tbaa !23
  %108 = add i32 %107, -1
  %109 = zext i32 %108 to i64
  %110 = shl nuw nsw i64 %109, 3
  %111 = call ptr @safe_realloc(ptr noundef %106, i64 noundef %110) #12
  store ptr %111, ptr %74, align 8, !tbaa !24
  %112 = load ptr, ptr %94, align 8, !tbaa !28
  %113 = load i32, ptr %62, align 8, !tbaa !23
  %114 = add i32 %113, -1
  %115 = zext i32 %114 to i64
  %116 = shl nuw nsw i64 %115, 3
  %117 = call ptr @safe_realloc(ptr noundef %112, i64 noundef %116) #12
  store ptr %117, ptr %94, align 8, !tbaa !28
  %118 = load i32, ptr %62, align 8, !tbaa !23
  %119 = add i32 %118, -1
  store i32 %119, ptr %62, align 8, !tbaa !23
  br label %.critedge

.critedge:                                        ; preds = %80, %.preheader366, %102, %67
  %120 = getelementptr inbounds i8, ptr %0, i64 80
  %121 = load ptr, ptr %120, align 8, !tbaa !31
  %122 = getelementptr inbounds i8, ptr %0, i64 88
  %123 = load ptr, ptr %122, align 8, !tbaa !32
  %124 = getelementptr inbounds i8, ptr %0, i64 96
  %125 = load ptr, ptr %124, align 8, !tbaa !33
  %126 = getelementptr inbounds i8, ptr %0, i64 104
  %127 = load ptr, ptr %126, align 8, !tbaa !34
  %128 = call i32 @load_attributes(ptr noundef %61, ptr noundef %121, ptr noundef %123, ptr noundef %125, ptr noundef %127) #12
  %.not322 = icmp eq i32 %128, 0
  br i1 %.not322, label %132, label %129

129:                                              ; preds = %.critedge
  %130 = load ptr, ptr @stderr, align 8, !tbaa !14
  %131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %130, ptr noundef nonnull @.str.36) #13
  br label %682

132:                                              ; preds = %.critedge
  %133 = call i32 @build_attr_indices_from_names(ptr noundef nonnull %62, ptr noundef %61) #12
  %.not323 = icmp eq i32 %133, 0
  br i1 %.not323, label %137, label %134

134:                                              ; preds = %132
  %135 = load ptr, ptr @stderr, align 8, !tbaa !14
  %136 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %135, ptr noundef nonnull @.str.37) #13
  br label %682

137:                                              ; preds = %132
  %138 = call i32 @build_dyadic_indices_from_names(ptr noundef nonnull %62, ptr noundef %61, i32 noundef 0) #12
  %.not324 = icmp eq i32 %138, 0
  br i1 %.not324, label %142, label %139

139:                                              ; preds = %137
  %140 = load ptr, ptr @stderr, align 8, !tbaa !14
  %141 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %140, ptr noundef nonnull @.str.38) #13
  br label %682

142:                                              ; preds = %137
  %143 = call i32 @build_attr_interaction_pair_indices_from_names(ptr noundef nonnull %62, ptr noundef %61) #12
  %.not325 = icmp eq i32 %143, 0
  br i1 %.not325, label %147, label %144

144:                                              ; preds = %142
  %145 = load ptr, ptr @stderr, align 8, !tbaa !14
  %146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef nonnull @.str.39) #13
  br label %682

147:                                              ; preds = %142
  %148 = load i32, ptr %62, align 8, !tbaa !23
  %149 = getelementptr inbounds i8, ptr %0, i64 264
  %150 = load i32, ptr %149, align 8, !tbaa !35
  %151 = getelementptr inbounds i8, ptr %0, i64 320
  %152 = load i32, ptr %151, align 8, !tbaa !36
  %153 = getelementptr inbounds i8, ptr %0, i64 376
  %154 = load i32, ptr %153, align 8, !tbaa !37
  %155 = add i32 %150, %148
  %156 = add i32 %155, %152
  %157 = add i32 %156, %154
  %158 = zext i32 %157 to i64
  %159 = shl nuw nsw i64 %158, 3
  %160 = call ptr @safe_malloc(i64 noundef %159) #12
  %161 = load i32, ptr %71, align 4, !tbaa !22
  %.not326 = icmp eq i32 %161, 0
  br i1 %.not326, label %168, label %162

162:                                              ; preds = %147
  %163 = getelementptr inbounds i8, ptr %0, i64 48
  %164 = load i32, ptr %163, align 8, !tbaa !38
  %.not327 = icmp eq i32 %164, 0
  br i1 %.not327, label %168, label %165

165:                                              ; preds = %162
  %166 = load ptr, ptr @stderr, align 8, !tbaa !14
  %167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %166, ptr noundef nonnull @.str.40) #13
  br label %682

168:                                              ; preds = %162, %147
  br i1 %18, label %169, label %188

169:                                              ; preds = %168
  %170 = call ptr @safe_malloc(i64 noundef %159) #12
  %171 = getelementptr inbounds i8, ptr %0, i64 232
  %172 = load ptr, ptr %171, align 8, !tbaa !27
  %173 = getelementptr inbounds i8, ptr %0, i64 248
  %174 = load ptr, ptr %173, align 8, !tbaa !28
  %175 = getelementptr inbounds i8, ptr %0, i64 272
  %176 = load ptr, ptr %175, align 8, !tbaa !39
  %177 = getelementptr inbounds i8, ptr %0, i64 328
  %178 = load ptr, ptr %177, align 8, !tbaa !40
  %179 = getelementptr inbounds i8, ptr %0, i64 384
  %180 = load ptr, ptr %179, align 8, !tbaa !41
  %181 = getelementptr inbounds i8, ptr %0, i64 288
  %182 = load ptr, ptr %181, align 8, !tbaa !42
  %183 = getelementptr inbounds i8, ptr %0, i64 304
  %184 = load ptr, ptr %183, align 8, !tbaa !43
  %185 = getelementptr inbounds i8, ptr %0, i64 400
  %186 = load ptr, ptr %185, align 8, !tbaa !44
  %187 = call ptr @empty_graph_stats(ptr noundef %61, i32 noundef %157, i32 noundef %150, i32 noundef %152, i32 noundef %154, ptr noundef %172, ptr noundef %174, ptr noundef %176, ptr noundef %178, ptr noundef %180, ptr noundef %182, ptr noundef %184, ptr noundef %186, ptr noundef %170) #12
  br label %188

188:                                              ; preds = %169, %168
  %.0292 = phi ptr [ %170, %169 ], [ null, %168 ]
  %189 = load ptr, ptr %20, align 8, !tbaa !13
  %190 = call noalias ptr @fopen(ptr noundef %189, ptr noundef nonnull @.str.27)
  %.not328 = icmp eq ptr %190, null
  br i1 %.not328, label %191, label %198

191:                                              ; preds = %188
  %192 = load ptr, ptr @stderr, align 8, !tbaa !14
  %193 = load ptr, ptr %20, align 8, !tbaa !13
  %194 = tail call ptr @__errno_location() #14
  %195 = load i32, ptr %194, align 4, !tbaa !15
  %196 = call ptr @strerror(i32 noundef %195) #12
  %197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef nonnull @.str.28, ptr noundef %193, ptr noundef %196) #13
  br label %682

198:                                              ; preds = %188
  %199 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #12
  %200 = load ptr, ptr %20, align 8, !tbaa !13
  %201 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, ptr noundef %200)
  br i1 %18, label %202, label %204

202:                                              ; preds = %198
  %203 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42)
  br label %204

204:                                              ; preds = %202, %198
  %205 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43)
  %206 = getelementptr inbounds i8, ptr %0, i64 232
  %207 = load ptr, ptr %206, align 8, !tbaa !27
  %208 = getelementptr inbounds i8, ptr %0, i64 248
  %209 = load ptr, ptr %208, align 8, !tbaa !28
  %210 = getelementptr inbounds i8, ptr %0, i64 272
  %211 = load ptr, ptr %210, align 8, !tbaa !39
  %212 = getelementptr inbounds i8, ptr %0, i64 328
  %213 = load ptr, ptr %212, align 8, !tbaa !40
  %214 = getelementptr inbounds i8, ptr %0, i64 384
  %215 = load ptr, ptr %214, align 8, !tbaa !41
  %216 = getelementptr inbounds i8, ptr %0, i64 288
  %217 = load ptr, ptr %216, align 8, !tbaa !42
  %218 = getelementptr inbounds i8, ptr %0, i64 304
  %219 = load ptr, ptr %218, align 8, !tbaa !43
  %220 = getelementptr inbounds i8, ptr %0, i64 400
  %221 = load ptr, ptr %220, align 8, !tbaa !44
  %222 = call ptr @load_graph_from_arclist_file(ptr noundef nonnull %190, ptr noundef %61, i32 noundef %19, i32 noundef %157, i32 noundef %150, i32 noundef %152, i32 noundef %154, ptr noundef %207, ptr noundef %209, ptr noundef %211, ptr noundef %213, ptr noundef %215, ptr noundef %217, ptr noundef %219, ptr noundef %221, ptr noundef %.0292, ptr noundef %160) #12
  %223 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #12
  %224 = call i32 @timeval_subtract(ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %3) #12
  %225 = load i64, ptr %5, align 8, !tbaa !45
  %226 = mul nsw i64 %225, 1000
  %227 = getelementptr inbounds i8, ptr %5, i64 8
  %228 = load i64, ptr %227, align 8, !tbaa !48
  %229 = sdiv i64 %228, 1000
  %230 = add nsw i64 %229, %226
  %231 = trunc i64 %230 to i32
  %232 = sitofp i32 %231 to double
  %233 = fdiv double %232, 1.000000e+03
  %234 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, double noundef %233)
  %235 = getelementptr inbounds i8, ptr %0, i64 136
  %236 = load ptr, ptr %235, align 8, !tbaa !49
  %.not329 = icmp eq ptr %236, null
  br i1 %.not329, label %243, label %237

237:                                              ; preds = %204
  %238 = call i32 @add_snowball_zones_to_graph(ptr noundef %222, ptr noundef nonnull %236) #12
  %.not330 = icmp eq i32 %238, 0
  br i1 %.not330, label %243, label %239

239:                                              ; preds = %237
  %240 = load ptr, ptr @stderr, align 8, !tbaa !14
  %241 = load ptr, ptr %235, align 8, !tbaa !49
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef nonnull @.str.45, ptr noundef %241) #13
  br label %682

243:                                              ; preds = %237, %204
  %244 = getelementptr inbounds i8, ptr %0, i64 200
  %245 = load ptr, ptr %244, align 8, !tbaa !50
  %.not331 = icmp eq ptr %245, null
  br i1 %.not331, label %252, label %246

246:                                              ; preds = %243
  %247 = call i32 @add_cergm_terms_to_digraph(ptr noundef %222, ptr noundef nonnull %245) #12
  %.not332 = icmp eq i32 %247, 0
  br i1 %.not332, label %252, label %248

248:                                              ; preds = %246
  %249 = load ptr, ptr @stderr, align 8, !tbaa !14
  %250 = load ptr, ptr %244, align 8, !tbaa !50
  %251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %249, ptr noundef nonnull @.str.46, ptr noundef %250) #13
  br label %682

252:                                              ; preds = %246, %243
  br i1 %18, label %253, label %259

253:                                              ; preds = %252
  %254 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47)
  %.not398 = icmp eq i32 %157, 0
  br i1 %.not398, label %._crit_edge, label %.lr.ph371

.lr.ph371:                                        ; preds = %253, %.lr.ph371
  %indvars.iv407 = phi i64 [ %indvars.iv.next408, %.lr.ph371 ], [ 0, %253 ]
  %255 = getelementptr inbounds double, ptr %.0292, i64 %indvars.iv407
  %256 = load double, ptr %255, align 8, !tbaa !29
  %257 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48, double noundef %256)
  %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1
  %exitcond411.not = icmp eq i64 %indvars.iv.next408, %158
  br i1 %exitcond411.not, label %._crit_edge, label %.lr.ph371, !llvm.loop !51

._crit_edge:                                      ; preds = %.lr.ph371, %253
  %258 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  br label %259

259:                                              ; preds = %._crit_edge, %252
  %260 = getelementptr inbounds i8, ptr %0, i64 112
  %261 = load ptr, ptr %260, align 8, !tbaa !52
  %262 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) %261, i64 noundef 4096) #12
  %263 = getelementptr inbounds i8, ptr %0, i64 120
  %264 = load ptr, ptr %263, align 8, !tbaa !53
  %265 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) %264, i64 noundef 4096) #12
  %266 = getelementptr inbounds i8, ptr %0, i64 192
  %267 = load i32, ptr %266, align 8, !tbaa !54
  %268 = add i32 %267, %1
  %269 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.49, i32 noundef %268) #12
  %270 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #15
  %271 = sub i64 4096, %270
  %272 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull %12, i64 noundef %271) #12
  %273 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull %12, i64 noundef %271) #12
  %274 = call noalias ptr @fopen(ptr noundef nonnull %8, ptr noundef nonnull @.str.50)
  %.not333 = icmp eq ptr %274, null
  br i1 %.not333, label %275, label %281

275:                                              ; preds = %259
  %276 = load ptr, ptr @stderr, align 8, !tbaa !14
  %277 = tail call ptr @__errno_location() #14
  %278 = load i32, ptr %277, align 4, !tbaa !15
  %279 = call ptr @strerror(i32 noundef %278) #12
  %280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef nonnull @.str.51, i32 noundef %1, ptr noundef nonnull %8, ptr noundef %279) #13
  br label %682

281:                                              ; preds = %259
  br i1 %18, label %282, label %294

282:                                              ; preds = %281
  %283 = getelementptr inbounds i8, ptr %0, i64 184
  %284 = load ptr, ptr %283, align 8, !tbaa !55
  %285 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(1) %284, i64 noundef 4096) #12
  %286 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull %12, i64 noundef %271) #12
  %287 = call noalias ptr @fopen(ptr noundef nonnull %11, ptr noundef nonnull @.str.50)
  %.not334 = icmp eq ptr %287, null
  br i1 %.not334, label %288, label %294

288:                                              ; preds = %282
  %289 = load ptr, ptr @stderr, align 8, !tbaa !14
  %290 = tail call ptr @__errno_location() #14
  %291 = load i32, ptr %290, align 4, !tbaa !15
  %292 = call ptr @strerror(i32 noundef %291) #12
  %293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %289, ptr noundef nonnull @.str.51, i32 noundef 0, ptr noundef nonnull %11, ptr noundef %292) #13
  br label %682

294:                                              ; preds = %282, %281
  %.0298 = phi ptr [ %287, %282 ], [ null, %281 ]
  %295 = getelementptr inbounds i8, ptr %222, i64 4
  %296 = load i32, ptr %295, align 4, !tbaa !20
  %.not335 = icmp eq i32 %296, 0
  %297 = select i1 %.not335, ptr @.str.34, ptr @.str.33
  %298 = load i32, ptr %71, align 4, !tbaa !22
  %.not336 = icmp eq i32 %298, 0
  br i1 %.not336, label %.thread, label %.preheader365

.preheader365:                                    ; preds = %294
  %299 = load i32, ptr %62, align 8, !tbaa !23
  %.not399 = icmp eq i32 %299, 0
  br i1 %.not399, label %._crit_edge374, label %.lr.ph373

.lr.ph373:                                        ; preds = %.preheader365
  %300 = getelementptr inbounds i8, ptr %0, i64 240
  %301 = load ptr, ptr %300, align 8, !tbaa !24
  %wide.trip.count415 = zext i32 %299 to i64
  br label %303

302:                                              ; preds = %303
  %indvars.iv.next413 = add nuw nsw i64 %indvars.iv412, 1
  %exitcond416.not = icmp eq i64 %indvars.iv.next413, %wide.trip.count415
  br i1 %exitcond416.not, label %._crit_edge374, label %303, !llvm.loop !56

303:                                              ; preds = %.lr.ph373, %302
  %indvars.iv412 = phi i64 [ 0, %.lr.ph373 ], [ %indvars.iv.next413, %302 ]
  %304 = getelementptr inbounds ptr, ptr %301, i64 %indvars.iv412
  %305 = load ptr, ptr %304, align 8, !tbaa !14
  %306 = call i32 @strcasecmp(ptr noundef %305, ptr noundef nonnull %297) #15
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %308, label %302

308:                                              ; preds = %303
  %309 = load ptr, ptr @stderr, align 8, !tbaa !14
  %310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef nonnull @.str.52, ptr noundef nonnull %297, ptr noundef nonnull %297, ptr noundef nonnull @.str.53) #13
  br label %682

.thread:                                          ; preds = %294
  %311 = getelementptr inbounds i8, ptr %0, i64 56
  %312 = load double, ptr %311, align 8, !tbaa !57
  %313 = fadd double %312, -1.000000e-01
  %314 = call double @llvm.fabs.f64(double %313)
  %315 = fcmp ugt double %314, 0x3CB0000000000000
  br i1 %315, label %316, label %._crit_edge374

316:                                              ; preds = %.thread
  %317 = load ptr, ptr @stderr, align 8, !tbaa !14
  %318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull @.str.54, double noundef %312) #13
  br label %._crit_edge374

._crit_edge374:                                   ; preds = %302, %.preheader365, %316, %.thread
  %319 = getelementptr inbounds i8, ptr %0, i64 152
  %320 = load i32, ptr %319, align 8, !tbaa !58
  %.not338 = icmp eq i32 %320, 0
  br i1 %.not338, label %339, label %321

321:                                              ; preds = %._crit_edge374
  %322 = getelementptr inbounds i8, ptr %0, i64 8
  %323 = load double, ptr %322, align 8, !tbaa !59
  %324 = fadd double %323, -1.000000e-09
  %325 = call double @llvm.fabs.f64(double %324)
  %326 = fcmp ugt double %325, 0x3CB0000000000000
  br i1 %326, label %327, label %330

327:                                              ; preds = %321
  %328 = load ptr, ptr @stderr, align 8, !tbaa !14
  %329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef nonnull @.str.55, double noundef %323) #13
  br label %330

330:                                              ; preds = %327, %321
  %331 = getelementptr inbounds i8, ptr %0, i64 16
  %332 = load double, ptr %331, align 8, !tbaa !60
  %333 = fadd double %332, -1.000000e-02
  %334 = call double @llvm.fabs.f64(double %333)
  %335 = fcmp ugt double %334, 0x3CB0000000000000
  br i1 %335, label %336, label %357

336:                                              ; preds = %330
  %337 = load ptr, ptr @stderr, align 8, !tbaa !14
  %338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %337, ptr noundef nonnull @.str.56, double noundef %332) #13
  br label %357

339:                                              ; preds = %._crit_edge374
  %340 = getelementptr inbounds i8, ptr %0, i64 160
  %341 = load double, ptr %340, align 8, !tbaa !61
  %342 = fadd double %341, -1.000000e-03
  %343 = call double @llvm.fabs.f64(double %342)
  %344 = fcmp ugt double %343, 0x3CB0000000000000
  br i1 %344, label %345, label %348

345:                                              ; preds = %339
  %346 = load ptr, ptr @stderr, align 8, !tbaa !14
  %347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef nonnull @.str.57, double noundef %341) #13
  br label %348

348:                                              ; preds = %345, %339
  %349 = getelementptr inbounds i8, ptr %0, i64 168
  %350 = load double, ptr %349, align 8, !tbaa !62
  %351 = fadd double %350, -1.000000e-02
  %352 = call double @llvm.fabs.f64(double %351)
  %353 = fcmp ugt double %352, 0x3CB0000000000000
  br i1 %353, label %354, label %357

354:                                              ; preds = %348
  %355 = load ptr, ptr @stderr, align 8, !tbaa !14
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %355, ptr noundef nonnull @.str.58, double noundef %350) #13
  br label %357

357:                                              ; preds = %348, %354, %330, %336
  %358 = getelementptr inbounds i8, ptr %0, i64 144
  %359 = load i32, ptr %358, align 8, !tbaa !19
  %.not339 = icmp eq i32 %359, 0
  %360 = load ptr, ptr %235, align 8, !tbaa !49
  %.not340 = icmp eq ptr %360, null
  br i1 %.not339, label %372, label %361

361:                                              ; preds = %357
  br i1 %.not340, label %362, label %365

362:                                              ; preds = %361
  %363 = load ptr, ptr @stderr, align 8, !tbaa !14
  %364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %363, ptr noundef nonnull @.str.59) #13
  br label %682

365:                                              ; preds = %361
  %366 = getelementptr inbounds i8, ptr %222, i64 232
  %367 = load i32, ptr %366, align 8, !tbaa !63
  %368 = icmp eq i32 %367, 0
  br i1 %368, label %369, label %376

369:                                              ; preds = %365
  %370 = load ptr, ptr @stderr, align 8, !tbaa !14
  %371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef nonnull @.str.60) #13
  br label %682

372:                                              ; preds = %357
  br i1 %.not340, label %376, label %373

373:                                              ; preds = %372
  %374 = load ptr, ptr @stderr, align 8, !tbaa !14
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %374, ptr noundef nonnull @.str.61) #13
  br label %376

376:                                              ; preds = %372, %373, %365
  %377 = getelementptr inbounds i8, ptr %0, i64 208
  %378 = load i32, ptr %377, align 8, !tbaa !64
  %.not342 = icmp eq i32 %378, 0
  br i1 %.not342, label %406, label %379

379:                                              ; preds = %376
  %380 = load i32, ptr %58, align 8, !tbaa !18
  %.not343 = icmp eq i32 %380, 0
  br i1 %.not343, label %381, label %384

381:                                              ; preds = %379
  %382 = load ptr, ptr @stderr, align 8, !tbaa !14
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef nonnull @.str.62) #13
  br label %682

384:                                              ; preds = %379
  %385 = load i32, ptr %35, align 4, !tbaa !16
  %.not344 = icmp eq i32 %385, 0
  br i1 %.not344, label %389, label %386

386:                                              ; preds = %384
  %387 = load ptr, ptr @stderr, align 8, !tbaa !14
  %388 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %387, ptr noundef nonnull @.str.63) #13
  br label %682

389:                                              ; preds = %384
  %390 = load i32, ptr %358, align 8, !tbaa !19
  %.not345 = icmp eq i32 %390, 0
  br i1 %.not345, label %394, label %391

391:                                              ; preds = %389
  %392 = load ptr, ptr @stderr, align 8, !tbaa !14
  %393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %392, ptr noundef nonnull @.str.64) #13
  br label %682

394:                                              ; preds = %389
  %395 = load ptr, ptr %244, align 8, !tbaa !50
  %.not346 = icmp eq ptr %395, null
  br i1 %.not346, label %396, label %399

396:                                              ; preds = %394
  %397 = load ptr, ptr @stderr, align 8, !tbaa !14
  %398 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef nonnull @.str.65) #13
  br label %682

399:                                              ; preds = %394
  %400 = getelementptr inbounds i8, ptr %222, i64 296
  %401 = load i32, ptr %400, align 8, !tbaa !65
  %402 = icmp eq i32 %401, 0
  br i1 %402, label %403, label %406

403:                                              ; preds = %399
  %404 = load ptr, ptr @stderr, align 8, !tbaa !14
  %405 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %404, ptr noundef nonnull @.str.66) #13
  br label %682

406:                                              ; preds = %399, %376
  %407 = getelementptr inbounds i8, ptr %0, i64 212
  %408 = load i32, ptr %407, align 4, !tbaa !17
  %.not347 = icmp eq i32 %408, 0
  br i1 %.not347, label %423, label %409

409:                                              ; preds = %406
  %410 = load i32, ptr %58, align 8, !tbaa !18
  %.not348 = icmp eq i32 %410, 0
  br i1 %.not348, label %411, label %414

411:                                              ; preds = %409
  %412 = load ptr, ptr @stderr, align 8, !tbaa !14
  %413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %412, ptr noundef nonnull @.str.67) #13
  br label %682

414:                                              ; preds = %409
  %415 = load i32, ptr %358, align 8, !tbaa !19
  %.not349 = icmp eq i32 %415, 0
  br i1 %.not349, label %419, label %416

416:                                              ; preds = %414
  %417 = load ptr, ptr @stderr, align 8, !tbaa !14
  %418 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %417, ptr noundef nonnull @.str.68) #13
  br label %682

419:                                              ; preds = %414
  br i1 %.not342, label %423, label %420

420:                                              ; preds = %419
  %421 = load ptr, ptr @stderr, align 8, !tbaa !14
  %422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %421, ptr noundef nonnull @.str.69) #13
  br label %682

423:                                              ; preds = %419, %406
  %424 = getelementptr inbounds i8, ptr %0, i64 148
  %425 = load i32, ptr %424, align 4, !tbaa !66
  %.not351 = icmp eq i32 %425, 0
  br i1 %.not351, label %431, label %426

426:                                              ; preds = %423
  %427 = load i32, ptr %58, align 8, !tbaa !18
  %.not352 = icmp eq i32 %427, 0
  br i1 %.not352, label %428, label %431

428:                                              ; preds = %426
  %429 = load ptr, ptr @stderr, align 8, !tbaa !14
  %430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef nonnull @.str.70) #13
  br label %682

431:                                              ; preds = %426, %423
  br i1 %17, label %432, label %443

432:                                              ; preds = %431
  call void @print_data_summary(ptr noundef %222, i32 noundef %408) #12
  %433 = call i32 @num_loops(ptr noundef %222) #12
  %434 = load i32, ptr %295, align 4, !tbaa !20
  %.not353 = icmp eq i32 %434, 0
  %435 = select i1 %.not353, ptr @.str.73, ptr @.str.72
  %436 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.71, ptr noundef nonnull %435, i32 noundef %433)
  %.not354 = icmp eq i32 %433, 0
  br i1 %.not354, label %442, label %437

437:                                              ; preds = %432
  %438 = load i32, ptr %407, align 4, !tbaa !17
  %.not355 = icmp eq i32 %438, 0
  br i1 %.not355, label %439, label %442

439:                                              ; preds = %437
  %440 = load ptr, ptr @stderr, align 8, !tbaa !14
  %441 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %440, ptr noundef nonnull @.str.74) #13
  br label %442

442:                                              ; preds = %437, %439, %432
  call void @print_zone_summary(ptr noundef nonnull %222) #12
  call void @print_term_summary(ptr noundef nonnull %222) #12
  br label %443

443:                                              ; preds = %442, %431
  %444 = call noalias ptr @fopen(ptr noundef nonnull %9, ptr noundef nonnull @.str.50)
  %.not356 = icmp eq ptr %444, null
  br i1 %.not356, label %445, label %451

445:                                              ; preds = %443
  %446 = load ptr, ptr @stderr, align 8, !tbaa !14
  %447 = tail call ptr @__errno_location() #14
  %448 = load i32, ptr %447, align 4, !tbaa !15
  %449 = call ptr @strerror(i32 noundef %448) #12
  %450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %446, ptr noundef nonnull @.str.51, i32 noundef %1, ptr noundef nonnull %9, ptr noundef %449) #13
  br label %682

451:                                              ; preds = %443
  %452 = load i32, ptr %71, align 4, !tbaa !22
  %.not357.not = icmp eq i32 %452, 0
  br i1 %.not357.not, label %453, label %.thread446

453:                                              ; preds = %451
  %454 = load i32, ptr %62, align 8, !tbaa !23
  %.not400 = icmp eq i32 %454, 0
  br i1 %.not400, label %._crit_edge379, label %.lr.ph378

.thread446:                                       ; preds = %451
  %455 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %456 = getelementptr inbounds i8, ptr %13, i64 %455
  %457 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %456, i64 noundef 65536, ptr noundef nonnull @.str.75, ptr noundef nonnull %297) #12
  %458 = load i32, ptr %62, align 8, !tbaa !23
  %.not400448 = icmp eq i32 %458, 0
  br i1 %.not400448, label %._crit_edge379, label %459

459:                                              ; preds = %.thread446
  %460 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %461 = getelementptr inbounds i8, ptr %13, i64 %460
  %462 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %461, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  br label %.lr.ph378

.lr.ph378:                                        ; preds = %453, %459
  %463 = getelementptr inbounds i8, ptr %0, i64 240
  %464 = load ptr, ptr %208, align 8, !tbaa !28
  %465 = load double, ptr %464, align 8, !tbaa !29
  %466 = fcmp ogt double %465, 0.000000e+00
  %467 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %468 = getelementptr inbounds i8, ptr %13, i64 %467
  %469 = load ptr, ptr %463, align 8, !tbaa !24
  %470 = load ptr, ptr %469, align 8, !tbaa !14
  br i1 %466, label %473, label %471

471:                                              ; preds = %.lr.ph378
  %472 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %468, i64 noundef 65536, ptr noundef nonnull @.str.75, ptr noundef %470) #12
  br label %475

473:                                              ; preds = %.lr.ph378
  %474 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %468, i64 noundef 65536, ptr noundef nonnull @.str.77, ptr noundef %470, double noundef %465) #12
  br label %475

475:                                              ; preds = %473, %471
  %476 = load i32, ptr %62, align 8, !tbaa !23
  %477 = icmp ugt i32 %476, 1
  br i1 %477, label %.peel.next, label %._crit_edge379

.peel.next:                                       ; preds = %475, %494
  %indvars.iv417 = phi i64 [ %indvars.iv.next418, %494 ], [ 1, %475 ]
  %478 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %479 = getelementptr inbounds i8, ptr %13, i64 %478
  %480 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %479, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  %481 = load ptr, ptr %208, align 8, !tbaa !28
  %482 = getelementptr inbounds double, ptr %481, i64 %indvars.iv417
  %483 = load double, ptr %482, align 8, !tbaa !29
  %484 = fcmp ogt double %483, 0.000000e+00
  %485 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %486 = getelementptr inbounds i8, ptr %13, i64 %485
  %487 = load ptr, ptr %463, align 8, !tbaa !24
  %488 = getelementptr inbounds ptr, ptr %487, i64 %indvars.iv417
  %489 = load ptr, ptr %488, align 8, !tbaa !14
  br i1 %484, label %490, label %492

490:                                              ; preds = %.peel.next
  %491 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %486, i64 noundef 65536, ptr noundef nonnull @.str.77, ptr noundef %489, double noundef %483) #12
  br label %494

492:                                              ; preds = %.peel.next
  %493 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %486, i64 noundef 65536, ptr noundef nonnull @.str.75, ptr noundef %489) #12
  br label %494

494:                                              ; preds = %492, %490
  %indvars.iv.next418 = add nuw nsw i64 %indvars.iv417, 1
  %495 = load i32, ptr %62, align 8, !tbaa !23
  %496 = zext i32 %495 to i64
  %497 = icmp ult i64 %indvars.iv.next418, %496
  br i1 %497, label %.peel.next, label %._crit_edge379, !llvm.loop !67

._crit_edge379:                                   ; preds = %494, %475, %.thread446, %453
  %498 = phi i1 [ false, %453 ], [ true, %.thread446 ], [ true, %475 ], [ true, %494 ]
  %499 = load i32, ptr %149, align 8, !tbaa !35
  %.not401 = icmp eq i32 %499, 0
  br i1 %.not401, label %.preheader364, label %.lr.ph383

.lr.ph383:                                        ; preds = %._crit_edge379
  %500 = getelementptr inbounds i8, ptr %0, i64 296
  %501 = getelementptr inbounds i8, ptr %0, i64 280
  br i1 %498, label %502, label %506

502:                                              ; preds = %.lr.ph383
  %503 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %504 = getelementptr inbounds i8, ptr %13, i64 %503
  %505 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %504, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  br label %506

506:                                              ; preds = %502, %.lr.ph383
  %507 = load ptr, ptr %218, align 8, !tbaa !43
  %508 = load double, ptr %507, align 8, !tbaa !29
  %509 = fcmp ult double %508, 0.000000e+00
  %510 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %511 = getelementptr inbounds i8, ptr %13, i64 %510
  %512 = load ptr, ptr %500, align 8, !tbaa !69
  %513 = load ptr, ptr %512, align 8, !tbaa !14
  %514 = load ptr, ptr %501, align 8, !tbaa !70
  %515 = load ptr, ptr %514, align 8, !tbaa !14
  br i1 %509, label %518, label %516

516:                                              ; preds = %506
  %517 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %511, i64 noundef 65536, ptr noundef nonnull @.str.78, ptr noundef %513, ptr noundef %515, double noundef %508) #12
  br label %520

518:                                              ; preds = %506
  %519 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %511, i64 noundef 65536, ptr noundef nonnull @.str.79, ptr noundef %513, ptr noundef %515) #12
  br label %520

520:                                              ; preds = %518, %516
  %521 = load i32, ptr %149, align 8, !tbaa !35
  %522 = icmp ugt i32 %521, 1
  br i1 %522, label %.peel.next424, label %.preheader364

.preheader364:                                    ; preds = %556, %520, %._crit_edge379
  %.2.lcssa = phi i1 [ %498, %._crit_edge379 ], [ true, %520 ], [ true, %556 ]
  %523 = load i32, ptr %151, align 8, !tbaa !36
  %.not402 = icmp eq i32 %523, 0
  br i1 %.not402, label %.preheader, label %.lr.ph387

.lr.ph387:                                        ; preds = %.preheader364
  %524 = getelementptr inbounds i8, ptr %0, i64 360
  br i1 %.2.lcssa, label %525, label %529

525:                                              ; preds = %.lr.ph387
  %526 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %527 = getelementptr inbounds i8, ptr %13, i64 %526
  %528 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %527, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  br label %529

529:                                              ; preds = %525, %.lr.ph387
  %530 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %531 = getelementptr inbounds i8, ptr %13, i64 %530
  %532 = load ptr, ptr %524, align 8, !tbaa !71
  %533 = load ptr, ptr %532, align 8, !tbaa !14
  %534 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %531, i64 noundef 65536, ptr noundef nonnull @.str.75, ptr noundef %533) #12
  %535 = load i32, ptr %151, align 8, !tbaa !36
  %536 = icmp ugt i32 %535, 1
  br i1 %536, label %.peel.next429, label %.preheader

.peel.next424:                                    ; preds = %520, %556
  %indvars.iv421 = phi i64 [ %indvars.iv.next422, %556 ], [ 1, %520 ]
  %537 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %538 = getelementptr inbounds i8, ptr %13, i64 %537
  %539 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %538, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  %540 = load ptr, ptr %218, align 8, !tbaa !43
  %541 = getelementptr inbounds double, ptr %540, i64 %indvars.iv421
  %542 = load double, ptr %541, align 8, !tbaa !29
  %543 = fcmp ult double %542, 0.000000e+00
  %544 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %545 = getelementptr inbounds i8, ptr %13, i64 %544
  %546 = load ptr, ptr %500, align 8, !tbaa !69
  %547 = getelementptr inbounds ptr, ptr %546, i64 %indvars.iv421
  %548 = load ptr, ptr %547, align 8, !tbaa !14
  %549 = load ptr, ptr %501, align 8, !tbaa !70
  %550 = getelementptr inbounds ptr, ptr %549, i64 %indvars.iv421
  %551 = load ptr, ptr %550, align 8, !tbaa !14
  br i1 %543, label %554, label %552

552:                                              ; preds = %.peel.next424
  %553 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %545, i64 noundef 65536, ptr noundef nonnull @.str.78, ptr noundef %548, ptr noundef %551, double noundef %542) #12
  br label %556

554:                                              ; preds = %.peel.next424
  %555 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %545, i64 noundef 65536, ptr noundef nonnull @.str.79, ptr noundef %548, ptr noundef %551) #12
  br label %556

556:                                              ; preds = %554, %552
  %indvars.iv.next422 = add nuw nsw i64 %indvars.iv421, 1
  %557 = load i32, ptr %149, align 8, !tbaa !35
  %558 = zext i32 %557 to i64
  %559 = icmp ult i64 %indvars.iv.next422, %558
  br i1 %559, label %.peel.next424, label %.preheader364, !llvm.loop !72

.preheader:                                       ; preds = %.peel.next429, %529, %.preheader364
  %.3.lcssa = phi i1 [ %.2.lcssa, %.preheader364 ], [ true, %529 ], [ true, %.peel.next429 ]
  %560 = load i32, ptr %153, align 8, !tbaa !37
  %.not403 = icmp eq i32 %560, 0
  br i1 %.not403, label %._crit_edge392, label %.lr.ph391

.lr.ph391:                                        ; preds = %.preheader
  %561 = getelementptr inbounds i8, ptr %0, i64 408
  %562 = getelementptr inbounds i8, ptr %0, i64 392
  br i1 %.3.lcssa, label %563, label %567

563:                                              ; preds = %.lr.ph391
  %564 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %565 = getelementptr inbounds i8, ptr %13, i64 %564
  %566 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %565, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  br label %567

567:                                              ; preds = %563, %.lr.ph391
  %568 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %569 = getelementptr inbounds i8, ptr %13, i64 %568
  %570 = load ptr, ptr %561, align 8, !tbaa !73
  %571 = load ptr, ptr %570, align 8, !tbaa !14
  %572 = load ptr, ptr %562, align 8, !tbaa !74
  %573 = load ptr, ptr %572, align 8, !tbaa !75
  %574 = getelementptr inbounds i8, ptr %572, i64 8
  %575 = load ptr, ptr %574, align 8, !tbaa !77
  %576 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %569, i64 noundef 65536, ptr noundef nonnull @.str.80, ptr noundef %571, ptr noundef %573, ptr noundef %575) #12
  %577 = load i32, ptr %153, align 8, !tbaa !37
  %578 = icmp ugt i32 %577, 1
  br i1 %578, label %.peel.next434, label %._crit_edge392

.peel.next429:                                    ; preds = %529, %.peel.next429
  %indvars.iv426 = phi i64 [ %indvars.iv.next427, %.peel.next429 ], [ 1, %529 ]
  %579 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %580 = getelementptr inbounds i8, ptr %13, i64 %579
  %581 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %580, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  %582 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %583 = getelementptr inbounds i8, ptr %13, i64 %582
  %584 = load ptr, ptr %524, align 8, !tbaa !71
  %585 = getelementptr inbounds ptr, ptr %584, i64 %indvars.iv426
  %586 = load ptr, ptr %585, align 8, !tbaa !14
  %587 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %583, i64 noundef 65536, ptr noundef nonnull @.str.75, ptr noundef %586) #12
  %indvars.iv.next427 = add nuw nsw i64 %indvars.iv426, 1
  %588 = load i32, ptr %151, align 8, !tbaa !36
  %589 = zext i32 %588 to i64
  %590 = icmp ult i64 %indvars.iv.next427, %589
  br i1 %590, label %.peel.next429, label %.preheader, !llvm.loop !78

.peel.next434:                                    ; preds = %567, %.peel.next434
  %indvars.iv431 = phi i64 [ %indvars.iv.next432, %.peel.next434 ], [ 1, %567 ]
  %591 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %592 = getelementptr inbounds i8, ptr %13, i64 %591
  %593 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %592, i64 noundef 65536, ptr noundef nonnull @.str.76) #12
  %594 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %13) #15
  %595 = getelementptr inbounds i8, ptr %13, i64 %594
  %596 = load ptr, ptr %561, align 8, !tbaa !73
  %597 = getelementptr inbounds ptr, ptr %596, i64 %indvars.iv431
  %598 = load ptr, ptr %597, align 8, !tbaa !14
  %599 = load ptr, ptr %562, align 8, !tbaa !74
  %600 = getelementptr inbounds %struct.string_pair_s, ptr %599, i64 %indvars.iv431
  %601 = load ptr, ptr %600, align 8, !tbaa !75
  %602 = getelementptr inbounds i8, ptr %600, i64 8
  %603 = load ptr, ptr %602, align 8, !tbaa !77
  %604 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %595, i64 noundef 65536, ptr noundef nonnull @.str.80, ptr noundef %598, ptr noundef %601, ptr noundef %603) #12
  %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1
  %605 = load i32, ptr %153, align 8, !tbaa !37
  %606 = zext i32 %605 to i64
  %607 = icmp ult i64 %indvars.iv.next432, %606
  br i1 %607, label %.peel.next434, label %._crit_edge392, !llvm.loop !79

._crit_edge392:                                   ; preds = %.peel.next434, %567, %.preheader
  %608 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %274, ptr noundef nonnull @.str.81, ptr noundef nonnull %13) #12
  %609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %444, ptr noundef nonnull @.str.82, ptr noundef nonnull %13) #12
  br i1 %18, label %610, label %626

610:                                              ; preds = %._crit_edge392
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.0298, ptr noundef nonnull @.str.83, ptr noundef nonnull %13) #12
  %612 = load i32, ptr %71, align 4, !tbaa !22
  %.not358 = icmp eq i32 %612, 0
  br i1 %.not358, label %616, label %613

613:                                              ; preds = %610
  %614 = call i32 @num_arcs_or_edges(ptr noundef %222) #12
  %615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.0298, ptr noundef nonnull @.str.3, i32 noundef %614) #12
  br label %616

616:                                              ; preds = %613, %610
  %.not404 = icmp eq i32 %157, 0
  br i1 %.not404, label %._crit_edge396, label %.lr.ph395

.lr.ph395:                                        ; preds = %616
  %617 = add i32 %157, -1
  %618 = zext i32 %617 to i64
  br label %619

619:                                              ; preds = %.lr.ph395, %619
  %indvars.iv436 = phi i64 [ 0, %.lr.ph395 ], [ %indvars.iv.next437, %619 ]
  %620 = getelementptr inbounds double, ptr %.0292, i64 %indvars.iv436
  %621 = load double, ptr %620, align 8, !tbaa !29
  %622 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.0298, ptr noundef nonnull @.str.84, double noundef %621) #12
  %623 = icmp eq i64 %indvars.iv436, %618
  %.str.4..str.76 = select i1 %623, ptr @.str.4, ptr @.str.76
  %624 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.0298, ptr noundef nonnull %.str.4..str.76) #12
  %indvars.iv.next437 = add nuw nsw i64 %indvars.iv436, 1
  %exitcond440.not = icmp eq i64 %indvars.iv.next437, %158
  br i1 %exitcond440.not, label %._crit_edge396, label %619, !llvm.loop !80

._crit_edge396:                                   ; preds = %619, %616
  %625 = call i32 @fclose(ptr noundef %.0298)
  br label %626

626:                                              ; preds = %._crit_edge396, %._crit_edge392
  %627 = load ptr, ptr %206, align 8, !tbaa !27
  %628 = load ptr, ptr %208, align 8, !tbaa !28
  %629 = load ptr, ptr %210, align 8, !tbaa !39
  %630 = load ptr, ptr %212, align 8, !tbaa !40
  %631 = load ptr, ptr %214, align 8, !tbaa !41
  %632 = load ptr, ptr %216, align 8, !tbaa !42
  %633 = load ptr, ptr %218, align 8, !tbaa !43
  %634 = load ptr, ptr %220, align 8, !tbaa !44
  %635 = getelementptr inbounds i8, ptr %0, i64 24
  %636 = load i32, ptr %635, align 8, !tbaa !81
  %637 = getelementptr inbounds i8, ptr %0, i64 28
  %638 = load i32, ptr %637, align 4, !tbaa !82
  %639 = getelementptr inbounds i8, ptr %0, i64 32
  %640 = load i32, ptr %639, align 8, !tbaa !83
  %641 = getelementptr inbounds i8, ptr %0, i64 36
  %642 = load i32, ptr %641, align 4, !tbaa !84
  %643 = load double, ptr %0, align 8, !tbaa !85
  %644 = getelementptr inbounds i8, ptr %0, i64 8
  %645 = load double, ptr %644, align 8, !tbaa !59
  %646 = getelementptr inbounds i8, ptr %0, i64 16
  %647 = load double, ptr %646, align 8, !tbaa !60
  %648 = getelementptr inbounds i8, ptr %0, i64 40
  %649 = load i32, ptr %648, align 8, !tbaa !86
  %650 = load i32, ptr %71, align 4, !tbaa !22
  %651 = getelementptr inbounds i8, ptr %0, i64 56
  %652 = load double, ptr %651, align 8, !tbaa !57
  %653 = load i32, ptr %358, align 8, !tbaa !19
  %654 = load i32, ptr %424, align 4, !tbaa !66
  %655 = load i32, ptr %319, align 8, !tbaa !58
  %656 = getelementptr inbounds i8, ptr %0, i64 160
  %657 = load double, ptr %656, align 8, !tbaa !61
  %658 = getelementptr inbounds i8, ptr %0, i64 168
  %659 = load double, ptr %658, align 8, !tbaa !62
  %660 = getelementptr inbounds i8, ptr %0, i64 48
  %661 = load i32, ptr %660, align 8, !tbaa !38
  %662 = load i32, ptr %377, align 8, !tbaa !64
  %663 = load i32, ptr %407, align 4, !tbaa !17
  %664 = call i32 @ee_estimate(ptr noundef %222, i32 noundef %157, i32 noundef %150, i32 noundef %152, i32 noundef %154, ptr noundef %627, ptr noundef %628, ptr noundef %629, ptr noundef %630, ptr noundef %631, ptr noundef %632, ptr noundef %633, ptr noundef %634, i32 noundef %636, i32 noundef %638, i32 noundef %640, i32 noundef %642, double noundef %643, double noundef %645, double noundef %647, ptr noundef %160, i32 noundef %1, ptr noundef nonnull %274, ptr noundef nonnull %444, i32 noundef %649, i32 noundef %650, double noundef %652, i32 noundef %653, i32 noundef %654, i32 noundef %655, double noundef %657, double noundef %659, i32 noundef %661, i32 noundef %662, i32 noundef %663)
  %665 = call i32 @fclose(ptr noundef nonnull %274)
  %666 = call i32 @fclose(ptr noundef nonnull %444)
  %667 = getelementptr inbounds i8, ptr %0, i64 64
  %668 = load i32, ptr %667, align 8, !tbaa !87
  %.not359 = icmp eq i32 %668, 0
  br i1 %.not359, label %681, label %669

669:                                              ; preds = %626
  %670 = getelementptr inbounds i8, ptr %0, i64 128
  %671 = load ptr, ptr %670, align 8, !tbaa !88
  %672 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %671, i64 noundef 4096) #12
  %673 = load i32, ptr %266, align 8, !tbaa !54
  %674 = add i32 %673, %1
  %675 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.85, i32 noundef %674) #12
  %676 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #15
  %677 = sub i64 4096, %676
  %678 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull %12, i64 noundef %677) #12
  %679 = call noalias ptr @fopen(ptr noundef nonnull %10, ptr noundef nonnull @.str.50)
  call void @write_graph_arclist_to_file(ptr noundef %679, ptr noundef %222) #12
  %680 = call i32 @fclose(ptr noundef %679)
  br label %681

681:                                              ; preds = %669, %626
  call void @free_graph(ptr noundef %222) #12
  call void @free(ptr noundef %160) #12
  call void @free(ptr noundef %.0292) #12
  br label %682

682:                                              ; preds = %681, %445, %428, %420, %416, %411, %403, %396, %391, %386, %381, %369, %362, %308, %288, %275, %248, %239, %191, %165, %144, %139, %134, %129, %64, %54, %48, %42, %27, %22
  %.0291 = phi i32 [ -1, %42 ], [ -1, %48 ], [ -1, %54 ], [ -1, %64 ], [ -1, %129 ], [ -1, %134 ], [ -1, %139 ], [ -1, %144 ], [ -1, %165 ], [ -1, %239 ], [ -1, %248 ], [ -1, %308 ], [ -1, %369 ], [ -1, %386 ], [ -1, %391 ], [ -1, %403 ], [ -1, %416 ], [ -1, %420 ], [ 0, %681 ], [ -1, %445 ], [ -1, %428 ], [ -1, %411 ], [ -1, %396 ], [ -1, %381 ], [ -1, %362 ], [ -1, %288 ], [ -1, %275 ], [ -1, %191 ], [ -1, %27 ], [ -1, %22 ]
  call void @llvm.lifetime.end.p0(i64 65536, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 4097, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 4097, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 4097, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 4097, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #12
  ret i32 %.0291
}

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

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__errno_location() local_unnamed_addr #8

declare i32 @get_num_vertices_from_arclist_file(ptr noundef) local_unnamed_addr #1

declare void @get_num_vertices_from_bipartite_pajek_file(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare ptr @allocate_graph(i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare i32 @check_param_network_type(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare i32 @strcasecmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #9

declare ptr @safe_realloc(ptr noundef, i64 noundef) local_unnamed_addr #1

declare i32 @load_attributes(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @build_attr_indices_from_names(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @build_dyadic_indices_from_names(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @build_attr_interaction_pair_indices_from_names(ptr noundef, ptr noundef) local_unnamed_addr #1

declare ptr @empty_graph_stats(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare ptr @load_graph_from_arclist_file(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @add_snowball_zones_to_graph(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @add_cergm_terms_to_digraph(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #10

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncat(ptr noalias noundef returned, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #11

declare void @print_data_summary(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @num_loops(ptr noundef) local_unnamed_addr #1

declare void @print_zone_summary(ptr noundef) local_unnamed_addr #1

declare void @print_term_summary(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

declare i32 @num_arcs_or_edges(ptr noundef) local_unnamed_addr #1

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

declare void @write_graph_arclist_to_file(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @free_graph(ptr noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn 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 #6 = { 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 #7 = { 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 #8 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 #9 = { mustprogress nofree nounwind willreturn memory(read) "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 #10 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "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 #11 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 #12 = { nounwind }
attributes #13 = { cold nounwind }
attributes #14 = { nounwind willreturn memory(none) }
attributes #15 = { nounwind willreturn memory(read) }
attributes #16 = { noreturn 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, !10, i64 176}
!6 = !{!"estim_config_s", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !7, i64 56, !10, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !11, i64 184, !10, i64 192, !11, i64 200, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !12, i64 224}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"param_config_s", !10, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !10, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !10, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !10, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192}
!13 = !{!6, !11, i64 72}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !10, i64 0}
!16 = !{!6, !10, i64 220}
!17 = !{!6, !10, i64 212}
!18 = !{!6, !10, i64 216}
!19 = !{!6, !10, i64 144}
!20 = !{!21, !10, i64 4}
!21 = !{!"graph_s", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !10, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !11, i64 104, !11, i64 112, !10, i64 120, !11, i64 128, !11, i64 136, !10, i64 144, !11, i64 152, !11, i64 160, !10, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !11, i64 224, !10, i64 232, !10, i64 236, !11, i64 240, !11, i64 248, !10, i64 256, !11, i64 264, !10, i64 272, !11, i64 280, !11, i64 288, !10, i64 296, !10, i64 300, !11, i64 304, !10, i64 312, !11, i64 320}
!22 = !{!6, !10, i64 44}
!23 = !{!6, !10, i64 224}
!24 = !{!6, !11, i64 240}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!6, !11, i64 232}
!28 = !{!6, !11, i64 248}
!29 = !{!7, !7, i64 0}
!30 = !{!6, !11, i64 256}
!31 = !{!6, !11, i64 80}
!32 = !{!6, !11, i64 88}
!33 = !{!6, !11, i64 96}
!34 = !{!6, !11, i64 104}
!35 = !{!6, !10, i64 264}
!36 = !{!6, !10, i64 320}
!37 = !{!6, !10, i64 376}
!38 = !{!6, !10, i64 48}
!39 = !{!6, !11, i64 272}
!40 = !{!6, !11, i64 328}
!41 = !{!6, !11, i64 384}
!42 = !{!6, !11, i64 288}
!43 = !{!6, !11, i64 304}
!44 = !{!6, !11, i64 400}
!45 = !{!46, !47, i64 0}
!46 = !{!"timeval", !47, i64 0, !47, i64 8}
!47 = !{!"long", !8, i64 0}
!48 = !{!46, !47, i64 8}
!49 = !{!6, !11, i64 136}
!50 = !{!6, !11, i64 200}
!51 = distinct !{!51, !26}
!52 = !{!6, !11, i64 112}
!53 = !{!6, !11, i64 120}
!54 = !{!6, !10, i64 192}
!55 = !{!6, !11, i64 184}
!56 = distinct !{!56, !26}
!57 = !{!6, !7, i64 56}
!58 = !{!6, !10, i64 152}
!59 = !{!6, !7, i64 8}
!60 = !{!6, !7, i64 16}
!61 = !{!6, !7, i64 160}
!62 = !{!6, !7, i64 168}
!63 = !{!21, !10, i64 232}
!64 = !{!6, !10, i64 208}
!65 = !{!21, !10, i64 296}
!66 = !{!6, !10, i64 148}
!67 = distinct !{!67, !26, !68}
!68 = !{!"llvm.loop.peeled.count", i32 1}
!69 = !{!6, !11, i64 296}
!70 = !{!6, !11, i64 280}
!71 = !{!6, !11, i64 360}
!72 = distinct !{!72, !26, !68}
!73 = !{!6, !11, i64 408}
!74 = !{!6, !11, i64 392}
!75 = !{!76, !11, i64 0}
!76 = !{!"string_pair_s", !11, i64 0, !11, i64 8}
!77 = !{!76, !11, i64 8}
!78 = distinct !{!78, !26, !68}
!79 = distinct !{!79, !26, !68}
!80 = distinct !{!80, !26}
!81 = !{!6, !10, i64 24}
!82 = !{!6, !10, i64 28}
!83 = !{!6, !10, i64 32}
!84 = !{!6, !10, i64 36}
!85 = !{!6, !7, i64 0}
!86 = !{!6, !10, i64 40}
!87 = !{!6, !10, i64 64}
!88 = !{!6, !11, i64 128}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass