; LLVM IR from stivalaa/EstimNetDirected :: Test/TestChangeStatsAttrBipartite (testChangeStatsAttrBipartiteMain)

; 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.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 }

@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [89 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [128 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [444 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca double, align 8
  %7 = alloca [1024 x i8], align 16
  %8 = alloca i32, align 4
  %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 ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %struct.timeval, align 8
  %20 = alloca %struct.timeval, align 8
  %21 = alloca %struct.timeval, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  store double 2.000000e+00, ptr %6, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1024, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store ptr null, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  store ptr null, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store ptr null, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store ptr null, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  store ptr null, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %36 = call i64 @time(ptr noundef null) #6
  %37 = trunc i64 %36 to i32
  call void @srand(i32 noundef %37) #6
  %38 = load i32, ptr %4, align 4, !tbaa !5
  %39 = icmp slt i32 %38, 5
  br i1 %39, label %43, label %40

40:                                               ; preds = %2
  %41 = load i32, ptr %4, align 4, !tbaa !5
  %42 = icmp sgt i32 %41, 6
  br i1 %42, label %43, label %49

43:                                               ; preds = %40, %2
  %44 = load ptr, ptr @stderr, align 8, !tbaa !9
  %45 = load ptr, ptr %5, align 8, !tbaa !9
  %46 = getelementptr inbounds ptr, ptr %45, i64 0
  %47 = load ptr, ptr %46, align 8, !tbaa !9
  %48 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %44, ptr noundef @.str, ptr noundef %47) #6
  call void @exit(i32 noundef 1) #7
  unreachable

49:                                               ; preds = %40
  %50 = load ptr, ptr %5, align 8, !tbaa !9
  %51 = getelementptr inbounds ptr, ptr %50, i64 1
  %52 = load ptr, ptr %51, align 8, !tbaa !9
  store ptr %52, ptr %10, align 8, !tbaa !9
  %53 = load ptr, ptr %5, align 8, !tbaa !9
  %54 = getelementptr inbounds ptr, ptr %53, i64 2
  %55 = load ptr, ptr %54, align 8, !tbaa !9
  store ptr %55, ptr %23, align 8, !tbaa !9
  %56 = load ptr, ptr %5, align 8, !tbaa !9
  %57 = getelementptr inbounds ptr, ptr %56, i64 3
  %58 = load ptr, ptr %57, align 8, !tbaa !9
  store ptr %58, ptr %24, align 8, !tbaa !9
  %59 = load ptr, ptr %5, align 8, !tbaa !9
  %60 = getelementptr inbounds ptr, ptr %59, i64 4
  %61 = load ptr, ptr %60, align 8, !tbaa !9
  store ptr %61, ptr %25, align 8, !tbaa !9
  %62 = load i32, ptr %4, align 4, !tbaa !5
  %63 = icmp eq i32 %62, 6
  br i1 %63, label %64, label %79

64:                                               ; preds = %49
  store i32 1, ptr %16, align 4, !tbaa !5
  %65 = load ptr, ptr %5, align 8, !tbaa !9
  %66 = getelementptr inbounds ptr, ptr %65, i64 5
  %67 = load ptr, ptr %66, align 8, !tbaa !9
  store ptr %67, ptr %17, align 8, !tbaa !9
  %68 = load ptr, ptr %17, align 8, !tbaa !9
  %69 = call noalias ptr @fopen(ptr noundef %68, ptr noundef @.str.1)
  store ptr %69, ptr %18, align 8, !tbaa !9
  %70 = icmp ne ptr %69, null
  br i1 %70, label %78, label %71

71:                                               ; preds = %64
  %72 = load ptr, ptr @stderr, align 8, !tbaa !9
  %73 = load ptr, ptr %17, align 8, !tbaa !9
  %74 = call ptr @__errno_location() #8
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = call ptr @strerror(i32 noundef %75) #6
  %77 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %72, ptr noundef @.str.2, ptr noundef %73, ptr noundef %76) #6
  call void @exit(i32 noundef 1) #7
  unreachable

78:                                               ; preds = %64
  br label %80

79:                                               ; preds = %49
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %80

80:                                               ; preds = %79, %78
  %81 = load ptr, ptr %10, align 8, !tbaa !9
  %82 = call noalias ptr @fopen(ptr noundef %81, ptr noundef @.str.1)
  store ptr %82, ptr %11, align 8, !tbaa !9
  %83 = icmp ne ptr %82, null
  br i1 %83, label %91, label %84

84:                                               ; preds = %80
  %85 = load ptr, ptr @stderr, align 8, !tbaa !9
  %86 = load ptr, ptr %10, align 8, !tbaa !9
  %87 = call ptr @__errno_location() #8
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call ptr @strerror(i32 noundef %88) #6
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %85, ptr noundef @.str.3, ptr noundef %86, ptr noundef %89) #6
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %26, align 4
  br label %505

91:                                               ; preds = %80
  %92 = call i32 @gettimeofday(ptr noundef %19, ptr noundef null) #6
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = load ptr, ptr %10, align 8, !tbaa !9
  %95 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef @.str.4, ptr noundef %94) #6
  %96 = load ptr, ptr %11, align 8, !tbaa !9
  call void @get_num_vertices_from_bipartite_pajek_file(ptr noundef %96, ptr noundef %12, ptr noundef %13)
  %97 = load i32, ptr %12, align 4, !tbaa !5
  %98 = load i32, ptr %13, align 4, !tbaa !5
  %99 = call ptr @allocate_graph(i32 noundef %97, i32 noundef 0, i32 noundef 1, i32 noundef %98)
  store ptr %99, ptr %14, align 8, !tbaa !9
  %100 = load ptr, ptr %14, align 8, !tbaa !9
  %101 = load ptr, ptr %23, align 8, !tbaa !9
  %102 = load ptr, ptr %25, align 8, !tbaa !9
  %103 = load ptr, ptr %24, align 8, !tbaa !9
  %104 = call i32 @load_attributes(ptr noundef %100, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef null)
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %109

106:                                              ; preds = %91
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef @.str.5) #6
  call void @exit(i32 noundef 1) #7
  unreachable

109:                                              ; preds = %91
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %110

110:                                              ; preds = %126, %109
  %111 = load i32, ptr %8, align 4, !tbaa !5
  %112 = load ptr, ptr %14, align 8, !tbaa !9
  %113 = getelementptr inbounds %struct.graph_s, ptr %112, i32 0, i32 15
  %114 = load i32, ptr %113, align 8, !tbaa !13
  %115 = icmp ult i32 %111, %114
  br i1 %115, label %116, label %129

116:                                              ; preds = %110
  %117 = load i32, ptr %8, align 4, !tbaa !5
  %118 = load ptr, ptr %14, align 8, !tbaa !9
  %119 = getelementptr inbounds %struct.graph_s, ptr %118, i32 0, i32 16
  %120 = load ptr, ptr %119, align 8, !tbaa !15
  %121 = load i32, ptr %8, align 4, !tbaa !5
  %122 = zext i32 %121 to i64
  %123 = getelementptr inbounds ptr, ptr %120, i64 %122
  %124 = load ptr, ptr %123, align 8, !tbaa !9
  %125 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %117, ptr noundef %124)
  br label %126

126:                                              ; preds = %116
  %127 = load i32, ptr %8, align 4, !tbaa !5
  %128 = add i32 %127, 1
  store i32 %128, ptr %8, align 4, !tbaa !5
  br label %110, !llvm.loop !16

129:                                              ; preds = %110
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %130

130:                                              ; preds = %146, %129
  %131 = load i32, ptr %8, align 4, !tbaa !5
  %132 = load ptr, ptr %14, align 8, !tbaa !9
  %133 = getelementptr inbounds %struct.graph_s, ptr %132, i32 0, i32 21
  %134 = load i32, ptr %133, align 8, !tbaa !18
  %135 = icmp ult i32 %131, %134
  br i1 %135, label %136, label %149

136:                                              ; preds = %130
  %137 = load i32, ptr %8, align 4, !tbaa !5
  %138 = load ptr, ptr %14, align 8, !tbaa !9
  %139 = getelementptr inbounds %struct.graph_s, ptr %138, i32 0, i32 22
  %140 = load ptr, ptr %139, align 8, !tbaa !19
  %141 = load i32, ptr %8, align 4, !tbaa !5
  %142 = zext i32 %141 to i64
  %143 = getelementptr inbounds ptr, ptr %140, i64 %142
  %144 = load ptr, ptr %143, align 8, !tbaa !9
  %145 = call i32 (ptr, ...) @printf(ptr noundef @.str.7, i32 noundef %137, ptr noundef %144)
  br label %146

146:                                              ; preds = %136
  %147 = load i32, ptr %8, align 4, !tbaa !5
  %148 = add i32 %147, 1
  store i32 %148, ptr %8, align 4, !tbaa !5
  br label %130, !llvm.loop !20

149:                                              ; preds = %130
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %150

150:                                              ; preds = %166, %149
  %151 = load i32, ptr %8, align 4, !tbaa !5
  %152 = load ptr, ptr %14, align 8, !tbaa !9
  %153 = getelementptr inbounds %struct.graph_s, ptr %152, i32 0, i32 18
  %154 = load i32, ptr %153, align 8, !tbaa !21
  %155 = icmp ult i32 %151, %154
  br i1 %155, label %156, label %169

156:                                              ; preds = %150
  %157 = load i32, ptr %8, align 4, !tbaa !5
  %158 = load ptr, ptr %14, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.graph_s, ptr %158, i32 0, i32 19
  %160 = load ptr, ptr %159, align 8, !tbaa !22
  %161 = load i32, ptr %8, align 4, !tbaa !5
  %162 = zext i32 %161 to i64
  %163 = getelementptr inbounds ptr, ptr %160, i64 %162
  %164 = load ptr, ptr %163, align 8, !tbaa !9
  %165 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, i32 noundef %157, ptr noundef %164)
  br label %166

166:                                              ; preds = %156
  %167 = load i32, ptr %8, align 4, !tbaa !5
  %168 = add i32 %167, 1
  store i32 %168, ptr %8, align 4, !tbaa !5
  br label %150, !llvm.loop !23

169:                                              ; preds = %150
  %170 = load ptr, ptr %10, align 8, !tbaa !9
  %171 = call noalias ptr @fopen(ptr noundef %170, ptr noundef @.str.1)
  store ptr %171, ptr %11, align 8, !tbaa !9
  %172 = icmp ne ptr %171, null
  br i1 %172, label %180, label %173

173:                                              ; preds = %169
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = load ptr, ptr %10, align 8, !tbaa !9
  %176 = call ptr @__errno_location() #8
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = call ptr @strerror(i32 noundef %177) #6
  %179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef @.str.3, ptr noundef %175, ptr noundef %178) #6
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %26, align 4
  br label %505

180:                                              ; preds = %169
  %181 = load ptr, ptr %11, align 8, !tbaa !9
  %182 = load ptr, ptr %14, align 8, !tbaa !9
  %183 = call ptr @load_graph_from_arclist_file(ptr noundef %181, ptr noundef %182, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  store ptr %183, ptr %14, align 8, !tbaa !9
  %184 = call i32 @gettimeofday(ptr noundef %20, ptr noundef null) #6
  %185 = call i32 @timeval_subtract(ptr noundef %21, ptr noundef %20, ptr noundef %19)
  %186 = getelementptr inbounds %struct.timeval, ptr %21, i32 0, i32 0
  %187 = load i64, ptr %186, align 8, !tbaa !24
  %188 = mul nsw i64 1000, %187
  %189 = getelementptr inbounds %struct.timeval, ptr %21, i32 0, i32 1
  %190 = load i64, ptr %189, align 8, !tbaa !27
  %191 = sdiv i64 %190, 1000
  %192 = add nsw i64 %188, %191
  %193 = trunc i64 %192 to i32
  store i32 %193, ptr %22, align 4, !tbaa !5
  %194 = load ptr, ptr @stderr, align 8, !tbaa !9
  %195 = load i32, ptr %22, align 4, !tbaa !5
  %196 = sitofp i32 %195 to double
  %197 = fdiv double %196, 1.000000e+03
  %198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %194, ptr noundef @.str.9, double noundef %197) #6
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %199

199:                                              ; preds = %234, %180
  %200 = load i32, ptr %8, align 4, !tbaa !5
  %201 = load ptr, ptr %14, align 8, !tbaa !9
  %202 = getelementptr inbounds %struct.graph_s, ptr %201, i32 0, i32 13
  %203 = load i32, ptr %202, align 8, !tbaa !28
  %204 = icmp ult i32 %200, %203
  br i1 %204, label %205, label %237

205:                                              ; preds = %199
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %206

206:                                              ; preds = %230, %205
  %207 = load i32, ptr %9, align 4, !tbaa !5
  %208 = load ptr, ptr %14, align 8, !tbaa !9
  %209 = getelementptr inbounds %struct.graph_s, ptr %208, i32 0, i32 14
  %210 = load i32, ptr %209, align 4, !tbaa !29
  %211 = icmp ult i32 %207, %210
  br i1 %211, label %212, label %233

212:                                              ; preds = %206
  %213 = load i32, ptr %8, align 4, !tbaa !5
  %214 = load i32, ptr %9, align 4, !tbaa !5
  %215 = icmp ne i32 %213, %214
  br i1 %215, label %216, label %229

216:                                              ; preds = %212
  %217 = load ptr, ptr %14, align 8, !tbaa !9
  %218 = load i32, ptr %8, align 4, !tbaa !5
  %219 = load i32, ptr %9, align 4, !tbaa !5
  %220 = call i32 @isEdge(ptr noundef %217, i32 noundef %218, i32 noundef %219)
  %221 = load ptr, ptr %14, align 8, !tbaa !9
  %222 = load i32, ptr %9, align 4, !tbaa !5
  %223 = load i32, ptr %8, align 4, !tbaa !5
  %224 = call i32 @isEdge(ptr noundef %221, i32 noundef %222, i32 noundef %223)
  %225 = icmp eq i32 %220, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %216
  br label %228

227:                                              ; preds = %216
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.11, i32 noundef 223, ptr noundef @__PRETTY_FUNCTION__.main) #7
  unreachable

228:                                              ; preds = %226
  br label %229

229:                                              ; preds = %228, %212
  br label %230

230:                                              ; preds = %229
  %231 = load i32, ptr %9, align 4, !tbaa !5
  %232 = add i32 %231, 1
  store i32 %232, ptr %9, align 4, !tbaa !5
  br label %206, !llvm.loop !30

233:                                              ; preds = %206
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %8, align 4, !tbaa !5
  %236 = add i32 %235, 1
  store i32 %236, ptr %8, align 4, !tbaa !5
  br label %199, !llvm.loop !31

237:                                              ; preds = %199
  %238 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %239 = call i32 @gettimeofday(ptr noundef %19, ptr noundef null) #6
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %240

240:                                              ; preds = %464, %309, %237
  br label %241

241:                                              ; preds = %240
  %242 = load i32, ptr %16, align 4, !tbaa !5
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %288

244:                                              ; preds = %241
  %245 = load ptr, ptr %18, align 8, !tbaa !9
  %246 = call i32 @feof(ptr noundef %245) #6
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %249

248:                                              ; preds = %244
  br label %465

249:                                              ; preds = %244
  %250 = getelementptr inbounds [1024 x i8], ptr %7, i64 0, i64 0
  %251 = load ptr, ptr %18, align 8, !tbaa !9
  %252 = call ptr @fgets(ptr noundef %250, i32 noundef 1023, ptr noundef %251)
  %253 = icmp ne ptr %252, null
  br i1 %253, label %255, label %254

254:                                              ; preds = %249
  br label %465

255:                                              ; preds = %249
  %256 = getelementptr inbounds [1024 x i8], ptr %7, i64 0, i64 0
  %257 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %256, ptr noundef @.str.13, ptr noundef %8, ptr noundef %9) #6
  %258 = icmp ne i32 %257, 2
  br i1 %258, label %259, label %262

259:                                              ; preds = %255
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %260, ptr noundef @.str.14) #6
  call void @exit(i32 noundef 1) #7
  unreachable

262:                                              ; preds = %255
  %263 = load i32, ptr %8, align 4, !tbaa !5
  %264 = load ptr, ptr %14, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.graph_s, ptr %264, i32 0, i32 13
  %266 = load i32, ptr %265, align 8, !tbaa !28
  %267 = icmp uge i32 %263, %266
  br i1 %267, label %268, label %272

268:                                              ; preds = %262
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = load i32, ptr %8, align 4, !tbaa !5
  %271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %269, ptr noundef @.str.15, i32 noundef %270) #6
  call void @exit(i32 noundef 1) #7
  unreachable

272:                                              ; preds = %262
  %273 = load i32, ptr %9, align 4, !tbaa !5
  %274 = load ptr, ptr %14, align 8, !tbaa !9
  %275 = getelementptr inbounds %struct.graph_s, ptr %274, i32 0, i32 14
  %276 = load i32, ptr %275, align 4, !tbaa !29
  %277 = icmp uge i32 %273, %276
  br i1 %277, label %278, label %282

278:                                              ; preds = %272
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = load i32, ptr %9, align 4, !tbaa !5
  %281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %279, ptr noundef @.str.16, i32 noundef %280) #6
  call void @exit(i32 noundef 1) #7
  unreachable

282:                                              ; preds = %272
  %283 = load ptr, ptr %14, align 8, !tbaa !9
  %284 = getelementptr inbounds %struct.graph_s, ptr %283, i32 0, i32 13
  %285 = load i32, ptr %284, align 8, !tbaa !28
  %286 = load i32, ptr %9, align 4, !tbaa !5
  %287 = add i32 %286, %285
  store i32 %287, ptr %9, align 4, !tbaa !5
  br label %303

288:                                              ; preds = %241
  %289 = call i32 @rand() #6
  %290 = load ptr, ptr %14, align 8, !tbaa !9
  %291 = getelementptr inbounds %struct.graph_s, ptr %290, i32 0, i32 13
  %292 = load i32, ptr %291, align 8, !tbaa !28
  %293 = urem i32 %289, %292
  store i32 %293, ptr %8, align 4, !tbaa !5
  %294 = load ptr, ptr %14, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct.graph_s, ptr %294, i32 0, i32 13
  %296 = load i32, ptr %295, align 8, !tbaa !28
  %297 = call i32 @rand() #6
  %298 = load ptr, ptr %14, align 8, !tbaa !9
  %299 = getelementptr inbounds %struct.graph_s, ptr %298, i32 0, i32 14
  %300 = load i32, ptr %299, align 4, !tbaa !29
  %301 = urem i32 %297, %300
  %302 = add i32 %296, %301
  store i32 %302, ptr %9, align 4, !tbaa !5
  br label %303

303:                                              ; preds = %288, %282
  %304 = load ptr, ptr %14, align 8, !tbaa !9
  %305 = load i32, ptr %8, align 4, !tbaa !5
  %306 = load i32, ptr %9, align 4, !tbaa !5
  %307 = call i32 @isEdge(ptr noundef %304, i32 noundef %305, i32 noundef %306)
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %310

309:                                              ; preds = %303
  br label %240

310:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 1, ptr %28, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 2, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 1, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 2, ptr %32, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 1, ptr %34, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 2, ptr %35, align 4, !tbaa !5
  %311 = load i32, ptr %8, align 4, !tbaa !5
  %312 = load i32, ptr %9, align 4, !tbaa !5
  %313 = load ptr, ptr %14, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct.graph_s, ptr %313, i32 0, i32 23
  %315 = load ptr, ptr %314, align 8, !tbaa !32
  %316 = load i32, ptr %32, align 4, !tbaa !5
  %317 = zext i32 %316 to i64
  %318 = getelementptr inbounds ptr, ptr %315, i64 %317
  %319 = load ptr, ptr %318, align 8, !tbaa !9
  %320 = load i32, ptr %8, align 4, !tbaa !5
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %319, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = load ptr, ptr %14, align 8, !tbaa !9
  %325 = getelementptr inbounds %struct.graph_s, ptr %324, i32 0, i32 23
  %326 = load ptr, ptr %325, align 8, !tbaa !32
  %327 = load i32, ptr %32, align 4, !tbaa !5
  %328 = zext i32 %327 to i64
  %329 = getelementptr inbounds ptr, ptr %326, i64 %328
  %330 = load ptr, ptr %329, align 8, !tbaa !9
  %331 = load i32, ptr %9, align 4, !tbaa !5
  %332 = zext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %330, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !11
  %335 = call i32 (ptr, ...) @printf(ptr noundef @.str.17, i32 noundef %311, i32 noundef %312, double noundef %323, double noundef %334)
  %336 = load i32, ptr %8, align 4, !tbaa !5
  %337 = load i32, ptr %9, align 4, !tbaa !5
  %338 = load ptr, ptr %14, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.graph_s, ptr %338, i32 0, i32 13
  %340 = load i32, ptr %339, align 8, !tbaa !28
  %341 = sub i32 %337, %340
  %342 = load ptr, ptr %14, align 8, !tbaa !9
  %343 = load i32, ptr %8, align 4, !tbaa !5
  %344 = load i32, ptr %9, align 4, !tbaa !5
  %345 = call double @changeFourCycles(ptr noundef %342, i32 noundef %343, i32 noundef %344, double noundef 2.000000e+00)
  %346 = load ptr, ptr %14, align 8, !tbaa !9
  %347 = load i32, ptr %8, align 4, !tbaa !5
  %348 = load i32, ptr %9, align 4, !tbaa !5
  %349 = call double @changeBipartiteAltStarsB(ptr noundef %346, i32 noundef %347, i32 noundef %348, double noundef 2.000000e+00)
  %350 = load ptr, ptr %14, align 8, !tbaa !9
  %351 = load i32, ptr %8, align 4, !tbaa !5
  %352 = load i32, ptr %9, align 4, !tbaa !5
  %353 = call double @changeBipartiteAltStarsA(ptr noundef %350, i32 noundef %351, i32 noundef %352, double noundef 2.000000e+00)
  %354 = load ptr, ptr %14, align 8, !tbaa !9
  %355 = load i32, ptr %8, align 4, !tbaa !5
  %356 = load i32, ptr %9, align 4, !tbaa !5
  %357 = call double @changeBipartiteAltKCyclesA(ptr noundef %354, i32 noundef %355, i32 noundef %356, double noundef 2.000000e+00)
  %358 = load ptr, ptr %14, align 8, !tbaa !9
  %359 = load i32, ptr %8, align 4, !tbaa !5
  %360 = load i32, ptr %9, align 4, !tbaa !5
  %361 = call double @changeBipartiteAltKCyclesB(ptr noundef %358, i32 noundef %359, i32 noundef %360, double noundef 2.000000e+00)
  %362 = load ptr, ptr %14, align 8, !tbaa !9
  %363 = load i32, ptr %8, align 4, !tbaa !5
  %364 = load i32, ptr %9, align 4, !tbaa !5
  %365 = call double @changeBipartiteTwoStarsA(ptr noundef %362, i32 noundef %363, i32 noundef %364, double noundef 2.000000e+00)
  %366 = load ptr, ptr %14, align 8, !tbaa !9
  %367 = load i32, ptr %8, align 4, !tbaa !5
  %368 = load i32, ptr %9, align 4, !tbaa !5
  %369 = call double @changeBipartiteTwoStarsB(ptr noundef %366, i32 noundef %367, i32 noundef %368, double noundef 2.000000e+00)
  %370 = load ptr, ptr %14, align 8, !tbaa !9
  %371 = load i32, ptr %8, align 4, !tbaa !5
  %372 = load i32, ptr %9, align 4, !tbaa !5
  %373 = call double @changeBipartiteThreeStarsA(ptr noundef %370, i32 noundef %371, i32 noundef %372, double noundef 2.000000e+00)
  %374 = load ptr, ptr %14, align 8, !tbaa !9
  %375 = load i32, ptr %8, align 4, !tbaa !5
  %376 = load i32, ptr %9, align 4, !tbaa !5
  %377 = call double @changeBipartiteThreeStarsB(ptr noundef %374, i32 noundef %375, i32 noundef %376, double noundef 2.000000e+00)
  %378 = load ptr, ptr %14, align 8, !tbaa !9
  %379 = load i32, ptr %8, align 4, !tbaa !5
  %380 = load i32, ptr %9, align 4, !tbaa !5
  %381 = call double @changeThreePaths(ptr noundef %378, i32 noundef %379, i32 noundef %380, double noundef 2.000000e+00)
  %382 = load ptr, ptr %14, align 8, !tbaa !9
  %383 = load i32, ptr %8, align 4, !tbaa !5
  %384 = load i32, ptr %9, align 4, !tbaa !5
  %385 = load i32, ptr %27, align 4, !tbaa !5
  %386 = call double @changeBipartiteActivityA(ptr noundef %382, i32 noundef %383, i32 noundef %384, i32 noundef %385, i32 noundef 0, double noundef 0.000000e+00)
  %387 = load ptr, ptr %14, align 8, !tbaa !9
  %388 = load i32, ptr %8, align 4, !tbaa !5
  %389 = load i32, ptr %9, align 4, !tbaa !5
  %390 = load i32, ptr %28, align 4, !tbaa !5
  %391 = call double @changeBipartiteActivityB(ptr noundef %387, i32 noundef %388, i32 noundef %389, i32 noundef %390, i32 noundef 0, double noundef 0.000000e+00)
  %392 = load ptr, ptr %14, align 8, !tbaa !9
  %393 = load i32, ptr %8, align 4, !tbaa !5
  %394 = load i32, ptr %9, align 4, !tbaa !5
  %395 = load i32, ptr %29, align 4, !tbaa !5
  %396 = call double @changeInteraction(ptr noundef %392, i32 noundef %393, i32 noundef %394, i32 noundef %395, i32 noundef 0, double noundef 0.000000e+00)
  %397 = load ptr, ptr %14, align 8, !tbaa !9
  %398 = load i32, ptr %8, align 4, !tbaa !5
  %399 = load i32, ptr %9, align 4, !tbaa !5
  %400 = load i32, ptr %30, align 4, !tbaa !5
  %401 = call double @changeBipartiteContinuousActivityA(ptr noundef %397, i32 noundef %398, i32 noundef %399, i32 noundef %400, i32 noundef 0, double noundef 0.000000e+00)
  %402 = load ptr, ptr %14, align 8, !tbaa !9
  %403 = load i32, ptr %8, align 4, !tbaa !5
  %404 = load i32, ptr %9, align 4, !tbaa !5
  %405 = load i32, ptr %31, align 4, !tbaa !5
  %406 = call double @changeBipartiteContinuousActivityB(ptr noundef %402, i32 noundef %403, i32 noundef %404, i32 noundef %405, i32 noundef 0, double noundef 0.000000e+00)
  %407 = load ptr, ptr %14, align 8, !tbaa !9
  %408 = load i32, ptr %8, align 4, !tbaa !5
  %409 = load i32, ptr %9, align 4, !tbaa !5
  %410 = load i32, ptr %32, align 4, !tbaa !5
  %411 = call double @changeSum(ptr noundef %407, i32 noundef %408, i32 noundef %409, i32 noundef %410, i32 noundef 0, double noundef 0.000000e+00)
  %412 = load ptr, ptr %14, align 8, !tbaa !9
  %413 = load i32, ptr %8, align 4, !tbaa !5
  %414 = load i32, ptr %9, align 4, !tbaa !5
  %415 = load i32, ptr %33, align 4, !tbaa !5
  %416 = call double @changeBipartiteTwoPathMatchingA(ptr noundef %412, i32 noundef %413, i32 noundef %414, i32 noundef %415, i32 noundef 0, double noundef 0.000000e+00)
  %417 = load ptr, ptr %14, align 8, !tbaa !9
  %418 = load i32, ptr %8, align 4, !tbaa !5
  %419 = load i32, ptr %9, align 4, !tbaa !5
  %420 = load i32, ptr %34, align 4, !tbaa !5
  %421 = call double @changeBipartiteTwoPathMatchingB(ptr noundef %417, i32 noundef %418, i32 noundef %419, i32 noundef %420, i32 noundef 0, double noundef 0.000000e+00)
  %422 = load ptr, ptr %14, align 8, !tbaa !9
  %423 = load i32, ptr %8, align 4, !tbaa !5
  %424 = load i32, ptr %9, align 4, !tbaa !5
  %425 = load i32, ptr %33, align 4, !tbaa !5
  %426 = call double @changeBipartiteTwoPathMismatchingA(ptr noundef %422, i32 noundef %423, i32 noundef %424, i32 noundef %425, i32 noundef 0, double noundef 0.000000e+00)
  %427 = load ptr, ptr %14, align 8, !tbaa !9
  %428 = load i32, ptr %8, align 4, !tbaa !5
  %429 = load i32, ptr %9, align 4, !tbaa !5
  %430 = load i32, ptr %34, align 4, !tbaa !5
  %431 = call double @changeBipartiteTwoPathMismatchingB(ptr noundef %427, i32 noundef %428, i32 noundef %429, i32 noundef %430, i32 noundef 0, double noundef 0.000000e+00)
  %432 = load ptr, ptr %14, align 8, !tbaa !9
  %433 = load i32, ptr %8, align 4, !tbaa !5
  %434 = load i32, ptr %9, align 4, !tbaa !5
  %435 = load i32, ptr %30, align 4, !tbaa !5
  %436 = call double @changeBipartiteTwoPathSumA(ptr noundef %432, i32 noundef %433, i32 noundef %434, i32 noundef %435, i32 noundef 0, double noundef 0.000000e+00)
  %437 = load ptr, ptr %14, align 8, !tbaa !9
  %438 = load i32, ptr %8, align 4, !tbaa !5
  %439 = load i32, ptr %9, align 4, !tbaa !5
  %440 = load i32, ptr %30, align 4, !tbaa !5
  %441 = call double @changeBipartiteTwoPathDiffA(ptr noundef %437, i32 noundef %438, i32 noundef %439, i32 noundef %440, i32 noundef 0, double noundef 0.000000e+00)
  %442 = load ptr, ptr %14, align 8, !tbaa !9
  %443 = load i32, ptr %8, align 4, !tbaa !5
  %444 = load i32, ptr %9, align 4, !tbaa !5
  %445 = load i32, ptr %31, align 4, !tbaa !5
  %446 = call double @changeBipartiteTwoPathSumB(ptr noundef %442, i32 noundef %443, i32 noundef %444, i32 noundef %445, i32 noundef 0, double noundef 0.000000e+00)
  %447 = load ptr, ptr %14, align 8, !tbaa !9
  %448 = load i32, ptr %8, align 4, !tbaa !5
  %449 = load i32, ptr %9, align 4, !tbaa !5
  %450 = load i32, ptr %31, align 4, !tbaa !5
  %451 = call double @changeBipartiteTwoPathDiffB(ptr noundef %447, i32 noundef %448, i32 noundef %449, i32 noundef %450, i32 noundef 0, double noundef 0.000000e+00)
  %452 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, i32 noundef %336, i32 noundef %341, double noundef %345, double noundef %349, double noundef %353, double noundef %357, double noundef %361, double noundef %365, double noundef %369, double noundef %373, double noundef %377, double noundef %381, double noundef %386, double noundef %391, double noundef %396, double noundef %401, double noundef %406, double noundef %411, double noundef %416, double noundef %421, double noundef %426, double noundef %431, double noundef %436, double noundef %441, double noundef %446, double noundef %451)
  %453 = load i32, ptr %15, align 4, !tbaa !5
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %15, align 4, !tbaa !5
  %455 = load i32, ptr %16, align 4, !tbaa !5
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %461, label %457

457:                                              ; preds = %310
  %458 = load i32, ptr %15, align 4, !tbaa !5
  %459 = icmp sge i32 %458, 1000
  br i1 %459, label %460, label %461

460:                                              ; preds = %457
  store i32 18, ptr %26, align 4
  br label %462

461:                                              ; preds = %457, %310
  store i32 0, ptr %26, align 4
  br label %462

462:                                              ; preds = %461, %460
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  %463 = load i32, ptr %26, align 4
  switch i32 %463, label %507 [
    i32 0, label %464
    i32 18, label %465
  ]

464:                                              ; preds = %462
  br label %240

465:                                              ; preds = %462, %254, %248
  %466 = load i32, ptr %16, align 4, !tbaa !5
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %482

468:                                              ; preds = %465
  %469 = load ptr, ptr %18, align 8, !tbaa !9
  %470 = call i32 @fclose(ptr noundef %469)
  %471 = load ptr, ptr %17, align 8, !tbaa !9
  %472 = call noalias ptr @fopen(ptr noundef %471, ptr noundef @.str.1)
  store ptr %472, ptr %18, align 8, !tbaa !9
  %473 = icmp ne ptr %472, null
  br i1 %473, label %481, label %474

474:                                              ; preds = %468
  %475 = load ptr, ptr @stderr, align 8, !tbaa !9
  %476 = load ptr, ptr %17, align 8, !tbaa !9
  %477 = call ptr @__errno_location() #8
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = call ptr @strerror(i32 noundef %478) #6
  %480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %475, ptr noundef @.str.2, ptr noundef %476, ptr noundef %479) #6
  call void @exit(i32 noundef 1) #7
  unreachable

481:                                              ; preds = %468
  br label %482

482:                                              ; preds = %481, %465
  %483 = call i32 @gettimeofday(ptr noundef %20, ptr noundef null) #6
  %484 = call i32 @timeval_subtract(ptr noundef %21, ptr noundef %20, ptr noundef %19)
  %485 = getelementptr inbounds %struct.timeval, ptr %21, i32 0, i32 0
  %486 = load i64, ptr %485, align 8, !tbaa !24
  %487 = mul nsw i64 1000, %486
  %488 = getelementptr inbounds %struct.timeval, ptr %21, i32 0, i32 1
  %489 = load i64, ptr %488, align 8, !tbaa !27
  %490 = sdiv i64 %489, 1000
  %491 = add nsw i64 %487, %490
  %492 = trunc i64 %491 to i32
  store i32 %492, ptr %22, align 4, !tbaa !5
  %493 = load ptr, ptr @stderr, align 8, !tbaa !9
  %494 = load i32, ptr %22, align 4, !tbaa !5
  %495 = sitofp i32 %494 to double
  %496 = fdiv double %495, 1.000000e+03
  %497 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %493, ptr noundef @.str.19, double noundef %496) #6
  %498 = load i32, ptr %16, align 4, !tbaa !5
  %499 = icmp ne i32 %498, 0
  br i1 %499, label %500, label %503

500:                                              ; preds = %482
  %501 = load ptr, ptr %18, align 8, !tbaa !9
  %502 = call i32 @fclose(ptr noundef %501)
  br label %503

503:                                              ; preds = %500, %482
  %504 = load ptr, ptr %14, align 8, !tbaa !9
  call void @free_graph(ptr noundef %504)
  call void @exit(i32 noundef 0) #7
  unreachable

505:                                              ; preds = %173, %84
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 1024, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  %506 = load i32, ptr %3, align 4
  ret i32 %506

507:                                              ; preds = %462
  unreachable
}

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

; Function Attrs: nounwind
declare void @srand(i32 noundef) #2

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

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #3

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

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

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

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

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

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

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

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

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) #4

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

declare i32 @isEdge(ptr noundef, i32 noundef, i32 noundef) #4

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

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

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #4

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

; Function Attrs: nounwind
declare i32 @rand() #2

declare double @changeFourCycles(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteAltStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteAltStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteAltKCyclesA(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteAltKCyclesB(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteThreeStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteThreeStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeThreePaths(ptr noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteActivityA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteActivityB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeInteraction(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteContinuousActivityA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteContinuousActivityB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeSum(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathMatchingA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathMatchingB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathMismatchingA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathMismatchingB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathSumA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathDiffA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathSumB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

declare double @changeBipartiteTwoPathDiffB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) #4

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

declare i32 @fclose(ptr noundef) #4

declare void @free_graph(ptr noundef) #4

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { "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 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 #6 = { nounwind }
attributes #7 = { noreturn nounwind }
attributes #8 = { nounwind willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 96}
!14 = !{!"graph_s", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !6, i64 88, !6, i64 92, !6, i64 96, !10, i64 104, !10, i64 112, !6, i64 120, !10, i64 128, !10, i64 136, !6, i64 144, !10, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !10, i64 224, !6, i64 232, !6, i64 236, !10, i64 240, !10, i64 248, !6, i64 256, !10, i64 264, !6, i64 272, !10, i64 280, !10, i64 288, !6, i64 296, !6, i64 300, !10, i64 304, !6, i64 312, !10, i64 320}
!15 = !{!14, !10, i64 104}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!14, !6, i64 144}
!19 = !{!14, !10, i64 152}
!20 = distinct !{!20, !17}
!21 = !{!14, !6, i64 120}
!22 = !{!14, !10, i64 128}
!23 = distinct !{!23, !17}
!24 = !{!25, !26, i64 0}
!25 = !{!"timeval", !26, i64 0, !26, i64 8}
!26 = !{!"long", !7, i64 0}
!27 = !{!25, !26, i64 8}
!28 = !{!14, !6, i64 88}
!29 = !{!14, !6, i64 92}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = !{!14, !10, i64 160}


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

@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [89 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [128 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [444 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca [1024 x i8], align 16
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %struct.timeval, align 8
  %9 = alloca %struct.timeval, align 8
  %10 = alloca %struct.timeval, align 8
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  %11 = tail call i64 @time(ptr noundef null) #7
  %12 = trunc i64 %11 to i32
  tail call void @srand(i32 noundef %12) #7
  %13 = add i32 %0, -7
  %or.cond = icmp ult i32 %13, -2
  br i1 %or.cond, label %14, label %18

14:                                               ; preds = %2
  %15 = load ptr, ptr @stderr, align 8, !tbaa !9
  %16 = load ptr, ptr %1, align 8, !tbaa !9
  %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str, ptr noundef %16) #8
  tail call void @exit(i32 noundef 1) #9
  unreachable

18:                                               ; preds = %2
  %19 = getelementptr inbounds i8, ptr %1, i64 8
  %20 = load ptr, ptr %19, align 8, !tbaa !9
  %21 = getelementptr inbounds i8, ptr %1, i64 16
  %22 = load ptr, ptr %21, align 8, !tbaa !9
  %23 = getelementptr inbounds i8, ptr %1, i64 24
  %24 = load ptr, ptr %23, align 8, !tbaa !9
  %25 = getelementptr inbounds i8, ptr %1, i64 32
  %26 = load ptr, ptr %25, align 8, !tbaa !9
  %.not127 = icmp ne i32 %0, 6
  br i1 %.not127, label %37, label %27

27:                                               ; preds = %18
  %28 = getelementptr inbounds i8, ptr %1, i64 40
  %29 = load ptr, ptr %28, align 8, !tbaa !9
  %30 = tail call noalias ptr @fopen(ptr noundef %29, ptr noundef nonnull @.str.1)
  %.not = icmp eq ptr %30, null
  br i1 %.not, label %31, label %37

31:                                               ; preds = %27
  %32 = load ptr, ptr @stderr, align 8, !tbaa !9
  %33 = tail call ptr @__errno_location() #10
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = tail call ptr @strerror(i32 noundef %34) #7
  %36 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %32, ptr noundef nonnull @.str.2, ptr noundef %29, ptr noundef %35) #8
  tail call void @exit(i32 noundef 1) #9
  unreachable

37:                                               ; preds = %18, %27
  %.0105 = phi ptr [ %30, %27 ], [ null, %18 ]
  %.0104 = phi ptr [ %29, %27 ], [ null, %18 ]
  %38 = tail call noalias ptr @fopen(ptr noundef %20, ptr noundef nonnull @.str.1)
  %.not120 = icmp eq ptr %38, null
  br i1 %.not120, label %39, label %45

39:                                               ; preds = %37
  %40 = load ptr, ptr @stderr, align 8, !tbaa !9
  %41 = tail call ptr @__errno_location() #10
  %42 = load i32, ptr %41, align 4, !tbaa !5
  %43 = tail call ptr @strerror(i32 noundef %42) #7
  %44 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %40, ptr noundef nonnull @.str.3, ptr noundef %20, ptr noundef %43) #8
  br label %295

45:                                               ; preds = %37
  %46 = call i32 @gettimeofday(ptr noundef nonnull %8, ptr noundef null) #7
  %47 = load ptr, ptr @stderr, align 8, !tbaa !9
  %48 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef nonnull @.str.4, ptr noundef %20) #8
  call void @get_num_vertices_from_bipartite_pajek_file(ptr noundef nonnull %38, ptr noundef nonnull %6, ptr noundef nonnull %7) #7
  %49 = load i32, ptr %6, align 4, !tbaa !5
  %50 = load i32, ptr %7, align 4, !tbaa !5
  %51 = call ptr @allocate_graph(i32 noundef %49, i32 noundef 0, i32 noundef 1, i32 noundef %50) #7
  %52 = call i32 @load_attributes(ptr noundef %51, ptr noundef %22, ptr noundef %26, ptr noundef %24, ptr noundef null) #7
  %.not121 = icmp eq i32 %52, 0
  br i1 %.not121, label %.preheader140, label %56

.preheader140:                                    ; preds = %45
  %53 = getelementptr inbounds i8, ptr %51, i64 96
  %54 = load i32, ptr %53, align 8, !tbaa !11
  %.not155 = icmp eq i32 %54, 0
  br i1 %.not155, label %.preheader139, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader140
  %55 = getelementptr inbounds i8, ptr %51, i64 104
  br label %62

56:                                               ; preds = %45
  %57 = load ptr, ptr @stderr, align 8, !tbaa !9
  %58 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %57, ptr noundef nonnull @.str.5) #8
  call void @exit(i32 noundef 1) #9
  unreachable

.preheader139:                                    ; preds = %62, %.preheader140
  %59 = getelementptr inbounds i8, ptr %51, i64 144
  %60 = load i32, ptr %59, align 8, !tbaa !13
  %.not156 = icmp eq i32 %60, 0
  br i1 %.not156, label %.preheader138, label %.lr.ph147

.lr.ph147:                                        ; preds = %.preheader139
  %61 = getelementptr inbounds i8, ptr %51, i64 152
  br label %75

62:                                               ; preds = %.lr.ph, %62
  %63 = phi i32 [ 0, %.lr.ph ], [ %69, %62 ]
  %64 = load ptr, ptr %55, align 8, !tbaa !14
  %65 = zext i32 %63 to i64
  %66 = getelementptr inbounds ptr, ptr %64, i64 %65
  %67 = load ptr, ptr %66, align 8, !tbaa !9
  %68 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %63, ptr noundef %67)
  %69 = add nuw i32 %63, 1
  store i32 %69, ptr %4, align 4, !tbaa !5
  %70 = load i32, ptr %53, align 8, !tbaa !11
  %71 = icmp ult i32 %69, %70
  br i1 %71, label %62, label %.preheader139, !llvm.loop !15

.preheader138:                                    ; preds = %75, %.preheader139
  %72 = getelementptr inbounds i8, ptr %51, i64 120
  %73 = load i32, ptr %72, align 8, !tbaa !17
  %.not157 = icmp eq i32 %73, 0
  br i1 %.not157, label %._crit_edge, label %.lr.ph149

.lr.ph149:                                        ; preds = %.preheader138
  %74 = getelementptr inbounds i8, ptr %51, i64 128
  br label %85

75:                                               ; preds = %.lr.ph147, %75
  %76 = phi i32 [ 0, %.lr.ph147 ], [ %82, %75 ]
  %77 = load ptr, ptr %61, align 8, !tbaa !18
  %78 = zext i32 %76 to i64
  %79 = getelementptr inbounds ptr, ptr %77, i64 %78
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %76, ptr noundef %80)
  %82 = add nuw i32 %76, 1
  %83 = load i32, ptr %59, align 8, !tbaa !13
  %84 = icmp ult i32 %82, %83
  br i1 %84, label %75, label %.preheader138, !llvm.loop !19

85:                                               ; preds = %.lr.ph149, %85
  %86 = phi i32 [ 0, %.lr.ph149 ], [ %92, %85 ]
  %87 = load ptr, ptr %74, align 8, !tbaa !20
  %88 = zext i32 %86 to i64
  %89 = getelementptr inbounds ptr, ptr %87, i64 %88
  %90 = load ptr, ptr %89, align 8, !tbaa !9
  %91 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %86, ptr noundef %90)
  %92 = add nuw i32 %86, 1
  %93 = load i32, ptr %72, align 8, !tbaa !17
  %94 = icmp ult i32 %92, %93
  br i1 %94, label %85, label %._crit_edge, !llvm.loop !21

._crit_edge:                                      ; preds = %85, %.preheader138
  %95 = call noalias ptr @fopen(ptr noundef %20, ptr noundef nonnull @.str.1)
  %.not124 = icmp eq ptr %95, null
  br i1 %.not124, label %96, label %102

96:                                               ; preds = %._crit_edge
  %97 = load ptr, ptr @stderr, align 8, !tbaa !9
  %98 = tail call ptr @__errno_location() #10
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = call ptr @strerror(i32 noundef %99) #7
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %97, ptr noundef nonnull @.str.3, ptr noundef %20, ptr noundef %100) #8
  br label %295

102:                                              ; preds = %._crit_edge
  %103 = call ptr @load_graph_from_arclist_file(ptr noundef nonnull %95, ptr noundef nonnull %51, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null) #7
  %104 = call i32 @gettimeofday(ptr noundef nonnull %9, ptr noundef null) #7
  %105 = call i32 @timeval_subtract(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %8) #7
  %106 = load i64, ptr %10, align 8, !tbaa !22
  %107 = mul nsw i64 %106, 1000
  %108 = getelementptr inbounds i8, ptr %10, i64 8
  %109 = load i64, ptr %108, align 8, !tbaa !25
  %110 = sdiv i64 %109, 1000
  %111 = add nsw i64 %110, %107
  %112 = trunc i64 %111 to i32
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = sitofp i32 %112 to double
  %115 = fdiv double %114, 1.000000e+03
  %116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef nonnull @.str.9, double noundef %115) #8
  %117 = getelementptr inbounds i8, ptr %103, i64 88
  store i32 0, ptr %4, align 4, !tbaa !5
  %118 = load i32, ptr %117, align 8, !tbaa !26
  %.not158 = icmp eq i32 %118, 0
  br i1 %.not158, label %._crit_edge153, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %102
  %119 = getelementptr inbounds i8, ptr %103, i64 92
  %120 = load i32, ptr %119, align 4, !tbaa !27
  %.not159 = icmp eq i32 %120, 0
  br i1 %.not159, label %.preheader.us.preheader, label %.preheader

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %xtraiter = and i32 %118, 7
  %121 = icmp ult i32 %118, 8
  br i1 %121, label %._crit_edge153.split.us.unr-lcssa, label %.preheader.us.preheader.new

.preheader.us.preheader.new:                      ; preds = %.preheader.us.preheader
  %unroll_iter = and i32 %118, -8
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us, %.preheader.us.preheader.new
  %122 = phi i32 [ 0, %.preheader.us.preheader.new ], [ %123, %.preheader.us ]
  %niter = phi i32 [ 0, %.preheader.us.preheader.new ], [ %niter.next.7, %.preheader.us ]
  %123 = add nuw i32 %122, 8
  %niter.next.7 = add i32 %niter, 8
  %niter.ncmp.7.not = icmp eq i32 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7.not, label %._crit_edge153.split.us.unr-lcssa, label %.preheader.us, !llvm.loop !28

._crit_edge153.split.us.unr-lcssa:                ; preds = %.preheader.us, %.preheader.us.preheader
  %.lcssa188.ph = phi i32 [ poison, %.preheader.us.preheader ], [ %123, %.preheader.us ]
  %.unr = phi i32 [ 0, %.preheader.us.preheader ], [ %123, %.preheader.us ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge153.split.us, label %.preheader.us.epil

.preheader.us.epil:                               ; preds = %._crit_edge153.split.us.unr-lcssa, %.preheader.us.epil
  %124 = phi i32 [ %125, %.preheader.us.epil ], [ %.unr, %._crit_edge153.split.us.unr-lcssa ]
  %epil.iter = phi i32 [ %epil.iter.next, %.preheader.us.epil ], [ 0, %._crit_edge153.split.us.unr-lcssa ]
  %125 = add nuw i32 %124, 1
  %epil.iter.next = add i32 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge153.split.us, label %.preheader.us.epil, !llvm.loop !29

._crit_edge153.split.us:                          ; preds = %.preheader.us.epil, %._crit_edge153.split.us.unr-lcssa
  %.lcssa188 = phi i32 [ %.lcssa188.ph, %._crit_edge153.split.us.unr-lcssa ], [ %125, %.preheader.us.epil ]
  store i32 0, ptr %5, align 4, !tbaa !5
  store i32 %.lcssa188, ptr %4, align 4, !tbaa !5
  br label %._crit_edge153

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge152
  %126 = phi i32 [ %141, %._crit_edge152 ], [ %118, %.preheader.lr.ph ]
  %127 = phi i32 [ %142, %._crit_edge152 ], [ %120, %.preheader.lr.ph ]
  %128 = phi i32 [ %144, %._crit_edge152 ], [ 0, %.preheader.lr.ph ]
  %129 = phi i32 [ %143, %._crit_edge152 ], [ 1, %.preheader.lr.ph ]
  store i32 0, ptr %5, align 4, !tbaa !5
  %.not160 = icmp eq i32 %129, 0
  br i1 %.not160, label %._crit_edge152, label %.lr.ph151

.lr.ph151:                                        ; preds = %.preheader, %137
  %130 = phi i32 [ %138, %137 ], [ %127, %.preheader ]
  %131 = phi i32 [ %139, %137 ], [ 0, %.preheader ]
  %.not137 = icmp eq i32 %128, %131
  br i1 %.not137, label %137, label %132

132:                                              ; preds = %.lr.ph151
  %133 = call i32 @isEdge(ptr noundef nonnull %103, i32 noundef %128, i32 noundef %131) #7
  %134 = call i32 @isEdge(ptr noundef nonnull %103, i32 noundef %131, i32 noundef %128) #7
  %135 = icmp eq i32 %133, %134
  br i1 %135, label %._crit_edge167, label %136

._crit_edge167:                                   ; preds = %132
  %.pre = load i32, ptr %119, align 4, !tbaa !27
  br label %137

136:                                              ; preds = %132
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, i32 noundef 223, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #9
  unreachable

137:                                              ; preds = %._crit_edge167, %.lr.ph151
  %138 = phi i32 [ %130, %.lr.ph151 ], [ %.pre, %._crit_edge167 ]
  %139 = add nuw i32 %131, 1
  store i32 %139, ptr %5, align 4, !tbaa !5
  %140 = icmp ult i32 %139, %138
  br i1 %140, label %.lr.ph151, label %._crit_edge152.loopexit, !llvm.loop !31

._crit_edge152.loopexit:                          ; preds = %137
  %.pre168 = load i32, ptr %117, align 8, !tbaa !26
  br label %._crit_edge152

._crit_edge152:                                   ; preds = %._crit_edge152.loopexit, %.preheader
  %141 = phi i32 [ %.pre168, %._crit_edge152.loopexit ], [ %126, %.preheader ]
  %142 = phi i32 [ %138, %._crit_edge152.loopexit ], [ %127, %.preheader ]
  %143 = phi i32 [ %138, %._crit_edge152.loopexit ], [ 0, %.preheader ]
  %144 = add i32 %128, 1
  store i32 %144, ptr %4, align 4, !tbaa !5
  %145 = icmp ult i32 %144, %141
  br i1 %145, label %.preheader, label %._crit_edge153, !llvm.loop !32

._crit_edge153:                                   ; preds = %._crit_edge152, %._crit_edge153.split.us, %102
  %146 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %147 = call i32 @gettimeofday(ptr noundef nonnull %8, ptr noundef null) #7
  %148 = getelementptr inbounds i8, ptr %103, i64 92
  %149 = getelementptr inbounds i8, ptr %103, i64 160
  br label %.outer

.outer:                                           ; preds = %.split.us, %._crit_edge153
  %.0102.ph = phi i32 [ %269, %.split.us ], [ 0, %._crit_edge153 ]
  br i1 %.not127, label %.outer.split.us, label %.outer.split

.outer.split.us:                                  ; preds = %.outer, %.outer.split.us
  %150 = call i32 @rand() #7
  %151 = load i32, ptr %117, align 8, !tbaa !26
  %152 = urem i32 %150, %151
  store i32 %152, ptr %4, align 4, !tbaa !5
  %153 = call i32 @rand() #7
  %154 = load i32, ptr %148, align 4, !tbaa !27
  %155 = urem i32 %153, %154
  %156 = add i32 %155, %151
  store i32 %156, ptr %5, align 4, !tbaa !5
  %157 = load i32, ptr %4, align 4, !tbaa !5
  %158 = call i32 @isEdge(ptr noundef nonnull %103, i32 noundef %157, i32 noundef %156) #7
  %.not134.us = icmp eq i32 %158, 0
  br i1 %.not134.us, label %.split.us, label %.outer.split.us

.outer.split:                                     ; preds = %.outer, %179
  %159 = call i32 @feof(ptr noundef %.0105) #7
  %.not129 = icmp eq i32 %159, 0
  br i1 %.not129, label %160, label %271

160:                                              ; preds = %.outer.split
  %161 = call ptr @fgets(ptr noundef nonnull %3, i32 noundef 1023, ptr noundef %.0105)
  %.not130 = icmp eq ptr %161, null
  br i1 %.not130, label %271, label %162

162:                                              ; preds = %160
  %163 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %5) #7
  %.not131 = icmp eq i32 %163, 2
  br i1 %.not131, label %167, label %164

164:                                              ; preds = %162
  %165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %165, ptr noundef nonnull @.str.14) #8
  call void @exit(i32 noundef 1) #9
  unreachable

167:                                              ; preds = %162
  %168 = load i32, ptr %4, align 4, !tbaa !5
  %169 = load i32, ptr %117, align 8, !tbaa !26
  %.not132 = icmp ult i32 %168, %169
  br i1 %.not132, label %173, label %170

170:                                              ; preds = %167
  %171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %171, ptr noundef nonnull @.str.15, i32 noundef %168) #8
  call void @exit(i32 noundef 1) #9
  unreachable

173:                                              ; preds = %167
  %174 = load i32, ptr %5, align 4, !tbaa !5
  %175 = load i32, ptr %148, align 4, !tbaa !27
  %.not133 = icmp ult i32 %174, %175
  br i1 %.not133, label %179, label %176

176:                                              ; preds = %173
  %177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %177, ptr noundef nonnull @.str.16, i32 noundef %174) #8
  call void @exit(i32 noundef 1) #9
  unreachable

179:                                              ; preds = %173
  %180 = add i32 %174, %169
  store i32 %180, ptr %5, align 4, !tbaa !5
  %181 = call i32 @isEdge(ptr noundef nonnull %103, i32 noundef %168, i32 noundef %180) #7
  %.not134 = icmp eq i32 %181, 0
  br i1 %.not134, label %.split.us, label %.outer.split

.split.us:                                        ; preds = %179, %.outer.split.us
  %182 = load i32, ptr %4, align 4, !tbaa !5
  %183 = load i32, ptr %5, align 4, !tbaa !5
  %184 = load ptr, ptr %149, align 8, !tbaa !34
  %185 = getelementptr inbounds i8, ptr %184, i64 16
  %186 = load ptr, ptr %185, align 8, !tbaa !9
  %187 = zext i32 %182 to i64
  %188 = getelementptr inbounds double, ptr %186, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !35
  %190 = zext i32 %183 to i64
  %191 = getelementptr inbounds double, ptr %186, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !35
  %193 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, i32 noundef %182, i32 noundef %183, double noundef %189, double noundef %192)
  %194 = load i32, ptr %4, align 4, !tbaa !5
  %195 = load i32, ptr %5, align 4, !tbaa !5
  %196 = load i32, ptr %117, align 8, !tbaa !26
  %197 = sub i32 %195, %196
  %198 = call double @changeFourCycles(ptr noundef nonnull %103, i32 noundef %194, i32 noundef %195, double noundef 2.000000e+00) #7
  %199 = load i32, ptr %4, align 4, !tbaa !5
  %200 = load i32, ptr %5, align 4, !tbaa !5
  %201 = call double @changeBipartiteAltStarsB(ptr noundef nonnull %103, i32 noundef %199, i32 noundef %200, double noundef 2.000000e+00) #7
  %202 = load i32, ptr %4, align 4, !tbaa !5
  %203 = load i32, ptr %5, align 4, !tbaa !5
  %204 = call double @changeBipartiteAltStarsA(ptr noundef nonnull %103, i32 noundef %202, i32 noundef %203, double noundef 2.000000e+00) #7
  %205 = load i32, ptr %4, align 4, !tbaa !5
  %206 = load i32, ptr %5, align 4, !tbaa !5
  %207 = call double @changeBipartiteAltKCyclesA(ptr noundef nonnull %103, i32 noundef %205, i32 noundef %206, double noundef 2.000000e+00) #7
  %208 = load i32, ptr %4, align 4, !tbaa !5
  %209 = load i32, ptr %5, align 4, !tbaa !5
  %210 = call double @changeBipartiteAltKCyclesB(ptr noundef nonnull %103, i32 noundef %208, i32 noundef %209, double noundef 2.000000e+00) #7
  %211 = load i32, ptr %4, align 4, !tbaa !5
  %212 = load i32, ptr %5, align 4, !tbaa !5
  %213 = call double @changeBipartiteTwoStarsA(ptr noundef nonnull %103, i32 noundef %211, i32 noundef %212, double noundef 2.000000e+00) #7
  %214 = load i32, ptr %4, align 4, !tbaa !5
  %215 = load i32, ptr %5, align 4, !tbaa !5
  %216 = call double @changeBipartiteTwoStarsB(ptr noundef nonnull %103, i32 noundef %214, i32 noundef %215, double noundef 2.000000e+00) #7
  %217 = load i32, ptr %4, align 4, !tbaa !5
  %218 = load i32, ptr %5, align 4, !tbaa !5
  %219 = call double @changeBipartiteThreeStarsA(ptr noundef nonnull %103, i32 noundef %217, i32 noundef %218, double noundef 2.000000e+00) #7
  %220 = load i32, ptr %4, align 4, !tbaa !5
  %221 = load i32, ptr %5, align 4, !tbaa !5
  %222 = call double @changeBipartiteThreeStarsB(ptr noundef nonnull %103, i32 noundef %220, i32 noundef %221, double noundef 2.000000e+00) #7
  %223 = load i32, ptr %4, align 4, !tbaa !5
  %224 = load i32, ptr %5, align 4, !tbaa !5
  %225 = call double @changeThreePaths(ptr noundef nonnull %103, i32 noundef %223, i32 noundef %224, double noundef 2.000000e+00) #7
  %226 = load i32, ptr %4, align 4, !tbaa !5
  %227 = load i32, ptr %5, align 4, !tbaa !5
  %228 = call double @changeBipartiteActivityA(ptr noundef nonnull %103, i32 noundef %226, i32 noundef %227, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %229 = load i32, ptr %4, align 4, !tbaa !5
  %230 = load i32, ptr %5, align 4, !tbaa !5
  %231 = call double @changeBipartiteActivityB(ptr noundef nonnull %103, i32 noundef %229, i32 noundef %230, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %232 = load i32, ptr %4, align 4, !tbaa !5
  %233 = load i32, ptr %5, align 4, !tbaa !5
  %234 = call double @changeInteraction(ptr noundef nonnull %103, i32 noundef %232, i32 noundef %233, i32 noundef 2, i32 noundef 0, double noundef 0.000000e+00) #7
  %235 = load i32, ptr %4, align 4, !tbaa !5
  %236 = load i32, ptr %5, align 4, !tbaa !5
  %237 = call double @changeBipartiteContinuousActivityA(ptr noundef nonnull %103, i32 noundef %235, i32 noundef %236, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %238 = load i32, ptr %4, align 4, !tbaa !5
  %239 = load i32, ptr %5, align 4, !tbaa !5
  %240 = call double @changeBipartiteContinuousActivityB(ptr noundef nonnull %103, i32 noundef %238, i32 noundef %239, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %241 = load i32, ptr %4, align 4, !tbaa !5
  %242 = load i32, ptr %5, align 4, !tbaa !5
  %243 = call double @changeSum(ptr noundef nonnull %103, i32 noundef %241, i32 noundef %242, i32 noundef 2, i32 noundef 0, double noundef 0.000000e+00) #7
  %244 = load i32, ptr %4, align 4, !tbaa !5
  %245 = load i32, ptr %5, align 4, !tbaa !5
  %246 = call double @changeBipartiteTwoPathMatchingA(ptr noundef nonnull %103, i32 noundef %244, i32 noundef %245, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %247 = load i32, ptr %4, align 4, !tbaa !5
  %248 = load i32, ptr %5, align 4, !tbaa !5
  %249 = call double @changeBipartiteTwoPathMatchingB(ptr noundef nonnull %103, i32 noundef %247, i32 noundef %248, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %250 = load i32, ptr %4, align 4, !tbaa !5
  %251 = load i32, ptr %5, align 4, !tbaa !5
  %252 = call double @changeBipartiteTwoPathMismatchingA(ptr noundef nonnull %103, i32 noundef %250, i32 noundef %251, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %253 = load i32, ptr %4, align 4, !tbaa !5
  %254 = load i32, ptr %5, align 4, !tbaa !5
  %255 = call double @changeBipartiteTwoPathMismatchingB(ptr noundef nonnull %103, i32 noundef %253, i32 noundef %254, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %256 = load i32, ptr %4, align 4, !tbaa !5
  %257 = load i32, ptr %5, align 4, !tbaa !5
  %258 = call double @changeBipartiteTwoPathSumA(ptr noundef nonnull %103, i32 noundef %256, i32 noundef %257, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %259 = load i32, ptr %4, align 4, !tbaa !5
  %260 = load i32, ptr %5, align 4, !tbaa !5
  %261 = call double @changeBipartiteTwoPathDiffA(ptr noundef nonnull %103, i32 noundef %259, i32 noundef %260, i32 noundef 0, i32 noundef 0, double noundef 0.000000e+00) #7
  %262 = load i32, ptr %4, align 4, !tbaa !5
  %263 = load i32, ptr %5, align 4, !tbaa !5
  %264 = call double @changeBipartiteTwoPathSumB(ptr noundef nonnull %103, i32 noundef %262, i32 noundef %263, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %265 = load i32, ptr %4, align 4, !tbaa !5
  %266 = load i32, ptr %5, align 4, !tbaa !5
  %267 = call double @changeBipartiteTwoPathDiffB(ptr noundef nonnull %103, i32 noundef %265, i32 noundef %266, i32 noundef 1, i32 noundef 0, double noundef 0.000000e+00) #7
  %268 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18, i32 noundef %194, i32 noundef %197, double noundef %198, double noundef %201, double noundef %204, double noundef %207, double noundef %210, double noundef %213, double noundef %216, double noundef %219, double noundef %222, double noundef %225, double noundef %228, double noundef %231, double noundef %234, double noundef %237, double noundef %240, double noundef %243, double noundef %246, double noundef %249, double noundef %252, double noundef %255, double noundef %258, double noundef %261, double noundef %264, double noundef %267)
  %269 = add nuw nsw i32 %.0102.ph, 1
  %270 = icmp ugt i32 %.0102.ph, 998
  %or.cond3 = select i1 %.not127, i1 %270, i1 false
  br i1 %or.cond3, label %.loopexit, label %.outer

271:                                              ; preds = %160, %.outer.split
  %272 = call i32 @fclose(ptr noundef %.0105)
  %273 = call noalias ptr @fopen(ptr noundef %.0104, ptr noundef nonnull @.str.1)
  %.not135 = icmp eq ptr %273, null
  br i1 %.not135, label %274, label %.loopexit

274:                                              ; preds = %271
  %275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %276 = tail call ptr @__errno_location() #10
  %277 = load i32, ptr %276, align 4, !tbaa !5
  %278 = call ptr @strerror(i32 noundef %277) #7
  %279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %275, ptr noundef nonnull @.str.2, ptr noundef %.0104, ptr noundef %278) #8
  call void @exit(i32 noundef 1) #9
  unreachable

.loopexit:                                        ; preds = %.split.us, %271
  %.1 = phi ptr [ %273, %271 ], [ %.0105, %.split.us ]
  %280 = call i32 @gettimeofday(ptr noundef nonnull %9, ptr noundef null) #7
  %281 = call i32 @timeval_subtract(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %8) #7
  %282 = load i64, ptr %10, align 8, !tbaa !22
  %283 = mul nsw i64 %282, 1000
  %284 = load i64, ptr %108, align 8, !tbaa !25
  %285 = sdiv i64 %284, 1000
  %286 = add nsw i64 %285, %283
  %287 = trunc i64 %286 to i32
  %288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %289 = sitofp i32 %287 to double
  %290 = fdiv double %289, 1.000000e+03
  %291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %288, ptr noundef nonnull @.str.19, double noundef %290) #8
  br i1 %.not127, label %294, label %292

292:                                              ; preds = %.loopexit
  %293 = call i32 @fclose(ptr noundef %.1)
  br label %294

294:                                              ; preds = %292, %.loopexit
  call void @free_graph(ptr noundef %103) #7
  call void @exit(i32 noundef 0) #9
  unreachable

295:                                              ; preds = %96, %39
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #7
  ret i32 -1
}

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

; Function Attrs: nounwind
declare void @srand(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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 #6

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

declare i32 @isEdge(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #2

declare double @changeFourCycles(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteAltStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteAltStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteAltKCyclesA(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteAltKCyclesB(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteThreeStarsA(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteThreeStarsB(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeThreePaths(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteActivityA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteActivityB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeInteraction(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteContinuousActivityA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteContinuousActivityB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeSum(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathMatchingA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathMatchingB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathMismatchingA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathMismatchingB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathSumA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathDiffA(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathSumB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

declare double @changeBipartiteTwoPathDiffB(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #6

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

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

declare void @free_graph(ptr noundef) local_unnamed_addr #6

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = { 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 #6 = { "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 }
attributes #8 = { cold nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 96}
!12 = !{!"graph_s", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !6, i64 88, !6, i64 92, !6, i64 96, !10, i64 104, !10, i64 112, !6, i64 120, !10, i64 128, !10, i64 136, !6, i64 144, !10, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !10, i64 224, !6, i64 232, !6, i64 236, !10, i64 240, !10, i64 248, !6, i64 256, !10, i64 264, !6, i64 272, !10, i64 280, !10, i64 288, !6, i64 296, !6, i64 300, !10, i64 304, !6, i64 312, !10, i64 320}
!13 = !{!12, !6, i64 144}
!14 = !{!12, !10, i64 104}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!12, !6, i64 120}
!18 = !{!12, !10, i64 152}
!19 = distinct !{!19, !16}
!20 = !{!12, !10, i64 128}
!21 = distinct !{!21, !16}
!22 = !{!23, !24, i64 0}
!23 = !{!"timeval", !24, i64 0, !24, i64 8}
!24 = !{!"long", !7, i64 0}
!25 = !{!23, !24, i64 8}
!26 = !{!12, !6, i64 88}
!27 = !{!12, !6, i64 92}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16, !33}
!33 = !{!"llvm.loop.unswitch.partial.disable"}
!34 = !{!12, !10, i64 160}
!35 = !{!36, !36, i64 0}
!36 = !{!"double", !7, i64 0}


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